Spaces:
Sleeping
Sleeping
| title: TaskFlow API | |
| emoji: ✅ | |
| colorFrom: blue | |
| colorTo: indigo | |
| sdk: docker | |
| pinned: false | |
| license: mit | |
| # TaskFlow Backend API | |
| FastAPI backend for TaskFlow task management application with AI chatbot integration. | |
| ## Features | |
| - User authentication with JWT and Better Auth | |
| - Task CRUD operations | |
| - **AI Chatbot Assistant** - Conversational AI for task management | |
| - PostgreSQL database with SQLModel ORM | |
| - RESTful API design | |
| - Multi-turn conversation support with context management | |
| - Intent recognition for todo-related requests | |
| ## Tech Stack | |
| - **Framework**: FastAPI 0.104.1 | |
| - **ORM**: SQLModel 0.0.14 | |
| - **Database**: PostgreSQL (Neon Serverless) | |
| - **Authentication**: Better Auth + JWT | |
| - **AI Provider**: Google Gemini (gemini-pro) | |
| - **Migrations**: Alembic 1.13.0 | |
| ## Environment Variables | |
| Configure these in your `.env` file: | |
| ### Database | |
| - `DATABASE_URL`: PostgreSQL connection string (Neon or local) | |
| ### Application | |
| - `APP_NAME`: Application name (default: "Task CRUD API") | |
| - `DEBUG`: Debug mode (default: True) | |
| - `CORS_ORIGINS`: Allowed CORS origins (default: "http://localhost:3000") | |
| ### Authentication | |
| - `BETTER_AUTH_SECRET`: Secret key for Better Auth (required) | |
| - `JWT_ALGORITHM`: JWT algorithm (default: "HS256") | |
| - `JWT_EXPIRATION_DAYS`: Token expiration in days (default: 7) | |
| ### AI Provider Configuration | |
| - `AI_PROVIDER`: AI provider to use (default: "gemini") | |
| - `GEMINI_API_KEY`: Google Gemini API key (required if using Gemini) | |
| - `OPENROUTER_API_KEY`: OpenRouter API key (optional) | |
| - `COHERE_API_KEY`: Cohere API key (optional) | |
| ### Conversation Settings | |
| - `MAX_CONVERSATION_MESSAGES`: Maximum messages to keep in history (default: 20) | |
| - `MAX_CONVERSATION_TOKENS`: Maximum tokens to keep in history (default: 8000) | |
| ## Setup Instructions | |
| ### 1. Install Dependencies | |
| ```bash | |
| pip install -r requirements.txt | |
| ``` | |
| ### 2. Configure Environment | |
| Create a `.env` file in the `backend/` directory: | |
| ```env | |
| # Database | |
| DATABASE_URL=postgresql://user:password@localhost:5432/todo_db | |
| # Application | |
| APP_NAME=Task CRUD API | |
| DEBUG=True | |
| CORS_ORIGINS=http://localhost:3000 | |
| # Authentication | |
| BETTER_AUTH_SECRET=your_secret_key_here | |
| JWT_ALGORITHM=HS256 | |
| JWT_EXPIRATION_DAYS=7 | |
| # AI Provider | |
| AI_PROVIDER=gemini | |
| GEMINI_API_KEY=your_gemini_api_key_here | |
| # Conversation Settings | |
| MAX_CONVERSATION_MESSAGES=20 | |
| MAX_CONVERSATION_TOKENS=8000 | |
| ``` | |
| ### 3. Run Database Migrations | |
| ```bash | |
| alembic upgrade head | |
| ``` | |
| ### 4. Start the Server | |
| ```bash | |
| uvicorn src.main:app --reload --host 0.0.0.0 --port 8000 | |
| ``` | |
| The API will be available at `http://localhost:8000` | |
| ## API Documentation | |
| Once running, visit: | |
| - **Interactive Docs**: `http://localhost:8000/docs` | |
| - **ReDoc**: `http://localhost:8000/redoc` | |
| ## API Endpoints | |
| ### Authentication | |
| - `POST /api/auth/signup` - Register new user | |
| - `POST /api/auth/login` - Login user | |
| ### Tasks | |
| - `GET /api/{user_id}/tasks` - Get all tasks for user | |
| - `POST /api/{user_id}/tasks` - Create new task | |
| - `GET /api/{user_id}/tasks/{task_id}` - Get specific task | |
| - `PUT /api/{user_id}/tasks/{task_id}` - Update task | |
| - `DELETE /api/{user_id}/tasks/{task_id}` - Delete task | |
| ### AI Chat (New in Phase 1) | |
| - `POST /api/{user_id}/chat` - Send message to AI assistant | |
| #### Chat Request Body | |
| ```json | |
| { | |
| "message": "Can you help me organize my tasks?", | |
| "conversation_id": 123, // Optional: null for new conversation | |
| "temperature": 0.7 // Optional: 0.0 to 1.0 | |
| } | |
| ``` | |
| #### Chat Response | |
| ```json | |
| { | |
| "conversation_id": 123, | |
| "message": "I'd be happy to help you organize your tasks!", | |
| "role": "assistant", | |
| "timestamp": "2026-01-14T10:30:00Z", | |
| "token_count": 25, | |
| "model": "gemini-pro" | |
| } | |
| ``` | |
| ## AI Chatbot Features | |
| ### Phase 1 (Current) | |
| - ✅ Natural conversation with AI assistant | |
| - ✅ Multi-turn conversations with context retention | |
| - ✅ Intent recognition for todo-related requests | |
| - ✅ Conversation history persistence | |
| - ✅ Automatic history trimming (20 messages / 8000 tokens) | |
| - ✅ Free-tier AI provider support (Gemini) | |
| ### Phase 2 (Coming Soon) | |
| - 🔄 MCP tools for task CRUD operations | |
| - 🔄 AI can directly create, update, and delete tasks | |
| - 🔄 Natural language task management | |
| ## Error Handling | |
| The API returns standard HTTP status codes: | |
| - `200 OK` - Request successful | |
| - `400 Bad Request` - Invalid request data | |
| - `401 Unauthorized` - Authentication required or failed | |
| - `404 Not Found` - Resource not found | |
| - `429 Too Many Requests` - Rate limit exceeded | |
| - `500 Internal Server Error` - Server error | |
| ## Database Schema | |
| ### Users Table | |
| - `id`: Primary key | |
| - `email`: Unique email address | |
| - `name`: User's name | |
| - `password`: Hashed password | |
| - `created_at`, `updated_at`: Timestamps | |
| ### Tasks Table | |
| - `id`: Primary key | |
| - `user_id`: Foreign key to users | |
| - `title`: Task title | |
| - `description`: Task description | |
| - `completed`: Boolean status | |
| - `created_at`, `updated_at`: Timestamps | |
| ### Conversation Table (New) | |
| - `id`: Primary key | |
| - `user_id`: Foreign key to users | |
| - `title`: Conversation title | |
| - `created_at`, `updated_at`: Timestamps | |
| ### Message Table (New) | |
| - `id`: Primary key | |
| - `conversation_id`: Foreign key to conversation | |
| - `role`: "user" or "assistant" | |
| - `content`: Message text | |
| - `timestamp`: Message timestamp | |
| - `token_count`: Token count for the message | |
| ## Development | |
| ### Running Tests | |
| ```bash | |
| pytest | |
| ``` | |
| ### Database Migrations | |
| Create a new migration: | |
| ```bash | |
| alembic revision -m "description" | |
| ``` | |
| Apply migrations: | |
| ```bash | |
| alembic upgrade head | |
| ``` | |
| Rollback migration: | |
| ```bash | |
| alembic downgrade -1 | |
| ``` | |
| ## License | |
| MIT License | |