ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证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 | ❌ | ❌ | ❌ | ✅ |