Organize root: consolidate itinerary, move dev docs to docs/, and create Community File Share

This commit is contained in:
Meetup Organizer
2026-09-04 17:09:14 -05:00
parent 1df370325d
commit 2df0abb492
12 changed files with 131 additions and 221 deletions

28
docs/ideas.md Normal file
View File

@@ -0,0 +1,28 @@
---
title: "Ideas and Planning"
category: "meetup"
order: 4
description: "Future challenge concepts, workshop topics, and community suggestions."
tags:
- meetup
- planning
---
[← Back to Home Page](../Readme.md)
# Ideas & Planning
We actively incorporate suggestions from community members. Here are concepts currently in development for upcoming meetups:
## Future Challenge Ideas
- **"Sliced" Rapid Design Competition**: Timed on-site modeling/slicing challenge.
- **Mechanical Compliance**: 100% print-in-place compliant mechanisms without hardware.
- **Recycled & Sustainable Materials**: Prints made with rPLA and recycled filaments.
## Workshop & Presentation Topics
- Advanced Scarf Seam calibration in OrcaSlicer and PrusaSlicer.
- Multi-color filament painting and HueForge layer optimization.
- Designing functional snap-fit joints and tolerances.
## Community Outreach Initiatives
- **School Partnerships**: Outreach to robotics teams and STEM programs.
- **Discord Integration**: Online community voting and suggestions.

13
docs/readme.md Normal file
View File

@@ -0,0 +1,13 @@
# Planning & Developer Documentation
Internal documentation, event planning concepts, technical specifications, and migration tracking for the Fargo 3D Printing Meetup repository.
## Documentation Index
| Document | Description | Path |
| :--- | :--- | :--- |
| **[Ideas & Planning](ideas.md)** | Future design challenges, workshop ideas, presentation topics, and community outreach concepts. | `docs/ideas.md` |
| **[Architecture & API Spec](update.md)** | Technical specification for Gitea REST API integration, branch targeting, and content taxonomy. | `docs/update.md` |
| **[Wiki Changes Tracker](wiki-needed-changes.md)** | Migration progress and link cleanup checklist from legacy flat wiki tags to folder taxonomy. | `docs/wiki-needed-changes.md` |
[← Back to Main Repository](../Readme.md)

158
docs/update.md Normal file
View File

@@ -0,0 +1,158 @@
# Fargo 3D Community Content & Repository Hub Architecture (v5)
This document outlines the architecture, API schemas, configuration, and implementation plan for upgrading the **Fargo 3D Wiki, Challenges, & Community Resources** system to consume markdown and structured assets directly from the **primary Git repository** (`Fargo3d/3DPrintMeetup`) instead of the flat Gitea Wiki API.
---
## 1. Overview & Key Advantages
Rather than relying on the legacy Gitea Wiki API (which enforces a flat page hierarchy and requires an $O(N)$ loop to base64-decode each page just to read tags), the website will connect to the **Gitea Repository REST API**.
```
┌────────────────────────────────────────────────────────────────────────────────────────┐
│ COMMUNITY RESOURCE HUBS (WEBSITE) │
├─────────────────────────┬─────────────────────────────┬────────────────────────────────┤
│ 🏆 Challenges Hub │ 🛠️ Tools & Gear Hub │ 📚 Wiki Knowledge Base │
│ Route: `/challenges` │ Route: `/tools` │ Route: `/wiki?page={Path}` │
│ • Active Challenges │ • 3D Fuel Partner Perk │ • Meetup Info & Dates │
│ • Past Archive │ • Curated Tools & Reviews │ • Hardware & Slicer Guides │
│ • Direct STL / Files │ • HueForge Color Palette │ • Announcements Archive │
└─────────────────────────┴─────────────────────────────┴────────────────────────────────┘
▲ ▲
│ │
┌──────────────────────────────┴───────────────────────────────┴─────────────────────────┐
│ GITEA REPOSITORY REST API (BRANCH-AWARE) │
│ Swagger: https://meetup.fargo3d.com/api/swagger │
│ • Git Tree (Recursive): `/api/v1/repos/{owner}/{repo}/git/trees/{branch}?recursive=1` │
│ • Raw Markdown: `/api/v1/repos/{owner}/{repo}/raw/{filepath}?ref={branch}` │
│ • Raw JSON / Assets: `/api/v1/repos/{owner}/{repo}/raw/HueForge/3d-Fuel.json` │
└────────────────────────────────────────────────────────────────────────────────────────┘
```
### Major Advantages:
1. **Branch & Fork Isolation for Safe Local Testing**:
- The repository owner, repository name, and branch/ref are configurable via `appsettings.json`.
- Developers can point their local environment to a fork (e.g. `espoon/3DPrintMeetup`) or a test branch (e.g. `v5-content`) and test website rendering immediately without altering production markdown or touching the live wiki.
2. **Instant $O(1)$ Tree Discovery (Zero N+1 Calls)**:
- A single recursive git tree request retrieves all markdown files, folder hierarchies, sizes, and git commit SHAs in ~60ms.
3. **True Folder Hierarchy & Categories**:
- Files are organized into natural repository directories (`challenges/`, `announcements/`, `HueForge/`, `tools/`) rather than flat wiki slug naming.
4. **Structured Asset Ingestion**:
- Directly loads `HueForge/3d-Fuel.json` to provide real-time filament hex color palettes, transmissivity values, and filament profiles on `/tools`.
5. **Direct Raw Streaming**:
- The raw API streams pure UTF-8 markdown text directly without base64 wrapper overhead.
---
## 2. Configuration & Branch-Targeting Schema
In `Fargo3D.Web/appsettings.json`:
```json
{
"CommunityContent": {
"GiteaBaseUrl": "https://meetup.fargo3d.com",
"Owner": "Fargo3d",
"Repo": "3DPrintMeetup",
"Branch": "master",
"CacheDurationMinutes": 15
}
}
```
In `Fargo3D.Web/appsettings.Development.json` (for local dev against a fork or branch):
```json
{
"CommunityContent": {
"Owner": "espoon",
"Repo": "3DPrintMeetup",
"Branch": "dev"
}
}
```
---
## 3. Gitea API Endpoints Utilized
| Operation | Gitea Endpoint | Description |
| :--- | :--- | :--- |
| **Recursive Tree** | `GET /api/v1/repos/{owner}/{repo}/git/trees/{branch}?recursive=1` | Returns the entire file tree. Filter for `item.path.EndsWith(".md")` to index all content in 1 call. |
| **Raw Content** | `GET /api/v1/repos/{owner}/{repo}/raw/{filepath}?ref={branch}` | Streams the raw markdown or JSON file content. |
| **File Metadata** | `GET /api/v1/repos/{owner}/{repo}/contents/{filepath}?ref={branch}` | Returns metadata, commit info, and file size. |
---
## 4. Repository Folder Taxonomy & Routing
The files in `Fargo3d/3DPrintMeetup` map to website sections as follows:
| Repository Directory / File | Category | Target Route / UI Component |
| :--- | :--- | :--- |
| `challenges/*/readme.md`, `challenges.md` | `challenges` | `/challenges` & `/wiki?path=challenges/...` |
| `tools/*.md`, `Supporting-Our-Community.md` | `tools` | `/tools` & `/wiki?path=tools/...` |
| `HueForge/README.md`, `HueForge/3d-Fuel.json` | `hueforge` | `/tools` & `/wiki?path=HueForge/...` |
| `announcements/*.md` | `announcements` | `/wiki?path=announcements/...` |
| `Readme.md`, `itinerary.md`, `ideas.md` | `meetup` | `/wiki?path=Readme.md` (Home) |
---
## 5. Frontmatter YAML Schema Standard
Markdown files can optionally define frontmatter for card titles, badges, and sorting:
```yaml
---
title: "September 2026: Practi-FALL Prints"
category: "challenges"
subcategory: "2026"
order: 1
description: "Functional utility and everyday practicality challenge."
tags:
- active
- functional
- contest
---
```
If frontmatter is omitted, the title defaults to the filename (or first `# H1` header), and the category defaults to the parent folder name.
---
## 6. Implementation Architecture
### 1. New Content Service: `CommunityRepoService.cs`
Replaces legacy `wikiAPI` in `SharedClasses/`:
- **`GetContentTreeAsync()`**: Fetches and caches the recursive git tree for `{Owner}/{Repo}@{Branch}`.
- **`GetRawFileAsync(string path)`**: Downloads raw markdown text using `?ref={Branch}`.
- **`GetFilamentDatabaseAsync()`**: Downloads and deserializes `HueForge/3d-Fuel.json`.
- **`ParseFrontmatter(string markdown)`**: Extracts metadata (`title`, `category`, `order`, `tags`) using `FrontmatterParser.cs`.
### 2. Dedicated Hub: `Fargo3D.Web/Components/Pages/Tools.razor`
- **Route**: `@page "/tools"`
- **Partner Voucher Card**: 3D Fuel voucher with one-click code copy and direct tracking link.
- **Interactive HueForge Palette**: Visual swatch grid populated directly from `HueForge/3d-Fuel.json`.
- **Community Supplies**: Community-tested recommendations pulled directly from the repo's tools markdown.
### 3. Categorized Wiki Tree: `WikiPage.razor`
- Replaces flat list with folder-aware accordion sidebar:
- 📅 **Meetup & Schedule** (`Readme.md`, `itinerary.md`, `ideas.md`)
- 🏆 **Maker Challenges** (Grouped by year/month)
- 🛠️ **Tools & Hardware** (Supplies, recommendations)
- 🎨 **HueForge Guides** (Filament guides, color theory)
- 📢 **Announcements Archive**
---
## 7. Migration & Local Testing Workflow
1. **Create Branch or Fork**:
- In `meetup.fargo3d.com`, create a branch (e.g. `v5-content`) or fork `3DPrintMeetup` to your user account.
2. **Update Local Config**:
- Set `"Branch": "v5-content"` in `appsettings.Development.json`.
3. **Develop & Verify**:
- Commit markdown and images to your branch/fork.
- Run `Fargo3D.Web` locally — it will immediately pull the new structure from your branch without affecting production.
4. **Merge to Production**:
- Merge your content branch into `master` on `Fargo3d/3DPrintMeetup`.

View File

@@ -0,0 +1,78 @@
# Wiki & Repository Needed Changes Tracker (`wiki needed changes.md`)
This document tracks all content updates, cleanups, structural refactorings, and link fixes needed in the **Fargo 3D Content Repository** (`Fargo3d/3DPrintMeetup`).
---
## 1. Folder-Based Cleanups (Deprecating Legacy Flat Wiki Tags)
Because the site now infers categories, archive status, and hub placement directly from **folder paths**, markdown files no longer require extensive YAML tags.
### Folder Inference Rules:
| Folder Path | Automatic Category | Automatic Status / Badging | Frontmatter Required? |
| :--- | :--- | :--- | :--- |
| `challenges/current/current.md` | `challenges` | **Active Challenge** | Optional (title inferred from `# H1`) |
| `challenges/current/upcoming.md` | `challenges` | **Upcoming Preview** | Optional |
| `challenges/current/readme.md` | `challenges` | Hub overview / Index | Optional |
| `challenges/archive/*.md` | `challenges` | **Archived Challenge** | Optional (year/month inferred from filename) |
| `tools/*.md` | `tools` | **Community Gear & Supplies** | Optional |
| `HueForge/*.md` | `hueforge` | **Guides & Calibration** | Optional |
| `announcements/*.md` | `announcements` | **Monthly Announcements** | Optional (date inferred from filename) |
| `/` (Root) | `meetup` | **General Meetup Info** | Optional |
---
## 2. Redundant Root Files Cleanup
With the migration to dedicated folders on `dev`, several duplicate files in the root can be archived or cleaned up once the website reads from folders:
- [x] **`Supporting-Our-Community.md`** (Root):
- Duplicate of `tools/Supporting-Our-Community.md`. Can be removed once tools route points to `tools/`.
- [x] **`Current-Challenge.md`** & **`Upcoming-Challenge.md`** (Root):
- Replaced by `challenges/current/current.md` and `challenges/current/upcoming.md`.
- [x] **`Challenge-Archive.md`** & **`challenges.md`** (Root):
- Replaced by `challenges/readme.md` and `challenges/archive/readme.md`.
- [x] **`wiki-content-gitea/`** folder:
- Legacy flat wiki mirror. Can be retired once the website is reading from the primary repo folders.
---
## 3. Link Standardization Across Markdown Files
In the legacy Gitea wiki, links were flat slugs (e.g. ``[Itinerary](Itinerary)`` or ``[Active Challenge](Current-Challenge)``). For standard git repository browsing and web rendering:
- [x] Update `Home.md` / `Readme.md`:
- Change `(Itinerary)` -> `(itinerary.md)`
- Change `(Important-Dates)` -> `(Important-Dates.md)`
- Change `(Ideas-and-Planning)` -> `(ideas.md)`
- Change `(Current-Challenge)` -> `(challenges/current/current.md)`
- Change `(Challenge-Archive)` -> `(challenges/archive/readme.md)`
- Change `(Supporting-Our-Community)` -> `(tools/Supporting-Our-Community.md)`
- [x] Update `challenges/current/current.md`:
- Change ``[← Back to Challenges Hub](../readme.md)`` (already clean relative link).
- Verify link to ``[Upcoming Preview](upcoming.md)``.
- [x] Update `challenges/archive/*.md`:
- Update any backlink headers to `[← Back to Challenge Archive](readme.md)`.
---
## 4. HueForge & Structured Assets Tasks
- [x] **`HueForge/3d-Fuel.json`**:
- Verify JSON structure is valid and contains latest colors. (Verified: 127+ color entries with Hex, Brand, Transmissivity, Type).
- [x] **`HueForge/README.md`**:
- Add quick link to download `3d-Fuel.json` directly from the raw repo URL.
---
## 5. Frontmatter Simplification Standard
Authors no longer need to write 12 lines of YAML. The standard is now lightweight:
```yaml
---
title: "September 2026: Practi-FALL Prints"
order: 1
---
```
*(Category, active/archive status, and tags like `challenge` and `tools` are now inferred automatically by folder location).*