A complete bug and feature tracking platform built with Node.js, Express, Sequelize, and PostgreSQL. Designed with a scalable service-based architecture to manage software development issues, projects, and developer collaboration.
Deployed API: https://bug-feature-tracker.onrender.com/
- π§βπΌ User Roles: Admin, Developer, Reporter
- π Authentication: JWT-based login/signup
- π₯ RBAC: Role-based access control
- π Projects: Create, update, delete, list projects
- π« Tickets:
- Create, assign, and track bugs/features
- Filter by project, status, priority, assigned user
- Full-text search on title and description
- π¬ Comments: Add comments to tickets
- π Dashboard-ready: Stats can be added later
- π§± Modular Structure: Separation of concerns using services, controllers, models, and middlewares
- Backend: Node.js, Express.js
- Database: PostgreSQL (Supabase)
- ORM: Sequelize
- Authentication: JWT
- Deployment: Render
- Validation: Custom + middleware-based
Base URL: https://bug-feature-tracker.onrender.com
POST /register
Content-Type: application/json
{
"name": "John Doe",
"email": "[email protected]",
"password": "password123",
"role": "developer"
}
POST /login
Content-Type: application/json
{
"email": "[email protected]",
"password": "password123"
}
Response: Copy the token
from the response for subsequent requests.
POST /projects
Authorization: Bearer YOUR_JWT_TOKEN
Content-Type: application/json
{
"name": "Test Project",
"description": "Sample project for testing",
"status": "active"
}
POST /tickets
Authorization: Bearer YOUR_JWT_TOKEN
Content-Type: application/json
{
"title": "Sample Bug Report",
"description": "This is a test bug report",
"type": "bug",
"priority": "high",
"status": "open",
"projectId": 1
}
GET /projects
Authorization: Bearer YOUR_JWT_TOKEN
GET /tickets
Authorization: Bearer YOUR_JWT_TOKEN
POST /register
- User registrationPOST /login
- User login
GET /projects
- Get all projectsPOST /projects
- Create new projectGET /projects/:id
- Get project by IDPUT /projects/:id
- Update projectDELETE /projects/:id
- Delete project
GET /tickets
- Get all tickets (with filters)POST /tickets
- Create new ticketGET /tickets/:id
- Get ticket by IDPUT /tickets/:id
- Update ticketDELETE /tickets/:id
- Delete ticket
GET /tickets/:id/comments
- Get ticket commentsPOST /tickets/:id/comments
- Add comment to ticket
GET /users
- View all users
bug-tracker/
βββ config/ # DB config and env setup
βββ controllers/ # Handle req/res
βββ middlewares/ # Auth, roles, error handling
βββ migrations/ # Sequelize migration files
βββ models/ # Sequelize models
βββ routes/ # All API routes
βββ services/ # Business logic lives here
βββ utils/ # Helpers and utilities
βββ app.js # Express app setup
βββ index.js # App entry point
- Node.js (v14 or higher)
- PostgreSQL
- npm or yarn
git clone https://github.com/Parvezkhan0/bug-feature-tracker.git
cd bug-feature-tracker
npm install
Create a .env
file in the root directory:
NODE_ENV=development
PORT=5001
DB_HOST=localhost
DB_PORT=5432
DB_NAME=bug_tracker
DB_USER=your_username
DB_PASSWORD=your_password
DB_DIALECT=postgres
JWT_SECRET=your_jwt_secret
# Run migrations
npm run migrate
# Run seeders (optional)
npx sequelize-cli db:seed:all
# Development
npm run dev
# Production
npm start
npm start # Start production server
npm run dev # Start development server with nodemon
npm test # Run tests
npm run migrate # Run database migrations
- Full system access
- Manage users, projects, and tickets
- View all users
- View and update assigned tickets
- Comment on tickets
- Create new tickets
- Create and view tickets
- Comment on own tickets
- Limited project access
- Register a new user with
/register
- Login with
/login
to receive a JWT token - Include the token in the
Authorization: Bearer <token>
header for protected routes - Token expires based on
JWT_EXPIRES_IN
configuration
This application is deployed on Render with:
- Automatic deployments from GitHub
- PostgreSQL database hosted on Supabase
- Environment variables configured for production
- Database migrations run automatically on deployment
Developer: Parvez Khan
GitHub: https://github.com/Parvezkhan0
Live Demo: https://bug-feature-tracker.onrender.com/