Skip to content

Web File Manager application using S3 compatible storage. Laravel 10.

Notifications You must be signed in to change notification settings

agdobrynin/file-manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

133 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Web приложение "Файловый менеджер".

Приложение позволяет загружать файлы для зарегистрированных пользователей, делится файлами с другим зарегистрированными пользователями в рамках приложения.

Реализована возможность поиска файла или папки по имени в разделах приложения - "Мои файлы", "Файлы розданные мной", "Файлы переданные мне", "Моя корзина".

В разделе "Корзина" для удаленных файлов есть функция восстановления удаленных файлов или полного их удаления.

Поддерживается простое оповещение о получении файлов от пользователя через email сообщение (notification).

Приложение взаимодействует с "S3 Like" объектным хранилищем файлов MinIO (Amazon S3 API).

Часть задач требующих длительной обработки или имеющих ограничение по частоте вызов вынесены в очереди (queue worker).

Стек:

  • 🐘 Php 8.2 + Laravel 10 with Laravel/Breeze InertiaJs
  • 🌊 Tailwind CSS - css фреймворк
  • 🥉VueJs + InertiaJs - фронт приложение
  • 🦖 MariaDb - основная база
  • 🗃 MinIO - объектное хранилище, совместимое с Amazon S3 API
  • 🐋 Docker, Laravel Sail - для локальной разработки.
  • PHPUnit - тестирование приложения.

Установка проекта

Для развертывания проекта потребуется установленный 🐳 docker или же 🐋 docker desktop проект будет работать как на Windows с поддержкой WSL2 так и на Linux машине.

Локальная разработка и тестирование проекта использует легковесный Laravel Sail для работы с docker контейнерами.

Настроить переменные окружения (если требуется изменить их):

cp .env.example .env

Установить зависимости проекта:

docker run --rm -u "$(id -u):$(id -g)" \
    -v $(pwd):/var/www/html \
    -w /var/www/html \
    laravelsail/php82-composer:latest \
    composer install --ignore-platform-reqs

на этом подготовка к работе с Laravel Sail закончена.

Запуск проекта

Поднять docker контейнеры с помощтю Laravel Sail

./vendor/bin/sail up -d

доступные команды по остановке или реконструкции (rebuild) контейнеров можно узнать на странице Laravel Sail или выполните команду ./vendor/bin/sail для получения краткой справки о доступных командах.

  • Сгенерировать application key

    ./vendor/bin/sail artisan key:generate
  • Выполнить миграции и заполнить таблицы тестовыми данными

    ./vendor/bin/sail artisan migrate --seed
  • Собрать фронт

    ./vendor/bin/sail npm install
    ./vendor/bin/sail npm run build
  • Запустить воркер (worker) обрабатывающий задачи из очереди сообщений

    ./vendor/bin/sail artisan queue:work --queue=upload,default

    в проекте используется очереди с разными приоритетами.

Запуск тестов проекта

Для запуска тестов и контроля покрытия кода тестами

./vendor/bin/sail artisan test  --compact --coverage

Доступные сайты в dev окружении

Host Назначение
http://localhost сайт приложения
http://localhost:8025 Mailpit - вэб интерфейс для отладки отправки email сообщения
http://localhost:8900 MinIO object store - логин sail, пароль password

About

Web File Manager application using S3 compatible storage. Laravel 10.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published