Create a web application for managing tasks. The app should allow users to register, log in, and manage their tasks. Each task should have a title, description, due date, and status (e.g., pending, completed).
- User Authentication: Users should be able to register for an account and log in securely.
- Task Management: Once logged in, users should be able to create, view, edit, and delete tasks.
- Task Sorting and Filtering: Users should have options to sort tasks by due date, status, or title. Additionally, they should be able to filter tasks based on their status (e.g., view only pending tasks).
- User Profile: Users should have a profile page where they can update their information, such as username and password.
- Responsive Design: Ensure the web app is responsive and works well on both desktop and mobile devices.
- Task Categories: Allow users to categorize tasks into different groups (e.g., work, personal).
- Task Reminders: Implement a feature that sends email reminders to users for upcoming tasks.
- Collaboration: Enable users to share tasks or task lists with other registered users.
- Task Comments: Allow users to add comments or notes to tasks.
- Task Attachments: Enable users to upload and attach files or documents to tasks.
- Backend: Go (Golang) with a web framework like Gin or Echo.
- Frontend: HTML, CSS, JavaScript (you can use a frontend framework like React or Vue.js if you're comfortable).
- Database: Use PostgreSQL or MySQL for storing user accounts and tasks. Sqlite for dev.
- Authentication: Implement JWT (JSON Web Tokens) for user authentication.
- Deployment: Deploy the web app to a cloud platform like Heroku or AWS.
curl -X POST -H "Content-Type: application/json" -d "{\"title\":\"The Go Programming Language\", \"description\":\"Alan A. A. Donovan\",\"dueDate\":\"2024-06-22T00:00:00Z\", \"status\":\"pending\"}" http://localhost:8080/tasks
curl http://localhost:8080/tasks
curl http://localhost:8080/tasks/6