Skip to content

Repository files navigation

unified-scheduling

A full-stack scheduling platform consisting of an ASP.NET Core API and a Vue 3 frontend.

Repository Structure

unified-scheduling/
├── api/          # ASP.NET Core modular API
├── db/           # EF Core database project
├── web/          # Vue 3 + Vite frontend
└── docker/       # Docker Compose setup

Getting Started

The recommended way to run the full stack locally is via Docker Compose.

Prerequisites

Running with Docker

The docker/manage script wraps Docker Compose with convenient commands.

cd docker

# Build all containers
./manage build

# Start all services
./manage start

# Start with hot reload (debug mode)
./manage debug

# Stop services
./manage stop

# Remove containers and volumes
./manage down

Once running:

URL Description
http://localhost:8080/ Frontend
http://localhost:8080/api/ Swagger / API docs
http://localhost:5000/api/ API direct

Frontend (web/)

Built with Vue 3, Vite, Pinia, Vuetify, and TypeScript.

Setup

cd web
npm install

Dev server

npm run dev

Other commands

Command Description
npm run build Type-check and build for production
npm run test Run unit tests (Vitest)
npm run test:e2e Run end-to-end tests (Playwright)
npm run lint Lint with oxlint + ESLint
npm run format Format with Prettier
npm run gen:api Regenerate API client from OpenAPI spec (Orval)
npm run pre:push Lint, format, build, and test before pushing

IDE Setup

VS Code with the Vue (Official) extension. Disable Vetur if installed.


Backend (api/)

Built with ASP.NET Core using a modular monolith architecture.

Project Structure

Project Description
Unified.Api Entry point — wires up modules, middleware, and routing
Unified.Core Shared core services
Unified.Infrastructure Cross-cutting concerns (error handling, OpenAPI, options)
Unified.UserManagement User CRUD domain
Unified.Stats Optional stats module (feature flag controlled)
Unified.Training Optional training module (feature flag controlled)
Unified.Reporting Reporting module (report query API and handlers)
Unified.Tests Unit and integration tests

Feature Flags

{
  "FeatureFlags": {
    "StatsModule": true
  }
}

Running Locally

See api/README.md and docker/README.md for detailed setup instructions.


Deployment Dependencies

This application is deployed via ArgoCD from a separate GitOps repository. Some changes in this repo require corresponding updates in the GitOps repo to take effect in deployed environments.

Change in this repo Required GitOps update
Enable a feature flag in appsettings Add the flag to the API ConfigMap in each overlay
Add a new seed data set Add the data set entry to the seeders ConfigMap in each overlay
Change environment variables Update the API deployment patch in each overlay

GitOps repo: bcgov-c/tenant-gitops-cb6495 (requires SAML SSO authorization for the bcgov-c org)

Overlays to update: services/unified-scheduling/overlays/{dev,test,prod}/


Documentation

Additional references and learning resources are in docs/References.md.

About

Unified Scheduling

Resources

Code of conduct

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages