ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
เข้าสู่ระบบสำหรับครูผู้สอน Tutor Advantage
Translation pending
EducationGitHub @Reading-Advantage-ThailandOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Tutor Advantage is a TypeScript monorepo containing three backend services and three Next.js applications:
identity-service — authentication, profiles, roles, and guardian consentlearning-service — classes, enrollment, lessons, and realtime sessionsfinance-mlm-service — payments, settlement, payouts, and finance operationsstudent-liff, tutor-pwa, and admin-console — user-facing applicationsCopy .env.example to .env and provide the required secrets and database
connection. Production services fail startup when required security settings
are absent. Development-only routes also require ENABLE_DEV_ROUTES=true and
are never registered in production.
npm ci
npx prisma generate --schema=packages/database/prisma/schema.prisma
Primary course and article catalogues are read from the local Reading Advantage
Workbook repository. Set DATABASE_URL_PRIMARY_ADVANTAGE when Primary's live
content database is available, then run:
npm run import:primary-workbooks -w @tutor-advantage/database
The import is safe to re-run. It uses workbook titles and ordering to map to published Primary articles, then stores only the resulting Primary article IDs. All lesson details are read from the Primary database at runtime; users, classrooms, assignments, and progress are never copied.
Generated dist/, .next/, coverage, service-worker, and Prisma client outputs
are intentionally not committed.
npm test
npm run test:coverage
npm run contract:check
npm run lint
npm run build:services
npm run build
The root test and build commands compile shared packages first. OpenAPI request
validation runs in every environment; response validation runs in tests/CI or
when OPENAPI_VALIDATE_RESPONSES=true.
Integration tests require a dedicated PostgreSQL database whose name contains
test:
copy .env.integration.example .env.integration
npm run test:integration
Set SKIP_INTEGRATION_TESTS=1 only when checking test compilation without a
database.
Create migrations during development:
npx prisma migrate dev --schema=packages/database/prisma/schema.prisma
Apply the committed migration chain in CI or deployment:
npx prisma migrate deploy --schema=packages/database/prisma/schema.prisma
npx prisma migrate status --schema=packages/database/prisma/schema.prisma
Do not use prisma db push for integration CI or production deployment.
GitHub Actions runs lint, coverage, contract checks, clean-database migration tests, integration tests, and all builds. Deployment is allowed only for the same commit after CI succeeds. A one-off migration job runs before application services; a failed migration blocks deployment.
Service Dockerfiles use Node.js 20 and build shared packages from source. The
OpenAPI specifications under packages/contracts/openapi are copied into each
runtime image.
Operational procedures for settlement are in
docs/runbooks/settlement-runbook.md.
Loading the full README.
Read the full README ↗