Buildml is a full-stack AI/ML education platform that replaces passive reading with active implementation. Instead of watching tutorials or skimming textbooks, you solve curated coding challenges by writing real Python — implementing neural networks, NumPy operations, and ML algorithms from scratch. Every submission is executed against automated tests, so you get immediate, objective feedback on whether your understanding is correct.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.
What Problem Does Buildml Solve?
Most AI/ML learning resources stop at intuition. You understand what a softmax function does, but you have never had to differentiate through one yourself. Buildml closes that gap by presenting problems as coding tasks: given a specification and a test suite, implement the algorithm. The platform handles sandboxed execution, result storage, and leaderboard ranking — you focus entirely on the math and code.Core Architecture
Buildml follows a clear request pipeline that separates the web layer from the compute layer, keeping the Next.js application fast and non-blocking even while user code is running.- A user writes Python in the browser editor and clicks Run or Submit.
- The tRPC
submission.runorsubmission.submitprocedure enforces rate limits via Upstash Redis (run: 5 per 10 s, submit: 2 per 30 s). - A job is published to an Upstash QStash async queue.
- QStash delivers the job to the Next.js webhook at
api/webhooks/process-submission/. - The webhook forwards the code to the FastAPI executor service at
EXECUTOR_URL/execute. - Run results are cached in Redis; Submit results are persisted to PostgreSQL with a final
PASS,FAIL, orERRORstatus. - The browser polls a tRPC procedure until the result resolves.
The FastAPI executor service must be running and reachable at
EXECUTOR_URL for any code execution to work. Without it, all submissions will time out. See the Quickstart for local setup and Self-Hosting for production deployment.Tech Stack
| Layer | Technology | Version |
|---|---|---|
| Frontend framework | Next.js (App Router) | 15 |
| UI library | React | 19 |
| Type safety | TypeScript | 5.8 |
| Styling | Tailwind CSS | v4 |
| Database | PostgreSQL | — |
| ORM | Prisma | 7 |
| API layer | tRPC | 11 |
| Authentication | NextAuth.js | v5 (beta) |
| Cache / rate limiting | Upstash Redis | — |
| Async job queue | Upstash QStash | — |
| Deployment | Vercel | — |
Key Concepts
Problem Sets are themed collections of problems (for example, NumPy Fundamentals or Neural Networks). Each Problem Set groups related challenges and is seeded via dedicated scripts (prisma/seed-numpy.ts, prisma/seed-nn.ts).
Problems are individual coding challenges. Each problem ships with a description, a starter template, and a hidden test suite. Problems belong to exactly one Problem Set.
Submissions are records produced when a user clicks Submit. A submission always carries one of four statuses:
| Status | Meaning |
|---|---|
PENDING | Job queued in QStash, not yet executed |
PASS | All test cases passed |
FAIL | One or more test cases failed |
ERROR | Execution error (syntax, runtime, or timeout) |
Submission row in PostgreSQL, updates your personal best, and feeds the leaderboard.
tRPC API Layer
The server API is built with tRPC v11. The root router atsrc/server/api/root.ts composes five sub-routers:
| Router | Purpose |
|---|---|
problem | Fetch individual problems and their metadata |
problemSet | List and retrieve problem set collections |
submission | Run code (submission.run), submit solutions (submission.submit), and poll for results |
user | Read and update user profile data |
feedback | Submit platform feedback |
publicProcedure (open, with timing middleware) or protectedProcedure (requires an authenticated session). All inputs are validated with Zod schemas. On the client, procedures are consumed as api.[router].[procedure].useQuery() or .useMutation().
Explore the Docs
Quickstart
Clone the repo, configure your environment, and have a working local instance running in five minutes.
Challenges
Learn how Problem Sets and Problems are structured, how tests are written, and how scoring works.
API Reference
Explore every tRPC procedure — from fetching problem sets to polling submission results.
Contributing
Set up a dev environment, follow the code-style guide, and open your first pull request.