PawTrace / .env.example
Elliott Duke
Cleanup of the system and documentation
d7d2eaf
Raw
History Blame Contribute Delete
2.58 kB
# ---- PawTrace configuration (copy to .env and edit) ----
# Never commit your real .env. Every value below is the application default, so the app runs
# with no .env at all.
# Database (SQLite file by default; swap for postgres+pgvector later)
DATABASE_URL=sqlite:///./data/app.db
# Storage
MEDIA_DIR=./data/media
STORAGE_BACKEND=local # local | s3
# ---- Embedder ----
# mock = deterministic stand-in, no weights and no downloads (what the test suite uses)
# hf = pooled features from the HuggingFace breed model below
# reid = the fine-tuned re-identification checkpoint at REID_MODEL_PATH (what the demo runs)
EMBEDDER=mock # mock | hf | reid
EMBEDDER_HF_MODEL=jhoppanne/Dogs-Breed-Image-Classification-V1
REID_MODEL_PATH=./best.pt
REID_MODEL_VERSION=v4 # tagged onto stored vectors so model generations never mix
# ---- Breed classifier ----
# Separate from image matching. hf downloads ~43 MB from HuggingFace on first use.
BREED_CLASSIFIER=mock # mock | hf
BREED_MODEL=jhoppanne/Dogs-Breed-Image-Classification-V1
BREED_TOP_K=7 # top predicted breeds kept per image (5-10)
BREED_FILTER_ENABLED=true # match-time breed gate (case matcher only, not photo search)
# Matching thresholds for the CASE matcher (lost-case review + strong-match notification).
# The public photo search ignores them: it always returns the top N with no score cutoff.
TOP_N=10
REVIEW_THRESHOLD=0.55
STRONG_THRESHOLD=0.80
# Location radius levels in miles; -1 means nationwide (no distance filter)
RADIUS_LEVELS=0,10,25,50,100,-1
# Image limits
MAX_IMAGE_MB=25
MAX_PHOTOS_PER_DOG=8
MAX_IMAGE_LONGEST_SIDE=1024
# ---- Demo ----
# DEMO_MODE=true makes the whole app read-only: middleware rejects every mutating request except
# the two photo-search endpoints, which persist nothing. This is how the public demo runs.
DEMO_MODE=false
SEED_DEMO=false
# Notifications
NOTIFIER=console # console | smtp
SMTP_HOST=
SMTP_PORT=1025
SMTP_USER=
SMTP_PASSWORD=
SMTP_FROM=no-reply@pawtrace.local
# SMS (off by default — paid + network, do not enable without confirmation)
SMS_ENABLED=false
TWILIO_ACCOUNT_SID=
TWILIO_AUTH_TOKEN=
TWILIO_FROM=
# Auth
# Leave blank and a random secret is generated per process (safe, but logins do not survive a
# restart). Set a real value for any deployment where sessions must persist.
JWT_SECRET=
JWT_ALGORITHM=HS256
ACCESS_TOKEN_TTL_MINUTES=1440
# Geo
ZIP_CENTROID_FILE=./data/zip_centroids.csv
# Misc
RATE_LIMIT_REPORTS_PER_MINUTE=10
CORS_ORIGINS=http://localhost:5173