ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
Your internship search, as a route. Six stages, one next step at a time.
Translation pending
EducationTypeScript · JavaScriptGitHub @timiojoeman-debugOnlineOwner 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
AI-powered internship navigation platform for university students: career direction, CV optimization, job discovery, networking, interview prep, and application tracking.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
PathFinder is a career operating system for university students. It guides them
through the entire internship journey — defining a career direction, optimizing
their CV, discovering roles, networking strategically, preparing for interviews,
and tracking applications — where every action feeds one persistent Career
Profile that the AI mentor reasons over.
Under the hood, each phase emits typed career events; a derived Career
Profile, a progress engine, and a recommendation engine project over that event
stream to drive cross-phase intelligence and the AI mentor's memory.Read the full README ↗PathFinder is a career operating system for university students. It guides them through the entire internship journey — defining a career direction, optimizing their CV, discovering roles, networking strategically, preparing for interviews, and tracking applications — where every action feeds one persistent Career Profile that the AI mentor reasons over.
| Phase | Surface | What it does |
|---|---|---|
| 1 — Career Direction | /direction | Wizard + open-ended explore mode → a direction statement with a specificity score |
| 2 — CV Optimizer | /cv | Upload PDF/DOCX, ATS audit, job-match scoring, skill-gap project ideas |
| 3 — Job Discovery | /jobs | Search (Adzuna / JSearch), paste job descriptions, compatibility analysis |
| 4 — Networking | /networking | AI outreach (recruiter / hiring manager / peer), coffee-chat prep, referral packages, LinkedIn analysis |
| 5 — Interview Prep | /interview | NeetCode/LeetCode tracker, STAR story builder, AI question generator, company briefings |
| 6 — Application Tracker | /tracker | Kanban pipeline + consistency dashboard |
Under the hood, each phase emits typed career events; a derived Career Profile, a progress engine, and a recommendation engine project over that event stream to drive cross-phase intelligence and the AI mentor's memory.
localStorage and hydrated from the DB on loginjose) + PBKDF2 password hashing, httpOnly cookiestext-embedding-3-small for RAG retrievalpdf-parse (PDF), mammoth (DOCX)npm install
cp .env.example .env.local # then fill in the values below
npm run dev
Open http://localhost:3000.
The app is built to run with missing keys:
localStorage-only state. Sign-up and
cross-device persistence require Supabase.Supabase and JWT are resolved lazily, so npm run build succeeds with no env at all.
See .env.example for the full list. The important ones:
| Variable | Required for | Notes |
|---|---|---|
OPENAI_API_KEY | AI features | Without it, AI routes return fallbacks |
NEXT_PUBLIC_SUPABASE_URL | Persistence / auth | Supabase project URL |
NEXT_PUBLIC_SUPABASE_ANON_KEY | Persistence / auth | Public anon key (client) |
SUPABASE_SERVICE_ROLE_KEY | Server DB access | Server only — bypasses RLS; never expose to the client |
JWT_SECRET | Auth | Session signing secret; generate a strong random value |
ADZUNA_APP_ID / ADZUNA_APP_KEY | Job search | Adzuna API |
JSEARCH_API_KEY | Job search | JSearch (RapidAPI) fallback |
RESEND_API_KEY / EMAIL_FROM | Verification / password reset; without a key, links are logged to the server in dev | |
AI_DAILY_QUOTA | AI rate limiting | Per-user daily cap (default 25) |
LOG_LEVEL | Logging | debug | info | warn | error |
The schema lives in supabase/migrations/ — tables, RLS
policies, and triggers. See supabase/README.md for setup.
To apply migrations to a fresh Supabase project with the Supabase CLI:
supabase link --project-ref <your-project-ref>
supabase db push
Authorization model: the app authenticates with a custom JWT, not Supabase
Auth, so auth.uid() is null on server calls. The server therefore uses the
service-role client and enforces row ownership in the application layer
(.eq('user_id', userId)). RLS + owner policies are enabled as defense-in-depth.
src/
├── app/ # App Router: pages + API routes
│ ├── page.tsx # Marketing landing (3D hero)
│ ├── dashboard/ # Main dashboard / phase pipeline
│ ├── direction/ cv/ jobs/ networking/ interview/ tracker/ # The six phases
│ ├── login/ start/ verify-email/ forgot-password/ reset-password/ # Auth flows
│ ├── settings/ privacy/ terms/ # Account & legal
│ └── api/ # Route handlers (auth, cv, jobs, direction, …)
├── components/ # UI + per-feature components (incl. pf/ design system)
├── lib/
│ ├── auth.ts # JWT + PBKDF2
│ ├── api.ts # Zod request validation helpers
│ ├── rate-limit.ts # Sliding-window rate limit + per-user AI quota
│ ├── ai/ # mentor-engine, retrieval (RAG), naturalness-check
│ ├── db/ # Typed data-access layer
│ ├── methodology/ # Career frameworks (Four Pillars, CV Blueprint, …)
│ ├── prompts/ # Per-feature AI prompt builders
│ ├── stores/ # Zustand stores (app-store, auth-store)
│ └── supabase/ # Client factories (anon + service-role)
└── middleware.ts # Rate limiting, JWT verification, AI quota
npm run dev # Dev server (localhost:3000)
npm run build # Production build
npm run start # Serve the production build
npm run test # Vitest (watch)
npm run test:run # Vitest (once)
npm run lint # ESLint
.github/workflows/ci.yml runs on pushes and PRs to
main/master: typecheck (tsc --noEmit) and tests are hard gates; lint is
surfaced non-blocking (pre-existing debt in legacy modules); the production build
must pass. No secrets are needed — Supabase/JWT resolve lazily and the build is
env-safe.
Private / unlicensed. All rights reserved.