Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/asklisa/fullstack-challenge
Full Stack Engineer Challenge
https://github.com/asklisa/fullstack-challenge
Last synced: 8 days ago
JSON representation
Full Stack Engineer Challenge
- Host: GitHub
- URL: https://github.com/asklisa/fullstack-challenge
- Owner: asklisa
- Created: 2022-08-20T12:41:19.000Z (about 2 years ago)
- Default Branch: production
- Last Pushed: 2023-02-27T13:20:01.000Z (over 1 year ago)
- Last Synced: 2024-08-01T21:53:33.407Z (4 months ago)
- Size: 6.84 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Full Stack Engineer Challenge
> This repository contains the challenge for full stack engineers.
- [Devops Exercise](#devops-exercise)
- [Backend Exercise](#backend-exercise)
- [Frontend Exercise](#frontend-exercise)## Devops Exercise
The backend and frontend exercises should be contained in one repository (monorepo), with the following directory layout:
```bash
├── api
├── dashboard
├── docker-compose.yml
└── README.md # documentation for this repo
```The `api` and `dashboard` directories should have their own simple `Dockerfile`, so that they can be built and run individually.
The `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.
__Things you don’t have to worry about:__
- CI configuration / Deployment
- Secret Management## Backend Exercise
The project should be made available in the `api` directory with meaningful commit messages. Use TypeScript + Node.js and any framework.
Implement a simple **REST** OR **GraphQL** API to **CRUD** a Security Scan Result (“Result”). The Result entity should have the following properties:
- Id: any type of unique id
- Status: "Queued" | "In Progress" | "Success" | "Failure"
- RepositoryName: string
- Findings: JSONB, see [example](example-findings.json)
- QueuedAt: timestamp
- ScanningAt: timestamp
- FinishedAt: timestampThe Result entity should be stored in a database (of your choise).
__Things you don’t have to worry about:__
- CI configuration / Deployment
- APM
- Authentication / Authorization / Auditing## Frontend Exercise
The project should be made available in the `dashboard` directory with meaningful commit messages. Use TypeScript + ReactJS and [React Suite](https://rsuitejs.com/) AND/OR [MUI](https://mui.com/).
Implement a simple dashboard that has three **separated** screens:
1. First screen will only display a form that will allow to submit a scan result.
2. 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`).
3. 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.
The 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_.
__Things you don’t have to worry about:__
- Making it super pretty: The UI should be clean and properly aligned however it does not
need any extraneous CSS and/or animations.
- CI configuration / Deployment## Scoring
| DevOps | Points |
|------------------------|--------|
| Monorepo | 0-1 |
| Docker compose | 0-2 |
| README & Documentation | 0-5 || Backend | Points |
|-----------|--------|
| Framework | 0-5 |
| CRUD | 0-5 |
| Database | 0-5 || Frontend | Points |
|------------------|--------|
| ReactJS | 0-5 |
| RSuite / MUI | 0-3 |
| UI & Screens | 0-5 |
| State management | 0-2 || General | Points |
|---------------------|--------|
| Commit messages | 0-2 |
| TypeScript | 0-5 |
| Project structure | 0-5 |
| Clean / clear code | 0-5 |
| Libraries | 0-2 |
| Comments | 0-2 |
| Linter / Prettifier | 0-1 |
| Unit tests | 0-10 |