https://github.com/itkan-robotics/mantik
Comprehensive Java learning platform for robotics teams and programming enthusiasts. Interactive web-based training covering Java fundamentals, FTC/FRC robotics programming, and competitive coding.
https://github.com/itkan-robotics/mantik
competitive-programming frc ftc java-education
Last synced: 15 days ago
JSON representation
Comprehensive Java learning platform for robotics teams and programming enthusiasts. Interactive web-based training covering Java fundamentals, FTC/FRC robotics programming, and competitive coding.
- Host: GitHub
- URL: https://github.com/itkan-robotics/mantik
- Owner: itkan-robotics
- Created: 2025-06-29T23:32:43.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2026-02-15T15:54:05.000Z (3 months ago)
- Last Synced: 2026-02-15T22:51:29.180Z (3 months ago)
- Topics: competitive-programming, frc, ftc, java-education
- Language: Java
- Homepage: https://mantik.netlify.app/
- Size: 6.26 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Mantik
Web-based programming and robotics learning platform for FTC/FRC teams. Content is stored as JSON files—to add or edit pages, create or modify JSON in `data/` and wire it into the navigation configs.
## Quick Start
```bash
npm install
npx http-server -p 8000 -c-1
```
Open http://localhost:8000. Or use Python: `python -m http.server 8000`. Or right-click `index.html` → Open with Live Server (VS Code).
## Adding or Editing a Page
### 1. Create or edit the content file
Content lives in `data/` under section folders (e.g. `data/java/java-basics/`, `data/frc/command-based/`). Each page is a JSON file:
```json
{
"id": "my-page-id",
"title": "Page Title",
"sections": [
{
"type": "text",
"title": "Section Title",
"content": "HTML content with formatting"
}
]
}
```
### 2. Add the page to navigation
Update the section config in `data/config/`. Config files map sections to the sidebar:
- **Java**: `java-training-config.json`
- **FRC**: `frc-specific-config.json`
- **FTC**: `ftc-specific-config.json`
- **Competitive**: `competitive-training-config.json`
Add your page to the right `groups[].items[]`:
```json
{
"id": "my-page-id",
"label": "Page Label in Sidebar",
"file": "data/section-folder/my-page.json",
"difficulty": "beginner",
"duration": "20 min"
}
```
`file` is the path from the project root. `difficulty` and `duration` are optional.
### 3. Create the folder if needed
If the section folder doesn’t exist, create it under `data/` (e.g. `data/java/java-basics/`).
---
## Section Types (Content Blocks)
Use these `type` values in `sections`:
| Type | Purpose |
|------|---------|
| `text` | Paragraphs with HTML. Uses `title`, `content`. |
| `list` | Bullet list. Uses `title` (optional), `items` (array of strings). |
| `code` | Code block with syntax highlighting. Uses `title`, `content`, `code`. |
| `code-tabs` | Tabbed code examples. Uses `title`, `tabs` (array of `{label, code}`). |
| `rules-box` | Highlighted rules. Uses `title`, `subtitle`, `items`, plus optional `goodPractices` and `avoid` arrays. |
| `steps-box` | Numbered steps. Uses `title`, `items`. |
| `exercise-box` | Practice with show/hide answers. Uses `title`, `subtitle`, `content` (starter code), `tasks`, `answers` (array of `{task, content}`). |
| `table` | Data table. Uses `title`, `headers`, `rows`. |
| `link-grid` | Links to other pages or URLs. Uses `title`, `links` (array of `{label, id}` for internal or `{label, url}` for external). |
| `emphasis-box` | Styled like `rules-box`. Uses same fields. |
| `data-types-grid` | Data type comparison cards. |
| `logical-operators` | Operator reference table. |
---
## Adding a New Section
1. **Create config file**
Add `data/config/my-section-config.json` with `title`, optional `sections` (landing content), and `groups`:
```json
{
"id": "my-section",
"title": "My Section",
"groups": [
{
"id": "group-id",
"label": "Group Label",
"items": [
{
"id": "first-page",
"label": "First Page",
"file": "data/my-section/first-page.json"
}
]
}
]
}
```
2. **Register in main config**
Edit `data/config/config.json` and add to `sections`:
```json
"my-section": {
"id": "my-section",
"label": "My Section",
"file": "data/config/my-section-config.json",
"sidebarEnabled": true
}
```
3. **Create content folder**
Add `data/my-section/` and put your JSON page files there.
---
## File Layout
```
data/
├── config/ # Section configs (navigation)
│ ├── config.json # Main app config (registers sections)
│ └── *-config.json # Per-section nav and landing content
├── java/ # Java training pages
├── frc/ # FRC training pages
├── ftc/ # FTC training pages
└── comp/ # Competitive coding pages
```
---
## References
- **Styling**: `STYLING_GUIDE.md`
- **Deployment**: `DEPLOYMENT_CHECKLIST.md`, `NETLIFY_DEPLOYMENT.md`