robot-u-site/blogs/building-robot-u-site/index.md

3.6 KiB

title summary
Building Robot U How the Robot U community site became a thin, friendly layer over Forgejo.

Building Robot U

Robot U started with a simple goal: give a small robotics community one place to learn, share projects, and ask for help without inventing a second source of truth.

The site is intentionally built as a thin web layer over Forgejo. Forgejo stores the real community content. Repositories hold courses and posts. Issues hold discussions. OAuth lets members sign in with the same identity they already use for code and collaboration.

What The Site Does

The first prototype focuses on the core community loop:

  • Visitors can read public courses, blog posts, discussions, replies, and upcoming events without signing in.
  • Members can sign in with Forgejo OAuth.
  • Signed-in members can reply to discussions from the site while still posting as their real Forgejo account.
  • Courses are discovered from public repositories that contain a lessons/ folder.
  • Blog content is discovered from public repositories that contain a blogs/ folder.
  • Discussions are backed by Forgejo issues, so the Forgejo API remains the durable storage layer.
  • Events are loaded from an ICS calendar feed.

That means the website is not competing with Forgejo. It is presenting Forgejo content in a way that makes sense for learners.

Why Courses Are Repositories

Courses need more than one page of text. A robotics lesson might include diagrams, code samples, CAD files, firmware, or wiring references. Keeping a lesson in a repository makes those materials easy to version, review, and download.

The current course convention is:

lessons/
  01-getting-started/
    01-blink-an-led/
      index.md
      example-code/
      wiring.png

Each lesson is just a folder with a Markdown file and any supporting assets it needs. Adding a lesson is a normal Git change. Editing a lesson is a normal Git change. Creating a new course is creating a new public repository with a lessons/ folder.

Why Discussions Are Issues

Forum posts and blockers should not disappear into a custom database if the website changes. Backing discussions with Forgejo issues gives the community a durable model that already supports authorship, replies, labels, links, and permissions.

The site reads public issues for general discussions and shows replies under each discussion. When a signed-in user replies from the website, the backend uses that user's Forgejo session token so the comment belongs to the real person, not a bot account.

Anonymous Reading, Signed-In Writing

A key design rule is that reading should be easy. Public learning content should be visible without an account.

Writing is different. Replies and future content actions should require a real Forgejo identity. This keeps the contribution model clear:

  • Public visitors can read.
  • Members sign in with Forgejo to participate.
  • Forgejo remains the place that enforces repository and issue permissions.

What Is Next

This prototype is enough to prove the shape of the system, but there is plenty left to improve:

  • Add a dedicated post index for browsing the full archive.
  • Add user profiles and progress tracking.
  • Improve course navigation for longer curricula.
  • Add search across courses, posts, and discussions.
  • Use Forgejo webhooks and server-sent events so site activity updates quickly.
  • Add better issue-to-lesson linking so discussions can appear directly under the related lesson.

The important part is that the foundation is simple. Robot U can grow as a community learning site without hiding the tools and workflows that make technical collaboration work.