Skip to content

A small self-contained CRUD app using vuejs + bootstrap, async fastapi, and postgres. dockerized.

Notifications You must be signed in to change notification settings

musical-avian/waypoints

Repository files navigation

Waypoints CRUD

A small service demonstrating moving data from frontend to backend and vice-versa. Built from scratch (except frontend via vue-cli) with Python 3, fastapi+uvicorn+uvloop, SQLAlchemy, VueJS, Bootstrap and Postgres.

Find details about technical decisions in DECISIONS.md.

Screenshot of the UI

Table of Contents

Quickstart

  • docker-compose up, or make run then open localhost:8000 in the browser once the service has been created.
  • API docs are at localhost:8000/docs
  • Enter a waypoint as a comma separated string and click save
  • See it pop up in the table below!

Dev and Build requirements

Development

Local dev setup

  • Entrypoint for mostly everything is the Makefile
  • make dev-setup, given the requirements are fulfilled

Local dev

  • poetry shell to activate the projects virtual environment
  • make dev to bring up the development servers
    • backend and frontend have their own development servers. ports are shown via cli
  • make test to run tests via pytest
  • make lint to lint and autoformat backend and frontend
  • make load-test for simple backend load-testing facilities provided by locust.

TODO

  • Cleanup idosyncratic rest post for waypoint creation
    • parse waypoint string on frontend
    • make string parsing more robust
  • Backend: Throw error instead of silencing invalid pagination size
  • ? Use pagination package instead of hand-rolling
  • Configure for GCP Cloud run
  • fix dev env race condition

About

A small self-contained CRUD app using vuejs + bootstrap, async fastapi, and postgres. dockerized.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published