| # Backend Requirements | |
| ## Overview | |
| This document outlines the technical requirements for the Flask API backend of the Lin application. | |
| ## Python Dependencies | |
| The backend will require the following Python packages: | |
| ### Core Dependencies | |
| - Flask: Web framework | |
| - Flask-CORS: Cross-Origin Resource Sharing support | |
| - Flask-JWT-Extended: JWT token management | |
| - Flask-SQLAlchemy: ORM for database interactions | |
| - Flask-Migrate: Database migration support | |
| - python-dotenv: Environment variable management | |
| - requests: HTTP library for API calls | |
| - requests-oauthlib: OAuth support | |
| - apscheduler: Task scheduling | |
| - supabase: Supabase client for database operations | |
| - pandas: Data manipulation | |
| - gradio-client: Hugging Face API client | |
| ### Development Dependencies | |
| - pytest: Testing framework | |
| - pytest-cov: Test coverage reporting | |
| - flake8: Code linting | |
| - black: Code formatting | |
| ## Environment Variables | |
| The backend will require the following environment variables: | |
| - SUPABASE_URL: Supabase project URL | |
| - SUPABASE_KEY: Supabase API key | |
| - CLIENT_ID: LinkedIn OAuth client ID | |
| - CLIENT_SECRET: LinkedIn OAuth client secret | |
| - REDIRECT_URL: LinkedIn OAuth redirect URL | |
| - HUGGING_KEY: Hugging Face API key | |
| - JWT_SECRET_KEY: Secret key for JWT token generation | |
| - DATABASE_URL: Database connection string (if using PostgreSQL directly) | |
| ## Database Requirements | |
| The application will use Supabase as the primary database, which is based on PostgreSQL. The following tables will be needed: | |
| ### Users | |
| - id (UUID) | |
| - email (string) | |
| - password_hash (string) | |
| - created_at (timestamp) | |
| - email_confirmed_at (timestamp) | |
| ### Social_network | |
| - id (UUID) | |
| - user_id (UUID, foreign key to Users) | |
| - social_network (string) | |
| - account_name (string) | |
| - token (string) | |
| - sub (string) | |
| - given_name (string) | |
| - family_name (string) | |
| - picture (string) | |
| - created_at (timestamp) | |
| ### Source | |
| - id (UUID) | |
| - user_id (UUID, foreign key to Users) | |
| - source (string) | |
| - category (string) | |
| - last_update (timestamp) | |
| - created_at (timestamp) | |
| ### Post_content | |
| - id (UUID) | |
| - social_account_id (UUID, foreign key to Social_network) | |
| - text_content (text) | |
| - image_content_url (bytea or URL) | |
| - is_published (boolean) | |
| - sched (UUID) | |
| - created_at (timestamp) | |
| - scheduled_at (timestamp) | |
| ### Scheduling | |
| - id (UUID) | |
| - social_account_id (UUID, foreign key to Social_network) | |
| - schedule_time (string) | |
| - adjusted_time (string) | |
| - created_at (timestamp) | |
| ## API Requirements | |
| ### Authentication | |
| - JWT-based authentication | |
| - Password hashing with bcrypt | |
| - Email confirmation flow | |
| - Password reset functionality | |
| ### Security | |
| - CORS policy configuration | |
| - Input validation and sanitization | |
| - Rate limiting for API endpoints | |
| - Secure headers implementation | |
| ### Error Handling | |
| - Consistent error response format | |
| - Proper HTTP status codes | |
| - Logging of errors for debugging | |
| - Validation error handling | |
| ## Integration Requirements | |
| ### LinkedIn API | |
| - OAuth2 authentication flow | |
| - Post creation and publishing | |
| - User profile information retrieval | |
| - Image upload support | |
| ### Hugging Face API | |
| - Content generation using Gradio client | |
| - Error handling for API failures | |
| - Timeout handling for long-running requests | |
| ### Scheduling System | |
| - APScheduler for task management | |
| - Conflict resolution for overlapping schedules | |
| - Automatic adjustment of schedule times | |
| - Persistent storage of scheduled tasks | |
| ## Deployment Requirements | |
| ### Server | |
| - Python 3.8+ | |
| - WSGI server (Gunicorn recommended) | |
| - Reverse proxy (Nginx recommended) | |
| - SSL certificate for HTTPS | |
| ### Scalability | |
| - Stateless design for horizontal scaling | |
| - Database connection pooling | |
| - Caching strategy for frequently accessed data | |
| - Background task processing for long-running operations | |
| ### Monitoring | |
| - Logging configuration | |
| - Health check endpoints | |
| - Performance monitoring | |
| - Error tracking integration | |
| ## Testing Requirements | |
| ### Unit Tests | |
| - Model validation tests | |
| - Service layer tests | |
| - Utility function tests | |
| ### Integration Tests | |
| - API endpoint tests | |
| - Database integration tests | |
| - External API integration tests | |
| ### Test Coverage | |
| - Minimum 80% code coverage | |
| - Testing of edge cases | |
| - Mocking of external dependencies | |
| - Continuous integration setup | 
