Giter Site home page Giter Site logo

file-manager's Introduction

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

file-manager's People

Contributors

agdobrynin avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.