From 05f4c707edef73e224e25ae6c00f4cb357ab5aa5 Mon Sep 17 00:00:00 2001 From: John Brunton Date: Mon, 26 Aug 2024 17:30:38 +0100 Subject: [PATCH] docs: update readme for local dev --- README.md | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 112343f7..cc24c506 100644 --- a/README.md +++ b/README.md @@ -6,17 +6,30 @@ This project is an exercise in developing good clean architecture and CI/CD practices. It includes (or will include): -* Infrastructure as Code with [Pulumi](https://www.pulumi.com/), 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](https://playwright.dev/). -* A clean architecture, including dependency inversion enforced through linting rules with [eslint-plugin-boundaries](https://github.com/javierbrea/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](https://github.com/jbrunton/chat-demo/tree/main/services/api/src/data/repositories). -* Continuous deployment pipelines to staging and production environments. -* Automatic documentation of code with [TypeDoc](https://typedoc.org/) deployed using GitHub Pages to [jbrunton.github.io/chat-demo](https://jbrunton.github.io/chat-demo/), and Open API docs deployed along with the api ([chat-demo-api.jbrunton-aws.com/docs](https://chat-demo-api.jbrunton-aws.com/docs)). -* [ ] TODO: Automatic dependency updates (including automerging for minor version changes) with Renovate. +- Infrastructure as Code with [Pulumi](https://www.pulumi.com/), 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](https://playwright.dev/). +- A clean architecture, including dependency inversion enforced through linting rules with [eslint-plugin-boundaries](https://github.com/javierbrea/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](https://github.com/jbrunton/chat-demo/tree/main/services/api/src/data/repositories). +- Continuous deployment pipelines to staging and production environments. +- Automatic documentation of code with [TypeDoc](https://typedoc.org/) deployed using GitHub Pages to [jbrunton.github.io/chat-demo](https://jbrunton.github.io/chat-demo/), and Open API docs deployed along with the api ([chat-demo-api.jbrunton-aws.com/docs](https://chat-demo-api.jbrunton-aws.com/docs)). +- [ ] TODO: Automatic dependency updates (including automerging for minor version changes) with Renovate. ## The demo application The project implements a very basic realtime chat app at [chat-demo.jbrunton-aws.com](https://chat-demo.jbrunton-aws.com). -* From the home screen you can create "rooms". Each room has a unique URL. Anyone connecting to the room can chat using server-sent events. -* The app responds to commands prefixed with `/`. Type `/help` into the chat window to get assistance. +- From the home screen you can create "rooms". Each room has a unique URL. Anyone connecting to the room can chat using server-sent events. +- The app responds to commands prefixed with `/`. Type `/help` into the chat window to get assistance. + +## Local dev + +Clone the repository, and then: + +```console +docker compose up -d +pnpm install +pnpm dev:setup +pnpm dev +``` + +The web client will then be running locally at http://localhost:5173/.