A full-stack assignment project where admins create projects, manage teams, assign tasks, and track project progress. Members can see their assigned work and update task status.
- Signup and login with JWT authentication
- Admin and Member roles
- Project creation and team membership management
- Task creation, assignment, due dates, and status tracking
- Dashboard stats for total tasks, status split, overdue tasks, and project progress
- REST APIs backed by PostgreSQL
- Railway deployment configuration
- Node.js + Express
- PostgreSQL
- JWT + bcryptjs
- Static HTML/CSS/JavaScript frontend served by Express
-
Install dependencies:
npm install
-
Create
.envfrom.env.exampleand setDATABASE_URLandJWT_SECRET. -
Initialize the database:
npm run db:init
-
Optional: add demo users, projects, members, and tasks:
npm run db:seed
Demo login password for all seeded users is
Password123. -
Start the app:
npm run dev
-
Optional: run a full API smoke test:
npm run test:smoke
Open http://localhost:3000.
-
Push this project to GitHub.
-
Create a Railway project from the repo.
-
Add a PostgreSQL service in Railway.
-
Add environment variables:
DATABASE_URLfrom the Railway PostgreSQL pluginJWT_SECRETwith a long random valueNODE_ENV=production
-
Run the migration command once from Railway shell or locally against the Railway database:
npm run db:init
Railway will use npm start from railway.json.
See RAILWAY_DEPLOYMENT.md for a step-by-step deployment checklist.
- Sign up as an Admin.
- Create a project.
- Add members by email to the project team.
- Create tasks and assign them to team members.
- Members log in and update task statuses.