Hands-on workshops from Quarkus Club, a Brazilian Java User Group. Every workshop ships three things, in Portuguese and English: a reveal.js deck that carries the whole path step by step, a run sheet for whoever is presenting, and code that compiles.
Site: https://quarkusclub.github.io/workshops/
| Workshop | Topic | Slides | Run sheet | Code |
|---|---|---|---|---|
| langchain4j | Integrating Java applications with LLMs, production grade. RAG, tools, MCP, guardrails and observability, on the free NVIDIA API | PT · EN | ROTEIRO · RUNSHEET | 11 projects |
Run this before the workshop, on the machine you will use. It verifies your setup, warms the caches that venue wifi cannot handle, and ends with a health check that reports READY or NOT READY.
# Linux / macOS
curl -fsSL https://quarkusclub.github.io/workshops/langchain4j/scripts/prepare.sh | bash# Windows PowerShell
irm https://quarkusclub.github.io/workshops/langchain4j/scripts/prepare.ps1 | iexThe scripts install nothing system-wide and never ask for elevation. To read before running,
download with -o / -OutFile first. They are scoped to the workshop, not to the repository:
source lives in langchain4j/scripts/.
.
├── LICENSE Apache License 2.0
├── NOTICE attribution and statement of modifications
├── assets/
│ ├── deck.css the deck theme. THIS IS THE CONTRACT
│ ├── deck.js snippet loading, copy buttons, notes, Reveal config
│ ├── favicon.ico the Quarkus Club mark
│ └── logo.png the same mark at 145px
├── index.html navigation hub, published at the Pages root
├── SLIDES.md the deck system, for presenters
└── langchain4j/
├── slides/ index.html (PT) and en.html (EN), 111 slides each
├── scripts/ prepare.sh, prepare.ps1
├── ROTEIRO.md run sheet, PT
├── RUNSHEET.md run sheet, EN
├── section-1/ 11 runnable Quarkus projects, one per step
└── pom.xml aggregator
assets/deck.css is the contract. A deck is pure composition: it declares <section>
elements and applies predefined classes. Never write per-deck CSS. If a deck needs a new layout,
add a reusable class to deck.css so every future workshop inherits it.
The class vocabulary:
| Class | Purpose |
|---|---|
.cover |
Title slide, enables .byline |
.step |
Step divider: .num, h2, .goal, .meta chips. Drives the footer indicator |
.code |
Code slide. Add .small or .tiny for long files |
.cmd |
Something to type: .line blocks, .no-prompt to drop the $ |
.checkpoint |
"You know it worked when", green |
.gotcha |
Warning, warm accent, .box inside |
.agenda .duo .cards .answer .qa |
Roadmap, two columns, three cards, big statement, question list |
.kicker |
Mono label with a rule to the right edge |
Two behaviours are worth knowing:
- Code comes from the real files. A
<code data-src="../section-1/...">is fetched at runtime, optionally narrowed withdata-region(reusing the[start:name]markers the written guide already uses) ordata-lines. A slide therefore cannot show code that does not compile. This needs a web server: opening the deck from disk shows a visible load error, by design. - The footer step indicator is derived, by walking back to the nearest preceding
.stepdivider. A long step can span any number of slides without extra markup.
Copy buttons are injected into every code block automatically.
The decks read their code over fetch, so they need an origin: opening the HTML from disk
shows a visible load error instead of code. The JDK you already need for the workshop ships a
server, so there is nothing to install:
jwebserver -p 8000 -d "$PWD" # from the repository root, JDK 18+Then open http://localhost:8000/langchain4j/slides/. Press S for speaker notes, F for fullscreen, O for the slide overview, B to black the screen.
That command is also the whole preview story. Pages publishes straight from the branch, so the repository root IS the published shape: http://localhost:8000/ is the hub, exactly as it will be served. There is no build step and nothing to assemble.
cd langchain4j
./mvnw clean verify # builds all 11 step projects
./mvnw -pl section-1/step-01 quarkus:devRequires JDK 21+, and Docker or Podman from step 06 onward.
- Create
<slug>/slides/index.htmlanden.html, composing classes fromassets/deck.css. - Keep both languages structurally identical: CI fails the build if the slide counts diverge.
- Add a card to
index.html, with both languages indata-langspans and any per-language link indata-href-pt/data-href-en. - Add the runnable projects, a run sheet in both languages, and a
NOTICEif the workshop derives from someone else's work.
The langchain4j workshop is a derivative work of
quarkusio/quarkus-workshop-langchain4j,
used under the Apache License 2.0. The workshop design, the Miles of Smiles scenario, the diagrams
and most of the code are theirs. See NOTICE for the full statement of modifications and
langchain4j/UPSTREAM.md for the defects found while porting.
Improvements that are not specific to this translation or to NVIDIA are more useful sent upstream, where they reach more people.
The Quarkus name and logo are trademarks of Red Hat, Inc. The marks in
assets/ are the official horizontal lockups from
design.jboss.org/quarkus, unmodified, used to identify the
technology this community workshop teaches.