This project is built with FastAPI + Poetry and clearly separates
local development and AWS deployment environments (Dev / Prod).
| Category | Technology |
|---|---|
| Framework | FastAPI |
| Validation | Pydantic |
| ORM | SQLAlchemy |
| DB Migration | Alembic |
| Category | Technology |
|---|---|
| Virtual Environment / Package Manager | Poetry |
| Category | Technology |
|---|---|
| DB Engine | PostgreSQL |
| Local | Docker |
| Dev / Prod | AWS RDS |
| Category | Technology |
|---|---|
| Server | AWS Lambda |
| Authentication | AWS Cognito |
| Storage | AWS S3 |
| Category | Technology |
|---|---|
| Caching | Redis |
| Testing | pytest |
This project requires Poetry.
curl -sSL https://install.python-poetry.org | python3 -If the command is not found after installation, add Poetry to your PATH:
export PATH="$HOME/.local/bin:$PATH"(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -Verify installation:
poetry --versionRun the following command at the project root:
poetry install- Dependencies are installed based on
pyproject.toml - Poetry automatically creates and manages the virtual environment
Start the FastAPI development server with:
poetry run uvicorn app.main:app --reload --port 8000--reload: Automatically restarts the server on code changes- URL: http://localhost:8000
For local development, PostgreSQL is provided via Docker.
- Docker Desktop must be installed
docker compose up -ddocker compose down -v- The
-voption removes volumes and resets the database docker-compose.ymlis located at the project root
poetry run alembic revision --autogenerate -m "migration message"- Generates a migration file based on SQLAlchemy model changes
poetry run alembic upgrade head- Applies all migrations up to the latest revision
GitHub Actions is configured with the following workflows.
- Database migration workflow
- Lambda layer build & deploy
- Application build & deploy (AWS Lambda)
- The application is deployed with the corresponding Lambda layer
- Application build verification
- Ensures the app builds successfully without deployment
| Environment | Database | Purpose |
|---|---|---|
| Local | Docker (PostgreSQL) | Local development |
| Dev | AWS RDS | Shared development environment |
| Prod | AWS RDS | Production environment |