Note: This is a complete rebuild of the Service B.C. Queue Management System, designed for modern accessibility, performance, and maintainability.
The Queue Managment System is used to manage citizen flow and provide analtyics for our Service BC locations. This system is designed to be used for government offices with a large number of services.
| Item | Description |
|---|---|
| Next.js | TypeScript, App Router, and Webpack bundler |
| Biome | Formatting and linting |
| Headless UI | Components |
| TailwindCSS | Styling |
| Zod | Server and form action validation |
| Zustand | Global state management |
| Vitest & Playwright | Testing |
Use the provided npm scripts to control the compose environment. The runner reads CONTAINER_CLIENT and WSL en vars, so set those there before running.
- npm run up — start services.
- npm run down — stop and remove containers, images, and orphans.
- npm run rebuild — rebuild images (no-cache) then bring services up.
Example .env values (project root):
CONTAINER_CLIENT=docker # or podman
WSL=true # set to "true" on Windows when using WSL to run the container CLI
| Type | File Path | Description |
|---|---|---|
| Directory | .github |
Holds Github related files. See .github/README.md for more information |
| Configuration | .vscode/settings.json |
Editor and linter configuration |
| Directory | public |
Globally accessable static files |
| Directory | scripts |
Holds useful scripts to run on the project |
| Directory | src |
Application code. |
| Configuration | .editorconfig |
Cross-platform editor configuration |
| Configuration | .gitattributes |
Line ending specifications (LF for all text files) |
| Configuration | .gitignore |
List of file types to not be tracked by Github |
| Configuration | .npmrc |
Strict npm install versions |
| Configuration | biome.json |
Biome formatter/linter settings |
| Legal | LICENSE |
The Apache 2.0 license documentation |
| Configuration | next.config.ts |
Allows for Next.js configuration. See documentation here |
| Configuration | package.json |
Contains run commands, dependencies, and project informaiton |
| Configuration | playwright.config.ts |
Configuration for Playwright |
| Configuration | postcss.config.mjs |
Used to add Tailwind to project |
| Configuration | README.md |
This document |
| Configuration | tailwind.config.ts |
Defines styling configuration and theme for Tailwind |
| Configuration | tsconfig.json |
TypeScript configuration |
| Configuration | vitest.config.ts |
Configuration for ViTest |
# Check Podman status
podman info
# Start/stop Podman machine (Windows/macOS)
podman machine start
podman machine stop
# List running containers
podman ps
# Clean up resources
podman system prune -aThis project ONLY accepts dependencies with Apache 2.0 compatible licenses. All dependencies must use licenses that are compatible with Apache 2.0 for government use.
This script will be run:
- 📦 Before adding any new dependency
- 🔄 Before every release
- 📅 Weekly during development
- 🚫 Dependencies with incompatible licenses will be rejected
Approved transitive dependencies with legal review:
lightningcss(MPL-2.0) - Transitive dependency from Next.js/Turbopack- Cannot be removed without breaking core framework functionality
- Overridden by TailwindCSS/PostCSS in our build pipeline
- Not used in final application output
To run the license compatibility check:
npm run check-licensesThis script scans all dependencies (production + development) and:
- 📊 Identify Apache 2.0 compatible licenses
- Apache-2.0 - Same license
- MIT - Permissive, fully compatible
- BSD-2-Clause, BSD-3-Clause - Permissive, compatible
- ISC - Permissive, compatible
- CC0-1.0, Unlicense, 0BSD - Public domain equivalent
- ❌ Block incompatible licenses:
- GPL-2.0/3.0 - Copyleft, incompatible
- LGPL-2.1/3.0 - Weak copyleft, problematic
- AGPL-3.0 - Strong copyleft, incompatible
- MPL-2.0 - Weak copyleft, requires review
- EPL-1.0/2.0, CDDL-1.0/1.1 - Incompatible
- ❓ Flag unknown licenses for manual review
If incompatible licenses are detected:
- STOP - Do not merge or deploy
- Replace the dependency with an Apache 2.0 compatible alternative
- Remove the dependency if not essential
- Contact legal team only for critical dependencies with no alternatives
For unknown/custom licenses:
- Research the license terms manually
- Replace if terms are unclear or potentially incompatible
- Document any legal team approvals