Web-based programming and robotics learning platform for FIRST Robotics teams (Java, FTC, FRC, competitive coding).
Built with Astro 5 + MDX + TypeScript, deployed as a static site on Netlify.
npm install
npm run devSearch in dev: Pagefind indexes are created at build time. Run npm run build once (or use npm run dev:search), then restart npm run dev so /pagefind/* assets are available locally.
npm run build # Astro build + Pagefind search index
npm run preview # Preview production build locallysrc/
├── content/ # MDX lessons (java, ftc, frc, comp, homepage)
├── components/ # Layout + MDX block components
├── layouts/ # BaseLayout, LessonLayout
├── pages/ # Astro routes
└── styles/global.css # SWYFT design system
public/
├── admin/ # Decap CMS
└── media/ # Static assets
legacy/ # Pre-Astro JSON SPA (archived)
scripts/ # migrate-json-to-mdx.mjs
- Deploy the site to Netlify and enable Netlify Identity + Git Gateway
- Visit
/adminon your deployed site - Edit lessons in the visual editor — changes commit to Git as MDX
Lesson files live in src/content/{section}/. Each file has frontmatter and a readable MDX body — no component imports needed.
See docs/content-authoring.md for the full guide.
---
title: Branching and Merging
lessonId: branching-merging
section: java
group: version-control
groupLabel: "Version Control with Git & GitHub"
groupOrder: 5
order: 4
difficulty: intermediate
duration: 35 min
---
### Working with Branches
Plain markdown paragraphs and lists work as expected.
```java
git branch feature-name
git checkout -b new-branch- Use feature branches for isolated work
- Keep
maincompetition-ready
- Create a branch
- Merge it back to main
Registered in src/mdx-components.ts — use directly in lesson MDX without imports. Prefer markdown + fenced code over legacy prop-only usage.
| Component | Purpose |
|---|---|
RulesBox |
Highlighted rules, tips, good practices (markdown slot) |
StepsBox |
Numbered steps |
ExerciseBox |
Practice tasks with optional answers |
LinkGrid |
Navigation link cards |
CodeBlock |
Legacy single code wrapper; prefer fenced code |
CodeTabs / CodeTab |
Tabbed code (Talon FX / SPARK MAX, etc.); use fenced code inside CodeTab slots |
TextBlock |
Legacy HTML strings only when markdown is not enough |
ContentTable |
Data tables |
DataTypesGrid |
Data type comparison cards |
LogicalOperators |
Operator reference |
The original JSON content is archived in legacy/data/. To re-run migration:
npm run migrateWarning: This regenerates all of src/content/ from JSON and overwrites hand-edited MDX. Commit or back up first. See docs/content-authoring.md.
Configured for Netlify via netlify.toml:
- Build:
npm run build - Publish:
dist/ - Sitemap: auto-generated by
@astrojs/sitemap - Search: Pagefind (built at deploy time)
Copyright © 2026 Mantik