F6 · system design · 1 of 3
The developer journey
You arrive at F6 holding the thing F5 built: a supervised Portal engine behind a
small facade — enroll/2, deliver_lesson/2,
progress_of/1 — that returns plain results and a closed error contract, and that
imports no web framework. You leave F6 with a deployed, real-time learning platform: a browser
that loads a page, enrolls a learner, watches progress update live as other clients act, behind sessions and
auth, running as a release in production. The journey between is four short arcs, and the rule never changes
— Phoenix sits on top of the engine and calls only its facade, so each milestone adds a layer without
reaching into the engine.
Select an arc to see what you build and which modules deliver it. The path runs left to right, from the F5 facade to a live platform.
Four arcs
The chapter is four arcs of roughly two modules each. The first stands Phoenix up; the second gives it data and domain boundaries; the third renders and makes the UI live; the fourth makes it real-time, secure, and shipped. Select an arc.
The journey · select an arc
arc: Stand it up
modules: F6.01–F6.02
A journey, not a pile of features. Each arc leaves a platform that runs, so you can ship after any one of them and keep going — the same way F5 left the engine runnable after every module.
Where you start, where you land
The two ends of the journey are the clearest way to see it. F5 hands you a facade you can call from anywhere; F6 ends with a real-time route the browser reaches, calling that exact facade. Everything in between is wiring, rendering, and broadcasting — never new domain logic.
# START — what F5 hands you: a supervised, framework-free facade Portal.enroll(user_id, course_id) # :ok | {:error, %Portal.Error{}} Portal.progress_of(enrollment_id) # {:ok, 0..100} | {:error, _} # FINISH — what F6 ships: a real-time route the browser reaches, calling the same facade live "/enroll/:id", PortalWeb.EnrollmentLive # mount/handle_event call Portal.*
you bring an engine
A supervised facade with a closed error contract, ready to be called.
you ship a platform
A live, multi-client learning product that calls only that facade.
Next in the design brief: what we’re building — the full stack with Phoenix added on top of the F5 engine.
References
The framework the journey adds, and the engine it sits on.
Sources
- Phoenix — Overview — what Phoenix adds on top of an Elixir app.
- Phoenix — LiveView — the interactive UI the journey ends in.
- Elixir — Supervisor — the tree the endpoint joins.
Related in this course
- F6.0.2 · What we’re building — the platform, layer by layer.
- F6.0.3 · Wiring Phoenix onto the F5 engine — the seam in code.
- F5.09 · The engine lab — the facade this journey starts from.
- F6 · Phoenix Framework