https://github.com/vnikolaenko-dev/privatefilesharing
Private File Sharing — это мощное и безопасное веб-приложение для управления файлами с авторизацией и гибким контролем доступа.
https://github.com/vnikolaenko-dev/privatefilesharing
spring-boot spring-data spring-security
Last synced: 2 months ago
JSON representation
Private File Sharing — это мощное и безопасное веб-приложение для управления файлами с авторизацией и гибким контролем доступа.
- Host: GitHub
- URL: https://github.com/vnikolaenko-dev/privatefilesharing
- Owner: vnikolaenko-dev
- Created: 2025-05-05T16:10:41.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-05-05T16:39:19.000Z (about 1 year ago)
- Last Synced: 2025-05-06T20:58:22.957Z (about 1 year ago)
- Topics: spring-boot, spring-data, spring-security
- Language: Java
- Homepage:
- Size: 83 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.MD
Awesome Lists containing this project
README
# Private File Sharing

Надежная, безопасная и масштабируемая платформа для приватного обмена файлами, разработанная для организаций, которым требуется детализированный контроль доступа, управление пользователями и бесшовные уведомления. Построена на основе микросервисной архитектуры для обеспечения высокой доступности, легкого масштабирования и удобной поддержки кода. Будь то работа с конфиденциальными документами или совместными файлами, приложение предоставляет ролевой доступ, аутентификацию через JWT и событийно-ориентированные уведомления.
## Основные возможности
- **Управление пользователями**: Регистрация, аутентификация и управление пользователями с ролями (admin, pro, default). Администраторы могут создавать, обновлять или удалять пользователей.
- **Управление файлами**: Загрузка, получение, изменение уровня доступа и удаление файлов (поддержка PDF, Word и т.д.). Доступ регулируется уровнями (default, pro, admin).
- **Безопасная аутентификация**: Логин на основе JWT с хешированием паролей и ролевым управлением доступом (RBAC).
- **Уведомления**: Уведомления пользователей в реальном времени через Kafka для событий, таких как передача файлов или обновления.
- **API-шлюз**: Централизованная точка входа для всех запросов, обеспечивающая маршрутизацию, CORS и балансировку нагрузки.
- **Масштабируемость**: Микросервисная архитектура позволяет независимо масштабировать сервисы для пользователей и файлов.
## Технологический стек
Проект использует современные технологии промышленного уровня для обеспечения производительности, безопасности и удобства для разработчиков. Основной акцент сделан на экосистему Java для надежности бэкенда и асинхронный обмен сообщениями для слабосвязанных сервисов.
## Архитектура проекта
Проект построен на микросервисной архитектуре для модульности и изоляции ошибок. Фронтенд взаимодействует только с API-шлюзом, который маршрутизирует запросы к специализированным сервисам. Операции, связанные с пользователями, могут инициировать уведомления через Kafka для разделения ответственности.
### Схема архитектуры
```mermaid
graph TD
A[Фронтенд] -->|HTTP-запросы| B[API-шлюз]
B -->|Маршруты /users/*| C[Микросервис пользователей]
B -->|Маршруты /files/*| D[Микросервис файлов]
C -->|Отправляет события| E[Kafka-брокер]
E -->|Потребляет топики| F[Сервис уведомлений]
C <-->|Запросы к БД| G[База данных]
D <-->|Запросы к БД| G
```
Эта схема показывает поток запросов и событийно-ориентированное взаимодействие. API-шлюз выступает единой точкой входа, повышая безопасность и упрощая интеграцию с клиентом.
### Поток обработки запросов
1. Фронтенд отправляет HTTP-запросы (например, логин, загрузка файла) на API-шлюз.
2. API-шлюз аутентифицирует (через JWT) и перенаправляет запрос к соответствующему микросервису.
3. Микросервис пользователей обрабатывает аутентификацию, CRUD-операции и отправляет события в Kafka для уведомлений.
4. Микросервис файлов управляет операциями с файлами и их хранением.
5. Сервис уведомлений потребляет Kafka-топики для отправки email или уведомлений в приложении.
## Структура проекта
Репозиторий организован как мультимодульный Maven-проект для удобного управления микросервисами:
- **api-gateway/**: Содержит конфигурацию Spring Cloud Gateway, правила маршрутизации и фильтры безопасности.
- `src/main/java`: Контроллеры/фильтры для обработки запросов.
- `application.yml`: Конфигурация маршрутов (например, к сервисам пользователей и файлов).
## Установка и запуск
1. **Клонируйте репозиторий**:
```
git clone https://github.com/vnikolaenko-dev/PrivateFileSharing.git
cd PrivateFileSharing
git checkout api-gateway
```
2. **Установите зависимости**:
```
mvn clean install
```
3. **Настройте окружение**:
- Обновите файлы `application.properties` или `.yml` в каждом модуле (например, URL базы данных, серверы Kafka).
- Пример для микросервиса пользователей:
```
spring.datasource.url=jdbc:postgresql://localhost:5432/privatefiles
spring.kafka.bootstrap-servers=localhost:9092
```
4. **Запустите сервисы**:
- Запустите Kafka/Zookeeper (например, через Docker: `docker run -p 9092:9092 apache/kafka`).
- Запустите каждый микросервис: `mvn spring-boot:run` в соответствующих директориях.
- Или используйте Docker Compose для всех сервисов.
5. **Доступ к приложению**:
- Фронтенд: Откройте `index.html` или запустите локальный сервер.
- API: Тестируйте конечные точки через Postman (например, POST /auth/login).