Journey overview
Each section below represents a product page/state in the learner’s end-to-end experience. The wireframes establish information hierarchy and interaction intent, not final visual design.
Start an exercise
The learner selects or resumes an exercise and enters the coding workspace.
Your exercises
Choose an exercise to continue learning.
Receive the coding question
On entering the workspace, the agent introduces the problem and frames the expected outcome.
Ask a clarifying question
The learner resolves ambiguity without leaving the exercise context.
Write code in the codepad
The learner switches focus to the editor while the conversation remains available for support.
Run the program
The learner explicitly runs the current saved snapshot. A terminal drawer rises from the bottom of the code side only; Nyjah’s chat stays visible and unchanged.
Starting isolated run…
Running main.py
See stdout in the pseudo terminal
The learner evaluates stdout in the open code-side drawer and can return to editing without losing the conversation.
Input: [2, 1, 3, 1, 2]
First duplicate: 1
Process finished with exit code 0
$
Change the code and iterate
The learner returns to the codepad, adapts the solution, and runs another isolated snapshot.
Agent observes code and run results
Nyjah has explicit, scoped access to the current code and execution transcript. Its activity appears only as a chat update; the code panel never changes state because Nyjah is working.
Open questions to resolve
- Exercise entry: Is an exercise selected from a library, assigned through a curriculum, created by the learner, or any combination of these?
- Question format: Does the agent always author the exercise prompt live, or can it deliver a predefined prompt and tests?
- Agent initiative: May the agent proactively message the learner after edits/runs, or only reply after the learner asks?
- Codepad scope: Does each exercise continue to have exactly
main.pyandmain.ts, with one active language, or should an exercise be able to add files? - Run inputs: How does a learner supply stdin or select test cases? Does the initial phase only support a fixed program run?
- Run history: Should learners see prior run transcripts, or only the most recent stdout/stderr?
- Agent context: Is the agent allowed to view every saved revision and run, or only the latest snapshot and latest run unless the learner explicitly shares more?
- Academic integrity: How much direct code may the agent provide before or after submission, and should that policy vary by exercise mode?
Working assumption: the browser speaks only to the API; code runs in isolated Modal Sandboxes; the agent reads code and run output through controlled worker tools. These align with the current architecture decisions and remain subject to product decisions above.