Fishing Analyzer now runs as a lightweight server-rendered dashboard with:
- FastAPI
- Jinja2 templates
- HTMX for partial updates
- Tailwind (CDN)
A legacy Dash implementation is still present under src/fishing_analyzer/apps/.
- Python-first and minimal operational overhead
- No SPA build pipeline required
- Easy server-side rendering and progressive enhancement with HTMX
- Good fit for dashboard-only use cases without auth/admin complexity
src/fishing_analyzer/web/: FastAPI app, templates, dashboard servicesrc/fishing_analyzer/data/: fish dataset and legacy environment loaderssrc/fishing_analyzer/apps/: legacy Dash pagesdocker/: container Dockerfile and entrypointdocs/: development and release notestests/: unit tests
- Python 3.11+
- uv
just setupjust devOpen: http://localhost:8085
just dev-legacyjust format
just lint
just typecheck
just test
just check
just cijust docker-up
just docker-downBy default Docker runs the FastAPI dashboard and does not require MongoDB.
If you want to run legacy Mongo-backed imports in container mode:
- set
RUN_WITH_MONGO=true - set
RUN_DATA_IMPORT=true - provide
MONGODB_URI
- CI entry:
.github/workflows/ci.yml - Reusable jobs: lint, typecheck, tests, build, binary
- Release jobs: PyPI/TestPyPI + binaries
Tag-based release:
git tag vX.Y.Z
git push origin vX.Y.ZModuleNotFoundError: runjust setupagain.- If template changes do not show: restart
just dev. - If lockfile drift happens: run
uv lockand commituv.lock.