From 6a8309a88f4179a94f1dc2c3c6b671a6de3b3655 Mon Sep 17 00:00:00 2001 From: Nazar Vinnichuk Date: Sat, 2 Dec 2023 13:54:14 +0200 Subject: [PATCH] Add some more info to the README. --- README.md | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index a07fb93..f4e13c1 100644 --- a/README.md +++ b/README.md @@ -2,14 +2,33 @@ ## Architecture -The application has borrowed the concepts of a *port* and an *adapter* from the -[hexagonal architecture](https://en.wikipedia.org/wiki/Hexagonal_architecture_(software)) -and the concepts of a *use case* and an *entity* from the +The application has borrowed the concepts of a _port_ and an _adapter_ from the +[hexagonal architecture]() +and the concepts of a _use case_ and an _entity_ from the [clean architecture](https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html). The dependency graph looks like this: ![architecture graph](./docs/arch.svg) -## Test Coverage +## Deployment + +The production runs on AWS as a few lambdas, +a few DynamoDB tables and a WebSocket AWS API Gateway. +A CloudFormation template and the lambdas are within the `aws/` directory. +A lambda instantiates adapters, parses requests, and invokes a use case. + +## Development + +`app.py` is an application for local testing. +It requires `bidict`, `websockets` and `nest-asyncio` from PyPI. +The [frontend](https://www.paper-tactics.com) can connect to your locally run server +by selecting _Localhost_ from the server drop-down. + +## Testing + +Entity tests require `pytest` and `hypothesis`. +AWS adapter tests also require `docker`, `moto` and `boto3`. +Most of the tests check a lot of random inputs (property based, `hypothesis`), +so it's best to run them selectively. [![test coverage badge](https://codecov.io/gh/Kharacternyk/paper-tactics/branch/master/graph/badge.svg?token=UHEVAAVRLN)](https://codecov.io/gh/Kharacternyk/paper-tactics)