Welcome to the monorepo for ARC (Autonomous Robotics Carleton)!
This project houses our public-facing website and documentation hub β everything related to building, configuring, and showcasing our autonomous car as we prepare for competitions.
Weβre keeping this project fully open source, so current and future members β and the wider robotics community β can learn, contribute, and grow with us.
This repository contains two apps:
The ARC marketing and showcase site built with Next.js 15, Tailwind CSS v4, and GSAP animations.
- π Home page β interactive hero, sponsors, and team highlights
- π Blueprint page β animated exploded-view car visualization
- π₯ Projects & team pages β showcasing members and ongoing work
The technical docs site built with Fumadocs + Next.js.
- β Setup guides β step-by-step instructions for getting the ARC car up and running.
- π Configuration docs β details on software, hardware, and environment settings.
- π Knowledge base β collected learnings and resources as the project evolves.
- π Race preparation logs β documenting our progress on the road to competition.
- Clone this repository:
git clone https://github.com/Autonomous-Robotics-Carleton/2026.git cd 2026
This is an Nx monorepo. Documentation source code lives in apps/docs/.
Contributors do NOT need Docker. Docker is used only in production via CI/CD.
- Node.js 20+
- Git
corepack enable # activates pnpm (version pinned in package.json)
pnpm install # installs all workspace dependenciesnpx nx dev docs # Docs site β http://localhost:3000
npx nx dev web # Public website β http://localhost:3001# Docs
npx nx build docs
npx nx lint docs
# Website
npx nx build web
npx nx lint webContent lives in:
apps/docs/content/
UI + logic:
apps/docs/app/
apps/docs/lib/
Pages live in:
apps/web/app/
Components + UI:
apps/web/components/
apps/web/lib/
pnpm install
npx nx dev docsThis repository uses GitHub Actions + GitHub Container Registry (GHCR).
- Installs dependencies
- Lints the docs
- Builds the site
- Tests Docker build
-
Builds the production Docker image
-
Pushes it to GHCR:
ghcr.io/autonomous-robotics-carleton/2026:latestghcr.io/autonomous-robotics-carleton/2026:<commit-sha>
-
ARC infrastructure auto-deploys the new version to arcarleton.ca via Watchtower
Contributors never touch Docker.
2026/ # Nx monorepo root
βββ apps/
β βββ docs/ # Fumadocs / Next.js docs app
β β βββ app/ # Next.js App Router
β β βββ content/ # MDX documentation pages
β β βββ public/ # Static assets
β β βββ lib/ # Utility functions
β β βββ components/ # React components
β β βββ next.config.mjs
β β βββ package.json
β βββ web/ # Next.js public website
β βββ app/ # Next.js App Router (pages)
β βββ components/ # UI + layout components
β βββ lib/ # Animation utilities
β βββ hooks/ # Custom React hooks
β βββ public/ # Static assets (images, video)
β βββ next.config.mjs
β βββ package.json
βββ nx.json # Nx workspace config
βββ pnpm-workspace.yaml # pnpm workspace config
βββ .github/workflows/ # CI & Docker build pipelines
βββ README.md
This repo uses Nx + pnpm workspaces. All apps live in apps/, shared code in libs/.
- Create the app directory with its own
package.json:
mkdir -p apps/myapp- Add a
package.jsoninside it:
{
"name": "arc-myapp",
"version": "0.0.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start"
}
}- Add a
project.jsonto register it with Nx:
{
"name": "myapp",
"$schema": "../../node_modules/nx/schemas/project-schema.json",
"projectType": "application",
"targets": {
"dev": { "command": "next dev", "options": { "cwd": "apps/myapp" } },
"build": { "command": "next build", "options": { "cwd": "apps/myapp" }, "outputs": ["{projectRoot}/.next"] },
"start": { "command": "next start", "options": { "cwd": "apps/myapp" }, "dependsOn": ["build"] }
}
}- Install dependencies and run:
pnpm install
npx nx dev myapp- Create the lib:
mkdir -p libs/config- Add a
libs/config/package.json:
{
"name": "@arc/config",
"version": "0.0.0",
"private": true,
"main": "index.ts"
}- Use it from any app by adding to that app's
package.json:
{
"dependencies": {
"@arc/config": "workspace:*"
}
}- Run
pnpm installand import as usual:
import { something } from '@arc/config';| Command | What it does |
|---|---|
npx nx dev <app> |
Run dev server for an app |
npx nx build <app> |
Build an app |
npx nx lint <app> |
Lint an app |
npx nx show projects |
List all registered projects |
npx nx graph |
Open interactive dependency graph |
npx nx run-many -t build |
Build all projects |
This project is licensed under the MIT License.
Whether you're fixing typos, writing docs, or creating new tutorials β your work helps drive ARC forward.
If you have questions, open an issue or reach out to the ARC Team!
