Code Challenge

Build a Game Voting App

A full-stack exercise to demonstrate your engineering judgment, UX sense, and ability to work with a third-party REST API.

Overview

Our team wants a simple way to collect and vote on games we'd like to add to the office library. Employees should be able to suggest new titles and vote on the ones they want most. Your job is to build that app.

This challenge evaluates how you structure a small full-stack application, how you integrate with an external API, and how you make deliberate product decisions. It should take a reasonable amount of focused time — quality of thought matters more than feature count.

What You'll Build

A full-stack web application with two parts:

Your backend consumes the Essense of Australia Code Challenge API. See the full endpoint reference at /docs. Generate your API key at /api-key.

Requirements

  1. Display every game in the library, sorted by vote count (highest first).
  2. Let a user add a new game by title. Duplicate titles (case-insensitive) must be rejected by your backend.
  3. Let a user vote for a game.
  4. Let a user remove a vote they've cast.
  5. Let a user remove a game from the list.
  6. Every screen must work well on both mobile and desktop.
  7. Errors (network failure, validation failure) should be surfaced to the user in a friendly way — no silent failures.

Business Rules

Stack

We recommend but don't require:

Styling, routing, and testing choices are yours to make. If you add tests, we'll look for whether they cover the things that actually matter rather than 100% coverage for its own sake.

AI Tools

Using AI assistants like Claude or ChatGPT is strongly encouraged. We want to see how you work with them — not whether you work without them.

If you use AI, try to keep your work in a single session. We may review the thread as part of the evaluation to see how you reason about, critique, and refine what the tool gives you. Treat AI output the way you'd treat a code review from a junior developer: read everything, question assumptions, and don't ship what you don't understand.

Submission

When you're done, send us:

  1. A link to a public GitHub repository with your code.
  2. Either a publicly accessible URL where your app is deployed (Vercel, Netlify, Railway, Fly.io, etc.), or a working docker-compose.yml in the repo so reviewers can run it locally with docker-compose up.

A short README.md explaining how to run the app, what decisions you made, and (if applicable) a link to your AI chat session is always welcome.

Evaluation

Reviewers will look at: