westfarn b98f504afc
Unit Tests / test (push) Successful in 11s
Admin Stripe invoices + recurring subscriptions (customers pay us) (#24)
## Summary
- Closes #23
- Admin-only invoice dashboard under `/financial/invoices` (superuser)
- One-off Stripe hosted invoices + email pay link (customers pay us)
- Monthly (or weekly/yearly) Stripe Checkout subscriptions + email checkout link
- Webhook at `/financial/stripe/webhook/` syncs invoice/subscription status
- Env docs: `STRIPE_SECRET_KEY`, `STRIPE_PUBLISHABLE_KEY`, `STRIPE_WEBHOOK_SECRET`

## Test plan
- [ ] Set Stripe **test** keys in local `.env` and restart app
- [ ] As superuser: Dashboard → Invoices → create one-off invoice; confirm Stripe invoice + email
- [ ] As superuser: create monthly subscription; open Checkout link; complete with test card `4242…`
- [ ] Configure Stripe CLI or Dashboard webhook → confirm status updates to paid/active
- [ ] Non-admin user cannot open `/financial/invoices`
- [ ] Prod: add live keys + webhook secret to server `.env`, migrate, restart; point webhook to `https://aimloperations.com/financial/stripe/webhook/`

## Notes
Uses stdlib HTTP to Stripe API (no `stripe` PyPI package) so deploys stay dependency-light.Reviewed-on: #24
2026-07-31 12:02:40 -07:00
2026-03-20 13:07:28 -05:00
2026-06-27 12:19:54 -05:00
2025-03-24 13:06:45 -05:00
2026-07-08 06:12:21 -05:00

company_site

Django site for AIML Operations.

Local development (uv)

uv sync
cp .env.example .env
cd company_site
DJANGO_ENV=dev uv run python manage.py migrate
DJANGO_ENV=dev uv run python manage.py runserver

Docker (dev + Postgres)

cp .env.example .env
docker compose up --build

App: http://localhost:8000

Environments

Set DJANGO_ENV to one of:

Value DEBUG default Logging level
dev true DEBUG
beta false INFO
prod false WARNING

Secrets and service config come from environment variables. See .env.example.

CI / deploy workflows

Workflow Trigger What runs
.gitea/workflows/ci.yml Pull requests to master Unit tests only
.gitea/workflows/deploy.yml Push to master Unit tests → Docker build/test → deploy

Deploy never runs on pull requests. Uses separate workflow files (not job if conditions) so Gitea runners handle it reliably.

Production deploy

Server keeps its own .env at the live site path. Deploy rsyncs code but never overwrites .env.

  1. On the server, copy .env.prod.example to .env and fill in production values.
  2. Run bash scripts/validate-env.sh /path/to/.env to verify required variables.
  3. Push to master — the deploy workflow runs scripts/deploy.sh, which:
    • rsyncs checkout to live site (preserving .env)
    • validates environment variables
    • docker compose -f docker-compose.prod.yml build
    • docker compose up -d
    • runs migrations in the web container

Legacy venv/systemd deploy: DEPLOY_MODE=legacy bash scripts/deploy.sh <checkout>.

S
Description
Django site for company
Readme
47 MiB
Languages
CSS 42.7%
JavaScript 24.3%
HTML 16.7%
Python 16%
Shell 0.3%