Case Study Full Stack Developer
Case Study Full Stack Developer
1. Objective:
Develop a full-stack application where users can log in and manage tasks. The application must
support user authentication, CRUD operations on tasks, and be fully Dockerized for easy
deployment and execution. PostgreSQL should be used as the database, and the backend
should follow best practices with Express.js and TypeScript for scalability.
2. Deliverables:
1
3. Requirements:
Frontend:
● Authentication Workflow:
o Users must log in using a valid username and password.
o The frontend must store the JWT token securely (e.g., localStorage).
o Include logout functionality.
● Task Management:
o A form to create and edit tasks (title, description, and status fields).
o A list view showing all tasks.
o Buttons for updating and deleting tasks.
● Technologies:
o React (Vite) for fast development
o Redux Toolkit for state management
o Axios for API requests
Backend:
● Architecture:
o Express.js with TypeScript for type safety and maintainability
o Prisma ORM for database access
o JWT authentication for secure login
o Swagger documentation for API
2
4. Dockerization Instructions:
As part of this case study, the entire application (frontend, backend, and database) must be
Dockerized. The following points must be addressed.
Dockerization Requirements:
1. Functionality:
a. The application must provide user authentication and task management
features.
b. All CRUD operations must be functional and properly integrated with the
backend.
3
2. Code Quality:
a. Follow best practices in both frontend and backend development.
b. Maintain a clean and modular codebase.
3. Dockerization:
a. The application must run seamlessly using Docker.
b. Services must be well-defined and interconnected in the docker-compose file.
4. Documentation:
a. Provide a clear and concise README.md file with setup instructions.
b. Include an API reference for available endpoints.
5. Extra Points:
a. Unit tests for backend services.
b. Error handling and validation for both frontend and backend.
c. Swagger documentation for the backend API.
Good luck.