A small project management startup wants to build a simple internal tool for their team to organize work visually. They need a basic task board where team members can create boards, organize tasks into columns, and move tasks between stages.
In this challenge, you'll build a simplified task board application with a REST API, a database, and a functional UI.
We are not evaluating specific tools or patterns. We simply want to understand how you think, how you code, and how you approach real-world problems. Be yourself.
A functional full stack application with the ability to:
- Create and view boards
- Add columns to a board
- Create, update, and delete tasks within columns
- Move tasks between columns
- View a board in a kanban-style layout
Design the schema yourself. At minimum, you should support:
- Boards with a name and creation date
- Columns belonging to a board, with a name and display order
- Tasks belonging to a column, with: title, description, priority, and creation date
Include appropriate indexes and a seed script that creates one board with sample data.
- Runtime: Bun
- Framework: Next.js (App Router)
- Database: SQLite (ORM, query builder, or raw SQL — your choice)
- Framework: Next.js
- Styling: TailwindCSS
- Additional UI libraries are welcome but not required
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/boards |
List all boards |
| POST | /api/boards |
Create a board |
| GET | /api/boards/:id |
Get a board with its columns and tasks |
| POST | /api/columns |
Create a column (linked to a board) |
| POST | /api/tasks |
Create a task (linked to a column) |
| PATCH | /api/tasks/:id |
Update a task (title, description, move to another column) |
| DELETE | /api/tasks/:id |
Delete a task |
- Validate input on every endpoint.
- Return proper HTTP status codes (400, 404, etc.).
- Use a consistent JSON response structure.
- A page showing a board in kanban-style layout (columns side by side, tasks as cards)
- Ability to create a new task via a modal or dialog
- Ability to move a task between columns (a simple dropdown is fine, no drag-and-drop required)
- Loading and empty states
- Fork this repository, complete your work, and submit a pull request.
- Include a
README.mdwith:- Clear instructions to run the project locally
- A short explanation of your architecture or design decisions
- A seed script to preload sample data
You should spend no more than 2 hours on this task.
Don't worry if you can't finish everything. What matters most is how far you get and how you approach the problem.
What we mainly evaluate:
- Solution design and structure (architecture, modularity, separation of concerns).
- Clarity of reasoning and documentation (decisions, trade-offs, assumptions).
- Code quality (readability, consistency, error handling, good practices).
- API design (RESTful conventions, validation, error responses).
- UI completeness and usability.
- Git workflow (incremental commits with clear messages).
- Prioritization and scope management: it's valid to leave items pending if you explain what and why.
Use of AI (optional but allowed):
- You may use AI tools (e.g., Claude, Copilot, ChatGPT, Cursor) to assist with your solution.
- We care most about how you structure the solution and explain your decisions.
- If you used AI, add a brief note in your PR/README: which tools you used, which parts were assisted, and what changes you made after review.
- Only include code you understand and can justify.