{"id":25099610,"url":"https://github.com/guardrailsio/full-stack-engineer-challenge","last_synced_at":"2026-04-03T10:40:23.106Z","repository":{"id":40550368,"uuid":"205804016","full_name":"guardrailsio/full-stack-engineer-challenge","owner":"guardrailsio","description":"This repository contains the interview challenge for full stack engineers.","archived":false,"fork":false,"pushed_at":"2023-02-11T08:42:03.000Z","size":21,"stargazers_count":19,"open_issues_count":0,"forks_count":10,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-02T01:04:47.521Z","etag":null,"topics":["coding-challenge","full-stack-development","full-stack-engineer"],"latest_commit_sha":null,"homepage":"https://www.guardrails.io","language":null,"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/guardrailsio.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}},"created_at":"2019-09-02T07:48:37.000Z","updated_at":"2025-03-15T23:20:53.000Z","dependencies_parsed_at":"2022-08-21T23:40:16.705Z","dependency_job_id":null,"html_url":"https://github.com/guardrailsio/full-stack-engineer-challenge","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guardrailsio%2Ffull-stack-engineer-challenge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guardrailsio%2Ffull-stack-engineer-challenge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guardrailsio%2Ffull-stack-engineer-challenge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guardrailsio%2Ffull-stack-engineer-challenge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/guardrailsio","download_url":"https://codeload.github.com/guardrailsio/full-stack-engineer-challenge/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246758373,"owners_count":20828919,"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":["coding-challenge","full-stack-development","full-stack-engineer"],"created_at":"2025-02-07T19:36:42.246Z","updated_at":"2026-04-03T10:40:23.100Z","avatar_url":"https://github.com/guardrailsio.png","language":null,"readme":"# Full Stack Engineer Challenge\n\n\u003e This repository contains the challenge for full stack engineers.\n\n- [Devops Exercise](#devops-exercise)\n- [Backend Exercise](#backend-exercise)\n- [Frontend Exercise](#frontend-exercise)\n\n**Note:** Please don't fork this repository, or create a pull request against it. Otherwise other applicants may take inspiration from it.\n\n## Devops Exercise\n\nThe backend and frontend exercises should be contained in one repository (monorepo), with the following directory layout:\n\n```bash\n├── api\n├── dashboard\n├── docker-compose.yml\n└── README.md # documentation for this repo\n```\n\nThe `api` and `dashboard` directories should have their own simple `Dockerfile`, so that they can be built and run individually.\n\nThe `docker-compose.yml` file should define both the `api` and `dashboard` as services, which will be automatically built and started upon calling `docker-compose up`. A container for a DB should be defined here as well.\n\n__Things you don’t have to worry about:__\n\n- CI configuration / Deployment\n- Secret Management\n\n## Backend Exercise\n\nThe project should be made available in the `api` directory with meaningful commit messages. Use TypeScript + Node.js and any framework.\n\nImplement a simple **REST** OR **GraphQL** API to **CRUD** a Security Scan Result (“Result”). The Result entity should have the following properties:\n\n- Id: any type of unique id\n- Status: \"Queued\" | \"In Progress\" | \"Success\" | \"Failure\"\n- RepositoryName: string\n- Findings: JSONB, see [example](example-findings.json)\n- QueuedAt: timestamp\n- ScanningAt: timestamp\n- FinishedAt: timestamp\n\nThe Result entity should be stored in a database (of your choise).\n\n__Things you don’t have to worry about:__\n\n- CI configuration / Deployment\n- APM\n- Authentication / Authorization / Auditing\n\n## Frontend Exercise\n\nThe project should be made available in the `dashboard` directory with meaningful commit messages. Use TypeScript + ReactJS and [Semantic UI React](https://react.semantic-ui.com).\n\nImplement a simple dashboard that has three **separated** screens:\n\n1. First screen will only display a form that will allow to submit a scan result.\n\n2. Second screen will only display the list of security scan results. The columns of the list should be: repository name, scan status, findings (is the quantity of findings and should be displayed on a badge/label component, [example here](https://react.semantic-ui.com/elements/label/)), and the according timestamp (i.e.: if `Status` is `Queued`, use `QueuedAt`). \n\n3. Third screen will only display the list of findings for a selected security scan (selected from the screen number 2) with the following 4 columns: RuleId, Description, Severity and Path name : line number.\n\nThe application is fairly simple, so you might not want to use any state management libraries – in this case please make sure your state management is clean, simple and easy to test. As well, we value the use of the latest features of react, _but make sure you use them properly_.\n\n__Things you don’t have to worry about:__\n\n- Making it super pretty: The UI should be clean and properly aligned however it does not\nneed any extraneous CSS and/or animations. \n- CI configuration / Deployment\n\n## Scoring\n| DevOps                 | Points |\n|------------------------|--------|\n| Monorepo               | 0-1    |\n| Docker compose         | 0-2    |\n| README \u0026 Documentation | 0-5    |\n\n| Backend   | Points |\n|-----------|--------|\n| Framework | 0-5    |\n| CRUD      | 0-5    |\n| Database  | 0-5    |\n\n| Frontend         | Points |\n|------------------|--------|\n| ReactJS          | 0-5    |\n| Semantic UI      | 0-3    |\n| UI \u0026 Screens     | 0-5    |\n| State management | 0-2    |\n\n| General             | Points |\n|---------------------|--------|\n| Commit messages     | 0-2    |\n| TypeScript          | 0-5    |\n| Project structure   | 0-5    |\n| Clean / clear code  | 0-5    |\n| Libraries           | 0-2    |\n| Comments            | 0-2    |\n| Linter / Prettifier | 0-1    |\n| Unit tests          | 0-10   |\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguardrailsio%2Ffull-stack-engineer-challenge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fguardrailsio%2Ffull-stack-engineer-challenge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguardrailsio%2Ffull-stack-engineer-challenge/lists"}