d8558eca89
Introduce timetracker/config.py with a single config() helper that resolves settings from a fixed priority chain: NAME__FILE (opt-in secret) -> env var -> .env -> settings.ini -> in-code default. Supports type casting (bool/list/int/Path), file-based secrets with .strip(), and required_in_prod validation. Migrate settings.py off the previous ad-hoc idioms: - DEBUG via config() (PROD kept as deprecated alias) - SECRET_KEY required in prod, supports SECRET_KEY__FILE - APP_URL derives ALLOWED_HOSTS and CSRF_TRUSTED_ORIGINS (kept separate, each independently overridable); ALLOWED_HOSTS is now configurable - TZ and DATA_DIR via config() Fix DATA_DIR inconsistency: entrypoint.sh now reads DATA_DIR (was hardcoded) so the bash bootstrap and Django agree on the database directory. Document the container/entrypoint-only flags (PUID/PGID/ CREATE_DEFAULT_SUPERUSER/STAGING/LOAD_SAMPLE_DATA) as bash concerns. Update deployment configs to set APP_URL (and DEBUG), add docs/configuration.md, settings.ini.example, regrouped .env.example, CLAUDE.md, and tests. https://claude.ai/code/session_01FFn8BiGrQpEJarC8xGse8s
30 lines
806 B
TOML
30 lines
806 B
TOML
# Shared Fly.io configuration for ephemeral, per-branch GitHub staging deploys.
|
|
#
|
|
# The app name is NOT set here on purpose; each branch supplies its own via
|
|
# `flyctl deploy --app timetracker-staging-<slug>`. These instances run with a
|
|
# fresh database seeded from sample fixtures (never production data) and their
|
|
# own SECRET_KEY, so they are safe to expose on a public *.fly.dev hostname.
|
|
|
|
primary_region = "ams"
|
|
|
|
[build]
|
|
dockerfile = "Dockerfile"
|
|
|
|
[env]
|
|
DEBUG = "false"
|
|
TZ = "Europe/Prague"
|
|
DATA_DIR = "/home/timetracker/app/data"
|
|
LOAD_SAMPLE_DATA = "true"
|
|
CREATE_DEFAULT_SUPERUSER = "true"
|
|
|
|
[http_service]
|
|
internal_port = 8000
|
|
force_https = true
|
|
auto_stop_machines = "stop"
|
|
auto_start_machines = true
|
|
min_machines_running = 0
|
|
|
|
[[vm]]
|
|
size = "shared-cpu-1x"
|
|
memory = "512mb"
|