Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
a8d718d
Switch support link from Buy Me a Coffee to GitHub Sponsors
Aug 7, 2026
4a45b15
Clarify self-hosting/privacy stance in README, drop the Support section
Aug 7, 2026
b44eab6
Add SemVer versioning: VERSION file, CHANGELOG, and v0.9.0
Aug 7, 2026
90de6b4
v0.9.1: pin version badge to bottom-right corner, fix stale PWA asset…
Aug 7, 2026
221e501
Show the docker-compose.yml contents inline in the README setup steps
Aug 7, 2026
0e0e1ea
Add pre-built registry image (GHCR + CI) as a Roadmap item
Aug 7, 2026
34a3c20
v0.9.2: pre-public-release audit fixes
Aug 7, 2026
242cdb8
Untrack designidea.webp and internal superpowers planning docs
Aug 7, 2026
9b11672
Exclude designidea.webp from the Docker build context too
Aug 7, 2026
95b814d
Add CONTRIBUTING.md and link it from the README
Aug 7, 2026
a55bbb8
Fix inaccurate privacy claim in README: feedback also leaves the server
Aug 7, 2026
e474a38
v0.9.3: remove dead token-persistence code, close out public-readines…
Aug 7, 2026
36750ad
Add Docker Desktop install pointer for Mac/Windows to Prerequisites
Aug 7, 2026
1237153
Gitignore docs/marketing-plan.md (local outreach tracking, not repo c…
Aug 8, 2026
de94469
v0.9.4: disable CSRF token time limit so long-open pages can still POST
Aug 10, 2026
96fcd17
v0.9.5: add Insights page — deterministic pattern-spotting + optional…
Aug 10, 2026
7bae3f3
v0.9.6: add Milestones + year-over-year insights; make pace-trend mix…
Aug 10, 2026
b968a63
v0.9.7: add brand logo to nav and Dashboard hero (theme-switched)
Aug 10, 2026
f60dc27
Gitignore local deploy.sh (homelab deploy trigger, not repo content)
Aug 10, 2026
f2bba4d
v0.9.8: add RUN_SCHEDULER flag to disable nightly jobs on dev/seconda…
Aug 10, 2026
0ef55dc
v0.9.9: fix ambiguous 'k m' units in Insights volume cards — read as km
Aug 11, 2026
261ac8e
Add insights_ai tests: mock the Anthropic SDK to validate the coach's…
Aug 11, 2026
9667a75
Refresh README screenshots and add Insights
Aug 14, 2026
c40cc6e
Replace README's emoji header with the actual logo
Aug 14, 2026
a53c83a
v0.9.10: upgrade Docker build toolchain + OS packages for security
Aug 14, 2026
cdb2ffd
v0.9.11: load Chart.js from CDN with SRI, local file as offline fallback
Aug 14, 2026
e76386d
v0.9.12: fix nightly scheduler running at UTC instead of documented l…
Aug 15, 2026
38ddf61
v0.10.0: fix scheduler timezone at the root, add sync failure alertin…
Aug 15, 2026
819cd42
v0.10.1: fix Insights missing from mobile nav drawer
Aug 15, 2026
2937ed0
v0.10.2: add CI pipeline (GitHub Actions running the test suite)
Aug 16, 2026
939076d
v0.10.3: bump CI action pins to avoid deprecated Node.js runtime warning
Aug 16, 2026
bee56c2
v0.10.4: add Dependabot for pip, Docker base image, and GitHub Actions
Aug 16, 2026
8cefa80
Bump sqlalchemy from 2.0.51 to 2.0.52
dependabot[bot] Aug 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Secrets and local-only files — never bake these into the image.
# The app reads all config via os.environ, populated by docker-compose's
# env_file directive at container start; it never reads a file from disk,
# so excluding .env here doesn't change runtime behavior at all.
.env
.env.*
!.env.example

# Git metadata — large, irrelevant to the running app, and would otherwise
# ship the full commit history inside every built image.
.git/
.gitignore
.gitattributes

# Runtime data — volume-mounted at /app/data and /app/csv-data; baking in
# whatever happens to be on the build host's disk at build time would be
# both useless (shadowed by the volume mount) and a data leak.
data/
csv-data/

# Python cache / virtual envs
__pycache__/
*.pyc
*.pyo
*.pyd
.pytest_cache/
.venv/
venv/

# Docs — only needed for GitHub's README rendering, not by the running app
docs/

# Local design references — not part of the app
designidea.webp

# OS cruft
.DS_Store
Thumbs.db
desktop.ini

# Editor/tooling
.worktrees/
.superpowers/
26 changes: 23 additions & 3 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,34 @@
# Flask
SECRET_KEY=change-me-to-a-long-random-string

# Timezone the container's clock (and therefore the 3:00 AM nightly scheduler)
# runs on. Without this, the container defaults to UTC regardless of where
# it's hosted, so "3:00 AM" silently means 3:00 AM UTC, not your local time.
# Use an IANA name, e.g. America/Toronto, America/New_York, Europe/London.
# See: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
TZ=America/Toronto

# Feature flags
USE_AI_WOD=false

# Anthropic API key — only needed if USE_AI_WOD=true. When set, the daily
# WOD's warm-up/cool-down/coaching notes are written by Claude instead of
# the static templates. Get a key at https://console.anthropic.com/
# Optional AI "coach's read" on the Insights page. When true (and a key is set
# below), Claude writes a short first-person synthesis of your computed
# insights. The insight cards themselves are always rule-based and show either
# way. Off by default.
USE_AI_INSIGHTS=false

# Anthropic API key — needed only if USE_AI_WOD=true or USE_AI_INSIGHTS=true.
# When set, the daily WOD's warm-up/cool-down/coaching notes and/or the
# Insights coach's read are written by Claude instead of static text.
# Get a key at https://console.anthropic.com/
ANTHROPIC_API_KEY=

# Background scheduler — nightly Concept2 sync, PB recalc, badge eval, and DB
# backup. On by default. Set to false on a secondary/dev instance so it doesn't
# run the nightly jobs (and send duplicate notification emails) alongside the
# instance that owns your live data.
RUN_SCHEDULER=true

# Concept2 API
C2_CLIENT_ID=
C2_CLIENT_SECRET=
Expand Down
28 changes: 28 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
version: 2
updates:
# Python dependencies (requirements.txt, requirements-dev.txt)
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"
open-pull-requests-limit: 5
labels:
- "dependencies"

# Docker base image (Dockerfile)
- package-ecosystem: "docker"
directory: "/"
schedule:
interval: "weekly"
open-pull-requests-limit: 5
labels:
- "dependencies"

# GitHub Actions used in .github/workflows/
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
open-pull-requests-limit: 5
labels:
- "dependencies"
26 changes: 26 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Tests

on:
push:
branches: [main]
pull_request:
branches: [main]

jobs:
pytest:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v7

- uses: actions/setup-python@v7
with:
python-version: "3.11"
cache: "pip"
cache-dependency-path: requirements-dev.txt

- name: Install dependencies
run: pip install -r requirements-dev.txt

- name: Run tests
run: pytest -v
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,14 @@ csv-data/
# Project spec files
row-tracker-spec.md
docs/redesign-spec.md
docs/superpowers/
docs/marketing-plan.md

# Local design references
designidea.webp

# Local git worktrees
.worktrees/

# Local-only deploy trigger (references personal homelab; not for the public repo)
deploy.sh
Loading