Веб-приложение для облачного хранения файлов с интеграцией через Telegram бота.
Cloudgram - это веб-приложение для управления файлами в облачном хранилище, использующее Telegram как основное хранилище данных. Пользователи могут загружать, организовывать и управлять своими файлами через веб-интерфейс, в то время как все данные надежно хранятся в инфраструктуре Telegram.
- 🔐 Быстрая авторизация через Telegram
- 📂 Продвинутое управление файлами и папками
- 📤 Загрузка и скачивание файлов любого типа
- 🎨 Цветовая организация папок
- 🔍 Умный поиск по файлам
- 📱 Адаптивный интерфейс
- Frontend Framework: ⚛️ React 18 + TypeScript
- UI компоненты: 🎨 Material UI
- Стилизация: 🎨 SCSS Modules + Emotion
- Управление состоянием: 🔄 TanStack Query v5 + Redux Toolkit
- Роутинг: 🔀 React Router v7
- Анимации: 💫 GSAP
- Валидация данных: ✅ Zod
- Сборка: ⚡ Vite
- Контейнеризация: 🐳 Docker
├── src/
│ ├── app/ # Конфигурация приложения
│ │ ├── store/ # Redux стор
│ │ └── styles/ # Глобальные стили
│ ├── features/ # Функциональные модули
│ │ ├── auth/ # Авторизация
│ │ ├── search/ # Поиск
│ │ └── folderManagement/ # Управление папками
│ ├── shared/ # Переиспользуемый код
│ │ ├── api/ # API клиенты
│ │ ├── assets/ # Статические ресурсы
│ │ ├── config/ # Конфигурации
│ │ ├── hooks/ # React хуки
│ │ ├── lib/ # Утилиты и хелперы
│ │ ├── types/ # TypeScript типы
│ │ └── ui/ # UI компоненты
│ └── widgets/ # Составные компоненты
│ ├── Sidebar/ # Боковая панель
│ ├── FoldersList/ # Список файлов
│ └── Breadcrumbs/ # Навигация
├── public/ # Публичные файлы
└── config/ # Конфигурация сборки
- AuthPage - 🔑 Страница авторизации
- MainPage - 🏠 Главная страница с файлами и папками
- OfflinePage - 📵 Страница при отсутствии подключения
- Header - 📱 Шапка с навигацией и информацией пользователя
- Footer - 🔽 Нижняя панель навигации
- FileManager - 📂 Основной компонент управления файлами
- FoldersList - 📂 Список файлов и папок с различными видами отображения
- UserPanel - 👤 Панель информации о пользователе
- Filters - 🔍 Фильтры и создание файлов/папок
- Breadcrumbs - 🗺️ Навигационная цепочка
- SearchInput - 🔎 Поиск файлов
- ActionMenu - 📄 Контекстное меню действий
- ModalWindow - 🪟 Универсальное модальное окно
- Loader - ⌛ Компоненты загрузки
- AuthCodeInput - 🔢 Ввод кода авторизации
- UploadFile - 📤 Загрузка файлов с прогрессом
- CreateFolder - 📁 Создание новых папок
- Auth.ts - 🔐 Авторизация
- Files.ts - 📄 Управление файлами
- Folders.ts - 📁 Управление папками
- User.ts - 👤 Информация о пользователе
- useUserQuery - 👤 Получение данных пользователя
- useFolderQuery - 📂 Получение содержимого папки
- usePathFinder - 🗺️ Навигация по папкам
- useHotkeys - ⌨️ Обработка горячих клавиш
- animations/ - 💫 Утилиты для GSAP анимаций
- validators/ - ✅ Zod схемы валидации
- calcSumUpload - 📊 Расчет размера загрузки
- formatDate - 📅 Форматирование дат
- getFileIcon - 🎨 Иконки для типов файлов
- isPremium - ⭐ Проверка премиум статуса
- 📱 Интеграция с Telegram
- 🔑 Сессионная авторизация
- 🛡️ Защита роутов
- 📤 Загрузка файлов с прогресс-баром
- 📄 Поддержка различных типов файлов
- 🖼️ Предпросмотр изображений
- 🎨 Цветовая маркировка типов файлов
- 📱 Адаптивный дизайн
- ✨ Анимации при взаимодействии
- 🔤 Кастомные шрифты (Gilroy, Roboto)
- 🪟 Модальные окна
- 💾 Кэширование запросов
- 🚀 Ленивая загрузка компонентов
- ⚡ Оптимизация ре-рендеров
- Клонировать репозиторий:
git clone https://github.com/Cloudgram/cloudgram-webapp.git- Установить зависимости:
npm install- Запустить в режиме разработки:
npm run dev- Сборка для продакшена:
npm run buildПроект поддерживает контейнеризацию через Docker:
npm run docker:run-compose # Запуск в Docker
npm run docker:down-compose # Остановка контейнеровAPI доки: https://api.cloudgram.online/docs#
Базовый URL: https://api.cloudgram.online
/auth- 🔐 Авторизация через Telegram/user- 👤 Информация о пользователе/folder/{id}- 📂 Управление папками/file- 📤 Загрузка файлов/file/{id}- 📥 Скачивание/удаление файлов/trash- 🗑️ Управление корзиной
Документация API: https://api.cloudgram.online/docs#/
Основные конфигурационные файлы:
vite.config.ts- Конфигурация сборкиtsconfig.json- Настройки TypeScript