- Add configurable profile questions with conditional visibility, admin-only fields, user answers, and seeded onboarding/volunteer questions
- Add admin UI for managing profile questions and member profile answers
- Add volunteer level/profile data support across backend schemas, models, API, and migration
- Update dashboard/profile UI, super admin menu, membership service types, and related styling
- Add privacy policy, terms of service, cookie notice, and footer links
- Add frontend Vitest coverage for profile question logic
- Add backend pytest coverage for profile answer normalization and validation
- Update restart.sh to build, run frontend/backend unit tests, and restart only after tests pass
- Refresh README, quickstart, project structure, instructions, and Square docs to match current app features
- Protect feature flag reload behind super-admin access
- Restrict admin-triggered password resets so admins can only reset member accounts
- Replace email template HTML preview rendering with escaped text preview
- Update docs for feature flag reload access, password reset scope, and email template preview safety
-- test user questions are also made by AI and not very useful. but i didn't know what to put there so its good enough for a test
8.0 KiB
Swansea Airport Stakeholders' Alliance Membership Management System
Project Overview
This project aims to develop a comprehensive membership management system for the Swansea Airport Stakeholders' Alliance. The system will handle member registration, payment processing, membership tracking, and administrative functions for a medium-sized alliance.
Current Implementation Status
The app now includes a FastAPI backend, React/Vite frontend, Docker Compose development gateway, Alembic migrations, Square payment integration, SMTP2GO email integration, event/RSVP endpoints, configurable profile questions, privacy/terms pages, feature flags, and a fast test gate in restart.sh.
Core Features
Public Member Features
- Self-Service Registration: Members can sign up online and select their membership tier
- Payment Processing: Integration with Square payment system for secure online payments, and a dummy payment system for initial testing
- Membership Portal: Secure login to view membership status, payment history, and upcoming meetings
- Profile Questions: Members can answer configurable profile questions, including conditional and volunteering-related questions
- Event Management: View upcoming events and RSVP to participate
- Account Management: Members can update profile details, change passwords, request password resets, and review privacy/terms pages
- Renewal Reminders: Planned automated email notifications for membership renewal deadlines
- Volunteering: Volunteer-related profile fields are implemented; richer role, schedule, and certificate screens are planned
Administrative Features
- Member Database Management: Query and modify member records
- Manual Payment Entry: Record cash payments to activate memberships
- Membership Tier Management: Configure different membership levels and associated fees
- Profile Question Management: Create, edit, deactivate, order, and configure dependencies for member profile questions
- Meeting/Event Management: Create, edit, and manage events, track RSVPs and attendance
- Email Management: Edit database-backed email templates with escaped previews, send test emails, and monitor SMTP2GO bounces
- Feature Flags: View backend feature flags and reload them from the super-admin interface
- Reporting: Planned reports on membership statistics and payment status
- Files: Planned repository for member files based on tier, such as meeting minutes and manuals
- Event Management: Create, edit, and manage events, track RSVPs and attendance
- Volunteering: Models exist for configurable volunteer roles, assignments, schedules, and certificates/training. Note: A member may not necessarily be a volunteer, but all volunteers are members.
Technical Stack
- Backend: Python with FastAPI/Uvicorn for high-performance async web framework
- Database: MySQL for reliable data storage and complex queries
- Authentication: JWT-based authentication system
- Payment Integration: Square API for payment processing
- Email Service: SMTP2GO API for automated reminders and notifications
- Frontend: React 18, TypeScript, Vite, and Tailwind CSS
- Testing: Vitest for frontend unit tests and pytest for backend unit tests
Membership Tiers
The system should support configurable membership tiers, including:
- Basic membership (Personal) £5 / year
- Group membership (Aircraft Owners) £25 / year
- Corporate membership (£100 / year)
- Other custom tiers as needed
Each tier will have associated annual fees and benefits.
Payment System
- Primary payment method: Square integration for online payments
- Support for manual payment entry (cash/check payments)
- Annual fee collection with automatic renewal reminders
- Payment history tracking
Security Requirements
- Secure user authentication and authorization
- Data encryption for sensitive information
- Role-based access control (members vs administrators)
- GDPR compliance for data protection
Email Integration
- Welcome emails for new members
- Payment confirmation emails
- Renewal reminder emails (configurable timing)
- Meeting notification emails
- Administrative notification emails
Database Schema (High-Level)
Core Tables
users: Member information and authenticationmemberships: Membership records with tier and statuspayments: Payment transactionstiers: Membership tier definitionsprofile_questions: Configurable profile/onboarding questionsuser_profile_answers: Per-member profile answersevents: Event information and detailsevent_rsvps: Event registration and attendance trackingvolunteer_roles: Configurable volunteer role definitions (e.g., Fire, Radio, General)volunteer_assignments: Member-to-role assignmentsvolunteer_schedules: Volunteer shift scheduling and availabilitycertificates: Training certificates and qualificationsemail_templates: Editable SMTP2GO email templatesemail_bounces: Bounce/complaint/unsubscribe trackingpassword_reset_tokens: One-time reset tokensnotifications: Email notification logs
Testing and Restart Workflow
./restart.sh rebuilds Docker images with cache, runs the fast frontend and backend unit tests, shuts down the current stack, and starts it again only if tests pass.
./restart.sh
Individual test commands:
docker compose run --rm frontend npm test
docker compose run --rm backend pytest -q
Development Phases
- Phase 1: Core API development (authentication, user management) - implemented
- Phase 2: Payment integration and membership management - implemented
- Phase 3: Admin interface development - implemented for users, tiers, payments, emails, bounces, profile questions, and feature flags
- Phase 4: Member portal, email system, event management, and volunteering features - partially implemented; richer volunteer screens and renewal reminders remain
- Phase 5: Testing, deployment, and documentation - active; fast unit tests and documentation are in place
Deployment Considerations
- Containerized deployment using Docker
- Scalable architecture for medium-sized alliance
- Backup and recovery procedures
- Monitoring and logging
Future Enhancements
- Mobile app development
- Advanced reporting and analytics
- Integration with other alliance systems
- Multi-language support
- Asynchronous Batch Processing: Implement automated renewal reminder system using scheduled batch jobs
- Create containerized renewal reminder script that runs daily
- Query memberships expiring within configurable timeframe (e.g., 30 days)
- Send personalized renewal reminder emails using existing email templates
- Add batch job scheduling with cron or similar scheduler
- Include logging and monitoring for batch job execution
- Extend pattern for other automated tasks (payment reminders, membership expiration processing)
Project Requirements
Functional Requirements
- User registration and authentication
- Membership tier selection and management
- Payment processing and tracking
- Email notification system
- Administrative dashboard
- Member self-service portal
- Event management and RSVP system
- Volunteer role assignment, scheduling, and certificate/training management
Non-Functional Requirements
- High availability and performance
- Data security and privacy
- Scalable architecture
- User-friendly interface
- Comprehensive documentation
Team Considerations
- Backend developers (Python/FastAPI)
- Frontend developers (if separate frontend)
- Database administrators
- DevOps engineers
- QA testers
- Business analysts for requirements refinement
Risk Assessment
- Payment system integration complexity
- Email deliverability issues
- Data migration from existing systems
- User adoption and training
- Regulatory compliance requirements
Success Metrics
- Successful member registration rate
- Payment processing success rate
- User engagement with portal
- Administrative efficiency improvements
- System uptime and performance