# Servala Portal

The Servala Self-Service Portal

## Development setup

First, copy the ``.env.example`` file to ``.env`` and adjust the settings to your needs.
Make sure to source the file before running any commands.

Then use ``uv`` to install the project and run its commands while you’re developing:

```bash
uv sync --dev
uv run src/manage.py migrate
uv run src/manage.py runserver
```

This will start the development server on http://localhost:8000.

### Configuration

TODO

### Code style and linting

Servala uses several linters / formatters to keep the project style consistent for you.
Run them like this:

```bash
uv run black src/  # Code formatting; -c to just check
uv run isort src/  # Import ordering; -c to just check
uv run djlint src/ --reformat --format-js --format-css  # Format templates, JS and CSS, --check to just check
uv run flake8 src/  # Python linter
```

### Docker

The project provides a Dockerfile which builds a production-ready container image.
It uses [Caddy](https://caddyserver.com/) to serve static files and connect to [Gunicorn](https://gunicorn.org/), the Python WSGI application server.

Building:

```bash
docker build -t local/servala-portal .
```

Running:

```bash
docker run --rm -ti -p 8080:8080 --name=servala-portal --rm --env-file .env local/servala-portal
```

TODO: Persistence

### Testing

TODO
