Back to projects

Амбасада за Урбанизм

Backend Case Study // 2026
Мультиязычная платформа для публикации урбанистических проектов и развития сообщества Белграда.

О проекте

«Амбассада за урбанизм» — мультиязычная веб-платформа для сообщества белградских урбанистов. На сайте пользователи могут знакомиться с городскими инициативами, просматривать проекты, узнавать о команде и связываться с представителями сообщества.

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

Что было реализовано

  • REST API для взаимодействия пользовательского интерфейса с сервером и базой данных;
  • публикация и отображение урбанистических проектов;
  • поиск и фильтрация проектов по категориям и тегам;
  • отдельные страницы проектов с описанием, изображениями и галереями;
  • управление содержимым главной страницы и раздела «О нас»;
  • вывод информации об участниках команды;
  • обработка обращений через форму обратной связи;
  • административная панель для добавления и редактирования контента;
  • поддержка русского, английского и сербского языков — латиницы и кириллицы.

Техническая часть

Серверная часть разработана на Python с использованием Django и Django REST Framework. Для хранения данных используется PostgreSQL.

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

Также в проекте реализованы:

  • авторизация пользователей с использованием JWT;
  • разграничение прав администратора и контент-редактора;
  • проверка загружаемых изображений и файлов;
  • защита от слишком частых запросов;
  • настройка безопасного взаимодействия frontend- и backend-частей;
  • автоматическое обновление кэша после изменения контента;
  • документация API в Swagger и ReDoc;
  • автоматические тесты и проверка качества кода;
  • контейнеризация и запуск проекта через Docker.

Основные задачи проекта

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

Отдельное внимание уделялось мультиязычности. Один и тот же контент должен корректно отображаться на четырёх языковых версиях сайта.

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

Результат

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

System Architecture & UI

Tech Infrastructure

Python 3.12 Django 6 Django REST Framework PostgreSQL Redis Celery Docker Docker Compose Gunicorn Caddy JWT Swagger ReDoc drf-spectacular pytest Ruff Poetry GitHub Actions

External Resources

Backend Matters?

Давайте обсудим ваши задачи или новый проект.

Start a Conversation