Files
Lotty/README.md
T
2026-02-24 17:53:14 +03:00

132 lines
3.9 KiB
Markdown

# Lotty A/B Platform
Service for managing A/B testing experiments. Drive your tests without breaking user experience!_)
## 🎨 Artifacts
### Runbook
[RUNBOOK.md](./RUNBOOK.md)
### Diagrams
#### C4 Context
![C4 context](./assets/plantuml/rendered/c4_context.png)
Source: [C4 context](./assets/plantuml/raw/c4-context.puml)
#### C4 Container
![C4 container](./assets/plantuml/rendered/c4_container.png)
Source: [C4 container](./assets/plantuml/raw/c4-container.puml)
#### C4 Component
![C4 component](./assets/plantuml/rendered/c4_component.png)
Source: [C4 component](./assets/plantuml/raw/c4-component-critical-path.puml)
### Testing report
Can be seen in GitLab CI/CD pipeline run
1. Go to the [pipelines page](https://gitlab.prodcontest.com/2026-final-users/backend/itq.dev/-/pipelines)
2. Click on the latest pipeline run
![pipeline run](./assets/images/pipeline.png)
3. Testing report (`Tests` tab)
![testing report](./assets/images/testing_report.png)
4. Tests coverage (`Jobs` tab)
![tests coverage](./assets/images/tests_coverage.png)
Here on screenshot you can see coverage percent (`97%`), for detailed coverage per file go to the `test` job log
![tests coverage per file](./assets/images/tests_coverage_per_file.png)
Here we can see statements coverage per file, you can check out job run artifacts for html report.
![tests coverage html report](./assets/images/tests_coverage_report_html.png)
Click here on `index.html` and you'll see complete coverage html report.
### Repository map
[MAP.md](./MAP.md)
Yep, artifacts content is written in Russian, but all other docs are in English, this is for judges' convenient experience.
## 📋 Instructions
### Dedicated services setup
[Backend](./src/backend/README.md)
### Setup with docker compose
#### Warning
Please note that by default containers will use ports 80 (reverse proxy) and range 14601-14611 (for direct access to containers), so there is must be no listeners on this ports range. You can customize the ports in [.env.template](./.env.template).
#### 0. Prerequisites
- [Docker](https://www.docker.com/) (latest version recommended)
- [Docker compose](https://www.docker.com/) (latest version recommended)
- Cloned repository
#### 1. Configuration
- Docker compose configuration files are stored in [deploy/compose](./deploy/compose).
- Configuration files for containers are stored in [infrastrucutre/configs](./infrastrucutre/configs).
Env could be customized by creating `.env` file in each service config directory, it will automatically override the default values from `.env.template`.
- Ports on which containers will be accessible are defined in [.env.template](./.env.template). This could be customized by creating `.env` file in the root directory and patching the following lines compose you are running:
```yaml
x-defaults: &defaults
project_directory: ./
env_file:
- ./.env.template
- ./.env # add this
```
#### 2. Choosing compose configuration
- [compose.yaml](./compose.yaml) - default configuration with base services included.
- [compose.prod.yaml](./compose.prod.yaml) - configuration for production environment with full observability stack.
#### 3. Running compose configuration
To run the compose configuration, use the following command:
```bash
docker compose -f compose.yaml up
# OR
docker compose -f compose.prod.yaml up
```
Thats it, project is already preconfigured for running, so no changes before running this are required.
## Linting && formatting
Instructions [here](./src/backend/README.md#linting--formatting).
Example run:
![style](./assets/images/style.png)
## Observability
### Structured logs
![logs](./assets/images/logs.png)
### Health/ready endpoints (`/health`/`/ready`)
![health](./assets/images/health.png)
![ready](./assets/images/ready.png)
### Metrics (`/metrics`)
![metrics](./assets/images/metrics.png)
System metrics (gc, requests, etc.) and several business metrics (`lotty_decide_requests_total`, `lotty_events_ingested_total`).