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

This is a simple graph database in SQLite, inspired by

This is a simple graph database in SQLite, inspired by "SQLite as a document database".

Denis Papathanasiou 1.2k Jan 03, 2023
A NoSQL database made in python.

CookieDB A NoSQL database made in python.

cookie 1 Nov 30, 2022
Turn SELECT queries returned by a query into links to execute them

datasette-query-links Turn SELECT queries returned by a query into links to execute them Installation Install this plugin in the same environment as D

Simon Willison 5 Apr 27, 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
LightDB is a lightweight JSON Database for Python

LightDB What is this? LightDB is a lightweight JSON Database for Python that allows you to quickly and easily write data to a file Installing pip3 ins

Stanislaw 14 Oct 01, 2022
A super easy, but really really bad DBMS

Dumb DB Are you looking for a reliable database management system? Then you've come to the wrong place. This is a very small database management syste

Elias Amha 5 Dec 28, 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
Oh-My-PickleDB is an open source key-value store using Python's json module.

OH-MY-PICKLEDB oh-my-pickleDB is a lightweight, fast, and intuitive data manager written in python πŸ“ Table of Contents About Getting Started Deployme

AdriΓ‘n Toral 6 Feb 20, 2022
AWS Tags As A Database is a Python library using AWS Tags as a Key-Value database.

AWS Tags As A Database is a Python library using AWS Tags as a Key-Value database. This database is completely free* πŸ’Έ

Oren Leung 42 Nov 25, 2022
PathfinderMonsterDatabase - A database of all monsters in Pathfinder 1e, created by parsing aonprd.com

PathfinderMonsterDatabase A database of all monsters in Pathfinder 1e, created by parsing aonprd.com Setup Run the following line to install all requi

Yoni Lerner 11 Jun 12, 2022
Metrics-advisor - Analyze reshaped metrics from TiDB cluster Prometheus and give some advice about anomalies and correlation.

metrics-advisor Analyze reshaped metrics from TiDB cluster Prometheus and give some advice about anomalies and correlation. Team freedeaths mashenjun

3 Jan 07, 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
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
Makes google's political ad database actually useful

Making Google's political ad transparency library suck less This is a series of scripts that takes Google's political ad transparency data and makes t

The Guardian 7 Apr 28, 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
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
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
TelegramDB - A library which uses your telegram account as a database for your projects

TelegramDB A library which uses your telegram account as a database for your projects. Basic Usage from pyrogram import Client from telegram import Te

Kaizoku 79 Nov 22, 2022
Shelf DB is a tiny document database for Python to stores documents or JSON-like data

Shelf DB Introduction Shelf DB is a tiny document database for Python to stores documents or JSON-like data. Get it $ pip install shelfdb shelfquery S

Um Nontasuwan 35 Nov 03, 2022
EmployeeDB - Advanced Redis search functionalities on Python applied on an Employee management backend app

EmployeeDB - Advanced Redis search functionalities on Python applied on an Employee management backend app

Ahmad Bazzi 58 Oct 10, 2022