A full-stack collaborative task management web application built with React, Node.js/Express, and PostgreSQL.
Overview
A full-stack collaborative task management web application built with React, Node.js/Express, and PostgreSQL. Follow the steps in the Deployment on Railway section below, then update this link with your Railway URL. - – Signup/Login with JWT tokens - – Create projects, invite members, manage roles (Admin/Member) - – Create tasks with title, description, due date, priority, and assignment - – To Do → In Progress → Done - – Overview of total tasks, tasks by status, tasks per user, overdue tasks - – Admins manage everything; Members update their own assigned tasks Open http://localhost:5000 in your browser. After running the schema (which seeds a demo account): - [email protected] - demo123 1. Go to railway.app and create a new project 2. Add a plugin to the project 1. Connect your GitHub repository 2. Set the to / and start command to npm run start 3. Add environment variables: 1. Create a second Railway service from the same repo 2. Set build command: npm run build:client 3.
README
TaskForge – Team Task Manager
A full-stack collaborative task management web application built with React, Node.js/Express, and PostgreSQL.
Live Demo
Deploy to Railway: Follow the steps in the Deployment on Railway section below, then update this link with your Railway URL.
Features
- User Authentication – Signup/Login with JWT tokens
- Project Management – Create projects, invite members, manage roles (Admin/Member)
- Task Management – Create tasks with title, description, due date, priority, and assignment
- Status Tracking – To Do → In Progress → Done
- Dashboard – Overview of total tasks, tasks by status, tasks per user, overdue tasks
- Role-Based Access – Admins manage everything; Members update their own assigned tasks
Tech Stack
| Layer | Technology |
|---|---|
| Frontend | React 19, React Router, Axios |
| Backend | Node.js, Express 5 |
| Database | PostgreSQL |
| Auth | JWT (jsonwebtoken) + bcryptjs |
| Build | Vite |
| Styling | Custom CSS (no framework) |
Project Structure
taskforge/
├── client/ # React frontend (Vite)
│ ├── src/
│ │ ├── api/ # Axios instance
│ │ ├── components/ # Reusable components (Sidebar)
│ │ ├── context/ # AuthContext
│ │ └── pages/ # Dashboard, Projects, ProjectDetail, Tasks, Login, Register
│ └── vite.config.js
├── server/ # Express backend
│ ├── routes/ # auth, projects, tasks, dashboard, users
│ ├── middleware/ # JWT authentication
│ ├── db.js # PostgreSQL pool
│ └── index.js # Entry point
├── schema.sql # Database schema
├── .env.example
└── package.json
Local Setup
Prerequisites
- Node.js 18+
- PostgreSQL database
Steps
# 1. Clone the repository
git clone https://github.com/the708052/TaskForge.git
cd TaskForge
# 2. Install dependencies
npm install
# 3. Set up environment variables
cp .env.example .env
# Edit .env with your DATABASE_URL and JWT_SECRET
# 4. Create the database schema
psql $DATABASE_URL -f schema.sql
# 5. Start the backend (port 3001)
npm run server
# 6. Start the frontend (port 5000) — in a new terminal
npm run client
# Or run both together:
npm run dev
Open http://localhost:5000 in your browser.
Demo Account
After running the schema (which seeds a demo account):
- Email:
[email protected] - Password:
demo123
Deployment on Railway
Step 1 – Create a Railway project
- Go to railway.app and create a new project
- Add a PostgreSQL plugin to the project
Step 2 – Deploy the backend
- Connect your GitHub repository
- Set the Root Directory to
/and start command tonpm run start - Add environment variables:
DATABASE_URL= JWT_SECRET= NODE_ENV=production PORT=3001
Step 3 – Run migrations
In Railway’s shell or via CLI:
psql $DATABASE_URL -f schema.sql
Step 4 – Deploy the frontend
- Create a second Railway service from the same repo
- Set build command:
npm run build:client - Set start command:
npm run serve:client(or use a static site deployment) - Set
VITE_API_URLto your backend Railway URL
Alternative: Build the frontend into
client/dist/and serve it via the Express server in production mode (NODE_ENV=production). The backend already servesclient/distas static files.
API Endpoints
Auth
| Method | Path | Description |
|---|---|---|
| POST | /api/auth/register |
Register a new user |
| POST | /api/auth/login |
Login and get JWT |
| GET | /api/auth/me |
Get current user |
Projects
| Method | Path | Description |
|---|---|---|
| GET | /api/projects |
List user’s projects |
| POST | /api/projects |
Create a project |
| GET | /api/projects/:id |
Get project details |
| PUT | /api/projects/:id |
Update project (admin) |
| DELETE | /api/projects/:id |
Delete project (admin) |
| POST | /api/projects/:id/members |
Add member (admin) |
| DELETE | /api/projects/:id/members/:userId |
Remove member (admin) |
Tasks
| Method | Path | Description |
|---|---|---|
| GET | /api/tasks/project/:projectId |
Get tasks for a project |
| GET | /api/tasks/my |
Get my assigned tasks |
| POST | /api/tasks |
Create task (admin) |
| PUT | /api/tasks/:id |
Update task |
| DELETE | /api/tasks/:id |
Delete task (admin) |
Dashboard
| Method | Path | Description |
|---|---|---|
| GET | /api/dashboard |
Get dashboard analytics |
Database Schema
See schema.sql for the full schema. Tables:
users– user accountsprojects– team projectsproject_members– user ↔ project membership with rolestasks– tasks within projects
License
MIT
Recommended Tools
Try a different keyword or remove a filter.
Install
npx skillfish add yuvrajcodes1925/taskforge