# Project plan — interview-code

Evidence date: 2026-10-12.

Source repository: `git@bitbucket.org:overdrive/interview-code.git`.

Inspected revision: `master` at `cc4eee7` (2020-10-29, Jaco Brits, "add server and upload script"). `origin/HEAD` points at `master`. The scan-host path `~/projects/sonar_scan/repos/interview-code` was not on this machine. The tree below was read from that git revision.

This plan describes what the repository contains. It does not decide what the exercise should become.

## Product

**Documented** in `README.md`: the repository is the starter for a "Silicon Overdrive Technical review". The stated time box is 1–2 hours. The README names the repo URL `https://bitbucket.org/overdrive/interview-code.git` and lists starter code plus a task list for the person doing the review.

**Implemented** at `cc4eee7`: a Create React App shell that still renders the default "Learn React" page, and an Express process that accepts `POST /upload` and does not store the file.

No customer, release, or production host is named. Whether this exercise is still issued to candidates is **Unknown / Requires Confirmation**. The last commit is 2020-10-29.

There is no prior Silicon Ark set for this project.

## Branch reality

| Line | Tip | Date | What it is |
|---|---|---|---|
| `master` (default; `origin/HEAD`) | `cc4eee7` | 2020-10-29 | Only branch. Six commits, all on 2020-10-29 |

No other local or remote branches were present at inspection.

Every commit is by Jaco Brits (`jaco@overdrive.co.za`). Commit subjects do not cite a tracker number.

## Objectives visible from the README

These are **Documented** in the current `README.md`. They are the candidate task list, not behaviour the starter already performs.

1. Check out the code.
2. Create a new branch.
3. Create a React app that can upload a file and preview the file being uploaded. "Componitize the upload function."
4. Comment the code.
5. Copy all CLI commands into the readme.
6. Nice to have: "list of images already uploaded even in cognito."
7. Give instructions to test the code.
8. Open a pull request when done, addressed to `jaco@overdrive.co.za`. The README spells this "pull rquest".

The README also says the starter provides:

1. A basic React app, with the command strings `npm ci` and `yarn start`.
2. A "MaterialUI component".
3. A Node.js server, with the command strings `/server` and `node server.js`.

Item 2 does not match the tree. `@material-ui/core` is a dependency in `package.json` and `yarn.lock`. No source file imports it. See the discrepancies in `prd.md`.

What "cognito" refers to is **Unknown / Requires Confirmation**. The word appears only in that README line. No Cognito SDK, AWS config, or image list is in the tree.

## What the commits actually landed

Commit subjects, in order. **Documented** as messages, not as an approved roadmap:

| Commit | Date | Subject | What the diff contains |
|---|---|---|---|
| `537b441` | 2020-10-29 06:39 +0000 | Initial commit | `.gitignore` only (Bitbucket's sample ignore list, including `node_modules/`) |
| `4f49362` | 2020-10-29 09:39 +0200 | Tasks | First README: title, time box, repo URL, tasks 1–6 |
| `92cda84` | 2020-10-29 10:02 +0200 | update readme | Numbering cleaned up. Tasks 7 and 8 added (test instructions, pull request to `jaco@overdrive.co.za`) |
| `c0a9856` | 2020-10-29 12:57 +0200 | Build code and testing | React app: `package.json`, `yarn.lock`, `public/`, `src/` including `App.test.js` |
| `57116d3` | 2020-10-29 13:07 +0200 | Update readme | "Code provided" items 1 and 2 (React commands, MaterialUI component) |
| `cc4eee7` | 2020-10-29 13:19 +0200 | add server and upload script | `server/` (`server.js`, `upload.js`, `package.json`, `package-lock.json`, `yarn.lock`, `.gitignore`) and README item 3 |

The subject "Build code and testing" matches the Create React App scaffold and its default test. It does not add an upload test or a preview screen.

## System shape

Two Node programs, not wired together:

1. **Browser app.** Create React App (`react-scripts` 4.0.0). `src/App.js` renders the default CRA page. Nothing in `src/` posts a file.
2. **Upload process.** Express in `server/server.js`, port `8000`, CORS `origin: "*"`, one route `POST /upload`. `server/upload.js` parses the body with Formidable and, on the form `end` event, calls `res.json()` with no argument. The `file` handler is comments only.

No database, queue, object store, auth library, or deployment manifest is in git.

## Scope at this revision

In scope of the starter that was committed:

- The README brief.
- The default React page and its one Jest test.
- The upload HTTP stub.

In the README, and not present as working code on `master`:

- A file input, a preview, and a reusable upload component.
- A list of images already uploaded.
- Candidate test instructions beyond the three command strings.
- A candidate branch or pull request. This clone has only `master`.

## Dependencies known from the repo

| Piece | Where | Locked version |
|---|---|---|
| React, ReactDOM | root `package.json` `^17.0.1` | `17.0.1` in root `yarn.lock` |
| react-scripts | root `package.json` `4.0.0` (exact) | `4.0.0` |
| Material UI core | root `package.json` `^4.11.0` | `4.11.0`. Not imported |
| web-vitals | root `package.json` `^0.2.4` | `0.2.4` |
| Express, cors, formidable | `server/package.json` | npm lock and Yarn lock disagree. See technical documentation |

Node and npm versions are not pinned. No `engines` field.

## Current status

**Implemented** starter, frozen on 2020-10-29. The candidate tasks in the README are **Planned** relative to this tree: they are written down and not built here.

No CI file, Dockerfile, `.env`, or Sonar project file is tracked.

The OVER-164 task text listed `sonar-project.properties` and `sonarqube_scan.bat` in the scan-host working tree, and a path that rendered as `src\nyarn.lock`. At `cc4eee7`, `yarn.lock` is at the repository root and under `server/`. Those Sonar files are not tracked. **Unknown / Requires Confirmation** whether they were local-only files on the scan host.

## Open questions

- Is this exercise still handed to candidates, or is the repository archival?
- Was a Material UI upload component meant to be committed and left out?
- Which server lockfile should an installer trust?
- What system does "cognito" mean, and was image listing required or optional only?
- Do declined or open pull requests exist on Bitbucket that never became a branch in this clone? This inspection saw only `master`.
