Skip to content

alchemmist/school-ring

Repository files navigation

Favicon Preview SchoolRing

Github Last commit Stars Forks License Contributors PyCharm Sqlite PyQt5 Python Yandex Lyceum

Project architect: @alchemmist

Motivation: Many schools still rely on outdated bell systems with limited customization options. There is a clear need for a modern solution that allows flexible scheduling, personalized sounds, and automatic playback. A system like this would not only improve efficiency but also create a more pleasant and adaptable school environment. By enabling custom templates and easy configuration, the program aims to simplify daily operations and better meet the unique needs of each institution.

About: It's a course project in the first block of the industrial programming at Yandex Academy Lyceum. This software is installed on local school servers and school system administrators or informatics teachers will load a .xlsx schedule and music files. Done! More interesting features: like stylization, for example, New Year music for the pre-Christmas study period.

Functionality

The program has two types of users: guest and administrator. The administrator has access to all features, including the ability to edit data. The guest, on the other hand, can only view the content.

The program offers the following features:

  • Adding and editing schedules
  • Creating themed bell templates

On the left, there is a menu that allows quick access to any tab. There are three tabs:

  • Home
  • Timetable
  • Template

Tech Stack

The primary and only programming language used is Python 3.10. To bring all ideas to life, the following technologies were used:

For creating the graphical user interface — PyQt5

For automatic bell playback — the threading module from Python’s standard library, used for multithreading

For schedule management — the schedule from python standart library

You can find the complete list of libraries and their versions in the requirements.txt fil.

System design

While designing the project architecture, I aimed to follow classic patterns such as MVC, the S.O.L.I.D principles, the Gang of Four design patterns, and others. The structure is divided into traditional layers:

First, the logic layer, where I moved all technical processes. This is implemented in the following files: data_ceking.py, base_of_data.py, and services.py.

Second, the user interaction layer, which includes everything related to the program’s interface, data input, and output. This is represented by the main entry-point file: views.py.

The program consists of several classes that interact with each other. The main class is Window, which directly or indirectly communicates with other classes. There is also a DataBaseManager class, instances of which can be created within other classes to handle all database operations.

You can find details on the remaining classes in docs directory.

How to run it

One command with uv:

uv run python schoolring

Questions | Contribute

If you have questions about this repo or you want to contribute, write to actual project architect (check it in a first line of this README).

Contributors

About

Bell system for schools

Topics

Resources

License

Stars

Watchers

Forks

Languages