Skip to content
This repository has been archived by the owner on Dec 30, 2021. It is now read-only.
/ sakuta Public archive

πŸ—ƒ Contractor management module built for a university assignment.

License

Notifications You must be signed in to change notification settings

Deep-Cold-Storage/sakuta

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

67 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Sakuta

Contractor management module built for a university assignment.


License: GPL v3

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!


πŸ›  Best Features

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.


Backend Specific

  • 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.


Frontend Specific

  • SPA frontend build with Vue.js and Vue-Router.

πŸ’» Running Locally

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!


Backend

πŸ’‘ 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.


Frontend

πŸ’‘ 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!


πŸ“‹ Running Tests

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.


🚧 Contributing

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.


πŸ“ƒ License

This project is licensed under GPL-3.0 .