# Generic REST API with FastAPI and SQLite This is a RESTful API built with FastAPI and SQLite, providing a foundation for building robust web applications with Python. ## Features - FastAPI framework with automatic API documentation - SQLAlchemy ORM with SQLite database - Alembic database migrations - Repository pattern for database operations - Pydantic models for data validation - CORS middleware enabled - Health check endpoint - RESTful CRUD operations ## Requirements - Python 3.8+ ## Installation 1. Clone the repository: ```bash git clone https://github.com/yourusername/genericrestapi.git cd genericrestapi ``` 2. Install dependencies: ```bash pip install -r requirements.txt ``` 3. Run database migrations: ```bash alembic upgrade head ``` ## Environment Variables This application uses the following environment variables: - None required for basic operation as the app uses SQLite with a fixed path ## Running the Application Start the development server: ```bash uvicorn main:app --reload ``` The API will be available at http://localhost:8000. ## API Documentation Once the application is running, you can access: - Interactive API documentation: http://localhost:8000/docs - ReDoc API documentation: http://localhost:8000/redoc - OpenAPI specification: http://localhost:8000/openapi.json ## API Endpoints ### Health Check - `GET /health` - Check API health status ### Items API - `GET /api/v1/items/` - List all items (with pagination) - `POST /api/v1/items/` - Create a new item - `GET /api/v1/items/{item_id}` - Get a specific item by ID - `PUT /api/v1/items/{item_id}` - Update a specific item - `DELETE /api/v1/items/{item_id}` - Delete a specific item ## Project Structure ``` . ├── alembic.ini # Alembic configuration ├── app/ # Application package │ ├── api/ # API package │ │ ├── app.py # FastAPI application instance │ │ ├── health.py # Health check endpoint │ │ └── v1/ # API v1 endpoints │ │ └── routes.py # API route definitions │ ├── core/ # Core functionality │ │ ├── config.py # Application configuration │ │ └── exceptions.py # Custom exception classes │ └── db/ # Database package │ ├── models/ # SQLAlchemy models │ │ └── item.py # Item model definition │ ├── repositories/ # Repository pattern implementations │ │ ├── base.py # Base repository class │ │ └── item.py # Item repository │ ├── schemas/ # Pydantic schemas │ │ └── item.py # Item schemas │ └── session.py # Database session configuration ├── main.py # Application entry point ├── migrations/ # Alembic migrations │ ├── env.py # Alembic environment │ ├── README # Migrations README │ ├── script.py.mako # Migration script template │ └── versions/ # Migration versions │ └── 0001_initial_migration.py # Initial migration └── requirements.txt # Python dependencies ``` ## Development ### Running Tests Tests can be run using pytest: ```bash pytest ``` ### Code Formatting and Linting This project uses Ruff for linting and code formatting: ```bash ruff check . ruff format . ``` ## License [MIT License](LICENSE)