{"id":20373642,"url":"https://github.com/mor-ald/test-task-sws","last_synced_at":"2026-04-09T17:03:11.801Z","repository":{"id":252531453,"uuid":"840712764","full_name":"Mor-ald/test-task-sws","owner":"Mor-ald","description":"Тестовое задание в Seven Winds Studio","archived":false,"fork":false,"pushed_at":"2024-08-30T08:05:55.000Z","size":148,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-15T06:50:41.682Z","etag":null,"topics":["api-rest","commitizen","eslint","prettier","react","scss","typescript","vite","yarn"],"latest_commit_sha":null,"homepage":"https://test-task-sws.netlify.app/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Mor-ald.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-10T13:07:08.000Z","updated_at":"2024-09-10T14:34:00.000Z","dependencies_parsed_at":"2025-01-15T05:45:34.005Z","dependency_job_id":"7ea8130a-b2af-4445-8477-7a3e015fedad","html_url":"https://github.com/Mor-ald/test-task-sws","commit_stats":null,"previous_names":["mor-ald/test-task-sws"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mor-ald%2Ftest-task-sws","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mor-ald%2Ftest-task-sws/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mor-ald%2Ftest-task-sws/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mor-ald%2Ftest-task-sws/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mor-ald","download_url":"https://codeload.github.com/Mor-ald/test-task-sws/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241921824,"owners_count":20042763,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-rest","commitizen","eslint","prettier","react","scss","typescript","vite","yarn"],"created_at":"2024-11-15T01:19:22.367Z","updated_at":"2025-12-30T19:04:04.393Z","avatar_url":"https://github.com/Mor-ald.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Тестовое задание в Seven Winds Studio\n\nТребуется создать сайт по макету в [Figma](https://www.figma.com/file/yyls8AT1soKQ3Qpfl2Y3Nz?type=design%27\u0026node-id=0:1).\nВнимательно прочитайте задание, и особенно раздел Резюме.\nПосле завершения работ создайте репозиторий и отправьте ссылку вашему HR’у.\n\nНеобходимый стек: TypeScript, React, SASS, а так же всё что вам понадобится (кроме jQuery и node-sass).\nОпциональный стек: RTK Query, MUI + styled-components.\n\n## Методы API и с чем их есть\n\n### Начало\n\nВам нужно создать себе общую сущность и получить её ID для дальнейшего взаимодействия с API, для этого нужен метод `/v1/outlay-rows/entity/create`.\nОн вернёт вам ID, в методах API он указан как `eID`.\n\n\u003caside\u003e\n💡 Внимание! Эта операция должна происходить единожды, и только на этапе написания, в дальнейшем установите этот ID как константу.\n\n\u003c/aside\u003e\n\n### Получение данных\n\n`/v1/outlay-rows/entity/{eID}/row/list`\n\n\u003caside\u003e\n💡 Вы должны производить эту операцию только при входе на экран, при каких либо изменениях вам нужно актуализировать информацию локально, не запрашивая каждый раз все данные с сервера.\n\n\u003c/aside\u003e\n\n### Создание строки\n\n`/v1/outlay-rows/entity/{eID}/row/create`\n\nДля создания строки пользователь должен нажать на иконку существующий строки.\n\nПосле этого вы должны отрисовать строку в том месте, где она должна быть, заполнить все требуемые поля нулями (кроме заголовка, его оставьте пустым), включить у строки режим редактирования (третий экран в макете) и ждать пока пользователь не нажмёт `Enter` в одном из полей ввода, только после этого отправляйте данные на сервер.\n\n\u003e ⚠️ Если в `parentId` будет передан неверный `id` - метод вернёт 404. Поэтому если у строки нет `parent` вам нужно передавать `null`.\n\n\u003e 💡 Обратите внимание - при изменении значений у потомков, значение родителя так же изменится, бекенд вам вернёт новое значение.\n\n\u003e 💡 Для создания строки нужны некоторые другие данные которые вы не отображаете, и пользователь не вводит. Заполните их нулями.\n\n### Обновление строки\n\n`/v1/outlay-rows/entity/{eID}/row/{rID}/update`\n\nЧто бы начать редактировать строку нужно дважды нажать на неё мышкой. Тогда она переходит в режим редактирования.\n\n\u003e 💡 Для обновления строки нужны некоторые другие данные которые вы не отображаете, и пользователь не вводит. Заполните их нулями.\n\n### Удаление строки\n\n`/v1/outlay-rows/entity/{eID}/row/{rID}/delete`\n\nДля удаления строки пользователь должен навестись на иконку существующий строки, как на макете там должны появиться дополнительные иконки. При клике на иконку мусорки строка удаляется.\n\n## Резюме\n\n-   В самом начале создайте себе общую сущность, и используйте её ID.\n-   При отсутствии каких либо данных отображайте строку в режиме редактирования.\n-   Блокируйте создание потомков у строки, если она находится в режиме редактирования или ещё не была отправлена на сервер.\n-   Запрашивайте все данные с сервера только при первом входе на экран, актуализируйте данные локально.\n-   При каких либо взаимодействиях (создание, обновление и удаление строки) сервер будет возвращать вам массив изменённых строк, вы должны актуализировать локальные данные с помощью этих.\n-   Вы должны сверстать всё что есть на макете, но всё что не является таблицей - не должно иметь какого либо функционала.\n\n## FAQ\n\n**Можно ли использовать %moduleName%?**\nМожете использовать всё что только захотите.\n\n**Нужен ли адаптив?**\nПо желанию.\n\n**Какой уровень вложенности может быть?**\nБез ограничений.\n\n## Результат на локальном сервере\n\n![image](https://github.com/user-attachments/assets/fd7c79eb-9511-45ad-af07-3fab035d229b)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmor-ald%2Ftest-task-sws","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmor-ald%2Ftest-task-sws","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmor-ald%2Ftest-task-sws/lists"}