Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/Praashh/buildml/llms.txt

Use this file to discover all available pages before exploring further.

Buildml organizes its coding challenges into problem sets — curated groups of Python problems that build on each other progressively. Each set covers a specific AI/ML topic (such as NumPy fundamentals, neural networks, or transformer architecture) and guides you from foundational concepts through advanced implementations.

URL Structure

Navigating challenges follows a three-level hierarchy:

/practice

The top-level practice page. Lists all available problem sets, each showing its title, description, and total challenge count.

/practice/[slug]

The problem set detail page. Shows all problems in the set, ordered by their order field, each tagged with a difficulty badge.

/practice/[slug]/[problemSlug]

The interactive problem solver. Renders the full problem statement, Monaco code editor, and console panel for running and submitting code.

Example

/practice/numpy-fundamentals/numpy-create-reshape opens the “Create and Reshape” problem inside the NumPy Fundamentals set.

Problem Structure

Every problem stored in the database has the following fields:
FieldTypeDescription
titleStringHuman-readable name displayed in the header bar and problem list
slugStringURL-safe unique identifier used in routing
descriptionString (Text)Full problem statement written in Markdown with KaTeX math support
difficultyStringOne of Easy, Medium, or Hard
templateCodeString (Text)Starter Python code pre-loaded into the editor when the problem opens
testCodeString (Text)The test script the executor runs to validate the user’s solution
orderIntInteger determining the problem’s position within its set (default: 0)
problemSetIdString?Foreign key linking the problem to its parent ProblemSet

Difficulty Badges

Problems are colour-coded by difficulty throughout the UI:
BadgeColour
EasyGreen (--tag-beginner-bg / --tag-beginner-ink)
MediumYellow (--tag-intermediate-bg / --tag-intermediate-ink)
HardRed (--tag-advanced-bg / --tag-advanced-ink)
Badges appear on the problem set detail page next to each problem title, and again inside the problem header bar when you open a specific challenge.

Problem Sets

Buildml ships with three seed files that populate the database with ready-to-use problems:
  • prisma/seed.ts — Seeds the Attention Is All You Need set, which walks through the Transformer architecture from the landmark paper, including positional encodings, attention mechanisms, and encoder forward passes — all in pure NumPy.
  • prisma/seed-numpy.ts — Seeds the NumPy Fundamentals set (9 problems: 3 Easy, 3 Medium, 3 Hard), covering array creation, reshaping, broadcasting, and vectorization.
  • prisma/seed-nn.ts — Seeds the Neural Networks from Scratch set (6 problems: 2 Easy, 2 Medium, 2 Hard), covering activation functions, forward passes, loss computation, and backpropagation in pure NumPy.
To run a seed file locally:
npx tsx prisma/seed-numpy.ts
npx tsx prisma/seed-nn.ts
npx tsx prisma/seed.ts

Authentication

All challenge routes under /practice/:path* are protected by Next.js middleware. Unauthenticated visitors are redirected to /signin before they can view a problem set or attempt a problem. The top-level /practice listing page is also covered by this middleware, so a valid session is required to browse challenges at all. Inside a problem page (/practice/[slug]/[problemSlug]), a header bar spans the top of the viewport. It shows breadcrumb navigation (Practice → Set Title → Problem Title) alongside the difficulty badge, and provides Prev / Next arrow buttons to jump to adjacent problems in the set. The previous and next problem slugs are determined at render time by finding the current problem’s index in the set’s problems array (ordered by the order field) and reading the entries immediately before and after it.
Problems within a set are always fetched in ascending order — the sequence you see in the UI reflects the intentional learning progression designed into each set.

Build docs developers (and LLMs) love