A full-stack Jira-like board application built with Node.js backend and Angular frontend.
Node Application Jira/
├── backend/ # Node.js backend application
│ ├── config/ # Configuration files
│ ├── database/ # Database setup and migrations
│ │ ├── migrations/ # Database migration files
│ │ └── seeds/ # Database seed files
│ ├── middleware/ # Express middleware
│ ├── routes/ # API route handlers
│ ├── uploads/ # File upload directory
│ └── server.js # Main server file
├── frontend/ # Angular frontend application (placeholder)
├── TEMP/ # Temporary files for git operations
├── package.json # Node.js dependencies
└── knexfile.js # Database configuration
- ✅ JWT-based authentication with role-based access control
- ✅ User management (Admin can add/delete/reset users)
- ✅ Board management (Create/edit/delete boards)
- ✅ Column management (Create/edit/delete/reorder columns)
- ✅ Ticket management (Create/edit/delete/move tickets)
- ✅ Drag-and-drop ticket movement between columns
- ✅ Database support for SQLite (development) and PostgreSQL (production)
- ✅ Comprehensive API validation
- ✅ Error handling and logging
- ✅ Security middleware (helmet, CORS, rate limiting)
- 🚧 Angular application with Material Design
- 🚧 Kanban board interface with drag-and-drop
- 🚧 User authentication and authorization
- 🚧 Responsive design for mobile and desktop
- 🚧 Real-time updates (future enhancement)
-
Install dependencies:
npm install
-
Environment configuration:
# Copy environment template copy backend/config/env.example .env # Edit .env file with your configuration
-
Database setup:
# Run migrations npm run migrate # Seed database with default admin user npm run seed
-
Start development server:
npm run dev
The backend will be available at http://localhost:3000
- Email: admin@jiraboard.com
- Password: admin123
POST /api/auth/register- Register new userPOST /api/auth/login- User loginGET /api/auth/profile- Get current user profilePUT /api/auth/profile- Update user profilePOST /api/auth/change-password- Change password
GET /api/users- Get all usersPOST /api/users- Create new userPUT /api/users/:id- Update userDELETE /api/users/:id- Delete userPOST /api/users/:id/reset-password- Reset user password
GET /api/boards- Get all boardsGET /api/boards/:id- Get board with columns and ticketsPOST /api/boards- Create new boardPUT /api/boards/:id- Update boardDELETE /api/boards/:id- Delete board
GET /api/columns/board/:boardId- Get columns for boardPOST /api/columns- Create new columnPUT /api/columns/:id- Update columnDELETE /api/columns/:id- Delete columnPOST /api/columns/reorder- Reorder columns
GET /api/tickets/board/:boardId- Get tickets for boardGET /api/tickets/:id- Get ticket detailsPOST /api/tickets- Create new ticketPUT /api/tickets/:id- Update ticketPOST /api/tickets/:id/move- Move ticket to different columnDELETE /api/tickets/:id- Delete ticket
id(UUID, Primary Key)email(String, Unique)password(String, Hashed)first_name(String)last_name(String)role(Enum: admin, user)is_active(Boolean)
id(UUID, Primary Key)name(String)description(Text)created_by(Foreign Key to Users)
id(UUID, Primary Key)name(String)board_id(Foreign Key to Boards)position(Integer)color(String)
id(UUID, Primary Key)title(String)description(Text)board_id(Foreign Key to Boards)column_id(Foreign Key to Columns)assigned_to(Foreign Key to Users)created_by(Foreign Key to Users)priority(Enum: low, medium, high, urgent)ticket_type(Enum: task, bug, feature, improvement)position(Integer)
npm run dev # Start development server with nodemon
npm run start # Start production server
npm run migrate # Run database migrations
npm run seed # Seed database with default data
npm run test # Run tests
npm run lint # Run ESLint- JWT token-based authentication
- Password hashing with bcrypt
- Input validation with Joi
- Rate limiting
- CORS configuration
- Helmet security headers
- SQL injection prevention with parameterized queries
- Real-time updates with WebSockets
- File attachments for tickets
- Email notifications
- Advanced search and filtering
- Time tracking
- Reporting and analytics
- Mobile app support
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Submit a pull request
This project is licensed under the MIT License.