Skip to content

PolskiHacker/The_room

Repository files navigation

The_room

Проект представляет собой desktop-приложение на Python с использованием фреймворка PyQt6 для реализации внутреннего корпоративного чата.


Оглавление


Описание

Проект реализует клиент‑серверное desktop‑приложение для обмена сообщениями (личные и групповые чаты) в рамках корпоративного использования.

Клиентская часть предоставляет GUI на базе PyQt6, серверная — обрабатывает запросы, хранит данные. Nginx обеспечивает безопасность обмена данными, шифруя и дешифруя их (при развертывании нескольких серверов может также выполнять роль маршрутизатора).

Обмен сообщениями организован через TCP-сокеты.

Технологии

  • Python 3.8+
  • PyQt6
  • Сокеты (TCP)
  • pytest
  • pyinstaller
  • Inno Setup
  • Task
  • nginx

Структура проекта

The_room/
├── hooks/                         # Дополнительные хуки для PyInstaller
├── src/
│   ├── client_app/                # Клиентская часть
│   │   ├── custom_delegates/      # Пользовательские делегаты для представлений
│   │   ├── data/                  # Ресурсы и файлы данных
│   │   ├── ethernet/              # Сетевые модули
│   │   ├── notification/          # Модуль уведомлений
│   │   ├── pages/                 # Страницы интерфейса
│   │   ├── styles/                # Стили приложения
│   │   ├── test/                  # Модуль тестов клиента
│   │   ├── __init__.py
│   │   ├── config.ini             # Конфигурационный файл клиента
│   │   └── main.py                # Точка входа клиента
│   └── server/                    # Серверная часть
│       ├── certs/                 # SSL‑сертификаты 
│       ├── data/                  # Данные для работы сервера
│       ├── database/              # Модуль работы с БД
│       ├── __init__.py
│       ├── config.ini             # Конфигурационный файл сервера
│       └── main.py                # Точка входа сервера
├── .gitignore
├── .gitlab-ci.yml                 # CI/CD для gitlab
├── icons8.ico                     # Иконка приложения
├── installer.iss                  # Скрипт Inno Setup
├── pytest.ini                     # Запуск тестов
├── nginx.conf                     # конфиг для nginx
├── requirements.txt               # Список всех зависимостей
└── Taskfile.yml                   # Описание команд Task

Taskfile

  1. В PowerShell (если Task ещё не установлен):

    Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
    iwr -useb get.scoop.sh | iex
    scoop install task
  2. Перейдите в корень проекта.

  3. Доступные команды:

    task install   # создаст venv и установит зависимости
    task build     # соберёт .exe и подготовит папку dist
    task run       # запустит сервер и клиент (PostgreSQL должен быть установлен)
    task clean     # удалит артефакты и окружение

Конфигурация

Для запуска проекта необходимо указать ваши параметры подключения к базе данных, а для развертывания проекта не на localhost нужно также написать корректные IP-адреса.

Все необходимые зависимости расположены в файле requirements.txt.

Конфигурационные файлы находятся в:

  • src/client_app/config.ini
  • src/server/config.ini

Запуск

  1. Запустите сервер:

    python src/server/main.py
  2. Запустите клиент:

    python src/client_app/main.py

Создание установщика

  1. Скачайте и установите Inno Setup Compiler.
  2. Откройте installer.iss в Inno Setup.
  3. Нажмите F9 или кнопку «Compile» для сборки установщика.
  4. Готовый .exe установщика окажется в папке installer_output/.

Тестирование

В корне проекта с активированным venv запустите:

pytest

About

small project of desktop app

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors