ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
Real interview, placement, exam and certification experiences shared by seniors and alumni from our college.
EducationTypeScript · PLpgSQLGitHub @RajdeshmukhgitOnlineOwner 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
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗CI/CD (CCA 2): this repo is built and deployed by Jenkins on AWS → Docker Hub → Kubernetes (Minikube). See DEPLOYMENT.md for the pipeline report, and
Jenkinsfile,Dockerfile,k8s/,infra/for the files.
A college-only platform where seniors and alumni write up their interview, internship, exam and certification experiences, and juniors read, search, comment and connect. Built for the PBL III project from the Version 1.0 PRD.
The placeholder name is SeniorCircle. Change it in one place: lib/constants/site.ts.
npm install
npm run dev
Open http://localhost:3000. With no Supabase keys the app runs on sample data held in memory, and the sign-in page offers one-click demo accounts for every role (junior, senior, verified alumna, pending alumnus, admin). Demo data resets when the server restarts.
This folder is inside OneDrive.
node_modulesand.nextcontain tens of thousands of small files, so either pause OneDrive sync while you work or move the project to a folder outside OneDrive (for exampleC:\dev\SEMproj).
supabase/migrations/0001_schema.sql. The student email domain is already set to mitwpu.edu.in in college_email_domain() near the top.supabase/migrations/0002_search_insights_votes.sql. The second one adds pgvector, the insight columns and voting; run them in order..env.example to .env.local and fill in:
NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_ANON_KEY (Project Settings → API)GEMINI_API_KEY for semantic search and insights (see Assistant chatbot below)COLLEGE_EMAIL_DOMAIN (optional; defaults to mitwpu.edu.in)NEXT_PUBLIC_SITE_URL (http://localhost:3000 locally, your Vercel URL in production)<site url>/auth/callback to the redirect URLs.npm run dev. The demo banner disappears.Sign up through the site, then run this in the SQL editor:
update public.profiles set role = 'admin', verification_status = 'not_required'
where email = 'you@your-college-domain';
Admins are only ever created this way. Nothing in the app can grant the role.
After the first admin or senior account exists, run supabase/seed.sql to load ten sample experiences owned by that account.
The seed carries no votes, because every sample post belongs to one account and nobody may vote on their own experience. Trending ranks them by recency until members start voting. The samples also arrive without embeddings or insights: open the admin dashboard and use Search & Insights to process them.
| Read | Comment, connect, report | Post | Admin dashboard | |
|---|---|---|---|---|
| Junior | yes | yes | no | no |
| Senior | yes | yes | yes | no |
| Alumni, pending or rejected | yes | no | no | no |
| Alumni, verified | yes | yes | yes | no |
| Admin | yes | yes | yes | yes |
@mitwpu.edu.in email (for example [email protected]). Alumni sign up with a personal email and start as pending.lib/actions/.profiles table. get_contact_email() returns one only to its owner, an admin, or someone with an accepted connection.lib/data/repo.ts defines one interface with two implementations, supabase.ts and mock.ts. Pages never know which is live.app/ routes (home, feed, experiences, auth, profile, connections, notifications, admin, about)
components/ layout, home, experiences, filters, notifications, connections, profile, admin, auth, ui
lib/actions/ server actions (auth, posts, comments, connect, notifications, reports, admin, profile)
lib/auth/ session lookup and permission rules
lib/data/ repository interface, Supabase and mock implementations, feed filters
lib/constants/ site name, branches, categories, batch-year rules
lib/chat/ assistant chatbot: models, memory, retrieval, prompt
lib/ai/ model keys, embeddings, structured extraction, enrichment
lib/validation/ zod schemas
lib/mock/seed.ts demo data
supabase/ migrations (schema, triggers, RLS, grants, vectors, votes) and seed
middleware.ts session refresh and sign-in redirect for protected routes
Signed-in members get an Ask button on every page. It answers questions such as "What should I prepare for Barclays?" from the experiences in the database and links to the ones it used. It also answers general career questions and questions about how the site works.
GEMINI_API_KEY the vector half is skipped and retrieval falls back to keywords alone.GROQ_MODEL in .env.local to a current one from console.groq.com/docs/models. Add GROQ_API_KEY, and optionally GEMINI_API_KEY, to .env.local and restart the server. Without a key the assistant lists the matching experiences instead of writing an answer.lib/hooks/useSpeech.ts.lib/chat/ (models, memory, retrieval, prompt), app/api/chat/route.ts (streaming endpoint) and components/chat/ (the widget).The design is adapted from the Reflex Loop voice agent (github.com/Aditya-Patil27/chat-bot): the same Groq and Gemini pairing, streaming replies that can be stopped mid-answer, and a conversation memory that keeps recent turns and summarises older ones. Its speech input and output are done here with the browser’s own speech services instead of Deepgram.
lib/ai/extract.ts). These show as At a glance above the write-up and as chips on the cards. It runs after the response, so posting stays fast, and it never blocks a save: an experience with no insights simply displays as it always did. Older posts are caught up from the admin dashboard, five at a time.sign(score), which collapses every unvoted post to exactly zero, so new experiences sort arbitrarily. Here the age always counts and the score shifts it. Twelve and a half hours of age is worth one factor of ten in score. The value is stored on the row and recomputed by a trigger when a vote changes, so reads are a plain indexed sort.admin_vote_breakdown(), and it is on the dashboard so a post being quietly buried is visible to somebody. Nobody may vote on their own experience; the policy in migration 0002 enforces that, not just the interface.post_previews view.Not built, by design (PRD V1 exclusions): chat, push or email notifications, mobile app, multi-college support.
npm run typecheck
npm run lint
npm run build
Push to GitHub, import the repository in Vercel, add the four environment variables from .env.example, and deploy. Then update the Site URL and redirect URL in Supabase to the Vercel domain.