ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기High-concurrency institutional elective registration system with real-time seat allocation, atomic transactions, and multi-role faculty dashboards. Powered by Next.js 16, TypeScript, Drizzle ORM, and Supabase.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Electify is a reliable, high-performance, and secure full-stack elective registration portal designed specifically for batch-based course selection in academic environments (e.g., SRM University cohorts). It guarantees a fair, first-come, first-served seat selection process with robust concurrency safeguards to prevent overbooking, even under heavy load.README 전문 보기 ↗Electify is a high-performance, secure full-stack university elective registration and cohort management system. It guarantees a 100% fair, zero-waitlist, first-come, first-served course selection process powered by atomic PostgreSQL transaction row-locking safeguards, optional real-time seat updates via Supabase Realtime, and an Academic Year Server isolation workflow.
/faculty/session-select), organizing operations by academic timelines (e.g. 2025, 2026, 2027) with complete workspace isolation.[email protected]) cannot be deleted, deactivated, or demoted.ELC-<year>-<ODD|EVEN>-<seq>) and PDF are issued only when the student finalizes their registration (or when the window closes), plus an audit log, a registration replay, and PDF exports.src/proxy.ts), and Bcryptjs password hashing (cost factor 12)electify/
├── .github/ # CI/CD Workflows (GitHub Actions)
├── docs/ # System Architecture, Database & Deployment Guides
│ ├── architecture/ # System design & folder structure documentation
│ ├── development/ # Code standards & testing workflows
│ ├── decisions/ # Architecture Decision Records (ADRs)
│ └── qa/ # QA regression and test reports
├── drizzle/ # Database migrations generated by Drizzle Kit
├── public/ # Static branding, presentation, and public assets
├── scripts/ # Database maintenance & mock data cleanup scripts
├── src/
│ ├── app/ # Next.js App Router Pages and Server Actions
│ │ ├── actions/ # Mutating server actions (admin, auth, tutor, register)
│ │ ├── api/ # API Route Handlers (health, switch-section)
│ │ ├── countdown/ # Pre-registration countdown waiting hall
│ │ ├── dashboard/ # Student registration portal & elective picker
│ │ ├── faculty/ # Staff & Administrative Control Panel
│ │ ├── login/ # Unified staff and student login portal
│ │ ├── maintenance/ # Global emergency maintenance redirect
│ │ ├── globals.css # Design tokens and Tailwind CSS rules
│ │ └── layout.tsx # Root application layout
│ ├── components/ # Reusable UI elements, modals, badges, data tables
│ ├── hooks/ # Custom reusable React hooks (e.g. useServerClock)
│ ├── lib/ # Shared utilities, database client, and security
│ │ ├── db/ # Drizzle client, unified schema, and seed scripts
│ │ ├── auth.ts # JWT signing, validation, and session guard rules
│ │ ├── cache.ts # Typed Next.js cache and route revalidation helpers
│ │ ├── password-policy.ts # Centralized password validation rules
│ │ ├── seat-ops.ts # ACID row-locking seat operations
│ │ ├── seats.ts # Pure seat display logic and thresholds
│ │ └── workspace.ts # Academic workspace resolution and security
│ ├── types/ # Centralized domain and API TypeScript contracts
│ │ ├── academic.ts # Hierarchy entities (faculties, depts, programmes)
│ │ ├── api.ts # API response and health check contracts
│ │ ├── registration.ts # Registration and seat availability types
│ │ └── session.ts # Authentication session and login types
│ └── proxy.ts # Next.js 16 proxy: route protection & session validation
├── tests/ # Automated test suites (unit, integration, and e2e)
├── drizzle.config.ts # Drizzle Kit configuration file
├── next.config.ts # Next.js configuration
└── package.json # Dependencies and npm scripts
The relational schema is defined in src/lib/db/schema.ts:
| Entity | Description |
|---|---|
faculties | SRM Master Faculties (Engineering, Management, Science & Humanities, etc.) |
departments | Academic departments tied to parent faculties (e.g., Computing Technologies) |
programmes | Degree programs (MCA, B.Tech CSE, M.Tech, etc.) with level (UG/PG) and semesters |
academic_batches | Cohort batches tied to programmes and graduation years |
sections | Cohort subdivisions (Section A, B, C, etc.) |
users | Unified user store for Students, Tutors, Coordinators, and System Admins |
tutor_sections | Multi-class mapping table assigning tutors to specific cohort sections |
registration_events | Registration windows and timelines (DRAFT, PUBLISHED, OPEN, CLOSED) |
elective_groups | Elective buckets (e.g., Professional Elective I) with selection constraints |
electives | Courses offering seat quotas (maxSeats, availableSeats, isFull) |
registrations | Official student registration master receipts |
student_registrations | Atomic elective course allocations mapped to confirmed registrations |
replay_events | Real-time audit log of student course choices and seat modifications |
| Feature / Action | Student | Class Tutor | Course Coordinator | System Admin |
|---|---|---|---|---|
| Access Countdown Waiting Room | ✅ | ❌ | ❌ | ❌ |
| Select & Confirm Electives | ✅ | ❌ | ❌ | ❌ |
| Browse Subject Explorer Preview | ✅ | ❌ | ❌ | ❌ |
| Switch Academic Year Server | ❌ | ✅ | ✅ | ✅ |
| Manage Assigned Class Rosters | ❌ | ✅ | ❌ | ❌ |
| Unlock / Reset Student Submissions | ❌ | ✅ | ✅ | ❌ |
| Create & Schedule Registration Events | ❌ | ❌ | ✅ | ✅ |
| Configure Electives & Quotas | ❌ | ❌ | ✅ | ✅ |
| Import Students via CSV | ❌ | ✅ (Class) | ✅ (Batch) | ✅ |
| Export Enrollment Records (PDF) | ❌ | ✅ (Class) | ✅ (Batch) | ✅ |
| Manage Role-Based Staff Invites |
[email protected]INITIAL_ADMIN_PASSWORD (or bootstrap setup)SYSTEM_ADMINRA2532241010001); e-mail addresses are not accepted on the student formOn Windows? Follow WINDOWS_SETUP.md, a complete step-by-step guide for Windows 10/11 with PowerShell commands and troubleshooting.
.nvmrc). npm test needs v22+.git clone https://github.com/matheshwaran-io/Electify.git
cd Electify
npm ci
Copy .env.example to both .env.local (read by Next.js and npm test) and .env (read by drizzle-kit, db:seed and db:reset):
cp .env.example .env.local && cp .env.example .env
Windows PowerShell: Copy-Item .env.example .env.local; Copy-Item .env.example .env
Fill in your database URL and a 32+ character JWT secret:
DATABASE_URL="postgresql://postgres:password@localhost:5432/electify"
DIRECT_URL="postgresql://postgres:password@localhost:5432/electify"
JWT_SECRET="your-secure-random-secret-at-least-32-chars-long"
⚠️
db:push,db:seedanddb:resetact on the database in.envwithout asking which host it is. Use them on a local, new database only.npm run db:migrateis not a supported path (its journal covers only migrations 0000–0002). See the maintenance manual §7.4 and §14.
# Create the tables from the schema (new, empty database only)
npm run db:push
# Seed university hierarchy and Root Administrator
npm run db:seed
# Run unit tests (fast, no database required)
npm run test:unit
# Run full integration test suite (requires PostgreSQL; WRITES fixture rows).
# `npm test` loads .env.local — point it at a LOCAL test database explicitly:
DATABASE_URL=postgresql://localhost:5432/electify_test DIRECT_URL=postgresql://localhost:5432/electify_test npm test
# End-to-end tests (local PostgreSQL + Chrome; recreates the throwaway electify_e2e DB)
npm run test:e2e
# Type-check TypeScript codebase
npm run typecheck
# Run ESLint on source code
npm run lint
# Run ESLint on scripts and tests
npx eslint scripts tests --format compact
npm run dev
Open http://localhost:3000 to view the application.
npm run build
npm start
ENOTFOUND or connection refused)Failed query: SELECT 1 or getaddrinfo ENOTFOUND.FATAL: JWT_SECRET must be configured with a secure random key in production.JWT_SECRET in .env.local to a random string of at least 32 characters: node -e "console.log(require('crypto').randomBytes(32).toString('base64'))".SETUP_SECRET in your environment variables, then invoke /api/health?setup=true passing x-setup-secret: <YOUR_SETUP_SECRET> in the header.Start here (current, source-verified):
Older design notes (some sections superseded — see the banner in each file):
Copyright © 2026 SRM Institute of Science and Technology. All rights reserved.
Developed for academic elective registration and cohort administration.
invite_codes | Single-use, role-based onboarding tokens for staff |
system_settings | Global flags such as system maintenance mode |
| ❌ |
| ❌ |
| ❌ |
| ✅ |
| Manage Academic Timelines / Years | ❌ | ❌ | ❌ | ✅ |
| Toggle System Maintenance Mode | ❌ | ❌ | ❌ | ✅ |