An open-source, interactive Go learning platform with a built-in code editor, gamification, and community-driven content.
- Interactive Monaco Code Editor — Write, edit, and run Go code directly in the browser
- Click-to-Edit Code Blocks — Click any code example in a lesson to instantly load it into the editor
- Live Code Execution — Run Go code server-side with a secure sandboxed
go runcommand - Gamification & XP System — Earn XP for reading lessons and running code
- Progress Tracking — Track completed lessons, read counts, and coding progress via localStorage
- Dark Mode — Full dark/light theme toggle with persistent preference
- Syntax Highlighting — PrismJS-powered highlighting for all Go code examples
- Community Contributions — Edit any lesson directly on GitHub via the "Edit this page" button
- Responsive Design — Built with Tailwind CSS for a premium, mobile-friendly experience
# Clone the repo
git clone https://github.com/Golangcodes/golangcodes
cd golang.codes
# Install Air for hot-reloading
go install github.com/air-verse/air@v1.52.3
# Start the development server
make devThe app will be available at http://localhost:8080.
go build -o server .
PORT=8080 ./serverdocker build -t golang-codes .
docker run -p 8080:8080 golang-codesgolang.codes/
├── Go/ # Markdown lesson files (the syllabus)
│ ├── Introduction.md
│ ├── Variables in Go.md
│ ├── Data Structures.md
│ └── ...
├── handlers/
│ ├── pages.go # Route handlers for lessons & homepage
│ └── run.go # Secure code execution endpoint
├── static/
│ ├── main.js # App logic (editor, gamification, HTMX)
│ ├── storage.js # Storage API abstraction layer
│ └── gopher.webp # Gopher mascot
├── templates/
│ └── index.html # Main HTML template
├── main.go # Server entry point
├── Dockerfile # Production Docker image
├── Makefile # Dev commands
└── .air.toml # Air hot-reload config
The course covers Go from fundamentals to advanced topics:
- Introduction
- Variables in Go
- Data Structures
- Conditionals in Go
- Loops
- Functions
- Slice
- Maps
- Pointers
- Structs
- Packages and Modules
- Interfaces in Go
- Errors
- Go Symbols
- Go Standard Library
- Channels in Go
- Mutexes in Go
- Context Package
- Generics in Go
- Enums in Go
- Understanding Allocations in Go
- Design Patterns in Go
- Go Best Lessons
- Community Resources
We welcome contributions! Whether it's fixing a typo, improving an explanation, or adding a new lesson — every contribution matters.
Please read our Contributing Guide before submitting a PR.
- Find a lesson page on the site
- Click "Edit this page on GitHub" at the bottom
- Make your changes to the Markdown file
- Submit a Pull Request
| Layer | Technology |
|---|---|
| Backend | Go net/http |
| Frontend | HTMX, Tailwind CSS |
| Code Editor | Monaco Editor |
| Syntax Highlighting | PrismJS |
| Markdown Rendering | Goldmark |
| Hot Reload | Air |
| Deployment | Docker / Railway |
This project is licensed under the MIT License — see the LICENSE file for details.
If you find this project useful, please give it a star! It helps others discover the project.
Built with ❤️ by the Go community.