System Components

1. Overview

The Event and Membership Administration System is composed of multiple components organized into a layered architecture. This documentation describes the system components, their responsibilities, and how they interact.

This module focuses on component design and architecture. For deployment procedures, CI/CD pipelines, and infrastructure details, see the Deployment module.

2. Component Architecture

The system follows a layered architecture with clear separation of concerns:

component-architecture

3. Component Categories

The system components are organized into five main categories:

Category Components Purpose

Parent POMs

1

Maven parent POM for version and dependency management

Common Libraries

1

Shared utility libraries and common functionality

Database Libraries

2

JPA entity repositories for database access

Backend Services

1

REST API services for business logic

Frontend Applications

2

User interfaces for administration and member access

4. Technology Stack

Backend:

  • Java 11+

  • Spring Boot 2.7+

  • Spring Data JPA

  • Hibernate ORM

  • MySQL 8.0+

  • Maven 3.8+

Frontend:

  • React 18+

  • TypeScript

  • Material-UI

  • Axios for API communication

Build & Deployment:

  • Maven for Java projects

  • npm for frontend projects

  • GitHub Actions for CI/CD

  • Docker for containerization

  • GitHub Package Registry for artifact storage

5. Component Dependencies

Component dependencies are managed through Maven’s dependency mechanism. The following diagram shows the compile-time dependencies between components:

See Component Dependencies for detailed dependency information and version management.

6. Design Principles

The system architecture follows these key design principles:

6.1. Layered Architecture

Components are organized into clear layers:

  • Presentation Layer - Frontend applications

  • Application Layer - Backend services

  • Domain Layer - Entity models and business logic

  • Infrastructure Layer - Database access and external integrations

6.2. Separation of Concerns

Each component has a single, well-defined responsibility:

  • Database libraries - Entity definitions and repositories only

  • Backend services - Business logic and API endpoints

  • Frontend applications - User interface and user experience

6.3. Dependency Direction

Dependencies flow downward and inward:

  • Frontend depends on backend (not vice versa)

  • Backend depends on database libraries (not vice versa)

  • Database libraries depend on common libraries (not vice versa)

6.4. Version Management

All component versions are managed centrally through the event parent POM, ensuring consistent versioning across the system.

7. Migration Status

WordPress Database Legacy Components

The wordpress-database component contains legacy WordPress entities (14 entities) that are scheduled for deprecation within 6 months. During the migration period:

  • Months 1-3: Dual-write mode (write to both databases)

  • Months 3-5: Data migration and validation

  • Month 6: Complete transition to event-database entities

After migration, the wordpress-database component will be archived.

8. Component Documentation

Detailed documentation for each component category:

Active Repositories:

Service Repositories:

Frontend Repositories: