Challenge briefBackend Developer
Objective
Build a RESTful API for a To-Do List application that allows clients to perform CRUD operations on tasks. The API should be secure, follow best practices, and store tasks persistently in a database.
Core requirements
- Endpoints
- Create a task with a title and timestamp.
- Fetch every task in the database.
- Fetch one task by its ID.
- Update a task, including marking it as completed.
- Delete a task by its ID.
- Data validation
- Validate required fields such as the task title.
- Return useful errors for invalid or missing data.
- Database
- Use a relational database such as MySQL or PostgreSQL, or a NoSQL database such as MongoDB.
- Data model
- Each task needs a unique ID, title, timestamp, and status such as Pending or Completed.
- Security
- Implement basic authentication using an API key or token-based approach.
Stretch goals
- Paginate the task collection.
- Add status filters and title search.
- Implement API rate limiting.
- Deploy the API to a cloud service.
- Write unit and integration tests for key behavior.
Prepare your submission
- Publish your solution in a public GitHub repository.
- Include a README with setup and run instructions.
- Explain your approach and the decisions you made.
- Check that the shared link opens without requesting access.