Skip to content

sd1328/test-excel

Repository files navigation

Тестовое задание

Онлайн редактор таблиц (excel подобный)

Поднятие проекта локально

Требуеться Docker, Docker Compose

Создание контейнеров

cd _docker
./build.sh

Установить права папки временных файлов

chmod -R 777 storage

Создать файл конфигурации

cat .env.example > .env

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

cd _docker
./run.sh

Развертывание

# войти в контейнер fpm
cd _docker
./fpm_bash.sh
# перейти в папку проекта
cd /code
# установка зависимостей
composer update
# миграции

php artisan migrate --path=/database/migrations/2014_10_12_000000_create_users_table.php
php artisan migrate --path=/database/migrations/2014_10_12_100000_create_password_resets_table.php
php artisan migrate --path=/database/migrations/2019_08_19_000000_create_failed_jobs_table.php 
php artisan migrate --path=/database/migrations/2020_10_23_000000_excel.php
php artisan migrate --path=/database/migrations/2020_10_29_000000_excel.php

API

Состав

  • стандартный интерфейс bootstrap
  • стандартный интерфейс авторизации/аунтефикации на базе laravel ui (регистрация/авторизация)
  • CRUD таблиц, привязка таблиц к конкретному пользователю
  • сервис редактора таблиц (backend)
  • VUI компонент редактора таблицы (frontend)

Сервис редактора таблиц

  • Реализован с упором на преобладание операций чтения
  • Значения конкретных ячеек храняться в отдельных записях таблицы БД
  • Реализованы обекты Таблицы / Ячейки с функциями DTO
  • Обект таблицы включает коллекцию обектов ячеек
  • Обекты ячеек создаються только если задано какое-либо значение
  • Обект таблицы (вместе с ячейками) сериализируеться и сохраняеться в Redis
  • Чтение значейни ячеек всегда происходит из обекта полученого из десиреализации из Redis
  • БД служит постояным хранилищем

API представленно двумя методами:

  • чтение (получение) значений ячеек определенной области таблицы
  • запись значения конкретной ячейки

About

Excel test web application

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages