ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
Oponow is a platform to prepare for competitive exams: structured syllabus like the BOE, tests with literal questions from official calls, and a study agenda.
AI translation
Oponow es una plataforma para preparar oposiciones: temario estructurado como el BOE, tests con preguntas literales de convocatorias oficiales y una agenda de estudio.
EducationTypeScript · CSSGitHub @rgonzdelOnlineOwner 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
Loading the full README. The saved excerpt is shown below.
MVP de Oponow (temarios + tests de oposiciones): backend (apps/api), web (apps/web), app móvil (apps/mobile) y el paquete de base de datos (packages/db). • Node.js 20+ • pnpm (corepack enable si no lo tienes) • Un proyecto de Supabase (gratis vale para desarrollo) — no hace falta DockerRead the full README ↗
MVP de Oponow (temarios + tests de oposiciones): backend (apps/api), web
(apps/web), app móvil (apps/mobile) y el paquete de base de datos
(packages/db).
| Pieza | Dónde vive |
|---|---|
| Web | Vercel |
| API | Render |
| Postgres | Supabase |
corepack enable si no lo tienes)cp .env.example .env
# genera un JWT_ACCESS_SECRET real y pégalo en .env, p.ej.:
# node -e "console.log(require('crypto').randomBytes(48).toString('hex'))"
pnpm install
Crea un proyecto en supabase.com, copia su
conexión directa (Project Settings > Database > Connection string >
"Direct connection", puerto 5432 — no el pooler Supavisor en modo
"Transaction", ver el comentario en .env.example) y pégala como
DATABASE_URL en .env (rol admin postgres, la password la fijaste al
crear el proyecto). Genera también POSTGRES_APP_PASSWORD y
POSTGRES_AUTH_SERVICE_PASSWORD, y completa DATABASE_APP_URL /
DATABASE_AUTH_URL con el mismo host pero esos roles.
pnpm db:bootstrap-roles # crea app_user y auth_service en el proyecto (una sola vez)
pnpm db:generate # genera SQL de migración a partir del schema de Drizzle
pnpm db:migrate # aplica las migraciones (rol admin)
pnpm db:rls # aplica grants + políticas RLS (rol admin)
pnpm --filter @oponow/db build
pnpm --filter @oponow/api dev
La API queda en http://localhost:3000.
Nota:
docker/contiene un Postgres local equivalente (con roles autoprovisionados víadocker/init/01-roles.sh) por si prefieres no depender de un proyecto Supabase para desarrollo local, pero el flujo soportado en staging/producción es Supabase.
| Rol | Usado por | RLS |
|---|---|---|
oponow_admin | migraciones, seed | dueño de las tablas, no sujeto a RLS |
app_user | API, casi todo | NOBYPASSRLS, sujeto a todas las políticas |
auth_service | solo AuthService | NOBYPASSRLS, con políticas RLS permisivas dedicadas + GRANT a nivel de columna en usuarios/refresh_tokens — necesario para resolver login/refresh antes de conocer la identidad del llamante (algunos proveedores gestionados, Supabase incluido, no dejan conceder BYPASSRLS a un admin no-superusuario) |
Cada request de la API fija app.current_user_id / app.current_plan
(vía set_config, ver apps/api/src/database/rls-context.middleware.ts)
sobre una conexión reservada del pool de app_user antes de tocar la base
de datos. Las políticas están en packages/db/src/rls/policies.sql.
apps/api NestJS: auth (registro/login/refresh/logout) + contexto RLS
packages/db Schema Drizzle, migraciones, políticas RLS
docker/ Postgres local + creación de roles