The website for LYNK Robotics, FIRST® Robotics Competition Team 9496, operating under Inspire Carolina, Inc.
Static site built with Eleventy, published to GitHub Pages at https://www.lynkrobotics.org.
Want to change something on the site? Start with GUIDE.md — a walkthrough from nothing to a published change. No technical knowledge needed.
Working on the code? CONTRIBUTING.md. Hosting and permissions? SETUP.md.
Ask for a change; review it; merge it. Nothing to install, nothing to run.
ask Claude for a change
│
▼
Claude pushes a branch and opens a pull request
│
├──▶ Claude's reply links a page of screenshots,
│ every affected page at desktop and phone width
│
└──▶ Cloudflare comments a live preview URL on the PR,
the real site, clickable, ~1 minute later
│
▼
merge the pull request into `main`
│
▼
GitHub Actions deploys → www.lynkrobotics.org (1–2 min)
Nothing reaches the public site until a maintainer merges to main.
Anyone in the LynkRobotics org can propose a change; only the website maintainers can publish one. See CONTRIBUTING.md if you are proposing, and SETUP.md for the GitHub settings that enforce it.
Point Claude at this repository and describe what you want, e.g.
Add Jane Doe to the mentors page — Mechanical Mentor, engineer at Acme, joined 2026. Her photo is in
~/Downloads/jane.jpg.
Update the home page events: we qualified for States, and the Pembroke event moved to the Jones Center gym.
CLAUDE.md tells Claude where everything lives, what the house style is, and
that it owes you a review page with every change.
Two ways, both handed to you:
- Screenshots, linked in Claude's reply. Fastest look — every page the change touched, desktop and phone, no waiting.
- A real preview site, linked from a comment on the pull request. Cloudflare builds every branch automatically. Click through it, test the navigation, try it on your phone. Preview builds carry a small Preview badge and are blocked from search engines, so they can never be mistaken for the live site.
A maintainer merges the pull request. The Deploy to GitHub Pages workflow runs automatically; when it goes green the change is live at www.lynkrobotics.org.
If you do not see a Merge button, that is expected — merging is restricted to
the website-maintainers team.
To roll back, revert the merge commit on main — the next deploy restores the
previous state.
Content is data, not markup. Most changes are a few lines of JSON.
| File | Controls |
|---|---|
src/_data/site.json |
Site name, navigation, contact details, social and donation links |
src/_data/mentors.json |
The Mentors page |
src/_data/leads.json |
The two co-lead mentor contact cards |
src/_data/sponsors.json |
The investor wall and its tiers |
src/_data/events.json |
Upcoming events on the home page |
src/_data/faqs.json |
The FAQs page |
src/_data/experiences.json |
Testimonials on Experiences That Matter |
src/_data/seasons.json |
Each season page under /seasons/ |
src/_data/redirects.json |
Old URLs that must keep working |
src/assets/css/site.css |
All styling; design tokens are at the top |
src/assets/img/ |
All imagery |
Page templates are the .njk files in src/. The shared header and footer are
in src/_includes/.
Only for people editing the code themselves. The workflow above never needs it — see GUIDE.md for the browser-only path.
git clone https://github.com/LynkRobotics/website.git
cd website
npm install
npm start # http://localhost:8080, live reload| Command | What it does |
|---|---|
npm install |
Install dependencies (once, and after package.json changes) |
npm start |
Local preview on http://localhost:8080 with live reload |
npm run build |
Build the site into _site/ |
npm run check |
Build, then verify every internal link resolves |
npm run clean |
Delete _site/ |
npm run review |
Build, screenshot every page, write review.html |
npm run build:preview |
Build, then mark it as a preview (what Cloudflare runs) |
Requires Node.js 20 or newer.
- Source of truth: the
mainbranch of this repository. - Production:
.github/workflows/deploy.ymlbuilds and deploys to GitHub Pages on every push tomain. - Previews: Cloudflare Workers builds every other branch with
npm run build:previewand comments the preview URL on the pull request. Configured bywrangler.jsonc(an assets-only Worker). It never serves the custom domain —mark-preview.mjsstripsCNAME, blocks indexing and stamps a Preview badge on every page. - Custom domain:
src/CNAMEcontainswww.lynkrobotics.org, and that file is what actually sets the custom domain on each deploy — it overrides the Settings → Pages box. The build fails if it goes missing or disagrees. wwwis canonical.lynkrobotics.org301-redirects towww.lynkrobotics.org. This direction is deliberate and should not be reversed — see "Why www" below.
Old Google Sites paths (/lynk, /lynk/lynk-faqs, /our-people/mentors-lynk,
and so on) redirect to their new homes — see src/_data/redirects.json.
Before the migration, Squarespace served lynkrobotics.org and answered with a
permanent redirect to www.lynkrobotics.org. Browsers cache a 301 and stop
asking the server, so every browser that visited the old domain still has that
redirect saved.
If GitHub sent www back to the apex — the arrangement this site launched with
— those browsers would bounce between the two forever and show
ERR_TOO_MANY_REDIRECTS. Serving the site at www means the stale redirect
lands on a real page instead.
Reversing this later would recreate the same loop, this time from GitHub's own
cached apex → www redirect. Leave www canonical.
Carried over from the previous Google Sites theme so the site looks familiar:
- Burnt orange
#BF5700— headings, buttons, the footer - Near-black
#1C1C1C— body text and the header bar - Red Hat Display for everything, Roboto for footer fine print
Fonts are self-hosted, YouTube videos are click-to-load, and the social icons are inline SVG — so a visitor's browser makes no third-party requests just to read a page.
FIRST® is a registered trademark of For Inspiration and Recognition of Science and Technology (FIRST), which is not affiliated with this website.