A clean, responsive, and fully functional full-stack task manager built for students to organize assignments, lab records, exams, and project work. This project demonstrates real-world full-stack development using Node.js + Express on the backend and HTML/CSS/JavaScript on the frontend.
- Add tasks with title, subject, due date, and priority
- View tasks in a clean, sortable table layout
- Mark tasks as Pending or Completed
- Edit and Delete tasks from the table
- Filter tasks by All / Pending / Completed
- Live search by title or subject
- Real-time task statistics:
- Total tasks
- Pending tasks
- Completed tasks
- Persistent data stored in
data/tasks.json(survives server restarts)
Frontend
- HTML
- CSS
- Vanilla JavaScript (Fetch API)
Backend
- Node.js
- Express.js
Storage
- File-based JSON persistence (
data/tasks.json)
Tools
- VS Code
- npm
Base URL: http://localhost:3000 (or the port set in your environment)
-
GET /api/tasks
Get all tasks
Response: JSON array of task objects -
POST /api/tasks
Create a new task
Expected JSON body:{ "title": "DBMS Record", "subject": "DBMS", "dueDate": "2025-12-01", "priority": "High" } -
PATCH /api/tasks/:id
Update a specific task (partial updates allowed)
Example body to mark completed:{ "completed": true } -
DELETE /api/tasks/:id
Delete a specific task
Task object example:
{
"id": "uuid-or-number",
"title": "Example Task",
"subject": "Subject",
"dueDate": "YYYY-MM-DD",
"priority": "Low|Medium|High",
"completed": false,
"createdAt": "2025-11-29T12:34:56.789Z"
}-
Clone the repo
git clone https://github.com/kishore0000123/Student-Task-Manager.git cd Student-Task-Manager -
Install dependencies
npm install
-
Start the server
npm start
The app typically serves files from
public/and exposes API routes under/api/tasks. Openhttp://localhost:3000in your browser (adjust port if needed).
- Designing a RESTful API using Express (GET/POST/PATCH/DELETE)
- Handling and validating JSON requests
- Building a dynamic frontend with vanilla JavaScript (no frameworks)
- DOM manipulation to render tables, stats, filters, and search
- Maintaining client-side state (allTasks, filter mode, search query)
- File-based persistence with
fs.promisesin Node.js - Clean folder structure and modular design
- Responsive, modern UI styling with CSS
- The app uses a file
data/tasks.jsonfor persistence. Make sure thedata/directory is writable by the server process. - Consider switching to a database (SQLite, Postgres, MongoDB) for production or multi-user scenarios.
- Add validation and rate-limiting on the backend for extra robustness.