Full-stack task management app with email/password auth, task CRUD, and a responsive UI.
Publish: https://vivek-28-2006.github.io/Task-Management-Application/
cd server
npm install
cp .env.example .env
npm run dev
By default the API stores data in a local JSON file. You can override the path in server/.env:
JSON_DB_PATH=./data/db.json
Create a database and tables:
CREATE DATABASE task_manager;
\c task_manager
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
email TEXT NOT NULL UNIQUE,
password_hash TEXT NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE TABLE tasks (
id SERIAL PRIMARY KEY,
owner_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
title TEXT NOT NULL,
details TEXT NOT NULL DEFAULT '',
status TEXT NOT NULL DEFAULT 'backlog',
priority TEXT NOT NULL DEFAULT 'medium',
due_date DATE,
tags TEXT[] NOT NULL DEFAULT '{}',
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
Or run the script after setting DATABASE_URL:
cd server
npm run db:init
cd client
npm install
cp .env.example .env
npm run dev
POST /api/auth/registerPOST /api/auth/loginGET /api/tasksPOST /api/tasksGET /api/tasks/:idPUT /api/tasks/:idDELETE /api/tasks/:idDATABASE_URL and JWT_SECRET in server .env before running.