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.