Files
sasa-membership/PROJECT_STRUCTURE.md
James Pattinson 3751ee0076 First commit
2025-11-10 13:57:46 +00:00

4.5 KiB

Project Structure

membership/
├── .env                          # Environment configuration (ready to use)
├── .env.example                  # Template for environment variables
├── .gitignore                    # Git ignore rules
├── docker-compose.yml            # Docker services configuration
├── INSTRUCTIONS.md               # Original project requirements
├── README.md                     # Complete documentation
├── QUICKSTART.md                 # Quick start guide
│
├── backend/                      # FastAPI application
│   ├── Dockerfile               # Backend container configuration
│   ├── requirements.txt         # Python dependencies
│   └── app/
│       ├── __init__.py
│       ├── main.py              # Application entry point
│       │
│       ├── api/                 # API endpoints
│       │   ├── __init__.py
│       │   ├── dependencies.py  # Auth dependencies
│       │   └── v1/
│       │       ├── __init__.py
│       │       ├── auth.py      # Registration, login
│       │       ├── users.py     # User management
│       │       ├── tiers.py     # Membership tiers
│       │       ├── memberships.py  # Membership management
│       │       └── payments.py  # Payment processing
│       │
│       ├── core/                # Core functionality
│       │   ├── __init__.py
│       │   ├── config.py        # Configuration settings
│       │   ├── database.py      # Database connection
│       │   └── security.py      # Auth & password hashing
│       │
│       ├── models/              # Database models
│       │   ├── __init__.py
│       │   └── models.py        # SQLAlchemy models
│       │
│       ├── schemas/             # Pydantic schemas
│       │   ├── __init__.py
│       │   └── schemas.py       # Request/response schemas
│       │
│       ├── services/            # Business logic (placeholder)
│       └── utils/               # Utilities (placeholder)
│
├── database/                     # Database initialization
│   └── init.sql                 # Default data & admin user
│
└── frontend/                     # Frontend (placeholder for future)

Key Files

Configuration

  • .env - Environment variables (database, API keys, etc.)
  • docker-compose.yml - Services: MySQL + FastAPI backend

Backend Application

  • backend/app/main.py - FastAPI app initialization, CORS, routes
  • backend/app/core/config.py - Settings management
  • backend/app/core/security.py - JWT tokens, password hashing
  • backend/app/models/models.py - Database tables (User, Membership, Payment, etc.)
  • backend/app/schemas/schemas.py - API request/response models

API Endpoints (v1)

  • auth.py - Register, login
  • users.py - User profile, admin user management
  • tiers.py - Membership tier CRUD
  • memberships.py - Membership management
  • payments.py - Payment processing & history

Database Models

Fully implemented:

  • User - Authentication, profile, roles (member/admin/super_admin)
  • MembershipTier - Configurable tiers with fees and benefits
  • Membership - User memberships with status tracking
  • Payment - Payment records with multiple methods
  • Event - Event management (model ready, endpoints TODO)
  • EventRSVP - Event registration (model ready, endpoints TODO)
  • VolunteerRole - Volunteer roles (model ready, endpoints TODO)
  • VolunteerAssignment - Role assignments (model ready, endpoints TODO)
  • VolunteerSchedule - Shift scheduling (model ready, endpoints TODO)
  • Certificate - Training certificates (model ready, endpoints TODO)
  • File - File repository (model ready, endpoints TODO)
  • Notification - Email tracking (model ready, endpoints TODO)

Quick Start

# Start everything
docker-compose up -d

# View logs
docker-compose logs -f

# Access API docs
# http://localhost:8000/docs

Default Credentials

Admin: admin@swanseaairport.org / admin123

Database: membership_user / SecureMembershipPass2024!

What's Next

  1. Test the API endpoints
  2. Add Square payment integration
  3. Implement email notifications
  4. Create event management endpoints
  5. Add volunteer management endpoints
  6. Build frontend interface