
- Created a new endpoint at /api/v1/env/content that returns the CONTENT environment variable - Added error handling for when the environment variable is not set - Updated documentation with new endpoint information and usage examples - Added environment variables as a new feature in README
4.1 KiB
4.1 KiB
FastAPI Todo App
A simple Todo API built with FastAPI and SQLite.
Features
- 📝 Todo Management: Create, read, update, and delete todo items
- 🔍 Filtering & Pagination: Filter todos by completion status and paginate results
- 📊 Health Monitoring: Endpoint to check application and database health
- 🔧 Environment Variables: Access to environment variables via API
- 🛡️ Error Handling: Comprehensive error handling with meaningful messages
- 📚 API Documentation: Auto-generated Swagger/OpenAPI documentation
Tech Stack
- FastAPI: Modern, fast (high-performance) web framework for building APIs
- SQLAlchemy: SQL toolkit and Object-Relational Mapping (ORM)
- Alembic: Database migration tool
- SQLite: Lightweight, file-based database
- Pydantic: Data validation and settings management
- Uvicorn: ASGI server for running the application
Project Structure
├── app/
│ ├── api/
│ │ └── v1/
│ │ ├── env_vars.py # Environment variables endpoints
│ │ ├── health.py # Health check endpoint
│ │ ├── router.py # API router
│ │ └── todos.py # Todo CRUD endpoints
│ ├── core/
│ │ ├── config.py # Application configuration
│ │ └── exceptions.py # Custom exception handlers
│ ├── database/
│ │ └── session.py # Database session setup
│ ├── models/
│ │ └── todo.py # SQLAlchemy models
│ └── schemas/
│ └── todo.py # Pydantic schemas
├── migrations/ # Alembic migration files
├── alembic.ini # Alembic configuration
├── main.py # Application entry point
└── requirements.txt # Project dependencies
Setup Instructions
Prerequisites
- Python 3.8+
- pip (Python package installer)
Installation
-
Clone the repository:
git clone <repository-url> cd todoapp-us6a2a
-
Install dependencies:
pip install -r requirements.txt
-
Create the database and run migrations:
alembic upgrade head
Running the Application
Start the application with:
uvicorn main:app --host 0.0.0.0 --port 8000 --reload
The API will be available at: http://localhost:8000
API Documentation
Interactive API documentation is available at:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
API Endpoints
Health Check
GET /health
- Check application health
Todo Endpoints
GET /api/v1/todos
- List all todos (with optional filtering and pagination)POST /api/v1/todos
- Create a new todoGET /api/v1/todos/{todo_id}
- Get a specific todoPATCH /api/v1/todos/{todo_id}
- Update a todoDELETE /api/v1/todos/{todo_id}
- Delete a todo
Environment Variables Endpoints
GET /api/v1/env/content
- Get the value of the CONTENT environment variable
Example Usage
Create a Todo
curl -X 'POST' \
'http://localhost:8000/api/v1/todos/' \
-H 'Content-Type: application/json' \
-d '{
"title": "Learn FastAPI",
"description": "Build a sample todo app",
"completed": false
}'
List All Todos
curl -X 'GET' 'http://localhost:8000/api/v1/todos/'
Get a Specific Todo
curl -X 'GET' 'http://localhost:8000/api/v1/todos/1'
Update a Todo
curl -X 'PATCH' \
'http://localhost:8000/api/v1/todos/1' \
-H 'Content-Type: application/json' \
-d '{
"completed": true
}'
Delete a Todo
curl -X 'DELETE' 'http://localhost:8000/api/v1/todos/1'
Get CONTENT Environment Variable
curl -X 'GET' 'http://localhost:8000/api/v1/env/content'
To set the environment variable before running the application:
export CONTENT="Your content here"
uvicorn main:app --host 0.0.0.0 --port 8000 --reload
License
This project is licensed under the MIT License.