Deadline: Sunday, Feb 23th 11:59 pm PST
Create a “Task Management” application with React + TypeScript (frontend), Node.js (or Nest.js) (backend), and PostgreSQL (database). The application should:
- Register (sign up) and Log in (sign in) users.
 - After logging in, allow users to:
- View a list of tasks.
 - Create a new task.
 - Update an existing task (e.g., mark complete, edit).
 - Delete a task.
 
 
Focus on correctness, functionality, and code clarity rather than visual design.
This challenge is intended to be completed within ~3 hours, so keep solutions minimal yet functional.
- User Model:
id: Primary keyusername: Unique stringpassword: Hashed string
 - Endpoints:
POST /auth/register– Create a new userPOST /auth/login– Login user, return a token (e.g., JWT)
 - Secure the Tasks Routes: Only authenticated users can perform task operations.
- Password Hashing: Use 
bcryptor another hashing library to store passwords securely. - Token Verification: Verify the token (JWT) on each request to protected routes.
 
 - Password Hashing: Use 
 
- Tasks CRUD:
GET /tasks– Retrieve a list of tasks (optionally filtered by user).POST /tasks– Create a new task.PUT /tasks/:id– Update a task (e.g., mark as complete, edit text).DELETE /tasks/:id– Delete a task.
 - Task Model:
id: Primary keytitle: stringdescription: string (optional)isComplete: boolean (defaultfalse)- (Optional) 
userIdto link tasks to the user who created them 
 - Database: PostgreSQL
- Provide instructions/migrations to set up:
userstable (with hashed passwords)taskstable
 
 - Provide instructions/migrations to set up:
 - Setup:
npm installto install dependenciesnpm run start(ornpm run dev) to run the server- Document any environment variables (e.g., database connection string, JWT secret)
 
 
- Login / Register:
- Simple forms for Register and Login.
 - Store JWT (e.g., in 
localStorage) upon successful login. - If not authenticated, the user should not see the tasks page.
 
 - Tasks Page:
- Fetch tasks from 
GET /tasks(including auth token in headers). - Display the list of tasks.
 - Form to create a new task (
POST /tasks). - Buttons/fields to update a task (
PUT /tasks/:id). - Button to delete a task (
DELETE /tasks/:id). 
 - Fetch tasks from 
 - Navigation:
- Show 
Login/Registerif not authenticated. - Show 
Logoutif authenticated. 
 - Show 
 - Setup:
npm installthennpm start(ornpm run dev) to run.- Document how to point the frontend at the backend (e.g., 
.envfile, base URL). 
 
- Fork the Public Repository: Fork this repo into your own GitHub account.
 - Implement Your Solution in the forked repository. Make sure you're README file has:
- Steps to set up the database (migrations, environment variables).
 - How to run the backend.
 - How to run the frontend.
 - Any relevant notes on testing.
 - Salary Expectations per month (Mandatory)
 
 - Short Video Demo: Provide a link (in a 
.mdfile in your forked repo) to a brief screen recording showing:- Registering a user
 - Logging in
 - Creating, updating, and deleting tasks
 
 - Deadline: Submissions are due Sunday, Feb 23th 11:59 pm PST.
 
Note: Please keep your solution minimal. The entire project is intended to be completed in around 3 hours. Focus on core features (registration, login, tasks CRUD) rather than polished UI or extra features.
- 
Functionality
- Does registration and login work correctly (with password hashing)?
 - Are tasks protected by authentication?
 - Does the tasks CRUD flow work end-to-end?
 
 - 
Code Quality
- Is the code structured logically and typed in TypeScript?
 - Are variable/function names descriptive?
 
 - 
Clarity
- Is the 
README.md(in your fork) clear and detailed about setup steps? - Easy to run and test?
 
 - Is the 
 - 
Maintainability
- Organized logic (controllers/services, etc.)
 - Minimal hard-coded values
 
 
Good luck, and we look forward to your submission!