This repo contains the backend of the KMK project

Related tags

Databasebackend
Overview

Codacy Badge codecov

KMK Backend

This repository contains the backend part of the KMK project

Demo

Watch it on Youtube

Getting started

Pre-commit hooks

After you cloned the repository, make sure that you have pre-commit package installed. To install it globally run the following code

$ pip3 install pre-commit==2.13.0

Then, to setup pre-commit hooks run this code in the root of the working directory

$ pre-commit install

Running locally

To run the project on your local machine simply execute the following code

$ docker-compose up --build

Then, you can see the API documentation on http://127.0.0.1:5000/docs

Testing

To run the tests execute the following code

$ scripts/run_tests.sh

Requirements

Stakeholder's Roles

Stakeholder Roles Responsibilities
Alexander Kurmazov Backend developer Implement the REST API
Implement the backend business logic
Write unit test
Setup Github Actions
Deploy solution on a remote machine
Prepare deliverables and artifacts
Daniil Gubaydullin Frontend developer Design a low fidelity prototype
Implement an integration with the API
Layout a web-page
Nurdaulet Kunkhozhaev Frontend developer Design a low fidelity prototype
Layout a web-page
Valentin Chernyshov Project Manager Conduct status meeting with the team
Setup Jira workflow

RUP Deliverable

Design

In this project, we follow the design patterns of Domain Driven Development. The domains are User, Lobby, and Statistics; on top of them, there are three corresponding repositories that are responsible for interacting with the DB. The API, in turn, uses services that proxy the interaction between the Fast API client and repositories.

Architecture

Abstract

The architecture of the project is typical for a web application. In the middle, there is a RESTful API backend, that can be used by different clients: i.g., a web client, a telegram bot, Postman, etc.

The interaction with a third-party image hosting service is prototyped. Although, it can can be implemented on a client, since the backend accepts images in form of urls for them.

Static View

Dynamic View

Code linters and Tests

Pre-commit hooks

Before commiting the changes we've made, it is always beneficial to double-check whether there are any issues in the new code, so we use isort and flake8 checkers for this purpose.

For example, a pre-commit report might look like this

Linters

Linting is the first stage of the Github Actions CI pipeline in this repository. The same linters, isort and flake8, are used to check the quality of the last pushed code to a branch.

After the pipeline is finished, the report is uploaded to Codacy, which yields code quality dashboards about our repository

Coverage

Tests are ran whenever new code is pushed to the remote; they help us to ensure that the code works as intended, and that no new bugs appeared in our codebase.

After the pipeline is finished, the coverage report is uploaded to codecov, where a developer may find the visuals on tests coverage in the repository.

Also, the Codecov Bot assists with coverage information when a Pull Request is reviewed

Python function to query SQLite files stored on S3

sqlite-s3-query Python function to query a SQLite file stored on S3. It uses multiple HTTP range requests per query to avoid downloading the entire fi

Michal Charemza 189 Dec 27, 2022
A very simple document database

DockieDb A simple in-memory document database. Installation Build the Wheel Fork or clone this repository and run python setup.py bdist_wheel in the r

1 Jan 16, 2022
A Modular MWDB Utility to Collect Fresh Malware Samples

MWDB Feeds A Modular MWDB Utility to Collect Fresh Malware Samples This project is FREE as in FREE 🍺 , use it commercially, privately or however you

c3rb3ru5 32 Jul 07, 2022
Migrate data from SQL to NoSQL easily

Migrate data from SQL to NoSQL easily Installation 💯 pip install sql2nosql --upgrade Dependencies 📢 For the package to work, it first needs "clients

Facundo Padilla 43 Mar 26, 2022
securedb is a fast and lightweight Python framework to easily interact with JSON-based encrypted databases.

securedb securedb is a Python framework that lets you work with encrypted JSON databases. Features: newkey() to generate an encryption key write(key,

Filippo Romani 2 Nov 23, 2022
A NoSQL database made in python.

CookieDB A NoSQL database made in python.

cookie 1 Nov 30, 2022
A Painless Simple Way To Create Schema and Do Database Operations Quickly In Python

PainlessDB - Taking Your Pain away to the moon 🚀 Contribute · Community · Documentation 🎫 Introduction : PainlessDB is a Python-based free and open-

Aiden Ellis 3 Jul 15, 2022
Youtube Kanalinda tanittigim ve Programladigim SQLite3 ile calisan Kütüphane Programi

SQLite3 Kütüphane Uygulamasi SQLite3 ile calisan Kütüphane Arayüzü Yükleme Yerel veritabani olusacaktir. Yaptiginiz islemler kaybolmaz! Temel Gereksin

Mikael Pikulski 6 Aug 13, 2022
pickleDB is an open source key-value store using Python's json module.

pickleDB pickleDB is lightweight, fast, and simple database based on the json module. And it's BSD licensed! pickleDB is Fun import pickledb

Harrison Erd 738 Jan 04, 2023
A Simple , ☁️ Lightweight , 💪 Efficent JSON based database for 🐍 Python.

A Simple, Lightweight, Efficent JSON based DataBase for Python The current stable version is v1.6.1 pip install pysondb==1.6.1 Support the project her

PysonDB 282 Jan 07, 2023
Connect Django Project to PostgreSQL

An application for learning things with creating quizzes and flashcards.Django, PostgresSQL are used for this project.

Cena Ashoori 1 Jan 25, 2022
Лабораторные работы по Postgresql за 5 семестр

Практикум по Postgresql ERD для заданий 2.x: ERD для заданий 3.x: Их делал вот тут Ниже есть 2 инструкции — по установке postgresql на manjaro и по пе

Danila 10 Oct 31, 2022
Python object-oriented database

ZODB, a Python object-oriented database ZODB provides an object-oriented database for Python that provides a high-degree of transparency. ZODB runs on

Zope 574 Dec 31, 2022
ClutterDB - Extremely simple JSON database made for infrequent changes which behaves like a dict

extremely simple JSON database made for infrequent changes which behaves like a dict this was made for ClutterBot

Clutter Development 1 Jan 12, 2022
Simple embedded in memory json database

dbj dbj is a simple embedded in memory json database. It is easy to use, fast and has a simple query language. The code is fully documented, tested an

Pedro Gonring 25 Aug 12, 2022
ChaozzDBPy - A python implementation based on the original ChaozzDB from Chaozznl with some new features

ChaozzDBPy About ChaozzDBPy is a python implementation based on the original Cha

Igor Iglesias 1 May 25, 2022
Python function to extract all the rows from a SQLite database file while iterating over its bytes, such as while downloading it

Python function to extract all the rows from a SQLite database file while iterating over its bytes, such as while downloading it

Department for International Trade 16 Nov 09, 2022
Tiny local JSON database for Python.

Pylowdb Simple to use local JSON database 🦉 # This is pure python, not specific to pylowdb ;) db.data['posts'] = ({ 'id': 1, 'title': 'pylowdb is awe

Hussein Sarea 3 Jan 26, 2022
Tools for analyzing Git history using SQLite

git-history Tools for analyzing Git history using SQLite Installation Install this tool using pip: $ pip install git-history Usage This tool can be r

Simon Willison 128 Jan 02, 2023
MyReplitDB - the most simplistic and easiest wrapper to use for replit's database system.

MyReplitDB is the most simplistic and easiest wrapper to use for replit's database system. Installing You can install it from the PyPI Or y

kayle 4 Jul 03, 2022