Skip to content
This repository was archived by the owner on Mar 29, 2021. It is now read-only.

sgtHoloToaster/JustAnotherSimpleFormApplication

Repository files navigation

Описание задачи

  1. Создайте произвольную форму используя CSS и любой JavaScript фреймворк на Ваш выбор. Например, форму контакта или заказа, содержащую как минимум 5 полей разного типа: text, dropdown, date, radio, checkbox.

  2. Вы можете использовать такие фреймворки как Vue.js, Angular, React, Knockout. Не используйте jQuery в качестве основного фреймворка. Он может быть использован только в качестве вспомогательного инструмента. По желанию можно использовать TypeScript или Babel

  3. Добавьте валидацию к полям формы

  4. Заполненная форма должна отправляться в REST-сервис. Данные формы должны быть в формате JSON и иметь следующий вид:

{
  fieldId1: 'value1',
  fieldId2: 'value2'
}
  1. Создайте REST-сервис используя C# и ASP.NET Web Api/ASP.NET Core Web API, который будет ответственнен за получение, поиск и сохранение данных (JSON-объектов) форм

  2. Создайте страницу со списком созданных форм с возможностью их поиска

  3. Упакуйте все JS и CSS файлы в один бандл и настройте минификацию используя любой из инструментов на Ваш выбор (Webpack, Gulp, Grunt)

Ключевая идея – сделать так, чтобы изменения в структуре данных формы не требовала изменений в бэкенд сервисах.

Задача достаточно простая, однако постарайтесь представить, что это реальное приложение. То есть попробуйте создать хорошую архитектуру и уровень абстракции.

Инструкция по запуску

Для запуска приложения необходимы nodejs и dotnet.

Запуск приложения можно осуществить выполнением launch-me.bat. Что происходит в этом случае:

  • устанавливаются npm-пакеты (npm install)
  • с помощью Webpack собирается бандл в production-режиме (webpack --mode production)
  • собирается и запускается приложение (dotnet run -c Release --environment="Production")

При желании, команды можно выполнить вручную. Для этого необходимо перейти в директорию src/JustAnotherSimpleFormApplication.Web и выполнить команды:

для Release:
npm install  
npm run build:prod  
dotnet run -c Release --environment="Production"  
для Dev:
npm install  
npm run build:dev  
dotnet run