Backend Developer Coding Test
Introduction
This test is designed to evaluate your backend development skills, including API design,
database management, authentication, and advanced problem-solving. You will build a
backend service for a Project Management Application with a focus on real-world
scenarios.
Objective
Develop a backend service to manage Projects and Tasks, including the ability to
assign tasks to team members, track progress, and enforce role-based access controls.
In this test, you don’t need to create UI design and need to develop API route.
Requirements: Core Functionalities
User Management
1. Registration and Login:
o Users should register with name, email, and password (hashed).
o Implement JWT-based authentication.
2. Roles and Permissions:
o Each user can have a role: Admin, Manager, or Employee.
o Role-based access control (RBAC) must be implemented:
Admin: Full access to all endpoints.
Manager: Can manage projects and assign tasks.
Employee: Can view assigned tasks and update task status.
AndFun Yangon Company Limited
Project Management
1. CRUD Operations:
o POST /projects: Create a new project (Admin & Manager).
o GET /projects: Fetch all projects, with filters for status and manager_id.
o GET /projects/{id}: Fetch a specific project.
o PUT /projects/{id}: Update project details (Admin/Manager).
o DELETE /projects/{id}: Soft delete a project (Admin).
2. Project Fields:
o id, name, description, manager_id, status (default: Active), created_at,
updated_at.
Task Management
1. CRUD Operations:
o POST /tasks: Create a new task within a project (Manager).
o GET /tasks: Fetch tasks with filters (e.g., project_id, assigned_user_id,
status).
o PUT /tasks/{id}: Update task details (Manager/Employee).
o DELETE /tasks/{id}: Soft delete a task (Manager).
2. Task Fields:
o id, title, description, project_id, assigned_user_id, status (Pending, In
Progress, Completed), due_date, created_at, updated_at.
AndFun Yangon Company Limited
Reporting and Analytics
1. Project Summary:
o API to fetch the total number of tasks in each status for a project.
2. User Performance:
o API to fetch the number of completed tasks by each employee within a
date range.
2. Technical Requirements
1. Framework: Use a modern backend framework (e.g., Laravel or CodeIgniter).
2. Database: Use a relational database (e.g., MySQL, PostgreSQL).
o Define relationships between users, projects, and tasks.
3. Authentication: Use JWT for secure access. Tokens should expire after a set
period.
4. Validation: Ensure proper validation for all API inputs (e.g., required fields, data
types).
5. Error Handling: Implement graceful error handling with proper HTTP status
codes.
3. Advanced Features (Optional but Recommended)
Search: Add a search API to filter projects and tasks by name or description.
Docker: Containerize the application for easy setup and deployment.
AndFun Yangon Company Limited
Submission Guidelines
1. Code Repository:
o Push your project to a public/private GitHub repository.
o Use clear and descriptive commit messages.
2. Documentation:
o Create the docx Word document and explain about you have done.
Evaluation Criteria
1. Code Quality: Clean, maintainable, and modular code.
2. Functionality: Completeness of required features.
3. Database Design: Proper use of relationships, indexes, and normalization.
4. Authentication & Security: Proper role-based access control and secure token
handling.
5. Performance: Efficient queries and pagination.
6. Testing: Presence and quality of tests.
7. Documentation: Clarity and usability of setup and API documentation.
AndFun Yangon Company Limited