Personal time tracking app built in python fastAPI
[project]
name = "beats"
version = "0.3.0"
description = "A way to keep track of how I spend my time"
authors = [{ name = "Ahmed Elghareeb", email = "me@rancho.me" }]
readme = "README.md"
requires-python = ">=3.14"
dependencies = [
    "dnspython>=2.7",
    "fastapi>=0.115",
    "pydantic>=2.12",
    "pydantic-settings>=2.9",
    "pymongo>=4.13",
    "python-dotenv>=1.0",
    "uvicorn>=0.34",
]

[dependency-groups]
dev = [
    "ipython~=9.0",
    "ruff~=0.6",
    "pytest~=8.3",
    "pytest-cov~=5.0",
    "httpx~=0.27",
]

[build-system]
requires = ["hatchling>=1.25"]
build-backend = "hatchling.build"

[tool.hatch.build.targets.wheel]
packages = ["src/beats"]

[tool.hatch.build.targets.sdist]
include = ["src/beats", "README.md", "LICENSE"]

[tool.ruff]
# Target the runtime set in Docker and CI; ruff uses this to enable proper lint rules.
target-version = "py314"
line-length = 100
src = ["src"]

[tool.ruff.lint]
# A focused, low-noise ruleset: errors (E), pyflakes (F), isort (I), bugbear (B), pyupgrade (UP)
select = ["E", "F", "I", "B", "UP"]
ignore = []

[tool.ruff.format]
quote-style = "double"
indent-style = "space"
line-ending = "lf"
docstring-code-format = true

[tool.pytest.ini_options]
addopts = "-q"
testpaths = ["src"]
pythonpath = ["src"]