fedora-happiness-packets/README.md
Justin Wheeler 6e69255965
Some checks failed
CI / lint (push) Successful in 17s
CI / test (push) Failing after 48s
📝 docs: Update AGENTS.md and README.md for current project state
`AGENTS.md` was stale — still listed Phases 3–5 as upcoming, referenced
Docker Compose and deleted config files, and omitted Bootstrap 5.3 and
CKEditor 5 from the stack description. Updated to reflect all completed
phases through Phase 5, current stack, Podman Compose instructions, and
environment-variable-based configuration.

`README.md` was last updated in 2019 and referenced Pagure, old setup
instructions, and the GSoC 2018 onboarding flow. Rewrote it with the
current stack, a modernization roadmap showing completed and upcoming
phases, a Podman-based quick start guide, and current community links
(Forgejo, Matrix).

Assisted-by: Claude Opus 4.6 (1M context)
Signed-off-by: Justin Wheeler <jwheel@fedoraproject.org>
2026-05-11 06:21:43 -04:00

3.5 KiB
Raw Permalink Blame History

fedora-happiness-packets

License

Fedora Happiness Packets is a Django web application that enables Fedora community members to send anonymous appreciation messages. It integrates with the Fedora Account System (FAS) for user lookup, Fedora OIDC for authentication, and fedora-messaging for publishing events to the Fedora message bus.

Current stack: Django 5.1, Python 3.123.14, Poetry, PostgreSQL, Redis, Celery, Bootstrap 5.3, CKEditor 5.

Modernization Roadmap

This project was dormant from 2021 to 2026 and is undergoing an incremental modernization effort to bring it back into production as an OpenShift-native containerized application within Fedora's infrastructure.

Completed

  • Phase 0: Dead code removal and housekeeping
  • Phase 1: Django 2.0 → 5.1 upgrade (four incremental LTS steps) and deprecated package replacement
  • Phase 2: Pipenv → Poetry migration, pyproject.toml, v1.0.0 release
  • Phase 2.5: Forgejo Actions CI pipeline (lint + test)
  • Phase 3: Containerfile and Podman migration (replace Docker)
  • Phase 4: Settings refactoring (12-factor env vars, eliminate config files)
  • Phase 5: Frontend modernization (Bootstrap 5.3, self-hosted fonts, CKEditor 5, jQuery removed)

Upcoming

  • Phase 6: OpenShift-native manifests (Kustomize, health probes, Routes)
  • Phase 7: Search backend replacement (Haystack/Whoosh → PostgreSQL full-text search)
  • Phase 8: Fedora integration updates (OIDC JWKS discovery, FAS/Noggin API, Redis → Valkey)
  • Phase 9: Forgejo Package Registry and CI/CD (container images, RPM packaging)
  • Phase 10: Production hardening (CSP, HSTS, observability, Celery tuning)

Development

Prerequisites

Quick start

# Install dependencies
poetry install --without docs

# Copy environment template
cp .env.example .env

# Start services (PostgreSQL, Redis, Celery, RabbitMQ)
podman-compose up --build

# Run migrations (in a separate terminal)
podman-compose exec web python manage.py migrate

See .env.example for all available environment variables.

Testing and linting

# Run all tests with coverage
poetry run pytest

# Run a specific test file
poetry run pytest happinesspackets/messaging/tests/test_views.py

# Lint
poetry run ruff check .

Note: Tests that require a database will fail without a running PostgreSQL instance. Use podman-compose or configure DB_HOST to point to an available database.

The test settings module is happinesspackets.settings.tsting (intentionally misspelled to avoid import during test discovery).

Where to find us

Contributing

Contributions are welcome. Please file issues and pull requests on our Forgejo repository.

See AGENTS.md for detailed architecture documentation and conventions.

This project is licensed under the Apache License 2.0.