Skip to content

Repository files navigation

Cloud Storage API

Многопользовательское файловое облако. Сервис предоставляет RESTful API для загрузки, скачивания и управления файлами и папками.

Технологический стек и инструменты

  • Core: Java 21, Spring Boot 4.0.6, Maven
  • Database & Migrations: PostgreSQL 18.3, Flyway
  • Cache & Sessions: Redis 8.6
  • Message Broker: RabbitMQ 4.3.2
  • Object Storage: MinIO 8.6.0 (S3-совместимое хранилище)
  • Reverse Proxy: Nginx 1.30
  • API Documentation: Swagger UI
  • Testing: JUnit, Spring Boot Test, Testcontainers
  • Deployment: Docker, Docker Compose

Архитектура и основные правила

  • Стиль авторизации: RPC для регистрации и аутентификации.
  • Стиль работы с ресурсами: REST для остальных манипуляций.
  • Базовый путь: Префикс /api (например, /api/auth/sign-up).
  • Авторизация: Сессии на базе кук.
  • Формат данных: application/json (кроме бинарных файлов).
  • Обработка ошибок: 4xx, 5xx ошибки возвращают JSON с полем "message".

Руководство по установке и запуску

Предварительные требования

  • Docker и Docker Compose. Используется многоэтапная сборка, локальные Java/Maven не нужны.

Порядок локального запуска

  1. Настройка окружения: Создайте .env на основе примера (cp .env.example .env).
  2. Конфигурация Frontend: Укажите адрес backend в frontend/public/config.js.
  3. Запуск: Выполните команду docker compose up -d --build.

Доступ к сервисам

Основные API эндпоинты

Регистрация и авторизация (RPC)

  • POST /api/auth/sign-up — Регистрация.
  • POST /api/auth/sign-in — Вход.
  • POST /api/auth/sign-out — Выход.
  • GET /api/user/me — Данные текущего пользователя.

Работа с файлами и папками (REST)

Параметр path — путь к ресурсу, папки должны заканчиваться на /.

  • GET /api/resource?path=$path — Получить информацию о ресурсе.
  • DELETE /api/resource?path=$path — Удалить ресурс.
  • GET /api/resource/download?path=$path — Скачать (бинарный файл или ZIP папки).
  • POST /api/resource/move?from=$from&to=$to — Переместить/переименовать.
  • GET /api/resource/search?query=$query — Поиск.
  • POST /api/resource?path=$path — Загрузка (multipart/form-data).
  • GET /api/directory?path=$path — Получить содержимое папки.
  • POST /api/directory?path=$path — Создать папку.

Проект сделан в рамках java roadmap Сергея Жукова.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages