Files
sasa-membership/PROJECT_STRUCTURE.md
2025-11-23 15:46:51 +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: Configured via environment variables (see .env file)

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