Java Practice Development review

Internal Java training · Frontend prototypes

Two prototypes, one review brief.

Use Astra and Fable to agree on the learner experience, instructor workflow, and smallest useful feature scope before building the Java/Spring application.

Prototype A

Astra

A split practice workspace with short lessons, saved drafts, submission history, and connected administrator actions.

Open Astra Learner: maya

18 published samples · 6 levels · Initial required progress: 2 / 12

Prototype B

Fable

A CodeMirror practice editor with detailed lessons, prepared grading variants, and a combined instructor review inbox.

Open Fable Learner: maria

16 published + 2 draft samples · 6 levels · Initial required progress: 4 / 10

Review prototype, not a shared training service. Java code is not executed and AI responses are prepared samples. Each browser keeps its own demo data. Colleagues on different PCs do not share submissions or replies, even when they open the same internal URL.

Demo accounts

All credentials are fictional. The applications also offer clearly labeled prototype account shortcuts. Use the same browser to switch between learner and instructor during a walkthrough.

PrototypeUsernamePasswordPurpose
AstramayaPractice123!Assigned learner path, 2 / 12 required complete
AstraadminAdmin123!Administrator and instructor
AstraleoWelcome123!First sign-in password-change flow
AstraninaPractice123!Inactive account; sign-in refused
Fablemariamaria-demoAssigned learner path, 4 / 10 required complete
Fableadminadmin-demoAdministrator and instructor
Fablejosejose-demoFailed attempts, saved draft, unanswered question
Fablelealea-demoNo assigned learning path
FablericaTemp-2026First sign-in password-change flow
Fablecarlocarlo-demoInactive account; sign-in refused

Counts and temporary passwords describe a fresh demo. Edits survive refresh in the current browser. Prototype controls → Reset demo data restores that application's seed after confirmation.

A 15-minute review

Run this sequence once in each prototype. Default grading recognizes only prepared code variants. Arbitrary edited code should show “Not evaluated in this prototype”.

Astra walkthrough

  1. Sign in as maya. Choose Continue learning to open Queue numbers.
  2. Read Problem and Learn. In Help, reveal hints one at a time. Edit the Java file, wait for Draft saved locally, then refresh.
  3. Open footer Prototype controls → Load known failed variant → confirm. Keep Automatic fixture match. Choose Run examples, then Submit.
  4. Inspect Results, AI Feedback, and Submission History. Load the known passed variant and submit. A repeat pass must not increase completion again.
  5. In Help, save a question and request an instructor reply. Switch to Alex · Administrator through Prototype controls.
  6. Open Review Inbox → Questions, reply, then switch back to Maya. Verify the reply. Inspect Learners and Content for account, assignment, draft, preview and publish flows.

Fresh seed: the first passed Queue numbers submission changes Maya from 2 / 12 to 3 / 12. Run examples does not change progress.

Fable walkthrough

  1. Sign in as maria. Choose Continue learning to open Validate a Reference Number.
  2. Read Problem, Learn, and Help. Try the three hints and inspect a seeded instructor thread. CodeMirror supports editing, undo and redo.
  3. Open top-bar Prototype controls. Keep Follow known code variants (default). Select Prefix compared with == on a substring and choose Insert variant into editor.
  4. Use Run examples, then Submit. Inspect results and history. Insert Complete solution with null, length, prefix and digit checks and submit.
  5. In Help, enter a question, check Ask the instructor, and click Ask to save it. Switch to the seeded administrator in Prototype controls.
  6. Open Review Inbox → Questions, reply, then return to Maria. Inspect account/content forms. Read the known issues below before treating version or publication behavior as an agreed requirement.

Fresh seed: this passed reference-validation submission changes Maria from 4 / 10 to 5 / 10. Queue Ticket Countdown is already passed.

What each action means

ActionExpected behavior to review
Run examplesPrepared public-example result. No formal submission and no completion credit.
SubmitSeparate source snapshot, short grading states, saved result and history. Passing required checks is what changes required progress.
AI FeedbackPrepared teaching guidance, separate from the test verdict. AI does not grant completion.
Ask instructorQuestion linked to the exercise and optionally a submission. Switch roles in the same browser to reply.
Publish contentMake authored content available in the library. A new exercise must not silently join an existing assignment.
Prototype controlsExplicit grading outcomes, AI/service-unavailable examples, prepared code variants, account switching and confirmed reset.

Developer handoff

The applications are served as static files by the existing Mongoose server. Reviewers only need a browser; Node.js, a Java runtime, npm installation, and build steps are not required to use these internal links.

Internal entry: http://192.168.0.100:8000/java-practice/
Hosted folders: C:\mongoose\java-practice\astra and C:\mongoose\java-practice\fable
Original projects: C:\PNP\Astra and C:\PNP\Fable

Astra includes an ID-generation compatibility fix for internal-network HTTP hosting. The hosted entry files use index.shtml for this Mongoose installation; original source projects keep index.html. Fable retains the reviewed implementation; its known issues are listed below.

Known Fable issues to track

The hosted Fable copy preserves the reviewed implementation. These are pending corrections, not desired production behavior.

  • Saving a draft of an already published exercise immediately changes the learner-visible content.
  • Old grading fixtures remain valid after grading-related content changes and can display an invented actual output.
  • After version reassignment, My Learning and Library/Workspace can show different completion statuses.
  • Refreshing during grading can leave a submission in a transient state.
  • Two concurrent tabs can overwrite each other's demo state. Review Fable in one tab at a time.
  • The reference-validation task's ASCII-digit contract conflicts with its Unicode-digit lesson/fixture. Reopening an unanswered question as administrator can mark it answered.

See the detailed review download for reproduction steps and source locations.

Production boundaries and review decisions

The intended production stack is Java/Spring with Thymeleaf. Build server authentication, a database, ownership checks, durable submissions, a queue, isolated grading workers, and any approved AI integration separately. Submitted Java must not execute inside the web application process.

Keep this first release focused on general Java and one file per exercise. Spring project workspaces, repository/CI tooling, multi-file IDEs, payments, certificates and gamification are outside this review.

  • Choose the workspace arrangement and navigation.
  • Agree on required vs optional assignments and version rules.
  • Confirm Run, Submit, retry and infrastructure-error behavior.
  • Confirm the minimum lesson, hints and PHP bridge.
  • Agree on instructor review and question resolution.
  • Confirm draft/publish separation and grading criteria.

Data is stored per browser origin. Switching between localhost, this IP address, a hostname or another port starts a separate local data set. Astra and Fable use different storage keys. No real passwords or sensitive records belong in either prototype.