This project is an exercise in developing good clean architecture and CI/CD practices. It includes (or will include):
- Infrastructure as Code with Pulumi, including staging and ephemeral dev environments (with automatic dev environment cleanup).
- CI including linting, unit, integration and mutation tests, and automated end to end tests with Playwright.
- Docker image built using Cloud Native Buildpacks.
- A clean architecture, including dependency inversion enforced through linting rules with eslint-plugin-boundaries.
- Separate domain, data and application boundaries in the application. Domain logic is completely separated from data access layers using verified fake implementations.
- Continuous deployment pipelines to staging and production environments.
- Automatic documentation of code with TypeDoc deployed using GitHub Pages to jbrunton.github.io/chat-demo, and Open API docs deployed along with the api (chat-demo-api.jbrunton-aws.com/docs).
- Automatic dependency updates (including automerging) with Renovate.
The project implements a very basic realtime chat app at chat-demo.jbrunton-aws.com.
- From the home screen or navigation menu you can create "rooms". Each room has a unique URL. Anyone who joins a room can chat using server-sent events.
- The app responds to commands prefixed with
/
. Type/help
into the chat window to get assistance.
Clone the repository, and then:
docker compose up -d
pnpm install
pnpm dev:setup
pnpm dev
The web client will then be running locally at http://localhost:5173/.
To configure environment variables for the Playwright e2e tests:
pnpm test:e2e:setup