ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
Bird photography by Ian Shultz. Fine art wildlife and avian photography.
Translation pending
EducationTypeScript · PLpgSQLGitHub @ianshultz24OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
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
Loading the full README. The saved excerpt is shown below.
A personal college-applications tracker: a grid of glassy school tiles that grow into a detail card, with an edit-all mode, drag-to-reorder and a settings panel. Built from the Claude Design file College Tracker States.Read the full README ↗A personal college-applications tracker: a grid of glassy school tiles that grow into a detail card, with an edit-all mode, drag-to-reorder and a settings panel. Built from the Claude Design file College Tracker States.
https://ianshultz.com/collegetracker (every other path on the domain redirects to https://shultzphotography.com)@supabase/ssr) · dnd-kit · react-colorful · sonner · lucide-react · browser-image-compressionct_* tables and the ct-images bucket)npm install.env.local (copy .env.example) with:
NEXT_PUBLIC_SUPABASE_URL=https://zfstmligspyjuxycejrt.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=<publishable key from Supabase → Project Settings → API Keys>
Only the public (publishable/anon) key goes here — never the service_role/secret key.npm run dev, then open http://localhost:3000/collegetracker and sign in.http://localhost:3000/collegetracker/dev/preview runs the whole app on in-memory sample schools (nothing is saved; add ?empty=1 for the empty state). In the browser console, window.__ctFail = true makes every save fail so you can see the rollback + error toast. This page returns 404 Not Found in production builds.
npm test # unit tests (dates in Pacific time incl. DST, validation, drafts, ordering)
npm run lint
npm run build # production build (must pass before deploying)
git remote add origin https://github.com/<you>/college-tracker.git
git push -u origin main
NEXT_PUBLIC_SUPABASE_URL = https://zfstmligspyjuxycejrt.supabase.coNEXT_PUBLIC_SUPABASE_ANON_KEY = the same publishable key as in .env.localhttps://<project>.vercel.app/collegetracker and sign in.ianshultz.com (and www.ianshultz.com, set to redirect to the apex). Vercel shows the DNS records to add at your registrar (usually an A record 76.76.21.21 for the apex and a CNAME cname.vercel-dns.com for www). Wait for the green check.https://ianshultz.com/ and https://ianshultz.com/anything should land on shultzphotography.com; https://ianshultz.com/collegetracker should show the sign-in screen. (The redirects are temporary — 307 — so you can change them later without browsers caching them.)https://ianshultz.com/collegetracker and add it to Redirect URLs. Sign-in is email + password so this only matters for password-reset emails, but it keeps emails pointing at the right place.| Object | What it holds | Access |
|---|---|---|
public.ct_schools | one row per school (all fields optional except name; custom_fields is an ordered list of {label, value}; position is a fractional sort key) | RLS: only rows where user_id = auth.uid() |
public.ct_settings | one row per user: colors, background photo, blur, dim, tile size, names, shimmer, my SAT | RLS: same |
storage bucket ct-images | <user id>/logos/<school>-<time>.webp and <user id>/backgrounds/<time>.webp | public read; upload/replace/delete only inside your own <user id>/ folder; WebP/PNG/JPEG only, 5 MB max |
The schema lives in supabase/migrations/ and has already been applied to Workflow. To recreate it in a fresh project, run those files in order in the Supabase SQL editor (or supabase db push with the Supabase CLI).
Dates (deadline, decision_start, decision_end) are calendar dates in your local time zone — the app never parses them as UTC, and countdowns run to the end of the day.
Backups: Settings → Data → Download backup saves a JSON file with every school and your settings (logos/backgrounds are referenced by their storage path).
next.config.ts basePath /collegetracker, redirects, security headers
src/proxy.ts refreshes the Supabase session; sends signed-out visitors to /sign-in
src/app/page.tsx loads your schools + settings on the server, then hands off to the client
src/app/sign-in/ sign-in screen
src/app/dev/preview/ dev-only in-memory preview
src/components/tracker/ Tracker (layout), Grid + Tile, Card (view + form), SettingsPanel, store (optimistic saves)
src/lib/ dates, colors (tile looks from the design), layout, validation, drafts, Supabase backends
supabase/migrations/ database schema, RLS and storage policies
node_modules and .next, which can make the dev server slow ("waiting for the filesystem to settle"). If that bothers you, pause OneDrive while developing or move the project to a non-synced folder such as C:\dev\college-tracker.