Fullstack веб-приложение для безопасного хранения файлов с production-развертыванием на VPS (Nginx + Gunicorn + PostgreSQL).
Django 5.2.1 — основной фреймворк для backend разработкиDjango REST Framework — построение RESTful API для клиентских приложенийSimple JWT — аутентификация по JWT токенам с поддержкой refreshPostgreSQL 12+ — production база данных для хранения метаданныхGunicorn — WSGI сервер для production окруженияSwagger/Redoc — автоматическая документация APIReact 19.1.0 — современный интерфейс с хукамиMaterial-UI (MUI) — компонентная библиотека для дизайнаReact Router DOM — клиентская навигация для SPAAxios — HTTP клиент для взаимодействия с APIWebSocket — real-time уведомления о загрузке файловContext API — управление состоянием приложенияUbuntu Server 20.04+ — операционная система для productionNginx 1.18+ — reverse proxy для статики и APISystemd — управление сервисами с автоперезапускомUFW брандмауэр — настройка безопасности сервераАвтоматический деплой — скрипты для обновления приложенияПроблема: Требовалось развернуть fullstack приложение с отдельной обработкой статики (React), медиафайлов и API.
Решение:
Restart=always, RestartSec=10Проблема: Эффективное хранение метаданных файлов, быстрый поиск и скачивание, защита от переполнения диска, валидация загружаемых файлов.
Решение:
Проблема: Защита API от несанкционированного доступа, безопасная обработка загружаемых файлов, защита от распространенных веб-атак (XSS, CSRF, SQL injection).
Решение:
X-Frame-Options, X-Content-Type-Options, HSTSПроблема: Ручное обновление fullstack приложения (backend + frontend) сложно, подвержено ошибкам и требует много времени.
Решение:
deploy-and-restart.sh, который выполняет полный цикл обновления (git pull, миграции, сборка React, перезапуск сервисов)journalctl -u cloud-storage -f для просмотра логов в реальном времениДата запуска в production: Сентябрь 2025
Размер хранилища: 10GB на VPS (расширяемо)
Максимальный размер файла: 100MB (настраивается)
Поддерживаемые форматы: Все типы файлов с валидацией
Аутентификация: JWT tokens + Session cookies
База данных: PostgreSQL 12+ с регулярными бекапами