# TechDating API A backend API for a dating application focused on tech professionals. ## Features - User authentication and registration - Profile management with tech-focused details - Matching system between users - Messaging between matched users - Tech stack filtering for finding compatible matches ## Tech Stack - **Framework**: FastAPI - **Database**: SQLite with SQLAlchemy ORM - **Authentication**: JWT tokens - **Migrations**: Alembic ## API Endpoints The API is organized into the following main sections: - `/api/v1/auth`: User registration and authentication - `/api/v1/users`: User account management - `/api/v1/profiles`: User profile creation and management - `/api/v1/matches`: Match requests and responses - `/api/v1/messages`: Messaging between matched users - `/health`: Application health check ## Getting Started ### Prerequisites - Python 3.8+ - pip ### Installation 1. Clone the repository ```bash git clone cd techdatingappbackend ``` 2. Create and activate a virtual environment ```bash python -m venv venv source venv/bin/activate # On Windows, use: venv\Scripts\activate ``` 3. Install dependencies ```bash pip install -r requirements.txt ``` 4. Set up environment variables ```bash cp .env.example .env # Edit .env with your desired configuration ``` 5. Run database migrations ```bash alembic upgrade head ``` 6. Start the development server ```bash uvicorn main:app --reload ``` The API will be available at http://localhost:8000. API documentation will be available at http://localhost:8000/docs. ## Project Structure ``` . ├── alembic.ini # Alembic configuration ├── app/ # Application code │ ├── api/ # API endpoints │ │ ├── v1/ # API version 1 │ │ │ ├── endpoints/ # API endpoint implementations │ │ │ └── api.py # API router │ │ └── deps.py # API dependencies (auth, etc.) │ ├── core/ # Core application code │ │ ├── config.py # Configuration settings │ │ └── security.py # Security utilities │ ├── crud/ # CRUD operations │ ├── db/ # Database setup │ │ └── session.py # Database session management │ ├── models/ # SQLAlchemy models │ └── schemas/ # Pydantic schemas ├── migrations/ # Alembic migrations │ └── versions/ # Migration scripts ├── main.py # Application entry point ├── requirements.txt # Dependencies └── .env # Environment variables ``` ## Development ### Running Tests ```bash pytest ``` ### Linting ```bash ruff . ``` ## API Documentation Once the server is running, visit: - Swagger UI: http://localhost:8000/docs - ReDoc: http://localhost:8000/redoc