Работающую версию задания можно посмотреть здесь.
Что было сделано:
- Использовал React и Redux;
- Использовал стандарт JS ES6;
- Стили описаны по методологии SUIT CSS;
- Форма и валидация полей написаны без использования сторонних библиотек;
- Реализовал прикрепление файлов через Drag and drop. Так же без использования сторонних библиотек;
- Реализовал проверку прикрепляемых файлов по размеру, типу и общему размеру файлов на одно письмо;
- Реализовал отображение списка отправленных сообщений со статусом отправки;
- Написал тесты для большинства основных компонентов, а так же для reducer'a и action creator's;
- Сделал responsive стили до 320px;
- Написал несколько вспомогательных функций, использующихся в приложении (папка utilities);
Компоненты React в приложении разделены на View-компоненты без состояния, которые можно многократно переиспользовать в различных частях приложения (папка components), и на компоненты-контейнеры, использующие состояния для валидации полей формы, проверки прикрепляемых файлов и взаимодействующие с Redux (папка containers).
В части Redux за основу была взята стандартная структура actions reducers store.
$ npm install // Для установки зависимостей проекта
$ npm start // Для запуска проекта в режиме разработки
$ npm test // Для запуска тестов