Fooder API in fastapi
Find a file
2023-09-03 15:44:48 +02:00
fooder [tests] added tests [product] order by latest usage 2023-09-03 15:43:24 +02:00
.dockerignore add fiber and new pydantic 2023-07-30 20:18:42 +02:00
.gitignore initial push 2023-04-01 16:19:12 +02:00
.pre-commit-config.yaml [pre-commit] black 2023-04-17 23:35:11 +02:00
docker-compose.test.yml [tests] added tests [product] order by latest usage 2023-09-03 15:43:24 +02:00
docker-compose.yml [image] add image reference for pushing 2023-09-03 15:44:48 +02:00
Dockerfile support arm 2023-04-01 16:24:51 +02:00
env.template [tests] added tests [product] order by latest usage 2023-09-03 15:43:24 +02:00
Readme.md readme bump 2023-04-15 12:55:33 +02:00
requirements.txt add fiber and new pydantic 2023-07-30 20:18:42 +02:00
test.sh [tests] added tests [product] order by latest usage 2023-09-03 15:43:24 +02:00

FOODER

Simple API for food diary application. It uses FastAPI and async postgres for faster operation.

I plan on developing a few clients for the API, for now only one is available:

Usage

Simply build docker images with:

docker-compose build

And then start them up with:

docker-compose up -d

Create .env file with configuration by copying template env.template. You have to generate secret keys! They are stored under SECRET_KEY and REFRESH_SECRET_KEY in .env file and both could be generated with openssl rand -hex 32.

To initialize database exec:

docker-compose exec api bash -c python -m fooder --create-tables

Deployment

For deployment delete:

    volumes:
      - ./fooder:/opt/fooder/fooder

and

    command: "uvicorn fooder.app:app --host 0.0.0.0 --port 8000 --reload"

lines from docker-compose.yml. This line makes app reload everytime code changes and is only recommended for development purposes.

I highly recommend using reverse proxy like nginx for HTTPS.

Documentation

When api is started using docker, by default it runs on 8000 port on local machine (it can be changed within docker-compose.yml file). Swagger documentation is available on http://0.0.0.0:8000/docs when you start the app.

Alternatively you can visit my own instance of the API docs.