Challenge briefFull Stack Developer
Objective
Build a full-stack To-Do List application with frontend and backend components. Users should be able to add, view, update, and delete tasks, with data stored persistently in a database.
Core requirements
- Frontend
- Build an interface for adding, viewing, completing, and deleting tasks.
- Show a title and creation timestamp for each task.
- Use a modern frontend technology such as React, Vue, or Angular.
- Perform CRUD operations through requests to the backend API.
- Backend
- Build a RESTful API for task CRUD operations.
- Use a backend framework such as Express, Django, or Flask.
- Persist data with MySQL, PostgreSQL, MongoDB, or a comparable database.
- Validate incoming data and return useful errors for invalid input.
- Data model
- Each task needs a unique ID, title, timestamp, and status such as Pending or Completed.
- Frontend and backend integration
- Keep the interface synchronized with data returned by the API.
- Handle loading, success, and error outcomes appropriately.
- Responsive design
- Support desktop and mobile layouts.
- Security
- Validate and sanitize input to mitigate SQL injection, XSS, and related attacks.
- Authentication (optional)
- Use JWT or session-based authentication so users can manage their own tasks.
Stretch goals
- Paginate longer task collections.
- Filter tasks by status, date, or title.
- Write unit and integration tests for frontend and backend behavior.
- Deploy the application to a cloud provider.
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.