NODE-Sudbury.github.io
NODE Sudbury official website - sudburynode.com
TypeScript Custom license
- Stars
- 1
- Forks
- 0
- Open issues
- 1
- Contributors
- 1
- Last update
- Oct 15, 2026
- Created
- Sep 3, 2026
Top contributors
-
hannanmax
293
commits
Ranked by commits on GitHub. Bots are left out.
Commit activity
Languages
- TypeScript 85.3%
- JavaScript 7%
- HTML 3.7%
- PLpgSQL 2.1%
- Astro 1.2%
- CSS 0.6%
About this project
NODE - Northern Ontario Dev Exchange
Official website for NODE Sudbury - a community-driven tech org based in Greater Sudbury, Ontario: events, board, blog, membership, partners and the open source projects of the NODE-Sudbury organization.
Live site: nodesudbury.com Dev site: dev.nodesudbury.com
Tech stack
- Astro and Lit - static pages with web components
- Supabase - sign-in, members and subscribers
- Vercel - hosting and preview deployments
Contributing
NODE is open to everyone - no experience level required. See CONTRIBUTING.md for how to get started.
Run it
Needs Node.js 22.
npm ci
FIRESTORE_TARGET=sample NODE_ENV=development npm --prefix packages/web run start:astro
The site opens at http://localhost:4321 and reads its content from packages/config.
Where things are
| Path | What it holds |
|---|---|
packages/config/site.json |
Site settings, navigation and features |
packages/config/content/ |
Home page text, FAQ, code of conduct and the open source data |
packages/config/sample-data/ |
Board, partners, gallery, blog, events and membership |
packages/config/public/images/ |
Logos and photos |
packages/web/ |
The website itself |
Sign-in and the two Supabase projects
Members sign in with an emailed link or Google, through Supabase. The site talks to one of two Supabase projects, chosen by the env file Vite reads:
| Command | Env file | Supabase project |
|---|---|---|
npm start |
packages/web/.env.development |
Node Website Dev |
npm run build |
packages/web/.env.production |
Node Website |
Copy packages/web/.env.example to both files and fill in each project's URL and public anon key (Project Settings, API). The files are gitignored. Never put the service role key in them. Each project must list the site's address under Authentication, URL Configuration, for example http://localhost:4321/** for development, or sign-in sends members to the project's default Site URL instead.
Open source data
The Open Source page lists the public repositories of the organization, with contributors and activity. The numbers come from GitHub and count the commits on each repository's default branch (main), so work on dev counts once it is released to main.
How it stays current
- Every day (about 09:17 UTC) the workflow
.github/workflows/refresh-open-source.ymlreads the data from GitHub with its own token, publishes it and the contributors' avatars on theopen-source-databranch, and asks Vercel for a new build. The repository secretSITE_DEPLOY_HOOK_URLis the address that starts the build. - Every build also asks GitHub itself (
SYNC_GITHUB=1is in the build command). That often fails, because a build has no token: GitHub allows 60 requests an hour for an address, and the host's builders share addresses, so GitHub refuses the build. The build then takes the data published on theopen-source-databranch, if it is newer than what the build has, and otherwise keeps the data saved in the repository. This is why the page once showed numbers from weeks before. - A new commit shows on the page after it reaches
main, and after the next daily run or any other build.
Refreshing it now
Run the workflow, which reads GitHub, publishes the data and starts a build (about 3 minutes):
gh workflow run refresh-open-source.yml
Or read GitHub from your own computer, which writes packages/config/content/open-source.json and the avatars for you to review and commit:
npm --prefix packages/web run sync:github
Set GITHUB_TOKEN for a higher rate limit. Building with SYNC_GITHUB=1 refreshes the data first.
If the numbers look old
Check the generatedAt time at the top of the published file, https://raw.githubusercontent.com/NODE-Sudbury/NODE-Sudbury.github.io/open-source-data/open-source.json, and the run history of the workflow with gh run list --workflow refresh-open-source.yml. The build log says "Using the open source data that the daily workflow published" when it took the published data, and "Keeping the open source data from the last successful sync" when it had nothing newer.
Events
The Events page and each event's own page come from the event links in packages/config/content/event-sources.json. Add a GDG (gdg.community.dev) or Luma (luma.com) link there with its category, then run npm --prefix packages/web run sync:events. The sync reads the public details of each page: description, address, tags, ticket types and the sign-up count. Building with SYNC_EVENTS=1 refreshes them first, and the same daily workflow keeps the numbers current.
License
Free to use and contribute to. Commercial use is not permitted. See LICENSE for details.
Search engines and sharing
Every page carries what search engines and link previews read: