YT

yuvrajcodes1925/taskforge

Developer tools
0 stars Quality 45 Trend 8

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):

Deployment on Railway

Step 1 – Create a Railway project

  1. Go to railway.app and create a new project
  2. Add a PostgreSQL plugin to the project

Step 2 – Deploy the backend

  1. Connect your GitHub repository
  2. Set the Root Directory to / and start command to npm run start
  3. 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

  1. Create a second Railway service from the same repo
  2. Set build command: npm run build:client
  3. Set start command: npm run serve:client (or use a static site deployment)
  4. Set VITE_API_URL to 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 serves client/dist as 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 accounts
  • projects – team projects
  • project_members – user ↔ project membership with roles
  • tasks – tasks within projects

License

MIT

View this README on GitHub

Recommended Tools

Try a different keyword or remove a filter.

Install

npx skillfish add yuvrajcodes1925/taskforge