Это сервис, который решает две практические задачи: превращает длинные URL в короткие и позволяет загружать файлы на Яндекс.Диск с автоматической генерацией ссылок для скачивания.
Ключевая особенность: проект полностью написала с нуля самостоятельно, следуя техническому заданию. Работала с готовой структурой базы данных и предоставленными шаблонами, реализовала всю бэкенд-логику, API и интеграцию с внешним сервисом. Проект задеплоен на удаленный сервер и доступен в сети.
■ Бэкенд-разработка (основной функционал):
□ Маршруты и логика:
- Главная страница с обработкой формы для создания коротких ссылок
- Эндпоинт для переадресации по короткому идентификатору
- Страница /files для загрузки файлов на Яндекс.Диск
□ Генерация коротких ссылок:
- Реализовала алгоритм автоматической генерации 6 случайных символов (латиница + цифры)
- Добавила проверку уникальности при генерации — если сгенерированный short_id уже занят, происходит повторная генерация
- Реализовала валидацию пользовательских вариантов (макс. 16 символов, только допустимые символы)
□ Защита от конфликтов: настроила проверку, что предложенный или сгенерированный short_id не занят и не совпадает со служебными маршрутами (например, /files)
■ Интеграция с Яндекс.Диском:
□ Асинхронная загрузка файлов с использованием библиотеки aiohttp (требование тестов)
□ Обработка множественной загрузки: одновременная отправка нескольких файлов на Яндекс.Диск
□ Автоматическая генерация уникальных коротких ссылок для каждого загруженного файла
□ Формирование ответа: передача данных в шаблон для отображения таблицы с именами файлов и ссылками на скачивание
■ Работа с базой данных (использование готовой модели):
□ Настроила подключение SQLAlchemy к проекту
□ Реализовала все запросы к базе: создание записей, поиск по short_id, проверка уникальности
□ Написала логику взаимодействия с моделью URLMap согласно ТЗ
■ Интеграция с предоставленными шаблонами:
□ Подключила готовые HTML-шаблоны к бэкенд-логике
□ Настроила передачу данных из представлений в шаблоны
□ Реализовала отображение результатов (сгенерированных ссылок, таблицы с файлами) в интерфейсе
■ Деплой на удаленный сервер — приложение развернуто и доступно в интернете