How sheyabernstein/family-birthdays works
Family Birthdays is a multi-tenant Django application for recording family life events and delivering Hebrew-calendar-aware reminders. Members sign in by passwordless email or SMS, access a private family tree according to their role, and manage notification subscriptions. The reminder workflow computes recurring occurrences from Hebrew dates, resolves recipients and channels, renders messages, then sends them by email or SMS; observances shifted off Shabbos or Yom Tov are a documented capability. The README documents additional tree, privacy, and broadcast features. Sampled excerpts are partial, so uncertain view-to-model wiring is omitted.
Main entry points: tasks.py Occurrence and send tasks · family/views.py Family views · services.py Render and delivery · accounts/views.py Sign-in views
Components 23
Accounts and access
- Sign-in views
accounts/views.py - Accounts
accounts/models.py - Magic links
accounts/magic_links.py - Sign-in delivery task
accounts/tasks.py - Tenant views
tenants/views.py - Tenant permissions
tenants/permissions.py
Family records
- Family views
family/views.py - People and unions
family/models.py - Family access rules
family/access.py - Hebrew date math
family/hebrew.py - Tree chart
family/tree_chart.py
Reminder lifecycle
- Notification views
notifications/views.py - Events and messages
notifications/models.py - Occurrence and send tasks
notifications/tasks.py - Audience resolution
notifications/audience.py - Render and delivery
notifications/services.py - SMS backend
notifications/sms.py
Runtime services
- Celery workers
config/celery.py - PostgreSQL
Other components
- Family member
- Email service
- SMS provider
- hdate library
Connections 26
- Family member → Sign-in views: requests sign-in
- Family member → Tenant views: switches families
- Family member → Family views: manages tree
- Family member → Notification views: manages subscriptions
- Sign-in views → Magic links: requests link
- Sign-in views → Sign-in delivery task: queues delivery
- Sign-in delivery task → Render and delivery: sends sign-in
- Tenant views → Tenant permissions: checks access
- Family views → Family access rules: checks access
- Family views → Tree chart: renders tree
- Family views → Hebrew date math: formats dates
- Occurrence and send tasks → People and unions: reads people and unions
- Occurrence and send tasks → Events and messages: reads event types
- Occurrence and send tasks → Events and messages: writes occurrences and messages
- Occurrence and send tasks → Hebrew date math: computes dates
- Hebrew date math → hdate library: uses calendar math
- Occurrence and send tasks → Audience resolution: resolves recipients
- Occurrence and send tasks → Render and delivery: renders and sends
- Render and delivery → Email service: sends email
- Render and delivery → SMS backend: dispatches SMS
- SMS backend → SMS provider: sends SMS
- Celery workers → Occurrence and send tasks: runs tasks
- Celery workers → Sign-in delivery task: runs tasks
- Family views → PostgreSQL: reads and writes
- Notification views → Events and messages: uses notification data
- Occurrence and send tasks → PostgreSQL: persists task data