Skip to content

feat: rewrite the get started page - #213

Merged
magnus-madsen merged 6 commits into
masterfrom
get-started-page
Aug 9, 2026
Merged

feat: rewrite the get started page#213
magnus-madsen merged 6 commits into
masterfrom
get-started-page

Conversation

@magnus-madsen

Copy link
Copy Markdown
Member

Why

/get-started/ was one paragraph and a screenshot. It never said what Flix requires, never showed a line of Flix, and ended without a next step — on the page a visitor lands on when they have decided to try the language.

What

Four sections, ordered by how much each asks of the reader:

  • Try Flix in your browser — the playground promoted from a clause mid-sentence to the page's call to action.
  • Install the Visual Studio Code extension — the existing animation, now with a caption saying what it shows, real alt text, and the two things it cannot show: that Java 21 is required, and where the extension lives on the Marketplace.
  • Or use Flix from the command line — Homebrew, Nix, and the JAR, each with the one command that fetches Flix, and flix init / flix run spelled out beneath.
  • Your first program — see below.
  • Where to go next — the book, its install chapter for Neovim/Emacs/JAR, and Zulip.

The program

use Net.Http
use Net.HttpResponse.status

/// Fetching a URL is the Http effect, so it appears
/// in the signature. It uses the default handler,
/// which performs the actual HTTP request.
def main(): Unit \ { Http, IO } =
    match Http.get("https://flix.dev/") {
        case Ok(res)  => println("Status: ${status(res)}")
        case Err(err) => println("Failed: ${err}")
    }

The book's getting-started chapter has the install steps but no code, so nothing on either site showed what Flix looks like at the point someone is deciding whether to keep reading. This is the front page's httpExample cut down to a single request — the middleware stack, headers, retry and circuit breaker removed — because the effect is the point: reaching the network is visible in the signature.

Testing

  • The snippet was compiled and run against Flix 0.75.1 — it prints Status: 200. The version tested was extracted from the built HTML, not the source, so what ships is what ran.
  • The JAR command was executed as written: it downloads a jar reporting The Flix Programming Language 0.75.2.
  • brew info flix confirms the formula is in homebrew-core. The Nix command comes from the book; there is no nix on the machine this was written on, so it is unverified.
  • npm run build passes, and the page was swept for the whitespace-stripping bug fixed in fix: restore spaces lost between inline elements #212.

Notes

  • The playground button uses .btn-success. Bootstrap compiles button variants with literal colours, so it renders Bootstrap's #198754 rather than the site green — the .btn-success override that fixes this is deliberately not in this PR, which is page-only. Worth a follow-up, along with .btn-primary, which is Bootstrap blue on this site for the same reason.
  • The page does not invite pasting the program into the playground, since the program needs network access and whether play.flix.dev permits outbound requests is unverified.

🤖 Generated with Claude Code

magnus-madsen and others added 6 commits August 9, 2026 08:52
The page was one paragraph and a screenshot, which left a visitor unable to
tell what Flix needs, what it looks like, or what to do next. It now walks the
three routes in order of how much they ask of you: the playground, the Visual
Studio Code extension, and the command line.

The install animation keeps its place but gains a caption saying what it
shows, real alt text, and the two facts it cannot: that Java 21 is required
and where the extension lives on the Marketplace. Homebrew, Nix, and the JAR
each get the one command that fetches Flix, with flix init and flix run
spelled out beneath them.

The first program is new. The book's getting-started chapter carries the
install steps but no code, so nothing on either site showed what a Flix
program looks like at the moment someone is deciding whether to keep reading.
It is the front page's httpExample cut down to a single request, chosen
because the effect is the point: fetching a URL is visible in the signature as
\ { Http, IO }. Verified against Flix 0.75.1, where it prints Status: 200.

The page ends by handing off to the book, to its install chapter for Neovim,
Emacs, and the JAR workflow, and to Zulip.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@magnus-madsen
magnus-madsen merged commit 462214a into master Aug 9, 2026
2 checks passed
@magnus-madsen
magnus-madsen deleted the get-started-page branch August 9, 2026 07:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant