A Gradle multi-module monorepo containing the Dallas Makerspace member portal applications, built with Kotlin and Ktor.
This repository contains two interconnected applications:
- Member Profile Service - Backend REST API service providing member data and integrations
- Member Profile UI - Web frontend with SSO authentication and member management interface
- Language: Kotlin
- Framework: Ktor
- Build System: Gradle (Multi-module)
- Database: MariaDB
- DI Framework: Dagger
- Authentication: OAuth/OIDC (Keycloak)
- Logging: Elasticsearch
- JDK 21
- IntelliJ IDEA Community Edition (recommended for development)
- MariaDB (for local development)
-
Install IntelliJ IDEA Community Edition
- Download from https://www.jetbrains.com/idea/download/
-
Open the Project
- Launch IntelliJ IDEA
- File → Open → Select the
member-portaldirectory - Import as Gradle project
- Both modules (service and ui) will be automatically recognized
-
Configure JDK
- The project uses JDK 21 (configured in
gradle.properties) - IntelliJ will prompt you to download if not already installed
- The project uses JDK 21 (configured in
./gradlew build./gradlew testBackend Service (Port 8081):
./gradlew :service:runFrontend UI (Port 8000):
./gradlew :ui:runmember-portal/
├── service/ # Backend REST API
│ ├── src/
│ ├── build.gradle.kts
│ └── README.md # Service-specific documentation
├── ui/ # Web frontend
│ ├── src/
│ ├── build.gradle.kts
│ └── README.md # UI-specific documentation
├── config/ # Shared configuration
│ └── detekt/ # Static analysis rules
├── build.gradle.kts # Root build configuration
└── settings.gradle.kts
For detailed information about each module:
- Service Documentation - API endpoints, backend architecture, data models
- UI Documentation - Frontend architecture, templates, authentication
# Build all modules
./gradlew build
# Build specific module
./gradlew :service:build
./gradlew :ui:build
# Clean build artifacts
./gradlew clean# Run all tests
./gradlew test
# Run module-specific tests
./gradlew :service:test
./gradlew :ui:test
# Run specific test class
./gradlew :service:test --tests "org.dallasmakerspace.YourTestClass"
# Generate code coverage report
./gradlew :service:koverHtmlReport
./gradlew :ui:koverHtmlReport# Run static analysis (detekt)
./gradlew detekt
# Module-specific analysis
./gradlew :service:detekt
./gradlew :ui:detekt./gradlew tasksThe member portal integrates with:
- Active Directory/LDAP - User authentication and group synchronization
- Discourse - Forum SSO integration
- Keycloak - OAuth/OIDC identity provider
- MariaDB - Primary database
- Elasticsearch - Centralized logging
- WHMCS/MakerManager - External member data sources
Production deployment is automated using GitHub Actions. Commits to the main branch trigger the CI/CD pipeline which builds, tests, and deploys the applications automatically.
Pull requests are welcome.