A simple, fast, and modern site for learning Go programming. Built from markdown files with zero external dependencies in the final build.
This is a static site generator that turns markdown files into an interactive Go learning experience. The content lives in simple markdown files, and the build process bundles everything into a single JavaScript file for instant loading.
The site covers Go from basics (variables, functions, structs) to advanced topics (goroutines, channels, worker pools) and includes modern features through Go 1.27 (generic methods, JSON v2, UUIDs, new(expr), os.Root, and more). The homepage badge and footer always show the last documented version.
Most Go tutorials either:
- Require a backend server to serve content (slow page loads)
- Use heavy frameworks with tons of dependencies
- Don't cover modern Go features
This site fixes all three:
- Everything loads instantly (content embedded in the bundle)
- Zero runtime dependencies after build
- Includes the latest Go features with version badges
npm install
npm run devThen open http://localhost:5173
npm run buildThe dist/ folder will contain the built site ready for deployment.
- Build the site:
npm run build - Go to Cloudflare Pages
- Create a new project with Direct Upload
- Upload the contents of the
dist/folder
Or connect your GitHub repo for automatic deployments on every push.
Run the end-to-end suite locally:
npm run test:e2eWhat is covered:
- Home page renders
- Topic markdown loads correctly
- Read progress persists across reloads
- Sidebar and mobile read indicators update
CI:
- GitHub Actions runs this E2E suite on pull requests and on pushes to
master
content/ # All the markdown content
├── hello-world.md
├── variables.md
├── goroutines.md
└── ... (59 topics total)
app.js # Main application and topic manifest
vite.config.js # Vite + Tailwind config
index.html # Source HTML template
src/styles.css # Source styles (Tailwind)
playwright.config.js
tests/e2e/ # Playwright E2E tests
The build process:
- Vite bundles JavaScript, CSS, and dependencies
- Markdown files from
content/are bundled viaimport.meta.glob - Output is generated to
dist/for static hosting
Topics are just markdown files with Go code blocks:
# Topic Title
Brief description here.
## Example Code
```go
package main
func main() {
// code here
}
```
## Output
```
expected output here
```To add a new topic:
- Create a
.mdfile incontent/ - Add the topic to the manifest in
app.js - Run
npm run build
- 59 topics covering Go basics to advanced concepts
- Modern Go features (1.22+ through 1.27) marked with version badges
- Homepage and footer always state the last documented version (currently Go 1.27)
- Instant navigation (no loading between pages)
- Syntax highlighting for all code examples
- Mobile responsive design
- Keyboard shortcuts (Cmd+B to browse topics)
- Clean, distraction-free reading experience
Works in all modern browsers. The bundled JavaScript uses standard ES6+ features with no transpilation needed.
Inspired by Go by Example. Built for the Go community.