BCC Events Registration App - A multi-tenant event registration system for churches worldwide.
Happenings/
├── api/ # Backend API (Node.js/TypeScript)
├── admin-dashboard/ # Admin UI (Vue 3/Nuxt 3)
├── end-user-app/ # End User App (Vue 3/Nuxt 3)
├── shared/ # Shared types, utils, composables
├── requirements/ # Requirements & Planning Docs
├── pnpm-workspace.yaml # pnpm workspace configuration
├── README.md # Main project README
├── ARCHITECTURE.md # System architecture
├── DEVELOPMENT.md # Development guide
├── PROJECT_STATUS.md # Project tracking
└── CONTRIBUTING.md # Contribution guidelines
All requirements are in the requirements/ directory:
- PROGRAM.md - Event scheduling, sessions, speakers
- CATERING.md - Meal planning, dietary requirements
- RESOURCES.md - Volunteer shift management
- FINANCE.md - Payment processing, invoicing
- COMMUNICATION.md - Notifications, announcements, messaging
- FAMILY_REGISTRATIONS.md - Family registration support
- PAYMENT_PLUGINS.md - Payment provider plugin system
- MULTI_TENANCY.md - Multi-tenant architecture
- OFFLINE_SUPPORT.md - Offline functionality strategy
- AUTH0_INTEGRATION.md - Authentication setup
After cloning the repository, run the setup script:
# Install dependencies and set up everything
pnpm install
# Run setup script (creates .env files, sets up database, etc.)
pnpm bootstrap
# Or run setup and start all services immediately
pnpm bootstrap:startThe setup script will:
- ✅ Check for required tools (Bun, pnpm)
- ✅ Create
.envfiles with sensible defaults (SQLite for local dev) - ✅ Set up the database
- ✅ Optionally start all services
If you prefer to set up manually:
npm install -g pnpmpnpm installCreate .env files in each directory:
api/.env- Database and API configurationadmin-dashboard/.env- Frontend configurationend-user-app/.env- Frontend configuration
For local development, the setup script creates these automatically with SQLite as the database.
# Using SQLite (default for local dev)
cd api
export DB_TYPE=sqlite
export DATABASE_URL=./local.db
bun run db:push
# Or using PostgreSQL
export DATABASE_URL=postgresql://user:password@localhost:5432/dbname
bun run db:push# From root directory - runs all services
pnpm dev
# Or individually:
pnpm dev:api # API only (port 9009)
pnpm dev:admin # Admin Dashboard only (port 9002)
pnpm dev:app # End User App only (port 9001)
# Or from individual directories:
cd api && bun run dev
cd admin-dashboard && pnpm dev
cd end-user-app && pnpm dev- ✅ Multi-tenant architecture (each church is a tenant)
- ✅ Auth0 authentication
- ✅ Cross-church global events
- ✅ Family registrations (using BCC Core API SDK)
- ✅ Payment provider plugins
- ✅ Offline support (end user app)
- ✅ Live updates
- ✅ Five core modules (Program, Catering, Resources, Finance, Communication)
- Package Manager: pnpm (workspace)
- Backend: Bun (fast JavaScript runtime), TypeScript, native PostgreSQL driver
- Frontend: Vue 3, Nuxt 3, PrimeVue, @bcc-code/design-tokens
- Shared: @bcc-events/shared (types, utils, composables)
- Auth: Auth0
- Database: PostgreSQL (native
postgresdriver for performance) - Core API: @bcc-code/bcc-core-api-node-sdk (family relationships, affiliations)
- Offline: Service Workers, IndexedDB
- Review Requirements: Check
requirements/for the module you're working on - Update Requirements: Add/update requirements before implementation
- Plan Database Changes: Update Prisma schema if needed
- Create Migration: Generate database migration
- Implement: Build API and frontend
- Test: Write and run tests
- Document: Update documentation
- Requirements First: Always update requirements documents before implementing
- Multi-Tenancy: All tenant-scoped data must include
tenant_id - Offline Support: End user app must work offline for viewing
- Payment Plugins: Churches can bring their own payment providers
- Global Events: Events can be marked as global for cross-church access
- Family Registrations: Register multiple family members together using BCC Core API SDK relationships
- BCC Core API SDK: Integrates with BCC Core API for user relationships and affiliations
- Review requirements documents in
requirements/ - Set up development environment
- Begin implementing core infrastructure
- Start with one module at a time
- See
DEVELOPMENT.mdfor detailed development guide - See
ARCHITECTURE.mdfor system architecture - See
PROJECT_STATUS.mdfor current progress - See
CONTRIBUTING.mdfor contribution guidelines