Skip to content

optivem/starter

Repository files navigation

Starter

A catalog of project templates organized by two independent dimensions: system (the application) and system-test (the test harness). Each template is self-contained and copy-paste-ready.

Architecture

Monolith

graph LR
    User -->|UI / API| Monolith
    Monolith -->|REST| ERP
    Monolith -->|REST| Clock
Loading

Multitier

graph LR
    User -->|UI| Frontend
    User -->|API| Backend
    Frontend -->|REST| Backend
    Backend -->|REST| ERP
    Backend -->|REST| Clock
Loading

Use Cases

graph LR
    Customer([Customer])
    ERP([ERP])
    Clock([Clock])

    Customer --> PlaceOrder(Place Order)
    Customer --> ViewOrder(View Order)
    Customer --> BrowseOrders(Browse Orders)
    Customer --> CancelOrder(Cancel Order)

    PlaceOrder --> ERP
    PlaceOrder --> Clock
Loading

System Templates

Pick based on your architecture and language:

Monolith

Language Directory Framework Port SonarCloud
Java system/monolith/java/ Spring Boot + Thymeleaf (SSR) 8080 starter-monolith-java
.NET system/monolith/dotnet/ ASP.NET Core Razor Pages 8080 starter-monolith-dotnet
TypeScript system/monolith/typescript/ Next.js (SSR) 3000 starter-monolith-typescript

Multitier

Frontend

Language Directory Framework Port SonarCloud
TypeScript system/multitier/frontend-react/ React + Nginx 8080 starter-multitier-frontend-react

Backend

Language Directory Framework Port SonarCloud
Java system/multitier/backend-java/ Spring Boot API 8081 starter-multitier-backend-java
.NET system/multitier/backend-dotnet/ ASP.NET Core API 8081 starter-multitier-backend-dotnet
TypeScript system/multitier/backend-typescript/ NestJS API 8081 starter-multitier-backend-typescript

System-Test Templates

Pick based on your preferred test language (independent of system language):

Language Directory Framework
Java system-test/java/ JUnit 5 + Playwright
.NET system-test/dotnet/ xUnit + Playwright
TypeScript system-test/typescript/ Jest + Playwright

Each system-test includes docker-compose files for both architectures in local and pipeline variants (e.g. docker-compose.local.monolith.real.yml, docker-compose.pipeline.multitier.stub.yml). Remove the files for the architecture you don't need.

CI/CD Pipelines

The .github/workflows/ directory contains runnable pipelines for all 6 matched-language combinations (system + system-test):

Monolith Java

monolith-commit-stage acceptance-stage acceptance-stage-legacy qa-stage qa-signoff prod-stage

Monolith .NET

monolith-commit-stage acceptance-stage acceptance-stage-legacy qa-stage qa-signoff prod-stage

Monolith TypeScript

monolith-commit-stage acceptance-stage acceptance-stage-legacy qa-stage qa-signoff prod-stage

Multitier Java

backend-commit-stage frontend-commit-stage acceptance-stage acceptance-stage-legacy qa-stage qa-signoff prod-stage

Multitier .NET

backend-commit-stage frontend-commit-stage acceptance-stage acceptance-stage-legacy qa-stage qa-signoff prod-stage

Multitier TypeScript

backend-commit-stage frontend-commit-stage acceptance-stage acceptance-stage-legacy qa-stage qa-signoff prod-stage

  • Commit stages trigger automatically on push via path filters
  • Acceptance/QA/Prod stages are workflow_dispatch (manual trigger)

Verification

verify-all

verify-all — runs the full pipeline on the starter repo's own templates:

monolith-java-verify monolith-dotnet-verify monolith-typescript-verify multitier-java-verify multitier-dotnet-verify multitier-typescript-verify