{"id":28214526,"url":"https://github.com/goodrequest/frontend_assignment","last_synced_at":"2026-01-24T11:38:57.347Z","repository":{"id":160366483,"uuid":"635194334","full_name":"GoodRequest/Frontend_Assignment","owner":"GoodRequest","description":null,"archived":false,"fork":false,"pushed_at":"2025-04-08T06:21:54.000Z","size":17,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-12T01:41:33.444Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":false,"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/GoodRequest.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,"zenodo":null}},"created_at":"2023-05-02T07:04:41.000Z","updated_at":"2025-04-08T06:21:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"27a83c93-671d-415a-a97a-080c8dfce8a5","html_url":"https://github.com/GoodRequest/Frontend_Assignment","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/GoodRequest/Frontend_Assignment","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoodRequest%2FFrontend_Assignment","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoodRequest%2FFrontend_Assignment/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoodRequest%2FFrontend_Assignment/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoodRequest%2FFrontend_Assignment/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GoodRequest","download_url":"https://codeload.github.com/GoodRequest/Frontend_Assignment/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoodRequest%2FFrontend_Assignment/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28727080,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T10:24:43.181Z","status":"ssl_error","status_checked_at":"2026-01-24T10:24:36.112Z","response_time":89,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2025-05-17T21:08:01.369Z","updated_at":"2026-01-24T11:38:57.342Z","avatar_url":"https://github.com/GoodRequest.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Zadanie Frontend developer GoodRequest\n\nCieľom zadania je vytvoriť jednoduchú aplikáciu v Next.js, ktorá slúži ako formulár pre nadáciu GoodBoy na podporu slovenských útulkov pre psy.\n\n**Aplikácia by mala umožňovať potenciálnym podporovateľom:**\n\n- zvoliť si formu pomoci- všeobecný príspevok pre nadáciu alebo príspevok pre konkrétny útulok\n- vybrať si konkrétny útulok zo zoznamu zapojených útulkov (nepovinné pole v prípade všeobecného príspevku, v opačnom prípade povinné pole)\n- zvoliť si výšku príspevku, pričom je možné nastaviť aj vlastnú hodnotu (povinné pole)\n- vyplniť svoje osobné údaje:\n    - meno- nepovinné pole (2-20 znakov)\n    - priezvisko- povinné pole (2-30 znakov)\n    - e-mail - validný formát e-mailovej adresy\n    - telefón - slovenské alebo české číslo s predvoľbou +420 / +421 so zobrazením zvolenej krajiny vo forme vlajky štátu\n    - potvrdiť súhlas so spracovaním osobných údajov (povinné pole)\n    - odoslať zvalidovaný formulár, prípadne zrozumiteľne oznámiť používateľovi chybový stav\n- pozrieť si kontaktné údaje organizácie v rámci stránky Kontakt\n- zistiť celkovú vyzbieranú sumu a počet/zoznam darcov (tieto údaje sa pravidelne aktualizujú a sú dostupné cez endpoint opísaný nižšie)\n\nPre účely zadania sme vytvorili 3 jednoduché API endpointy - GET zoznamu útulkov zapojených do projektu, GET pre hodnotu vyzbieranej sumy a počet darcov a POST na odoslanie obsahu formuláru. Dokumentáciu k nim nájdete na nasledovnom odkaze: https://frontend-assignment-api.goodrequest.dev/apidoc/\n\nGrafické podklady pre zadanie nájdete na nasledovnom odkaze (registrácia do toolu Figma je zdarma): https://www.figma.com/design/fOYdJW8UqfZjT8o2WYigty/Frontend-Assignment-2.0\n\nVizuálna kvalita spracovania aplikácie a štýlovanie je tiež predmetom hodnotenia. Plynulé a user friendly UI s peknými prechodmi a animáciami sú plusový bod. Môžete použiť Mantine, Antd alebo akúkoľvek inú UI knižnicu- výber nechávame na vás.\n\n**Kritériá na použité technológie:**\n\n- Použiť Next.js\n- Použiť TypeScript\n- Na server state management použiť [TanStack Query](https://tanstack.com/query/latest)\n- Na client state management  (výber je na vás. Odporúčame context+reducer, zustand alebo iný)\n- Knižnica pre správu formuláru (Odporúčame [react-hook-form](https://www.react-hook-form.com/), formik)\n- Štruktúru projektu nechávame kompletne na vás, ale budeme ju hodnotiť. :)\n\n*  Nice to have (nepovinné kritériá):\n    - Použiť lokalizačnú knižnicu na stringy (napr. i18next)\n    - Použiť styled-components\n    - Validácia formuláru pomocou [Zod](https://zod.dev/) schémy\n    - Myslieť na accessibility (https://www.goodrequest.com/sk/blog/pristupnost-webu-pre-vyvojarov)\n    \n\n*  Ak vám ostane čas alebo chuť :):\n\n      - Responzívne zobrazenie\n      - SEO (implementovať og:image a rôzne titles a descriptions na jednotlivých stepoch formuláru)\n      - umožniť pridať viacerých darcov- je na vás ako to bude vyzerať\n    \n**Postup odovzdania zadania:**\n\n- Naklonujte si tento repozitár k sebe\n- Umiestnite ho do verejného github / bitbucket repozitáru a svoju prácu priebežne commitujte\n- Do repozitáru udeľte prístup kontu [roman.haluska@goodrequest.com](mailto:roman.haluska@goodrequest.com) (v prípade súkromného repo na bitbucket) alebo pošlite link na verejné github repo na tento e-mail\n- Ozvite sa [andrea.eckerova@goodrequest.com](mailto:andrea.eckerova@goodrequest.com) a [roman.haluska@goodrequest.com](mailto:roman.haluska@goodrequest.com) keď je zadanie za vás pripravené na review\n\nCommit messages a spôsob commitovania budú tiež predmetom hodnotenia\n\n**Ak by ste mali hocijaké otázky alebo ste sa niekde zasekli:**\n\n* Kedykoľvek napíšte otázky alebo nás požiadajte o pomoc na [roman.haluska@goodrequest.com](mailto:roman.haluska@goodrequest.com) - radi vám poradíme ;)\n\n# Assignement for Frontend developer - GoodRequest\n\nThe goal of the task is to create a simple application in Next.js that serves as a form for the GoodBoy Foundation to support Slovak shelters for dogs.\n\n**The application should allow potential supporters to:**\n\n- choose the form of help- a general donation for the foundation or a donation for a specific shelter\n- select a specific shelter from a list of participating shelters (optional field for a general donation, mandatory field if donating to a specific shelter)\n- choose the amount of the donation, with the possibility to set a custom value (mandatory field)\n- fill in their personal details:\n    - name – optional field (2-20 characters)\n    - surname – mandatory field (2-30 characters)\n    - e-mail – valid format of the e-mail address\n    - phone – Slovak or Czech number with the country code +420 / +421, showing the selected country flag\n    - confirm consent for personal data processing (mandatory field)\n    - submit the validated form, or clearly notify the user of any errors\n- view the contact details of the organization on the Contact page\n- see the total amount raised and the number/list of donors (these data are regularly updated and accessible through the API endpoint described below)\n\nFor the purpose of this assignment, we have created 3 simple API endpoints: a GET for the list of shelters participating in the project, a GET for the total amount raised and the number of donors, and a POST for submitting the form content. You can find the documentation for these endpoints at the following link: https://frontend-assignment-api.goodrequest.dev/apidoc/\n\nDesign assets for the assignment can be found at the following link (registration to Figma tool is free): https://www.figma.com/design/fOYdJW8UqfZjT8o2WYigty/Frontend-Assignment-2.0\n\nThe visual quality of the application and styling is also part of the evaluation. A smooth and user-friendly UI with nice transitions and animations will earn extra points. You may use Mantine, Antd, or any other UI library – the choice is up to you.\n\n**Criteria for technologies to use:**\n\n- Use Next.js\n- Use TypeScript\n- Use [TanStack Query](https://tanstack.com/query/latest) for server state management\n- Use a client state management solution (The choice is yours. We recommend context + reducer, zustand or other )\n- Use a library for form management (We recommend [react-hook-form](https://www.react-hook-form.com/), formik)\n- You are free to decide the project structure, but we will evaluate it. :)\n\n* Nice to have (optional criteria):\n\n  - Use a localization library for strings (e.g., i18next)\n  - Use styled-components\n  - Form validation using a [Zod](https://zod.dev/) schema\n  - Consider accessibility (https://www.goodrequest.com/en/blog/web-accessibility-for-developers)\n    \n\n* If you have some spare time :):\n  - Responsive design\n  - SEO (implement og:image and various titles and descriptions on different form steps)\n  - Allow adding multiple donors – it's up to you how this will look\n    \n**To submit an assignment:**\n\n- Clone this repository to you\n- Place it in a public GitHub / Bitbucket repository and commit your work regularly\n- Grant access to the account [roman.haluska@goodrequest.com](mailto:roman.haluska@goodrequest.com) (for private repos on Bitbucket) or send the link to your public GitHub repo to this email\n- Contact [andrea.eckerova@goodrequest.com](mailto:andrea.eckerova@goodrequest.com) and [roman.haluska@goodrequest.com](mailto:roman.haluska@goodrequest.com) when your assignment is ready for review\n\nCommit messages and the way of commmiting will also be evaluated.\n\n**If you have any questions or get stuck:**\n\n* Feel free to ask questions or request help at [roman.haluska@goodrequest.com](mailto:roman.haluska@goodrequest.com) – we’ll be happy to help you. ;)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoodrequest%2Ffrontend_assignment","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoodrequest%2Ffrontend_assignment","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoodrequest%2Ffrontend_assignment/lists"}