Contractor management module built for a university assignment.
Source code of Sakuta, contractor management module built for a university assignment with FastAPI and Vue.js.
π₯ Sakuta was built as an assignment for my university course.
π It's alive! Check it out live at sakuta.bednarski.dev!
Below are the most important features.
-
Docker container health check with a custom monitoring solution.
-
Managed Sentry used for application monitoring and exception tracking.
-
CI/CD pipelines for automatic building and deploying on my infrastructure build on top of GitHub Actions.
-
Simple End-To-End tests build with the Cypress testing framework run before each frontend deploy by CI/CD system to achieve the best user experience.
-
Integration tests for the API service build with PyTest modules.
-
Python 3 (FastAPI) RESTful API build on top of PostgreSQL for storing application state.
-
Monitoring
/health
endpoint with microservice status. -
Fully Dockerized development and deploy workflow.
- SPA frontend build with Vue.js and Vue-Router.
It's easy to get started with developing Sakuta!
This project uses Docker as a development and production deployment tool, so you need It first!
π‘ Execute every command in the
./backend
directory!
If you only want to run It, you need to:
-
Spin up Sakuta as containers, simply type:
docker run -e DATABASE_URL="" -p 8000:8000 rangerdigital/sakuta:latest
This will spin up Sakuta and expose service API at http://127.0.0.1:8000
.
If you want to make changes to the FastAPI app, you need to:
-
Install Python 3.8, then projects requirements.
pip3 install -r requirements.txt
-
Run
main.py
, entry point for FastAPI app.uvicorn backend.main:app
This will spin up the development server at
http://127.0.0.1:5000
.
π‘ Execute every command in the
./frontend
directory!
If you want to make changes to the Vue.js app, you need to:
-
Install NPM, then projects requirements.
npm install
-
To then serve a website, simply type:
npm run serve
This will create a development web server at http://127.0.0.1:8080
.
And It's a lot simpler!
Sakuta has a simple set of functional tests!
This project uses PyTest and Cypress as a testing tools, so you need them first!
-
To run backend tests, run Sakuta API service and in the
./backend
directory type:pytest .
-
To run Cypress E2E tests, with everything running, open dashboard by typing:
npm run open
This will open a dashboard that will let you run all the specs.
You are more than welcome to help me improve Sakuta!
Just fork this project from the master
branch and submit a Pull Request (PR).
It's probably a good idea to run all the tests beforehand.
This project is licensed under GPL-3.0 .