ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
Practice SAT-style questions with tutor guidance, full-length exams, and progress tracking.
EducationTypeScript · PLpgSQLGitHub @Lyceon-TeamOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
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
Full Lyceon.ai monorepo
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
An AI-powered SAT practice application with RAG (Retrieval-Augmented Generation) capabilities, featuring quality practice questions, vector search functionality, and robust production deployment.
• Content Operations: Admin-managed question review and quality controls
• Vector Search: Semantic search using embeddings stored in PostgreSQL and Supabase
• AI Tutoring: Retrieval-Augmented Generation for personalized assistance
• Practice Sessions: Track progress and get instant feedback
• Admin Dashboard: Manage questions, review queues, and system healthRead the full README ↗An AI-powered SAT practice application with RAG (Retrieval-Augmented Generation) capabilities, featuring quality practice questions, vector search functionality, and robust production deployment.
Install pnpm:
# Recommended: Standalone installer
curl -fsSL https://get.pnpm.io/install.sh | sh -
# or via npm (if already installed)
npm install -g pnpm
Required:
DATABASE_URL=postgresql://... # PostgreSQL connection string
NODE_ENV=development # or production
Optional:
# AI/ML
GEMINI_API_KEY= # Google Gemini API key
OPENAI_API_KEY= # OpenAI API key for embeddings
EMBEDDINGS_MODEL=text-embedding-3-small # Embedding model to use
# Vector Search (Supabase)
SUPABASE_URL=https://...
SUPABASE_SERVICE_ROLE_KEY=...
# Security
ALLOWED_ORIGINS=http://localhost:3000,http://localhost:5000 # CORS origins (comma-separated)
Important: This project uses pnpm exclusively. Do not use npm install or yarn install.
pnpm install
Development mode:
pnpm run dev
Production build:
pnpm run build
pnpm run preview
The app will be available at http://localhost:5000
The application provides comprehensive health monitoring:
/healthz - Primary Health CheckReturns system health status and diagnostics. This endpoint works even if the database is unavailable.
Response:
{
"ok": true,
"version": "1.0.0",
"nodeEnv": "development",
"uptime": 123.45,
"hostname": "server-name",
"hasDbUrl": true,
"dbReachable": true,
"hasSupabase": true,
"embeddingsModel": "text-embedding-3-small",
}
Fields:
ok: Overall health statusversion: Application versionnodeEnv: Current environment (development/production)uptime: Server uptime in secondshostname: Server hostnamehasDbUrl: Whether DATABASE_URL is configureddbReachable: Whether database connection is workinghasSupabase: Whether Supabase is configuredembeddingsModel: Active embeddings model/api/health - Legacy Health CheckReturns configuration details:
{
"config": {
"ocrProvider": "auto",
"embedProvider": "openai",
"vectors": false,
"llmQA": false
}
}
The application uses lazy database initialization to ensure it can start even when:
DATABASE_URL is not configuredBoot sequence:
/healthz endpoint (no DB required)If the database fails to connect:
/healthz shows dbReachable: falseThe app supports flexible authentication:
Local Auth (Default)
Rate Limiting:
Security Headers:
Request Monitoring:
Never write SQL migrations manually. Use Drizzle's schema push:
# Safe schema sync
pnpm run db:push
# Force sync (if data loss warning)
pnpm run db:push --force
To generate embeddings for questions that don't have them:
tsx scripts/backfill-embeddings.ts
Features:
To enable vector search in Supabase, run:
-- See database/supabase-vector-setup.sql
-- Creates pgvector extension and question_embeddings table
GET /api/health - API health checkGET /healthz - Service health checkGET /api/admin/questions/needs-review - Review queueGET /api/admin/questions/duplicates - Duplicate detection viewGET /api/admin/questions/statistics - Question quality metricsPOST /api/auth/signup - Email/password signupPOST /api/auth/signin - Email/password sign inPOST /api/auth/signout - Sign out (clears auth cookies)POST /api/auth/refresh - Refresh session from refresh cookiePOST /api/auth/consent - Submit guardian consent (under-13 flow)GET /api/auth/debug - Auth diagnostics endpointGET /api/auth/google/start - Start Google OAuth flowGET /auth/google/callback - OAuth callback endpointGET /api/profile - Canonical current-user profile payloadGET /api/auth/user and POST /api/auth/exchange-session (both return 404)The application uses structured logging with multiple channels:
NODE_ENV=productionpnpm run db:pushpnpm run build && pnpm run preview/healthz endpoint for health statusThe server binds to 0.0.0.0:5000 for container compatibility.
Health check command:
curl -f http://localhost:5000/healthz || exit 1
├── apps/api/ # Backend API
│ └── src/
│ ├── routes/ # API route handlers
│ ├── lib/ # Utilities (embeddings, etc.)
│ ├── db/ # Database client
│ └── middleware/# Express middlewares
├── client/ # React frontend
│ └── src/
│ ├── pages/ # Page components
│ ├── components/# Reusable components
│ └── lib/ # Frontend utilities
├── shared/ # Shared types and schemas
├── server/ # Express server bootstrap
├── scripts/ # Utility scripts
└── database/ # Database schemas
shared/schema.tsapps/api/src/routes/client/src/pnpm run test:e2e/healthz endpoint - it should work even with DB issuesDATABASE_URL is set correctlyNEXTAUTH_ENABLED matches your setupOPENAI_API_KEY or GEMINI_API_KEY is setEMBEDDINGS_MODEL configurationSUPABASE_URL and SUPABASE_SERVICE_ROLE_KEYSee the full runbook here: docs/SECURITY_RUNBOOK.md
To run the security regression tests locally (PowerShell):
# From the project root
pnpm install
pnpm run test:security
.env contains valid SUPABASE_URL and GEMINI_API_KEY for full test coverage.The Score Projection Engine calculates estimated SAT scores using College Board domain weights and student mastery data.
const SCORING_MODEL = {
baseScore: 400, // 200 per section minimum
rangePerSection: 600, // 800 max - 200 min
weights: {
math: {
'algebra': 0.35,
'advanced_math': 0.35,
'problem_solving': 0.15,
'geometry': 0.15
},
rw: {
'craft_structure': 0.28,
'information_ideas': 0.26,
'standard_english': 0.26,
'expression_ideas': 0.20
}
}
};
Section_Mastery = Sum(Domain_Mastery * Domain_Weight)Projected_Section = 200 + (600 * Section_Mastery)Variance = 100 / Math.cbrt(totalQuestions)Range_Low = Score - VarianceRange_High = Score + VarianceBefore calculation, mastery data is decayed based on inactivity:
Decay_Factor = 0.95 ^ Weeks_Inactive
This ensures students who neglect a domain see their projected score drop, incentivizing regular practice.
GET /api/progress/projection
Returns:
projection.composite: Total projected score (400-1600)projection.math: Math section score (200-800)projection.rw: Reading & Writing section score (200-800)projection.range.low/high: Confidence intervalprojection.breakdown: Per-domain contribution detailsMIT
projection.math: Math section score (200-800)