Skip to content

Instantly share code, notes, and snippets.

@hedgeven
Created July 19, 2022 10:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hedgeven/b1c7b85c36baecb5565cf686da4bf15c to your computer and use it in GitHub Desktop.
Save hedgeven/b1c7b85c36baecb5565cf686da4bf15c to your computer and use it in GitHub Desktop.
Создать monorepo (1) в котором будет два отдельных приложения server (2) и client (3).
## 1. Требования по monorepo
### Технологии:
- TypeScript
- Eslint
- любой пакетный менеджер, который поддерживает монорепо
### Команды в корневом package.json:
- dev – команда для старта сервера и клиента в watch режиме
- build – сборка клиента и сервера с упаковкой в Docker-образ
- eslint – Проверка eslint (сервера и клиента)
- tscheck – Проверка типизации проекта (сервера и клиента)
## 2. Требования по приложению /server
### Технологии:
- GraphQL в качестве API
- dotenv для загрузки переменных из .env
- любой сервер
### Задача приложения:
- Предоставить два Query метода:
- Получить всех пользователей с пагинацией
- Получить пользователя по id
- Предоставить три Mutation метода:
- Добавить пользователя
- Обновить пользователя
- Удалить пользователя
- Список из 100 пользователей можно нагенерировать через faker.js при старте сервера. Поля entity User:
- id
- name
- photo
- email
- Не забудьте разрешить CORS для запросов по адресу /graphql
- В папке /server должен быть Dockerfile для сборки приложения
- Придожение в dev режиме стартует на 4000 порту
## 3. Требования по приложению /client
### Технологии:
- React (можно любой на выбор CRA, NextJS, Remix)
- Ant.design в качестве ui библиотеки
- ApolloClient 3 в качестве state менеджера для GraphQL
- Используем env-переменную GRAPHQL_API_URL для указания ссылки на подключение к GraphQL серверу
### Задача приложения:
- Отображать список пользователей с пагинацией. Каждая запись имеет две иконки управления
- Редактировать – переходим на страницу пользователя /users/[id]
- Удалить – показываем confirm перед отправкой команды удаления на сервер. После удаления, строка пользователя должна пропасть из таблицы.
- На странице пользователя дать возможность редактировать и сохранять его данные (при возврате в список, данные пользователя должны автоматом обновиться).
- На странице списка пользователей должна быть кнопка для создания нового пользователя /users/new
- На странице создания пользователя должны быть поля для ввода данных пользователя (поле для имени, поле для фото, поле для email) с какой-нибидь валидацией полей.
- В папке /client должен быть Dockerfile для сборки приложения
- Приложени в dev режиме стартует на 3000 порту
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment