Приложение позволяет загружать файлы для зарегистрированных пользователей, делится файлами с другим зарегистрированными пользователями в рамках приложения.
Реализована возможность поиска файла или папки по имени в разделах приложения - "Мои файлы", "Файлы розданные мной", "Файлы переданные мне", "Моя корзина".
В разделе "Корзина" для удаленных файлов есть функция восстановления удаленных файлов или полного их удаления.
Поддерживается простое оповещение о получении файлов от пользователя через 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
Host | Назначение |
---|---|
http://localhost | сайт приложения |
http://localhost:8025 | Mailpit - вэб интерфейс для отладки отправки email сообщения |
http://localhost:8900 | MinIO object store - логин sail, пароль password |