Add project setup: pyproject.toml, .gitignore, .env.example

Set up Python project with hatch build system and all core
dependencies: FastAPI, SQLAlchemy, Playwright, httpx, Streamlit,
Plotly, rapidfuzz, APScheduler.
This commit is contained in:
authentik Default Admin 2025-12-26 14:22:31 +00:00
parent cac57ee299
commit 058d01cb78
3 changed files with 79 additions and 0 deletions

18
.env.example Normal file
View file

@ -0,0 +1,18 @@
DATABASE_URL=postgresql+asyncpg://smartcart:smartcart@localhost:5432/smartcart
DATABASE_URL_SYNC=postgresql://smartcart:smartcart@localhost:5432/smartcart
# SuperValu login (required for scraping)
SUPERVALU_EMAIL=
SUPERVALU_PASSWORD=
# Scheduler
SCRAPE_HOUR=22
SCRAPE_MINUTE=0
# API
API_HOST=0.0.0.0
API_PORT=8000
# Dashboard
DASHBOARD_PORT=8501
API_BASE_URL=http://localhost:8000

18
.gitignore vendored Normal file
View file

@ -0,0 +1,18 @@
__pycache__/
*.py[cod]
*$py.class
*.egg-info/
dist/
build/
.eggs/
*.egg
.env
.venv/
venv/
*.db
*.sqlite3
.ruff_cache/
.pytest_cache/
.coverage
htmlcov/
.mypy_cache/

43
pyproject.toml Normal file
View file

@ -0,0 +1,43 @@
[project]
name = "smartcart"
version = "0.1.0"
description = "Price comparison system for Irish supermarkets"
requires-python = ">=3.12"
dependencies = [
"fastapi>=0.115.0",
"uvicorn[standard]>=0.32.0",
"sqlalchemy[asyncio]>=2.0.36",
"alembic>=1.14.0",
"asyncpg>=0.30.0",
"pydantic>=2.10.0",
"pydantic-settings>=2.6.0",
"playwright>=1.49.0",
"httpx>=0.28.0",
"beautifulsoup4>=4.12.0",
"rapidfuzz>=3.10.0",
"apscheduler>=3.10.0",
"streamlit>=1.40.0",
"plotly>=5.24.0",
"python-dotenv>=1.0.0",
]
[project.optional-dependencies]
dev = [
"pytest>=8.3.0",
"pytest-asyncio>=0.24.0",
"pytest-cov>=6.0.0",
"httpx>=0.28.0",
"ruff>=0.8.0",
]
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]
[tool.ruff]
target-version = "py312"
line-length = 100