Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/litestar-org/litestar-pg-redis-docker

Example Litestar project using Postgresql, Redis and Docker
https://github.com/litestar-org/litestar-pg-redis-docker

api asgi docker hacktoberfest litestar litestar-api litestar-framework litestar-template postgresql python redis

Last synced: 3 days ago
JSON representation

Example Litestar project using Postgresql, Redis and Docker

Awesome Lists containing this project

README

        

> [!WARNING]
> This repository has not been updated recently and will be receiving some TLC.
> Please see: [Discord discussion on litestar-pg-redis-docker](https://discord.com/channels/919193495116337154/1154552571025956985/1154552571025956985)
>
> If you would like to help, feel free to discuss in Discord or open a pull request.


Litestar Logo - Light
Litestar Logo - Dark

[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=litestar-org_litestar-pg-redis-docker&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=litestar-org_litestar-pg-redis-docker)
[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=litestar-org_litestar-pg-redis-docker&metric=coverage)](https://sonarcloud.io/summary/new_code?id=litestar-org_litestar-pg-redis-docker)
[![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=litestar-org_litestar-pg-redis-docker&metric=sqale_index)](https://sonarcloud.io/summary/new_code?id=litestar-org_litestar-pg-redis-docker)
[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=litestar-org_litestar-pg-redis-docker&metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=litestar-org_litestar-pg-redis-docker)
[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=litestar-org_litestar-pg-redis-docker&metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=litestar-org_litestar-pg-redis-docker)
[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=litestar-org_litestar-pg-redis-docker&metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=litestar-org_litestar-pg-redis-docker)
[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=litestar-org_litestar-pg-redis-docker&metric=bugs)](https://sonarcloud.io/summary/new_code?id=litestar-org_litestar-pg-redis-docker)

[![Discord](https://img.shields.io/discord/919193495116337154?color=202235&label=%20Discord&logo=discord)](https://discord.gg/X3FJqy8d2j)
[![Matrix](https://img.shields.io/badge/%5Bm%5D%20Matrix-bridged-blue?color=202235)](https://matrix.to/#/#litestarspace:matrix.org)
[![Reddit](https://img.shields.io/reddit/subreddit-subscribers/litestar?label=r%2FLitestar&logo=reddit)](https://reddit.com/r/litestar)

# litestar-pg-redis-docker

This is an example [Litestar](https://github.com/litestar-api/litestar) project using SQLAlchemy + Alembic + postgresql,
Redis, SAQ and Docker.

## Litestar

Litestar is a light and flexible ASGI API framework.

[Litestar documentation 📚](https://litestar-api.github.io/litestar/)

## Run the application

### Setup

- `$ cp .env.example .env`
- `$ docker compose build`
- `$ docker compose run --rm app alembic upgrade head`

### Run

`$ docker compose up --build`

### Async Worker Emails

To demonstrate usage of the asynchronous `SAQ` workers, when an `Author` is created we trigger a
worker function that sends an email.

`mailhog` is included in `docker-compose.yaml`, and includes a GUI that can be accessed at
`http://localhost:8025`.

Create an `Author`:

```bash
$ curl -w "\n" -X POST -H "Content-Type: application/json" -d '{"name": "James Patterson", "dob": "1974-3-22"}' http://localhost:8000/v1/authors
{"id":"6f395bdf-3e77-481d-98b2-3471c2342654","created":"2022-10-09T23:18:10","updated":"2022-10-09T23:18:10","name":"James Patterson","dob":"1974-03-22"}
```

Then check the `mailhog` GUI to see the email that has been sent by the worker.

## Development

### Install pre-commit hooks

- `pre-commit install`

### Migrations

#### Revision

`$ docker compose run --rm app alembic revision --autogenerate -m "revision description"`

#### Migration

`$ docker compose run --rm app alembic upgrade head`