Giter Club home page Giter Club logo

auth-study's Introduction

Bootstrap python service

CI Pipeline Python tests Test Coverage Maintainability

Checked with mypy Ruff Code style: black security: bandit

This is an example implementation of a python application applying concepts from Clean Architecture and SOLID principles.

  • The repository classes are isolated behind interfaces, enforcing the Interface Segregation principle and the Inversion of Control design pattern
  • The application frameworks are decoupled from the domain logic
  • The storage layer is decoupled from the domain logic

This template provides out of the box some commonly used functionalities:

Documentation

The detailed documentation is available:

  • Online on GitHub pages
  • Offline by running make docs after installing dependencies with make dev-dependencies

How to use

Create your GitHub repository using this template (The big green Use this template button). Optionally tweak name and authors in the pyproject.toml file, however the metadata are not used when building the application, nor are referenced anywhere in the code.

Using Docker:

  • make containers: Build containers
  • docker compose run --rm dev make migrate: Run database migrations
  • docker compose up dev: Run HTTP application with hot reload
  • docker compose up celery-worker: Run the celery worker
  • docker compose run --rm test: Run test suite

Locally:

  • make migrate: Run database migrations
  • make install-dependencies: Install requirements
  • make dev-dependencies: Install dev requirements
  • make update-dependencies: Updates requirements
  • make migrate: Run database migrations
  • make dev: Run HTTP application with hot reload
  • make test: Run test suite

Other commands for development

  • make check: Run tests, code style and lint checks
  • make fix: Run tests, code style and lint checks with automatic fixes (where possible)

Multistage dockerfile configuration

Python docker image tend to become large after installing the application requirements (the slim base is ~150 MB uncompressed), therefore it's important to spend efforts to minimise the image size, even if it produces a slightly more complex multistage Dockerfile.

The following setup makes sure the production image will keep to a minimal size ("only" 390MB):

  • 150MB base image
  • 165MB python installed dependencies
  • 73MB poetry + updated pip

Using the following pipeline the "test" image is instead ~850MB, more than 400MB that would end up as a cost in traffic on each image pull.

auth-study's People

Contributors

febus982 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.