Coding Interview Prep

53-day technical interview tracker

Available at: coding-interview-prep-two.vercel.app

Issue / Solution

The Issue: Students preparing for technical interviews usually juggle a scattered mix of spreadsheets, NeetCode tabs, random docs of notes, and half-finished practice problems. There is no single place that combines a structured study plan with their own progress, their multiple attempted solutions per problem, and their notes, and none of it follows them across devices. Reviewing what they actually learned is even harder, because those notes never get consolidated.

The Solution: I built Coding Interview Prep, a study platform that wraps a 53-day curriculum — DSA fundamentals, all of NeetCode 250, and company-specific sets for Google, Meta, Amazon, Microsoft, Nvidia, and Databricks — around each student's personal progress. Users sign in with Google, and their progress, notes, and saved solutions sync to the cloud per account with 30-day sessions. Each problem supports multiple saved solutions in NeetCode-style tabs, and an AI feature consolidates a student's own notes into an audio review using their own Gemini key. It ships as a single Next.js app on Vercel.

Overview

Coding Interview Prep is a full-stack Next.js app for students working through a technical interview roadmap. The tracker lays out a 53-day plan and lets a signed-in student check off problems, keep per-problem notes, and store several solution attempts per problem. Because everything is keyed to a Google account and synced to a serverless database, a student can start on a laptop and continue on their phone without losing state. The interface defaults to English with a Korean toggle and is designed to work well on mobile.

The app is deliberately lightweight: one Next.js deployment serves both the UI and the API routes, authentication is handled by NextAuth with Google OAuth, and per-user data lives in Upstash Redis. The optional AI review runs server-side with a key the student supplies themselves, so no shared API cost or exposed secrets are involved.

System Architecture

The system is one Next.js deployment: the App Router client and the serverless API routes ship together on Vercel. NextAuth handles the Google OAuth flow, Upstash Redis stores each user's state, and Google's Gemini API generates the AI review — both reached only from the server so keys never touch the browser.

System Architecture

Google OAuth Sign-in, 30-day sessions Next.js 14 Client App Router UI, tracker, solution tabs, EN / KO API Routes (Serverless) NextAuth, data sync, settings, summarize Gemini API AI audio review from notes (user's own key) Upstash Redis Per-user progress, notes, solutions HTTP / JSON State OAuth flow Summarize Read / write

What I Built

Study Workflow

A student signs in with Google and lands on the tracker, which lays out the 53-day plan. As they work through problems they check off progress, jot per-problem notes, and save one or more solution attempts per problem in tabs — useful for keeping both a brute-force and an optimized approach side by side. Every change is written back to their account, so the same board is waiting for them when they reopen the app on another device. Because writes are last-write-wins across simultaneous devices, the model stays simple and predictable for a single student studying.

Coding Interview Prep sign-in gate with Continue with Google
Sign-In & Plan Overview: Students "Continue with Google" (NextAuth OAuth, 30-day sessions). Before sign-in the gate lays out the plan — DSA fundamentals, all of NeetCode 250, and company-specific prep — and the core features: progress and difficulty marks, day notes and per-problem memos, multiple saved solutions, and AI-consolidated audio review with your own Gemini key.
Coding Interview Prep onboarding, progress, and phased curriculum
Curriculum & Progress: After onboarding (start date, felt-difficulty marks: Easy / OK / Hard → review queue), the tracker shows overall progress ("6 / 292 items, 2% done"), an "Already done" pre-check for problems you've solved, and the phased day-by-day plan (Phase 1 · DSA Fundamentals · Day 01).

Daily Study, Solutions & Review

Each day surfaces a concrete checklist of concepts and problems, and each problem opens into a solutions view with NeetCode-style tabs (</>), where a student can keep several saved attempts alongside per-problem notes. Problems marked Hard flow into a spaced review queue that resurfaces them later to re-solve from memory. When a student wants to study back what they have learned, the AI review consolidates their notes into an audio walkthrough; the Gemini key is entered once in settings and stored server-side, so the summary is generated on the server and the key is never exposed to the browser.

Coding Interview Prep daily study checklist with per-problem solution tabs
Daily Study Checklist: Each day (e.g. "Day 2 · Sorting") lists concrete tasks — compare sorts, implement merge sort from scratch, solve with your own approach — each with per-problem solution tabs (</>) and a note attachment.
Coding Interview Prep spaced review card and saved solutions
Spaced Review & Saved Solutions: A spaced-review card resurfaces past problems ("Re-solve from memory") with a "Review material" tab. Each problem keeps multiple saved solutions (e.g. "Fibonacci Number · 6 solutions") and notes, all synced to the signed-in account.

Implementation

Authentication is handled by NextAuth v4 configured for Google OAuth. Signing in issues a session that persists for 30 days, and every API route reads that session to scope data to the current user. The serverless API routes cover four concerns: auth (NextAuth), data (reading and writing the user's tracker state), settings (storing the Gemini key server-side), and summarize (calling Gemini to build the audio review). Because it is all one Next.js app, the client and these routes deploy together and share the same origin.

Per-user state lives in Upstash Redis, a serverless key-value store, keyed by account. Each user's document holds progress, notes, and saved solutions, budgeted at roughly 900 KB — enough for hundreds of solutions. Concurrent edits from multiple devices resolve last-write-wins, and a reset option clears progress while keeping the account intact. Keeping secrets and AI calls on the server keeps the browser bundle free of any credentials.

Frontend

Next.js 14 (App Router)

React UI for the tracker, solution tabs, notes, settings, and AI review, with EN/KO toggle and mobile layout.

Backend

NextAuth + Upstash Redis

Google OAuth sessions, serverless API routes, per-user cloud sync, and server-side Gemini calls.

Deployment

The app deploys to Vercel straight from GitHub. Setup wires in Google OAuth credentials (client ID and secret), an Upstash Redis connection, and NextAuth environment variables; each student later supplies their own Gemini key through the in-app settings. Because both the frontend and the API run as one Vercel project on free-tier services, the platform stays essentially cost-free to host.

Stack

Next.js 14, React, JavaScript, NextAuth v4, Google OAuth, Upstash Redis, Google Gemini API, Vercel.

(go back)