Готовая среда
Технопарк не выдаёт VM, SSH, сервер или облако. Настройка собственного окружения — часть задания.
В лабораторию передали небольшой внутренний сервис. Исходный код есть, но проект находится в нерабочем состоянии: документация неполная, конфигурация повреждена, часть компонентов работает неправильно.
Твоя задача — разобраться в устройстве системы, восстановить её работу, самостоятельно развить проект и подготовить его к передаче следующему разработчику.
Это не экзамен на знание команд наизусть. Можно пользоваться поиском, официальной документацией, Stack Overflow, ChatGPT, Codex и другими LLM. Важно понимать получившееся решение и уметь объяснить, почему оно работает.
Технопарк не выдаёт VM, SSH, сервер или облако. Настройка собственного окружения — часть задания.
Итогом является публичный репозиторий студента, созданный из подготовленного шаблона.
Один коммит вида final не считается хорошим результатом. История разработки тоже проверяется.
Рекомендуемый вариант для лаборатории — Linux. Большая часть серверной инфраструктуры работает под Linux, Docker использует Linux-контейнеры, а терминал является обычным инструментом разработчика.
К основному заданию стоит переходить только после успешной проверки инструментов.
git --version
docker --version
docker compose version
curl --version
docker run hello-worldПодойдут новичку. Установите Git, curl, Docker Engine и плагин Docker Compose по официальной инструкции для систем на базе Ubuntu или Debian.
Docker Engine для Ubuntu ↗Команды близки к Ubuntu, но используйте инструкцию именно для Debian. Не ставьте Docker из устаревших случайных гайдов.
Docker Engine for Debian ↗Используйте dnf и официальный репозиторий Docker. Проверьте, что после установки доступна команда docker compose.
Можно установить инструменты через pacman. Сам Arch устанавливать по этому кейсу не учим: если вы его выбрали, вы уже готовы разбираться самостоятельно.
sudo pacman -S git curl docker docker-composeЕсли работаете на Windows, рекомендуемый путь — WSL2 + Ubuntu. WSL2 запускает полноценное Linux-окружение внутри Windows и даёт Linux terminal, Git, Docker и привычные инструменты.
wsl --installПосле установки запустите Ubuntu, создайте Linux-пользователя, обновите систему, установите Git и Docker, настройте Docker и проверьте окружение. Типовые проблемы с WSL — часть отбора, но начните с официальной документации Microsoft.
WSL install ↗Кейс можно выполнить на macOS через Terminal, Git, Docker Desktop или совместимое Docker-окружение и curl. Команды могут немного отличаться от Linux, поэтому сверяйтесь с документацией используемых инструментов.
Исходный шаблон доступен в отдельном репозитории. Создайте на его основе свой проект или скачайте готовый архив рядом с этой страницей.
Создайте собственный публичный Git-репозиторий из шаблона, клонируйте его, создайте ветку develop и ведите работу в ней. Не копите всё в один финальный коммит.
До исправлений изучите проект. Найдите frontend, backend, конфигурацию базы данных, nginx и места, где компоненты должны взаимодействовать.
Добавьте в собственный README раздел Архитектура и кратко опишите устройство проекта. Можно использовать ASCII-схему или изображение.
В исходном шаблоне намеренно оставлены воспроизводимые поломки. Каждая проверяет отдельный навык: переменные окружения, сеть Docker, HTTP, frontend/API, хранение данных, права Linux и nginx.
Запустите систему. Первая проблема связана с переменными окружения. Найдите, каких данных не хватает, и оформите локальную конфигурацию так, чтобы секреты не попали в Git.
После настройки окружения backend всё равно не работает. Посмотрите состояние контейнеров, журналы и причину ошибки подключения к PostgreSQL.
Frontend открывается, но данные не загружаются. Проверьте взаимодействие frontend ↔ backend через DevTools: Network, URL, порт, endpoint и JSON.
Создайте новую запись. Затем полностью остановите и пересоздайте систему. Сделайте так, чтобы данные переживали пересоздание контейнеров.
Один shell-скрипт нужен для старта, но не запускается из-за прав Linux. Найдите причину и исправьте её осмысленно.
Ожидаемое состояние: браузер → nginx → frontend ↔ backend → PostgreSQL. Система запускается и показывает данные.
Теперь система работает. Сделай её своей: добавь осмысленную возможность, которая затрагивает минимум два слоя приложения.
Поиск, категории, фильтрация, история выдачи, QR, статистика, бронирование или другая предметная область. Это не список вариантов, а направление мысли.
Добавьте минимум один новый endpoint, связанный с собственной функциональностью. В README должен появиться пример запроса через curl.
Система должна отдавать минимальный health response.
{
"status": "ok"
}Финальное приложение должно подниматься одной командой уровня docker compose up --build. Не должно требоваться запускать части системы вручную.
Завтра твой проект получит разработчик, который никогда его не видел. Сделай так, чтобы он смог запустить систему без твоей помощи.
Название, описание, архитектура, требования, установка, настройка переменных окружения, запуск, API, собственная функциональность и решение типовых проблем.
История Git должна показывать ход работы: настройку окружения, исправление базы данных и API, сохранение данных, права запуска, новую функцию, health endpoint и документацию.
Создайте в своём репозитории файл CASELOG.md. Это не большой отчёт и не бюрократия: он нужен, чтобы на защите было видно ход вашего инженерного мышления.
Опишите минимум 3 существенные проблемы, с которыми столкнулись при восстановлении системы. Для каждой проблемы достаточно коротко указать: симптом, что проверяли, причину, решение и почему оно работает.
## Проблема
### Симптом
Что именно не работало.
### Что проверил
Какие гипотезы, команды, логи или компоненты исследовались.
### Причина
В чём в итоге была проблема.
### Решение
Что было изменено.
### Почему это работает
Краткое объяснение.Добавьте автоматические тесты для backend или API.
Настройте автоматическую проверку: push → tests. Можно использовать GitLab CI, GitHub Actions или другой привычный инструмент.
Сделайте удобные команды make up, make down, make logs, make test.
Используйте Alembic или аналогичный механизм migrations.
Улучшите frontend. Оценивается не красота сама по себе, а удобство и законченность.
Оптимизируйте Docker images или используйте multi-stage build там, где это имеет смысл.
Репозиторий хранит проект и историю. Коммит фиксирует изменение, ветка позволяет работать над задачей отдельно, а push отправляет изменения на Git-сервер.
Документация Git ↗Обратите внимание на файловую систему, terminal, permissions, process и права запуска shell scripts.
Command line basics ↗Image — шаблон, container — запущенный экземпляр, Dockerfile описывает сборку, Compose объединяет сервисы, network связывает контейнеры, volume хранит данные.
Docker get started ↗HTTP описывает обмен запросами и ответами. URL указывает адрес. Port выбирает процесс. REST API отдаёт ресурсы, часто в JSON.
MDN HTTP ↗PostgreSQL хранит структурированные данные приложения. Backend подключается к базе и отдаёт данные frontend через API.
PostgreSQL docs ↗Точный сценарий проверки не публикуется. Обычно защита занимает около 30 минут. Принцип простой: нужно понимать систему, которую вы принесли.
Работающую систему, архитектуру, найденные проблемы, контейнеры, журналы, сеть и volume Docker, API, собственную функциональность, README и CASELOG.
Внести небольшое дополнительное изменение, разобраться с неизвестной заранее неисправностью и обсудить интересующие направления дальнейшей работы.
Используйте любые инструменты, которые помогают учиться и работать: ChatGPT, Claude, Copilot, Codex, поиск, форумы и официальную документацию. Запрета на ИИ нет. Но защита естественно проверяет понимание результата: работает — хорошо, теперь нужно объяснить почему.