For the complete documentation index, see llms.txt. This page is also available as Markdown.

Технологический стек

iEXExchanger — программная платформа для создания и управления сервисом электронного обмена валют.

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

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

Архитектура системы

iEXExchanger состоит из трёх основных компонентов:

Компонент
Назначение

Backend

Выполняет бизнес-логику, расчёты, обработку заявок и работу с данными

Административная панель

Используется владельцем проекта, администраторами и операторами

Публичный сайт

Предоставляет клиентам интерфейс обменного сервиса

Как работает система

Основная логика работы iEXExchanger выглядит следующим образом:

  1. Клиент открывает публичный сайт.

  2. Публичный сайт получает данные направлений, валют и курсов через API.

  3. Клиент выбирает направление и создаёт заявку.

  4. Backend проверяет введённые данные и настройки направления.

  5. Система рассчитывает суммы, комиссии, курсы и лимиты.

  6. Информация о заявке сохраняется в PostgreSQL.

  7. Фоновые действия передаются в очередь Redis.

  8. Laravel Horizon обрабатывает уведомления, webhooks, файлы и другие задачи.

  9. Laravel Reverb передаёт обновления в реальном времени.

  10. Администратор или оператор обрабатывает заявку через административную панель.

Такое разделение позволяет выполнять тяжёлые операции в фоне и не задерживать работу сайта.

Языки программирования

В iEXExchanger используется несколько языков программирования. Каждый из них отвечает за определённую часть системы.

Язык
Назначение

PHP

Backend, API, бизнес-логика и фоновые задачи

TypeScript

Административная панель и публичный сайт

HTML и Blade

Шаблоны страниц, писем и системных сообщений

CSS и SCSS

Стилизация интерфейсов и темы оформления

SQL

Работа со структурой и данными PostgreSQL

Shell

Установка, развёртывание и серверные скрипты

Go

Служебные инструменты для работы с базами данных

Backend

Backend — центральная часть iEXExchanger.

Он отвечает за бизнес-логику системы и обработку всех основных операций.

1

PHP 8.4

PHP 8.4 используется как основной серверный язык.

На PHP реализованы:

  • API;

  • бизнес-логика;

  • административные действия;

  • фоновые задачи;

  • работа с базой данных;

  • обработка интеграций;

  • команды обслуживания системы.

2

Laravel 13

Laravel 13 используется как основной backend-фреймворк.

Он предоставляет базовые механизмы для:

  • маршрутизации API;

  • проверки входящих данных;

  • авторизации;

  • работы с базой данных;

  • выполнения очередей;

  • планирования задач;

  • отправки уведомлений;

  • кеширования;

  • логирования;

  • обработки файлов.

iEXExchanger использует Laravel как основу, но бизнес-логика обменного сервиса реализуется внутри самой платформы.

Административная панель

Административная панель используется для управления обменным сервисом.

1

Vue 3

Vue 3 используется как основной frontend-фреймворк административной панели.

2

TypeScript

TypeScript используется как основной язык разработки административной панели.

3

Vite

Vite используется для разработки и сборки административной панели.

4

Tailwind CSS

Tailwind CSS используется для оформления административной панели.

Публичный сайт

Публичный сайт — клиентская часть обменного сервиса.

1

Angular 22

Angular 22 используется как основной frontend-фреймворк публичного сайта.

2

TypeScript

TypeScript используется как основной язык разработки публичного сайта.

3

Angular SSR

Angular SSR используется для серверного рендеринга страниц.

При обычной клиентской загрузке браузер сначала получает JavaScript, после чего строит страницу.

При SSR сервер заранее формирует HTML и отправляет его браузеру.

4

Node.js

Node.js используется как среда выполнения Angular SSR.

Он принимает запросы к публичному сайту, запускает серверный рендеринг и возвращает готовый HTML.

Node.js работает как отдельный процесс на сервере.

5

Fastify

Fastify используется как сервер для Angular SSR.

6

Tailwind CSS и SCSS

Tailwind CSS и SCSS используются для оформления публичного сайта.

7

iEX UI

iEX UI — собственная библиотека компонентов iEXExchanger.

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

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

Базы данных и хранение

iEXExchanger использует несколько типов хранилищ.

Каждое из них решает отдельную задачу.

Хранилище
Назначение

PostgreSQL

Основные постоянные данные

Redis

Быстрые временные данные, кеш и очереди

PostgreSQL

PostgreSQL 18 используется как основная реляционная база данных.

PostgreSQL используется для данных, которые должны сохраняться после перезапуска сервера и оставаться доступными длительное время.

Redis

Redis используется для быстрого временного хранения данных.

Redis не заменяет PostgreSQL. Он используется как быстрое вспомогательное хранилище.

Серверная инфраструктура

Для запуска iEXExchanger используется несколько серверных компонентов.

Компонент
Назначение

Nginx

Принимает HTTP-запросы и направляет их нужному приложению

PHP-FPM

Выполняет PHP-код Backend

Node.js

Запускает Angular SSR

PM2

Управляет процессом публичного сайта

Supervisor

Управляет фоновыми Backend-процессами

Docker

Позволяет запускать компоненты в контейнерах

FASTPANEL

Используется для управления сервером

Debian 12

Основная серверная операционная система

Nginx

Nginx используется как веб-сервер и reverse proxy.

Он принимает входящие запросы и определяет, куда их передать.

PHP-FPM

PHP-FPM выполняет PHP-код Backend.

Он принимает запрос от Nginx, запускает Laravel и возвращает результат.

Node.js

Node.js используется для запуска публичного сайта в режиме Angular SSR.

Он работает как отдельный серверный процесс и формирует HTML страниц.

PM2

PM2 используется для управления процессом Angular SSR.

Он позволяет:

  • запускать приложение;

  • автоматически перезапускать его при ошибке;

  • запускать процесс после перезагрузки сервера;

  • смотреть статус;

  • просматривать логи;

  • перезапускать приложение после обновления.

Supervisor

Supervisor используется для управления долгоживущими Backend-процессами.

Через него могут запускаться:

  • Laravel Horizon;

  • обработчики очередей;

  • Laravel Reverb;

  • Laravel Pulse Worker;

  • отдельные служебные процессы.

Если процесс завершится с ошибкой, Supervisor может запустить его повторно.

Docker

Docker используется для контейнерного развёртывания.

Он позволяет запускать отдельные компоненты в изолированной среде.

Например:

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

FASTPANEL

FASTPANEL используется для управления сервером через веб-интерфейс.

Debian 12

Debian 12 используется как основная серверная операционная система.

Инструменты разработки

Для разработки, проверки и сборки iEXExchanger используется набор дополнительных инструментов.

Инструмент
Назначение

Vite

Сборка административной панели

PHPUnit

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

Vitest

Тестирование frontend-компонентов

PHPStan

Статический анализ PHP

ESLint

Проверка TypeScript и Vue

PHPUnit

PHPUnit используется для автоматического тестирования Backend.

Vitest

Vitest используется для тестирования frontend-кода.

PHPStan

PHPStan выполняет статический анализ PHP-кода.

ESLint

ESLint используется для проверки TypeScript, JavaScript и Vue-кода.

Он помогает поддерживать единые правила и находить потенциальные ошибки.

Последнее обновление

Это было полезно?