ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
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.