Skip to content

Latest commit

 

History

History
139 lines (103 loc) · 13.3 KB

v2.0.0.md

File metadata and controls

139 lines (103 loc) · 13.3 KB

Оглавление

Архитектура проекта

Проект состоит из двух частей:

  • client - код для работы с клиентом.
  • server - код работы с сервером.

v2-0-0-root.png

О клиенте рассуждать нечего - свалочный код, который нужный, только чтобы показать, каким может быть GUI. Сервер состоит из следующих директорий:

  • config - конфигурации и приватные переменные.
  • data - база данных, в которой хранятся различные документы.
  • src - програмный код.
  • test - файлы с тестами.

Серверная архитектура

Серверная архитектура состоит из следующих директорий:

  • core - функции и сущности, которые формируют ядро приложения.
  • modules - различные модули - сегменты работы приложения.
  • utils - специфические функции, которые имеют узкое предназначение.

Core (ядро приложения)

Ядро приложения наличивают различные перечисления, которые используются по всему приложению, а также файлы с логикой работы с файловой системой.

v2-0-0-src-core.png

К примеру в файла statusCode.js перечислены все HTTP код статуса, который используются во всём приложения. Возникает вопрос, зачем его создавать? Если у Вас есть много мест, где используются одни и те же сущности, зачем повышать вероятность ошибок и опечаток вручную вставлять стрингу? Создавая переменную с значением этого статус код, по всему коду программы будет использоватся одна и таже переменная, что формирует чистоту кода.

Modules (модули)

Приложения находит следующие модули:

  • Application programming interface (API) - эндпоинты связи с сервером, которые используются в графическом интерфейсе и предоставляют функционал работы с данными.
  • Command line interface (CLI) - модуль работы с интерфейсом командной строки.
  • Graphical user interface (GUI) - модуль работы с HTML страничками.
  • Logger - модуль работы с файлами логирования, их сжатия, разжатия, чтения и т.д.
  • Worker - системные файлы, которые регулярно создают файлы логирования.

Application programming interface (API)

API состоит из трёх различных сущностей, каждая из которых едина в своей файловой архитектуре:

v2-0-0-src-modules-api.png

Существуют следующие сущности:

  • 404 - если произошло использование несуществущего эндпоинта - пользователь попадёт на страничку 404
  • check - модуль чеков. Каждый пользователь может сформировать чек. Реализовывает CRUD функционал с зависимостями по токену авторизациию и сущности пользователя.
  • token - модуль авторизации, отвечает за токены, которые имеют свои сроки годноти и создаются для каждого пользователя отдельно. Явялется организатором сессий.
  • user - модуль пользователя.

Каждая стандартная сущность (на примере модуля user) состоит из следующих файлов:

  • user.constants.js - все константы, которые используются в модуле вынесены в отдельный файл. Таким образом унифицируя ответа с сервера и очищая код.
  • user.controller.js - класс логики получения данных по эндпоинтам, передача их в сервис, а так же реализация ответов по эндпоинту обратно на клиент.
  • user.exception.js - все варианты ответов от сервера.
  • user.helper.js - класс со специфическими функциями, которые не касаются работы с базой данных, валидации или маршрутизацией данных.
  • user.module.js - класс с итоговыми методами, которые могут быть использованы в других модулям.
  • user.router.js - описание всех методов приложения.
  • user.service.js - класс по работе с базой данных.
  • user.validator.js - класс валидации данных, которые приходят на сервер по различным эндпоинтом.

Command line interface (CLI)

Интерфейс командной строки позволяет получить данные путём введения различных ключей. Структура самого модуля:

v2-0-0-src-modules-cli.png

Где:

  • constants - ярчащий пример понимание масштабируемости - если константы можно сгрупировать, то сами константы разделяются по файлам, а файлы падают в папку общей направленности - константы.
    • cli.constants.js - константы, которые используются по всему модулю CLI.
    • messages.constants.js - константы которые относятся к комманде help.
    • row.constants.js - костанты, которые относятся к коммандам со списками.
    • stats.constants.js - константы, котоыре онтосятся к комманде stats.
  • cli.commands.js - перечень всех комманд, которые могут быть использованы в CLI.
  • cli.controller.js - класс логики получения данных по ключевым словами, передача их в сервис, а так же реализация ответов обратно в командною строку.
  • cli.debug.js - все варианты ответов ответов в командную строку.
  • cli.events.js - чтобы CLI понимал, ключевые слова, ему нужны подписки - привязки на ключевые слова, а также функции обратного вызова, которые применяются при срабатывании того или иного ключевого слова.
  • cli.graphical.js - CLI имеет графические свойства, такие как отступы, разделяющие линии и прочее. Эти методы описываются в классе CLIHraphic
  • cli.helper.js - класс со специфическими функциями, которые не касаются работы с базой данных, валидации или маршрутизацией данных.
  • cli.logger.js - класс, отвечающий за взаимодействие с модулем логера.
  • cli.module.js - класс с итоговыми методами, которые могут быть использованы в других модулям.
  • cli.service.js - класс по работе с базой данных.
  • cli.utils.js - различные утилиты, которые вынесены за скобки и не являются обработчиками данных.
  • cli.validador.js - класс валидации данных, которые приходят на сервер с различных команд.

Примеры использования различных команд и запуска самой CLI смотрите на главной странице - Главная страница

Graphical user interface (GUI)

Графический интерфейс представляет из себя несколько страничек, организация маршутизации между ними, а также отдельную работу кнопок ведущих на те или иные эндпоинты.

v2-0-0-src-modules-gui.png

Где:

  • templates - директория со всеми шаблонами - страничками, которые отрисовываются и составляют GUI
  • gui.base.js - класс с функциями замыканиями, которые принимают данные различных страничек и путь к ним.
  • gui.constants.js - константы, которые применяются по всему модулю.
  • gui.controller.js - класс логики получения данных по эндпоинтам, передача их в сервис, а так же реализация ответов по эндпоинту обратно на клиент.
  • gui.data.js - данные каждого шаблона - странички.
  • gui.helper.js - класс со специфическими функциями, которые не касаются работы с базой данных, валидации или маршрутизацией данных.
  • gui.module.js - класс с итоговыми методами, которые могут быть использованы в других модулям.
  • gui.pages.js - перечень всех страничек приложения.
  • gui.public.js - методы по работе с публичными, статическими файлами, такими как Favicon.
  • gui.service.js - класс по работе с базой данных.
  • gui.validator.js - класс валидации данных, которые приходят на сервер с клиента.

Вид страничек смотрите на главной странице - Главная страница

Logger

Логер необходим для логирования файлов базы данных, таким образом позволяя их в дальнейшем восстановить в случае ошибок в последней.

v2-0-0-src-modules-logger.png

Где:

  • logger.constants.js - константы, которые применяются по всему модулю.
  • logger.controller.js - класс логики получения, передачи в сервис необходимых данных и возврат нужного ответа.
  • logger.module.js - класс с итоговыми методами, которые могут быть использованы в других модулям.
  • logger.service.js - класс по работе с базой данных.

Worker

Модуль отвечающий за переодическое логирование файлов и их пред / пост обработку при компресии / декомпресии их в работе проекта.

v2-0-0-src-modules-worker.png