Skip to content

5-th project. The Django app that helps serve bank clients in order of appearance.

Notifications You must be signed in to change notification settings

Andrey-Volkovitskiy/queue-manager

Repository files navigation

Queue manager

A pet project to practice developing a real-life web app from scratch.

The queue manager that helps operators serve bank clients in order of appearance.

Deployed at: https://queue-man.up.railway.app/

  • Designed a diagram of the future application, reflecting entities of the domain and their interaction
  • Designed a database in 5th normal form
  • Implemented the web app using Django, ClassBasdViews and object level permissions (4000 lines of code written)
  • The app covered with 141 tests (unit & end-to-end)
  • Used complex (20+ lines) database queries through Django ORM
  • Reduced the quantity of DB queries per page load by 4 times using DjangoDebugToolbar, select/prefetch_related()
  • Analyzed PostgreSQL query plans and accelerated them using composite indexes
  • The code refactored to follow DRY, KISS

Tests and code quality assessment:

Pytest (with postgres) Linter (Flake8)

Maintainability Test Coverage


This project was built using these tools:

Tool Description
Django Web framework
Django ORM Database-abstraction API
PostgreSQL Database management system
Bootstrap CSS framework
Docker Container-based platform for building apps
Poetry Python dependency manager
Pytest Testing framework
Django Debug Toolbar DB query analysis tool
Flake8 Linter to check code style
Code Climate Clean Code verification system
GitHub Actions Continuous Integration (CI)
Railway Deployment platform
WhiteNoise Static file delivery service
Rollbar Error logging & tracking service

Installation and running

The application stores data using PostgresSQL (connected via DATABASE_URL).

  • make install - to install dependencies
  • make migrate - to migrate a database
  • make start - to start the app
  • make dev - to start app on development web server
  • make test - to run tests

(more service commands can be found in Makefile)


ER diagram er diagram


Ticket lifecycle er diagram


Example of a multi-line database query Multi-line DB query


BD query analysis using Django Debug Toolbar Django Debug Toolbar


Speed up queries using indexes Indexing


Error tracking (Rollbar) Error tracking (Rollbar)