Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Node
node_modules/
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Tests / coverage
coverage/

# OS / editor
.DS_Store
.vscode/
51 changes: 51 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,41 +3,92 @@
This assessment evaluates how you use modern code generation tools (for example `5.2-Codex`, `Claude`, `Copilot`, and similar) to design, build, and test a software application using a spec-driven development pattern. You may build a frontend, a backend, or both.

## Goals

- Build a working application with at least one meaningful feature.
- Create a testing framework to validate the application.
- Demonstrate effective use of code generation tools to accelerate delivery.
- Show clear, maintainable engineering practices.

## Deliverables

- Application source code in this repository.
- A test suite and test harness that can be run locally.
- Documentation that explains how to run the app and the tests.

## Scope Options

Pick one:

- Frontend-only application.
- Backend-only application.
- Full-stack application.

Your solution should include at least one real workflow, for example:

- Create and view a resource.
- Search or filter data.
- Persist data in memory or storage.

## Rules

- You must use a code generation tool (for example `5.2-Codex`, `Claude`, or similar). You can use multiple tools.
- You must build the application and a testing framework for it.
- The application and tests must run locally.
- Do not include secrets or credentials in this repository.

## Evaluation Criteria

- Working product: Does the app do what it claims?
- Test coverage: Do tests cover key workflows and edge cases?
- Engineering quality: Clarity, structure, and maintainability.
- Use of codegen: How effectively you used tools to accelerate work.
- Documentation: Clear setup and run instructions.

## What to Submit

- When you are complete, put up a Pull Request against this repository with your changes.
- A short summary of your approach and tools used in your PR submission
- Any additional information or approach that helped you.

## Notes API (Backend)

### Prerequisites

- Node.js v18 or later
- npm

### Install

```bash
cd server
npm install
```

### Run the server

```bash
npm start
```

The server runs at `http://localhost:3000`

### Run tests

```bash
npm test
```

### API Endpoints

- `POST /notes` – Create a note
- `GET /notes` – List all notes
- `GET /notes?q=keyword` – Search notes
- `GET /notes/:id` – Retrieve a note by ID

### Example

```bash
curl -X POST http://localhost:3000/notes \
-H "Content-Type: application/json" \
-d '{"title":"First","content":"Hello world"}'
```
34 changes: 34 additions & 0 deletions SPECS/notes-api.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Feature Spec: Notes API

## Goal

Provide a simple backend API that allows users to create, view, and search notes.

## Scope

- In:
- Create a note with a title and content
- View all notes
- View a single note by ID
- Search notes by keyword
- Run locally without external dependencies
- Out:
- Authentication
- Database persistence (in-memory only)
- Frontend UI

## Requirements

- Notes must have a unique ID
- Notes must include title and content
- API must return JSON responses
- Invalid requests must return appropriate HTTP status codes

## Acceptance Criteria

- [x] A user can create a note using a POST request
- [x] A user can retrieve all notes
- [x] A user can retrieve a note by ID
- [x] A user can search notes by keyword
- [x] Invalid requests return 400-level errors
- [x] Automated tests cover all endpoints
Loading