ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
Browse IA and EE exemplars, guides, and notes for every subject, and plan every deadline with the Hub — DiplomaHub's personal calendar for the IB Diploma.
EducationTypeScript · CSSGitHub @nathancoolusernameOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Free resource library and study planner for IB Diploma students. Next.js, Supabase, live at diplomahub.org.
Taken from the repository README
Loading the full README.
Read the full README ↗Everything you need for the IB Diploma, in one place.
DiplomaHub is a free platform for International Baccalaureate (IB) Diploma students. It combines a library of student-shared resources with a personal planner built around the IB's deadlines and workload.
🔗 Live: www.diplomahub.org
IB students spend a lot of time hunting for good exemplars and guides scattered across Discord servers, Google Drives and old forum threads, and then juggling IAs, the Extended Essay, TOK and university deadlines across six subjects at once. DiplomaHub puts both halves in one place: find what you need, then plan when you'll use it.
.ics feed you can subscribe to from Google/Apple Calendar.ics file (timezones and recurring events handled), with a preview step and one-click undo| Layer | Tools |
|---|---|
| Framework | Next.js 16 (App Router, Turbopack), React 19, TypeScript |
| Styling | Tailwind CSS 4 with a custom design-token system |
| Backend | Supabase (Postgres, Auth, Storage) with row-level security |
| Editor | Tiptap v3, server-side sanitize-html |
| Calendar | ical-generator (export), ical.js (import) |
| Infra | Vercel, Upstash Redis (rate limiting), Sentry (error tracking), Resend (email) |
| CI | GitHub Actions: type-check + lint on every push |
Some of the more interesting problems I ran into and how I solved them:
Cutting serverless CPU on Vercel's free tier. As the user base roughly doubled, the site kept hitting its monthly CPU limit. Instead of guessing, I used Vercel's per-route data to find the real causes:
A trust score that went the wrong way. Resource trust uses Bayesian shrinkage: a new resource starts at its author's reputation and moves toward its own engagement score as likes and downloads add confidence. I found that this made the score visibly drop as downloads came in whenever engagement was below the author's prior. I fixed it so engagement can only raise a resource above its author's baseline.
Guest mode that migrates cleanly. The whole planner works with zero database calls for logged-out users. Guest data uses the exact same row shape as the database, so on sign-in it's moved over with idempotent upserts. This means a refresh or a second tab can never duplicate items.
Calendar import edge cases. Two real bugs here:
Uploads larger than the platform limit. File uploads were failing because Vercel caps serverless request bodies at ~4.5 MB. Files now go straight from the browser to storage, with validation shared between the client and the server.
Security.
git clone https://github.com/nathancoolusername/DiplomaHub.git
cd DiplomaHub
npm install
Create a .env.local file in the project root:
# Supabase
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=
# Optional: each feature is disabled when its variable is unset
UPSTASH_REDIS_REST_URL=
UPSTASH_REDIS_REST_TOKEN=
NEXT_PUBLIC_SENTRY_DSN=
RESEND_API_KEY=
Then run:
npm run dev # start the dev server on http://localhost:3000
npm run typecheck # tsc --noEmit
npm run lint # eslint
npm run build # production build
Note: the database schema is currently managed directly in Supabase, and migration files aren't in the repo yet.
app/
(routes) resources, articles, hub, dashboard, profile, leaderboard, roadmap, admin, ...
api/calendar/ private .ics calendar feed
lib/
actions/ server actions (all return a typed ActionResult)
supabase/ session, public (cacheable) and service-role clients
ics.ts calendar export
ics-import.ts calendar import (pure module, no framework imports)
validation.ts shared server-side input validation
ratelimit.ts Upstash rate limiting
components/
hub/ planner UI, onboarding tour, focus mode
home/ signed-out homepage and signed-in dashboard
admin/ admin tables and SVG charts
proxy.ts middleware: session verification, homepage rewrite, activity tracking
DiplomaHub is developed with AI pair-programming (Claude Code). I own the product and engineering decisions: what to build, the architecture, diagnosing problems from production data, and reviewing and testing every change before it ships.
Built and maintained by Nathan (founder & CTO)
Feedback and bug reports are welcome via diplomahub.org/feedback or [email protected].
© 2026 Nathan Pieume. All rights reserved. The code is public for viewing only. See LICENSE.