feat(01-01): initialize Python project with uv and dependencies
- Add pyproject.toml with FastAPI, SQLAlchemy, Pydantic dependencies - Configure ruff linter with Python 3.12 target - Create .env.example with documented environment variables - Add README.md with development setup instructions
This commit is contained in:
parent
262a32673b
commit
300b3ddb0a
3 changed files with 93 additions and 0 deletions
23
.env.example
Normal file
23
.env.example
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
# Database Configuration
|
||||
# PostgreSQL connection string using asyncpg driver
|
||||
DATABASE_URL=postgresql+asyncpg://debate:debate@localhost:5432/debate
|
||||
|
||||
# Security
|
||||
# Generate with: openssl rand -hex 32
|
||||
SECRET_KEY=your-secret-key-here-generate-with-openssl-rand-hex-32
|
||||
|
||||
# Environment
|
||||
# Options: development, production
|
||||
ENVIRONMENT=development
|
||||
|
||||
# Debug Mode
|
||||
# Set to false in production
|
||||
DEBUG=true
|
||||
|
||||
# Allowed Hosts
|
||||
# Comma-separated list of allowed host headers
|
||||
ALLOWED_HOSTS=localhost,127.0.0.1
|
||||
|
||||
# CORS Origins
|
||||
# Comma-separated list of allowed origins for CORS
|
||||
ALLOWED_ORIGINS=http://localhost:3000,http://127.0.0.1:3000
|
||||
19
README.md
Normal file
19
README.md
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
# Debate Backend
|
||||
|
||||
Backend API for the Debate Linux distribution builder platform.
|
||||
|
||||
## Development
|
||||
|
||||
```bash
|
||||
# Create virtual environment
|
||||
uv venv
|
||||
|
||||
# Activate
|
||||
source .venv/bin/activate
|
||||
|
||||
# Install dependencies
|
||||
uv pip install -e ".[dev]"
|
||||
|
||||
# Run development server
|
||||
uvicorn backend.app.main:app --reload
|
||||
```
|
||||
51
pyproject.toml
Normal file
51
pyproject.toml
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
[project]
|
||||
name = "debate-backend"
|
||||
version = "0.1.0"
|
||||
description = "Backend API for the Debate Linux distribution builder platform"
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.12"
|
||||
license = { text = "MIT" }
|
||||
authors = [
|
||||
{ name = "Debate Team" }
|
||||
]
|
||||
|
||||
dependencies = [
|
||||
"fastapi[all]>=0.115.0",
|
||||
"uvicorn[standard]>=0.30.0",
|
||||
"sqlalchemy[asyncio]>=2.0.0",
|
||||
"asyncpg<0.29.0",
|
||||
"alembic",
|
||||
"pydantic>=2.10.0",
|
||||
"pydantic-settings",
|
||||
"slowapi",
|
||||
"fastapi-csrf-protect",
|
||||
"python-multipart",
|
||||
]
|
||||
|
||||
[project.optional-dependencies]
|
||||
dev = [
|
||||
"pytest",
|
||||
"pytest-asyncio",
|
||||
"pytest-cov",
|
||||
"httpx",
|
||||
"ruff",
|
||||
"mypy",
|
||||
]
|
||||
|
||||
[build-system]
|
||||
requires = ["hatchling"]
|
||||
build-backend = "hatchling.build"
|
||||
|
||||
[tool.hatch.build.targets.wheel]
|
||||
packages = ["backend"]
|
||||
|
||||
[tool.ruff]
|
||||
line-length = 88
|
||||
target-version = "py312"
|
||||
|
||||
[tool.ruff.lint]
|
||||
select = ["E", "F", "I", "N", "W", "UP"]
|
||||
|
||||
[tool.mypy]
|
||||
python_version = "3.12"
|
||||
strict = true
|
||||
Loading…
Add table
Reference in a new issue