Files
zangramru/README.md
2026-07-01 01:07:25 +02:00

146 lines
3.6 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# zangramru
This project was generated using fastapi_template.
## UV
This project uses uv. It's a modern dependency management
tool.
To run the project use this set of commands:
```bash
uv sync --locked
uv run -m zangramru
```
This will start the server on the configured host.
You can find swagger documentation at `/api/docs`.
You can read more about uv here: https://docs.astral.sh/ruff/
## Docker
You can start the project with docker using this command:
```bash
docker compose up --build
```
This command exposes the web application on port 8000, mounts current directory and enables autoreload.
But you have to rebuild image every time you modify `uv.lock` or `pyproject.toml` with this command:
```bash
docker compose build
```
## Project structure
```bash
$ tree "zangramru"
zangramru
├── conftest.py # Fixtures for all tests.
├── db # module contains db configurations
│   ├── dao # Data Access Objects. Contains different classes to interact with database.
│   └── models # Package contains different models for ORMs.
├── __main__.py # Startup script. Starts uvicorn.
├── services # Package for different external services such as rabbit or redis etc.
├── settings.py # Main configuration settings for project.
├── static # Static content.
├── tests # Tests for project.
└── web # Package contains web server. Handlers, startup config.
├── api # Package with all handlers.
│   └── router.py # Main router.
├── application.py # FastAPI application configuration.
└── lifespan.py # Contains actions to perform on startup and shutdown.
```
## Configuration
This application can be configured with environment variables.
You can create `.env` file in the root directory and place all
environment variables here.
All environment variables should start with "ZANGRAMRU_" prefix.
For example if you see in your "zangramru/settings.py" a variable named like
`random_parameter`, you should provide the "ZANGRAMRU_RANDOM_PARAMETER"
variable to configure the value. This behaviour can be changed by overriding `env_prefix` property
in `zangramru.settings.Settings.Config`.
An example of .env file:
```bash
ZANGRAMRU_RELOAD="True"
ZANGRAMRU_PORT="8000"
ZANGRAMRU_ENVIRONMENT="dev"
```
You can read more about BaseSettings class here: https://pydantic-docs.helpmanual.io/usage/settings/
## Pre-commit
To install pre-commit simply run inside the shell:
```bash
pre-commit install
```
pre-commit is very useful to check your code before publishing it.
It's configured using .pre-commit-config.yaml file.
By default it runs:
* mypy (validates types);
* ruff (spots possible bugs);
You can read more about pre-commit here: https://pre-commit.com/
## Migrations
If you want to migrate your database, you should run following commands:
```bash
# You have to set a PICCOLO_CONF variable
export PICCOLO_CONF="zangramru.piccolo_conf"
# Now you can easily run migrations using
piccolo migrations forwards all
```
### Reverting migrations
If you want to revert migrations, you should run:
```bash
```
### Migration generation
To generate migrations you should run:
```bash
```
## Running tests
If you want to run it in docker, simply run:
```bash
docker compose run --build --rm api pytest -vv .
docker compose down
```
For running tests on your local machine.
1. you need to start all aux services.
We can do so by using our `docker-compose.yaml` configuration. It already has everything we need.
```bash
docker compose up -d --wait db
```
2. Run tests.
```bash
pytest -vv .
```