7.4 KiB
Database Status - LOAF Membership Platform
Database: loaf_new
Host: 10.9.23.11:54321
Last Updated: 2026-01-03
Status: ✅ Fully initialized with seed data
Database Summary
Tables (18 total)
| Table Name | Status | Records | Purpose |
|---|---|---|---|
| ✅ alembic_version | Active | 1 | Migration tracking (001_initial_baseline) |
| ✅ users | Active | 0 | User accounts and profiles |
| ✅ events | Active | 0 | Event management |
| ✅ event_rsvps | Active | 0 | Event RSVPs and attendance |
| ✅ event_galleries | Active | 0 | Event photo galleries |
| ✅ roles | Active | 5 | RBAC role definitions |
| ✅ permissions | Active | 25 | RBAC permission definitions |
| ✅ role_permissions | Active | 49 | Role-permission mappings |
| ✅ user_invitations | Active | 0 | Admin invitation system |
| ✅ subscriptions | Active | 0 | User subscriptions |
| ✅ subscription_plans | Active | 3 | Available membership plans |
| ✅ donations | Active | 0 | Donation tracking |
| ✅ import_jobs | Active | 0 | CSV import tracking |
| ✅ import_rollback_audit | Active | 0 | Import rollback audit trail |
| ✅ newsletter_archives | Active | 0 | Newsletter document archive |
| ✅ financial_reports | Active | 0 | Financial document archive |
| ✅ bylaws_documents | Active | 0 | Bylaws document archive |
| ✅ storage_usage | Active | 1 | Storage quota tracking (100GB limit) |
ENUMs (8 total)
| ENUM Name | Values | Used By |
|---|---|---|
| ✅ userstatus | pending_email, awaiting_event, pre_approved, payment_pending, active, inactive | users.status |
| ✅ userrole | guest, member, admin, finance, superadmin | users.role, user_invitations.role |
| ✅ rsvpstatus | yes, no, maybe | event_rsvps.rsvp_status |
| ✅ subscriptionstatus | active, past_due, canceled, incomplete, trialing | subscriptions.status |
| ✅ donationtype | one_time, recurring, pledge, in_kind, memorial | donations.donation_type |
| ✅ donationstatus | pending, completed, failed, refunded | donations.status |
| ✅ invitationstatus | pending, accepted, expired, revoked | user_invitations.status |
| ✅ importjobstatus | processing, completed, failed | import_jobs.status |
Seed Data Loaded
Roles (5)
| Code | Name | System Role | Permissions |
|---|---|---|---|
| admin | Admin | Yes | 16 |
| finance | Finance | Yes | 7 |
| guest | Guest | Yes | 0 |
| member | Member | Yes | 1 |
| superadmin | Super Admin | Yes | 25 |
Permissions (25 across 5 modules)
Users Module (6 permissions):
- users.view - View Users
- users.create - Create Users
- users.edit - Edit Users
- users.delete - Delete Users
- users.approve - Approve Users
- users.import - Import Users
Events Module (6 permissions):
- events.view - View Events
- events.create - Create Events
- events.edit - Edit Events
- events.delete - Delete Events
- events.publish - Publish Events
- events.manage_attendance - Manage Attendance
Finance Module (5 permissions):
- finance.view - View Financial Data
- finance.manage_plans - Manage Subscription Plans
- finance.manage_subscriptions - Manage Subscriptions
- finance.view_reports - View Financial Reports
- finance.export - Export Financial Data
Content Module (3 permissions):
- content.newsletters - Manage Newsletters
- content.documents - Manage Documents
- content.gallery - Manage Gallery
System Module (5 permissions):
- system.settings - System Settings
- system.roles - Manage Roles
- system.invitations - Manage Invitations
- system.storage - Manage Storage
- system.audit - View Audit Logs
Subscription Plans (3)
| Plan Name | Price | Billing | Custom Pricing | Donation Support |
|---|---|---|---|---|
| Pay What You Want Membership | $30.00 (min) | Annual | ✅ Yes | ✅ Yes |
| Annual Individual Membership | $60.00 | Annual | ❌ No | ❌ No |
| Annual Group Membership | $100.00 | Annual | ❌ No | ❌ No |
Note: Stripe price IDs need to be configured after Stripe setup.
Migration Status
Current Revision: 001_initial_baseline (head)
Migration System: Alembic 1.14.0
Schema Source: migrations/000_initial_schema.sql
Seed Source: migrations/seed_data.sql
Migration History:
001_initial_baseline- Empty baseline marker (2026-01-02)
Future migrations will be generated using:
alembic revision --autogenerate -m "description"
alembic upgrade head
Next Steps
Immediate (Required)
-
Create Superadmin User
cd backend python3 create_superadmin.py -
Configure Stripe Price IDs
UPDATE subscription_plans SET stripe_price_id = 'price_xxx' WHERE name = 'Annual Individual Membership'; UPDATE subscription_plans SET stripe_price_id = 'price_yyy' WHERE name = 'Annual Group Membership'; UPDATE subscription_plans SET stripe_price_id = 'price_zzz' WHERE name = 'Pay What You Want Membership'; -
Set Environment Variables
- Copy
backend/.env.exampletobackend/.env - Fill in all required values (DATABASE_URL, JWT_SECRET, SMTP, Stripe, R2)
- Copy
-
Test Application
# Backend cd backend uvicorn server:app --reload # Frontend (separate terminal) cd frontend yarn start
Optional (Recommended)
-
Add Sample Events
- Login as superadmin
- Navigate to Admin → Events
- Create 2-3 sample events
-
Test Registration Flow
- Register a test user
- Verify email verification works
- Test event RSVP
- Test admin approval flow
-
Configure Email Templates
- Review templates in
backend/email_service.py - Customize colors, branding, copy
- Review templates in
-
Set Up Monitoring
- Configure error logging
- Set up uptime monitoring
- Configure backup schedule
Database Maintenance
Backup Command
PGPASSWORD='your-password' pg_dump -h 10.9.23.11 -p 54321 -U postgres loaf_new > backup_$(date +%Y%m%d_%H%M%S).sql
Restore Command
PGPASSWORD='your-password' psql -h 10.9.23.11 -p 54321 -U postgres -d loaf_new < backup_file.sql
Health Check Queries
-- Check user count by status
SELECT status, COUNT(*) FROM users GROUP BY status;
-- Check upcoming events
SELECT title, start_at FROM events WHERE start_at > NOW() ORDER BY start_at LIMIT 5;
-- Check active subscriptions
SELECT COUNT(*) FROM subscriptions WHERE status = 'active';
-- Check storage usage
SELECT
total_bytes_used / 1024 / 1024 / 1024 as used_gb,
max_bytes_allowed / 1024 / 1024 / 1024 as max_gb,
ROUND((total_bytes_used::numeric / max_bytes_allowed * 100)::numeric, 2) as percent_used
FROM storage_usage;
Support & Resources
- Deployment Guide: See
DEPLOYMENT.mdfor complete deployment instructions - API Documentation: http://localhost:8000/docs (when backend running)
- Alembic Guide: See
backend/alembic/README.mdfor migration documentation - Project Documentation: See
CLAUDE.mdfor codebase overview
Changelog
2026-01-03:
- ✅ Created all 17 data tables
- ✅ Created all 8 ENUMs
- ✅ Loaded seed data (5 roles, 25 permissions, 3 subscription plans)
- ✅ Initialized Alembic tracking (001_initial_baseline)
- ✅ Created superadmin user helper script
Status: Database is fully initialized and ready for use. Next step: Create superadmin user and start application.