40 lines
1.5 KiB
Plaintext
40 lines
1.5 KiB
Plaintext
**PROJECT NAME:** Todo-sovellus
|
|
|
|
**GOAL:** Create a simple task management application for individuals to keep track of their daily tasks and manage them efficiently.
|
|
|
|
**CORE FEATURES:**
|
|
1. Add new tasks with title, description, due date, and status.
|
|
2. View all tasks with filtering by status (e.g., pending, completed).
|
|
3. Update existing tasks including changing the title, description, due date, and status.
|
|
4. Delete tasks that are no longer needed.
|
|
5. Mark tasks as completed or pending.
|
|
6. Search for tasks by keywords in the title or description.
|
|
7. Export task list to a CSV file.
|
|
|
|
**DATA MODEL:**
|
|
1. **Task**
|
|
- id (integer, primary key)
|
|
- title (string, required)
|
|
- description (text, optional)
|
|
- due_date (date, optional)
|
|
- status (enum ['pending', 'completed'], default 'pending')
|
|
|
|
2. **User**
|
|
- id (integer, primary key)
|
|
- username (string, unique, required)
|
|
- email (string, unique, required)
|
|
- password_hash (string, required)
|
|
|
|
**API ENDPOINTS:**
|
|
1. **GET /tasks** - Retrieve all tasks with optional filters by status.
|
|
2. **POST /tasks** - Create a new task.
|
|
3. **GET /tasks/{task_id}** - Retrieve a specific task by ID.
|
|
4. **PUT /tasks/{task_id}** - Update an existing task.
|
|
5. **DELETE /tasks/{task_id}** - Delete a task.
|
|
6. **POST /users/register** - Register a new user.
|
|
7. **POST /users/login** - Authenticate and return a token for authorized access.
|
|
|
|
**CONSTRAINTS:**
|
|
- Must use SQLite as the database.
|
|
- No authentication is required for accessing CRUD operations.
|
|
- Implement unit tests for all API endpoints. |