A beautiful, interactive learning platform built using Google's Codelabs tools. Create engaging, step-by-step tutorials for any topic!
Visit the live platform: learnwithfath.github.io
- Interactive Tutorials - Step-by-step learning experience
- Progress Tracking - Automatically saves user progress
- Time Estimates - Shows duration for each section
- Responsive Design - Works on desktop and mobile
- Syntax Highlighting - Beautiful code blocks
- Info Boxes - Highlight important tips and warnings
- Easy Authoring - Write tutorials in Markdown or Google Docs
- Go (for claat tool) - Install Go
- A text editor (VS Code, Sublime Text, etc.)
- A web browser
git clone <your-repo-url>
cd my-codelabsgo install github.com/googlecodelabs/tools/claat@latestOr download pre-compiled binaries from Releases
claat versionCreate a new .md file in the codelabs/ directory with this structure:
author: Your Name
summary: Brief description of your codelab
id: unique-codelab-id
categories: topic1,topic2
environments: Web
status: Published
feedback link: https://github.com/yourusername/feedback
# Your Codelab Title
## Section 1
Duration: 0:05:00
Your content here...
## Section 2
Duration: 0:10:00
More content...cd codelabs
claat export your-codelab.mdThis creates a directory with the same name as your codelab ID containing the HTML files.
# Using npm script (recommended)
npm run serve
# Or directly with claat
claat serveOpen your browser to http://localhost:9090 and click on your codelab!
To stop the server:
# Stop the running server
npm run stop
# Or press Ctrl+C in the terminal where server is runningauthor: Your Name
summary: What learners will accomplish
id: unique-identifier
categories: web,javascript,beginner
environments: Web
status: Published
feedback link: https://example.com/feedback
# Main Title
## Section Title
Duration: 0:05:00Positive
: This appears in a green success box
Negative
: This appears in a yellow warning box```javascript
function hello() {
console.log("Hello, World!");
}
```* Bullet point 1
* Bullet point 2
1. Numbered item 1
2. Numbered item 2[Link Text](https://example.com)
The generated codelabs use Google's Material Design. To customize:
- Modify the generated HTML files
- Add custom CSS
- Update the codelab-elements styles
You can create a custom landing page using the site generator.
my-codelabs/
βββ README.md
βββ codelabs/
β βββ getting-started.md # Source markdown
β βββ getting-started/ # Generated HTML
β β βββ index.html
β β βββ codelab.json
β βββ web-dev-basics.md
β βββ web-dev-basics/
βββ docs/ # Optional: for GitHub Pages
- Export all codelabs:
cd codelabs
claat export *.md- Move generated directories to a
docs/folder - Enable GitHub Pages in repository settings
- Point to the
docs/folder
- Export codelabs
- Create a
netlify.toml:
[build]
publish = "codelabs"- Deploy to Netlify
firebase init hosting
firebase deployThe generated HTML is purely static and can be hosted anywhere:
- AWS S3
- Google Cloud Storage
- Vercel
- Any web server (nginx, Apache)
- ID:
getting-started - Topics: Platform navigation, progress tracking, best practices
- Duration: ~36 minutes
- ID:
web-dev-basics - Topics: HTML, CSS, JavaScript, building a task list app
- Duration: ~61 minutes
# Export to HTML (default)
claat export codelab.md
# Export to Markdown
claat export -f md codelab.md
# Export from Google Docs
claat export <google-doc-id>claat serve -addr localhost:8080# In one terminal
claat serve
# In another terminal, re-export when you make changes
claat export codelab.md- Keep sections focused - Each section should cover one concept
- Use realistic examples - Show real-world applications
- Include checkpoints - Let learners verify their progress
- Add visuals - Screenshots and diagrams enhance understanding
- Test thoroughly - Follow your own tutorial to catch issues
- Get feedback - Have others try your codelab before publishing
Want to add more codelabs?
- Create your markdown file in
codelabs/ - Follow the format guide
- Export and test locally
- Submit a pull request
This project uses Google's Codelabs tools, which are open source. Your content can be licensed as you prefer.
- Make sure Go is installed
- Add
$GOPATH/binto your PATH - Try
go install github.com/googlecodelabs/tools/claat@latestagain
- Use local images instead of external URLs
- Ensure image paths are relative to the markdown file
- Check that images exist in the specified location
- This is normal when opening
index.htmldirectly - Use
claat serveto preview properly - Styles will work correctly when deployed online
- Create your first codelab - Start with a topic you know well
- Customize the design - Make it match your brand
- Build a landing page - Create a catalog of all your codelabs
- Share with learners - Deploy and gather feedback
- Iterate and improve - Update based on user feedback
Happy Teaching! π
For questions or issues, please open an issue on GitHub or join the Codelab Authors Group.