# Lotty Backend ## Prerequisites Ensure you have the following installed on your system: - [Python](https://www.python.org/) (>=3.13,<3.15) - [uv](https://docs.astral.sh/uv/) (latest version recommended) - [Docker](https://www.docker.com/) (for containerized setup, latest version recommended) ## Basic setup ### Installation #### Clone the project #### Go to the project directory #### Customize environment ```bash cp .env.template .env ``` And setup env vars according to your needs. #### Install dependencies ##### For dev environment ```bash uv sync --all-extras ``` ##### For prod environment ```bash uv sync --no-dev ``` #### Running ##### Apply migrations ```bash uv run python manage.py migrate ``` ##### Start celery worker ```bash celery -A config worker -l INFO ``` ##### Start server In dev mode: ```bash uv run python manage.py runserver ``` In prod mode: ```bash uv run gunicorn config.wsgi ``` ## Containerized setup ### Clone the project ### Go to the project directory ### Build docker image ```bash docker build -t lotty-backend . ``` ### Customize environment Customize environment with `docker run` command (or bind .env file to container), for all environment vars and default values see [.env.template](./.env.template). ### Run docker image #### Backend ```bash docker run -p 8080:8080 --name lotty-backend lotty-backend ``` #### Celery worker ```bash docker run --name lotty-celery-worker lotty-backend celery -A config worker -l INFO ``` Backend will be available on [127.0.0.1:8080](http://127.0.0.1:8080). ## Testing ### Clone the project ### Go to the project directory ### Install dependencies ```bash uv sync --all-extras ``` ### Run tests (with coverage) ```bash just test-coverage ``` ### Check coverage ```bash just show-coverage ``` ## Linting && Formatting ### Clone the project ### Go to the project directory ### Install dependencies ```bash uv sync --all-extras ``` ### Run format ```bash just format ``` ### Run lint ```bash just lint # OR just fix # applies suggested fixes ```