Клиенту требовался веб-сервис для автоматизации обмена валют и цифровых активов с возможностью работы по разным поддоменам (например, usd.site.kz, eur.site.kz) — для отдельных направлений обмена.
Основные задачи:
Реализовать быстрый и безопасный backend с REST API;
Сделать адаптивный frontend с серверным рендерингом (Jinja2);
Настроить маршрутизацию на уровне поддоменов, чтобы каждая “точка обмена” имела собственный интерфейс и настройки;
Обеспечить простую админ-панель для управления курсами, пользователями и логами операций;
Собирать метрики (логирование, статистику заявок) и предусмотреть масштабирование через Docker.
⚙️ Решение
Для backend использовал FastAPI — за счёт асинхронности и удобной интеграции с PostgreSQL через SQLAlchemy.
Интерфейс реализован на Jinja2, что позволило формировать динамические HTML-шаблоны без тяжёлого SPA.
Архитектура — модульная, с разделением на core, api и templates.
🔧 Основные технические решения:
PostgreSQL + Alembic для миграций;
Docker Compose для быстрой сборки (backend, db, nginx);
Работа с поддоменами через Nginx server blocks и динамический роутинг в FastAPI (request.url.hostname → выбор конфигурации обмена);
Авторизация через JWT;
Настроено логирование и уведомления в Telegram при сбоях или новых заявках;
Добавлены шаблоны страниц: “Главная”, “Курс обмена”, “Контакты”, “Оформить заявку”;
Админ-панель для ручного изменения курсов и просмотра истории операций.
🚀 Результат
Получился полноценный обменный сервис, который:
Работает под несколькими поддоменами для разных валютных направлений;
Имеет быстрый отклик (в среднем <50мс на запрос);
Масштабируется через Docker без изменения кода;
Позволяет владельцу управлять курсами и отслеживать заявки в реальном времени.
После запуска сервис обслуживает до 500+ активных заявок в сутки, и благодаря SEO-оптимизации Jinja-шаблонов страницы быстро индексируются в Яндексе и Google.