[tool.poetry] name = "nexadash" version = "0.1.0" description = "Modern, self-hosted plugin-based dashboard for Homelab, server and infrastructure services" authors = ["NexaDash Team "] readme = "README.md" packages = [ { include = "apps/api/src", from = "." }, { include = "apps/worker/src", from = "." }, { include = "packages/shared/src", from = "." }, ] [tool.poetry.dependencies] python = "^3.12" fastapi = "^0.115.0" uvicorn = { extras = ["standard"], version = "^0.32.0" } python-multipart = "^0.0.17" pydantic = { extras = ["email"], version = "^2.9.0" } pydantic-settings = "^2.6.0" sqlalchemy = { extras = ["asyncio"], version = "^2.0.36" } asyncpg = "^0.30.0" alembic = "^1.14.0" redis = "^5.2.0" celery = "^5.4.0" flower = "^2.0.1" argon2-cffi = "^23.1.0" cryptography = "^43.0.0" pyjwt = "^2.9.0" python-jose = { extras = ["cryptography"], version = "^3.3.0" } httpx = "^0.27.0" aiohttp = "^3.11.0" itsdangerous = "^2.2.0" email-validator = "^2.2.0" jinja2 = "^3.1.4" python-dotenv = "^1.0.1" structlog = "^24.4.0" slowapi = "^0.1.9" fastapi-limiter = "^0.1.6" fastapi-mail = "^1.4.2" [tool.poetry.group.dev.dependencies] pytest = "^8.3.3" pytest-asyncio = "^0.24.0" pytest-cov = "^6.0.0" httpx = "^0.27.0" factory-boy = "^3.3.1" freezegun = "^1.5.1" black = "^24.10.0" isort = "^5.13.2" flake8 = "^7.1.1" mypy = "^1.13.0" [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" [tool.black] line-length = 100 target-version = ['py312'] [tool.isort] profile = "black" line_length = 100 [tool.mypy] python_version = "3.12" strict = true warn_return_any = true warn_unused_configs = true [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = [ "apps/api/tests", "apps/worker/tests", "packages/shared/tests", ]