0% found this document useful (0 votes)
9 views3 pages

Collaborative Task Manager

The document outlines an engineering assessment for designing a full-stack Task Management application using modern technologies such as React, Node.js, and MongoDB. Key requirements include user authentication, task management with CRUD operations, real-time collaboration features, and a responsive user dashboard. Additionally, it emphasizes the importance of backend reliability, frontend user experience, code quality, and testing, with optional bonus challenges for advanced skills.

Uploaded by

Jatin Choudhary
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views3 pages

Collaborative Task Manager

The document outlines an engineering assessment for designing a full-stack Task Management application using modern technologies such as React, Node.js, and MongoDB. Key requirements include user authentication, task management with CRUD operations, real-time collaboration features, and a responsive user dashboard. Additionally, it emphasizes the importance of backend reliability, frontend user experience, code quality, and testing, with optional bonus challenges for advanced skills.

Uploaded by

Jatin Choudhary
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

Collaborative Task Manager: Full-Stack

Engineering Assessment
🎯 Objective
Design and build a complete, production-ready, full-stack Task Management application. This
assessment evaluates your ability to implement core application logic, ensure data integrity, and
handle real-time communication using modern JavaScript/TypeScript best practices across the
frontend and backend.

⚙️Technical Specifications (The Stack)


To ensure a consistent and modern development environment, please adhere to the following
technologies:

Layer Technology Requirement

Frontend React (via Vite ) Must use TypeScript and


Tailwind CSS.

Data Fetching React Query Mandatory for managing


server state and caching.

Backend [Link] + Express (with Must implement a clear


TypeScript) service/repository pattern.

Database MongoDB Choose one and justify the


selection in your README.

ORM/ODM Mongoose Use an industry-standard


library for database
interaction.

Real-Time [Link] Mandatory for


collaboration features.

Deployment Vercel/Netlify (FE) + Mandatory live


Render/Railway (BE/DB) deployment.

🧹 Core Requirements (Must Haves)


1. User Authentication & Authorization
● Secure Auth: Implement user registration and login. Passwords must be hashed (e.g., using
bcrypt).
● Session Management: Implement session handling, preferably using JWT (JSON Web Tokens)
stored securely (e.g., HttpOnly cookies).
● User Profiles: Allow users to view and update their name/profile information.

2. Task Management (CRUD)


Implement full CRUD operations for tasks. A task must include the following attributes:
● title (string, max 100 chars)
● description (string, multi-line)
● dueDate (date/time)
● priority (Enum: Low, Medium, High, Urgent)
● status (Enum: To Do, In Progress, Review, Completed)
● creatorId (The ID of the user who created the task)
● assignedToId (The ID of the registered user currently responsible for the task)

3. Real-Time Collaboration (Mandatory)


Implement real-time updates using [Link]:
● Live Updates: When a task's status, priority, or assignee is updated by any user, all other users
currently viewing the task list or dashboard must see the change instantly.
● Assignment Notification: Send an instant, persistent in-app notification to a user when a task is
assigned to them.

4. User Dashboard & Data Exploration


● Personal Views: A dedicated dashboard page showing:
○ Tasks assigned to the current user.
○ Tasks created by the current user.
○ Tasks that are Overdue (based on the dueDate).
● Filtering & Sorting: Implement filtering on the task list based on Status and Priority. Implement
sorting by Due Date.

Engineering & Architecture Quality


The evaluation will heavily weigh how you approach the engineering challenge:

1. Backend Reliability
● Clear Architecture: Use a proper architecture (e.g., MVC-like separation, with dedicated
Controllers, Services, and Repositories/Data Access Layers).
● Data Transfer Objects (DTOs): Implement DTOs (using Zod or Class Validator) for input
validation on all API endpoints (e.g., CreateTaskDto, UpdateTaskDto).
● Error Handling: Implement consistent and meaningful HTTP status codes and error responses
for failed requests (e.g., 401 for unauthorized, 404 for not found, 400 for validation errors).

2. Frontend UX & Data Management


● Responsive UI: The application must be fully responsive and optimized for both desktop and
mobile views (using Tailwind CSS).
● Loading States: Implement visible Skeleton Loading States (or similar smooth transitions)
when fetching data using SWR/React Query.
● Form Management: Use a dedicated library (e.g., React Hook Form, Formik) with validation (e.g.,
Zod, Yup) for task creation/editing forms.

3. Code Quality & Testing


● TypeScript Usage: Utilize strong typing throughout the application (both FE and BE) to enforce
type safety.
● Documentation: Add JSDoc/TSDoc comments for complex functions, data models, and API
endpoints.
● Mandatory Testing: Implement at least 3 unit tests for a critical piece of backend business
logic (e.g., the service function that handles task creation validation, or the WebSocket logic for
assignment). Use Jest or Mocha.

✨ Bonus Challenges (Optional, Highly Valued)


If you have time and want to showcase advanced skills:
1. Optimistic UI: Implement optimistic updates for task status changes using SWR/React Query
features.
2. Audit Logging: Implement a simple logging mechanism (on the backend) to record who updated
a task's status and when.

Important :

● The process of evaluation of assignment can take 4-8 weeks.


● Without a live deployment link the assignment would be rejected.

You might also like