Buildml embeds a full-featured code editor directly in the browser so you can read the problem statement, write your solution, and see test results without ever leaving the page. The editor is powered by the same engine that drives VS Code, and the layout is fully resizable so you can configure the workspace to your preference.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.
The editor currently supports Python only. All problem
templateCode and test suites are written for Python, and the executor runs code in a Python environment.Monaco Editor
TheCodeEditor component (src/app/_components/editor.tsx) wraps @monaco-editor/react and exposes a minimal interface:
| Option | Value |
|---|---|
language | "python" (default) |
fontSize | 14 |
lineNumbers | "on" |
minimap | disabled |
scrollBeyondLastLine | false |
automaticLayout | true (adapts to panel resizes) |
theme | "vs-dark" in dark mode, "light" in light mode |
next-themes preference, so the editor matches the rest of the Buildml UI.
Split-Pane Layout
The problem solver page usesreact-resizable-panels to create a three-zone workspace arranged in two axes:
Panel sizes
| Panel | defaultSize | minSize |
|---|---|---|
| Problem description (left) | 40 | 25 |
| Editor (right-top) | 70 | 20 |
| Console (right-bottom) | 30 | 10 |
ResizableHandle sits between the left and right panels; a vertical ResizableHandle separates the editor from the console. Both handles are draggable and have a visual grip indicator (withHandle).
Left panel — Problem Statement
The left panel renders the problem’sdescription field as rich content using:
react-markdownfor Markdown parsingremark-mathfor$...$and$$...$$math delimitersrehype-katex+katex/dist/katex.min.cssfor KaTeX math rendering
Right panel — Editor
The upper half of the right panel contains the Monaco editor. When a problem loads, the editor is pre-populated with the problem’stemplateCode pulled from the database:
Right panel — Console
The lower half of the right panel is the Console. It displays execution state and results:| State | Display |
|---|---|
| Idle | ◆ Ready for execution. Click 'Run' to test your logic. |
| Executing | Animated pulse indicator: ➜ Executing test suite... |
PASS | Green dot + ALL TESTS PASSED label in the console header |
FAIL / ERROR | Red-tinted output text + EXECUTION FAIL / EXECUTION ERROR label |
<pre> block with whitespace-pre-wrap so multi-line test results, ✓/✗ per-test lines, and stderr traces all display correctly.
Run vs Submit
Two action buttons live inside the console header bar:RUN
Executes your current code against the problem’s test suite and shows results in the console. Does not create a database record — results are ephemeral and stored in Redis only. Use this to iterate quickly without affecting your submission history.
SUBMIT
Executes your code and persists a
Submission row in the database with status PENDING, which is later updated to PASS, FAIL, or ERROR. Successful submissions count toward your profile stats, leaderboard rank, and difficulty progress bars.isExecuting === true) to prevent duplicate requests.