Українською
Є три типи файлів: json, csv, xml, зміст яких - країни та столиці. Необхіднео розробити інтерфейс, за допомогою якого можливо завантажити один із файлів, вивести його зміст на екран, редагувати і викачати змінений варіант у будьякому із зазначених форматів.
- Головна сторінка має форму загрузки файлів
- Після завантаження зʼявляється інтерфейс редагування списку, що дозволяє:
- а. Додавати дані
- б. Змінбвати дані
- в. Видаляти дані
- На сторінці знаходиться кнопка "download" і вибор формату файлу у вигляді дропдауну з варіантами: json, csv, xml
- Відомо, що незабаром будуть додані нові формати, але нема інформації які саме
- Використовувати Laravel і Vue.js / jquery / js
- *Додати Unit тести
- *Додати консольну команду, що буде конвертувати списки з одного формату в інший. Наприклад "php artisan convert:countries --input-file=countries.xml --output-file=countries.json"
- Можливість масштабування коду
- Читабельність коду
- *Тестування коду
Приклади файлів додаються
*Пункти із зірочкою не обовʼязкові
English
There are three types of files: json, csv, xml with list of countries and capitals. You need to develop an interface to upload one of the files, display its content on the screen, edit and download the modified version in any of the specified formats.
- Main page has a form to upload the file
- After uploading, the interface for editing the list appears. It allows you to:
- a. Add data
- b. Change data
- c. Delete data
- There is a "download" button on the page and a dropdown to choosing the file format: json, csv, xml
- It is known that new formats will be added soon, but there is no information about which ones
- You should to use Laravel and Vue.js / jquery / js
- *Unit tests
- *Console command to convert format from one to another. Example "php artisan convert:countries --input-file=countries.xml --output-file=countries.json"
- Scalability
- Readability
- *Testability
Example files are attached
*Points with an asterisk are optional
Go to working directory
git clone https://github.com/skrypnik-dzencode/tt_ccfiles.git .
composer install
cp .env.example .env
vim .env
to setup environmentphp artisan key:generate
npm i && npm run dev
php artisan storage:link
php artisan test
to run testsphp artisan list | grep convert
to show convert commandsphp artisan convert:countries --input-file=countries.json --output-file=countries.xml
convert command (inline way)php artisan convert:countries -I countries.json -O countries.xml
convert command with shortcuts (inline way)php artisan convert:countries-i
convert command via interactive mode
Go to working directory
git clone https://github.com/skrypnik-dzencode/tt_ccfiles.git .
cd docker
docker-compose up -d --build
docker-compose run --rm composer install
cp ../.env.example ../.env
vim ../.env
to setup environmentdocker-compose run --rm fpm php artisan key:generate
docker-compose run --rm npm install
docker-compose run --rm npm run dev
docker-compose run --rm fpm php artisan storage:link
docker-compose run --rm fpm php artisan test
to run testsdocker-compose run --rm fpm php artisan list | grep convert
to show convert commandsdocker-compose run --rm fpm php artisan convert:countries --input-file=countries.json --output-file=countries.xml
convert command (inline way)docker-compose run --rm fpm php artisan convert:countries -I countries.json -O countries.xml
convert command with shortcuts (inline way)docker-compose run --rm fpm php artisan convert:countries-i
convert command via interactive mode
*Install docker-compose first
**It is a draft version for this project