ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Your Schoology grades, made clear. Exact grades, GPA, what-if scores, grade history and an AI assistant, with a Chrome extension.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Your grades. Finally, clear.
Klar turns your Schoology gradebook into one calm dashboard: exact grades, your GPA, what-if scores, grade history, and an AI assistant that answers questions about your own grades.
Every class Exact grades and categories, side by side.
What-if Try a score and see your grade move. Find the exact score you need.
Ask Klar Ask anything about your grades. Math comes from Klar's grade engine, not guesswork.
History Every change, from your first sync.README 전문 보기 ↗Klar turns your Schoology gradebook into one calm dashboard: exact grades, your GPA, what-if scores, grade history, and an AI assistant that answers questions about your own grades.
Open Klar · Chrome extension · Privacy Policy · How it works · Run it locally
Klar never asks for your Schoology password, never reads your cookies, and can't change anything in Schoology. Every student's data is isolated by Postgres row-level security. Details: docs/SECURITY.md.
Klar is independent and is not affiliated with, endorsed by, or sponsored by Schoology or PowerSchool.
| Layer | Technology |
|---|---|
| Web app | Next.js 16 (App Router), React 19, TypeScript, Tailwind CSS v4 |
| Database | Neon Postgres with per-student row-level security |
| Accounts | Neon Auth (managed Better Auth): email and password, password reset |
| AI | Vercel AI SDK through Vercel AI Gateway (openai/gpt-6-luna) |
| Extension | Chrome Manifest V3, Vite, a strict message protocol shared with the app |
| Shared logic | packages/core: grade engine, what-if solver, sync schema, Schoology parsers |
| Tests | Vitest (unit, plus the real migration in PGlite) and Playwright (the real extension end to end) |
| Hosting | Vercel |
apps/web Next.js app: landing page, sign-in, onboarding, dashboard, API
db/migrations: Postgres schema with row-level security (run on Neon)
apps/extension Chrome MV3 extension that reads the student's own gradebook, with consent
packages/core Framework-free logic: grade engine, what-if solver, sync schema,
Schoology page parser, official API mapper, extension protocol
brand/ Logo and icon SVG sources plus the PNG build script
e2e/ Playwright tests: the real extension in Chromium, a fake Schoology, a Neon test branch
e2e-shots/ The script that captures the product screenshots
docs/ Integration research, security model, brand notes
Requires Node 22+ and the Neon CLI (npm i -g neon@latest).
npm install
neon login
neon link --project-id <your-project-id> --branch production -y
npm run env:pull # writes the Neon variables into apps/web/.env.local
npm run db:migrate -w web # applies db/migrations over the direct (unpooled) connection
Add the secrets Neon doesn't provide to apps/web/.env.local, then start the app:
echo "NEON_AUTH_COOKIE_SECRET=$(openssl rand -base64 36)" >> apps/web/.env.local
echo "NEXT_PUBLIC_APP_URL=http://localhost:3000" >> apps/web/.env.local
echo "AI_GATEWAY_API_KEY=..." >> apps/web/.env.local # optional: turns on Ask Klar
npm run dev # http://localhost:3000
npm run env:pull only rewrites the Neon variables, so these are kept. Every option is listed in apps/web/.env.example, including the optional official Schoology API (SCHOOLOGY_CONSUMER_KEY, SCHOOLOGY_CONSUMER_SECRET, TOKEN_ENCRYPTION_KEY).
Extension:
npm run build:extension # for http://localhost:3000
KLAR_APP_ORIGINS="https://useklar.vercel.app" npm run build:extension # for production
In Chrome: chrome://extensions, turn on Developer mode, Load unpacked, choose apps/extension/dist.
npm test # core, extension and web unit tests
npm run typecheck
npm run test:e2e # builds the extension, starts Klar against the e2e Neon branch, runs the end-to-end suite
npm run screenshots # recaptures the product screenshots (fictional example data)
e2e, never production): sign-up, connecting, syncing a newly posted score, course details, sign-out, the official-API connection (approved and denied), and forgot password.Set up the e2e branch once:
neon branches create --name e2e --parent production
neon env pull --branch e2e --file apps/web/.env.e2e
npx playwright install chromium
The suite starts its own dev server on port 3000, so stop any other server on that port first.
Pushes to main deploy to production on Vercel (project root: apps/web). Preview deployments are created for other branches and pull requests.
DATABASE_URL, DATABASE_URL_UNPOOLED, NEON_AUTH_BASE_URL, NEON_AUTH_JWKS_URL, NEON_AUTH_COOKIE_SECRET, NEXT_PUBLIC_APP_URL, and AI_GATEWAY_API_KEY for Ask Klar.neon neon-auth domain add https://your-domain.npm run db:migrate -w web with DATABASE_URL_UNPOOLED when the schema changes.neon neon-auth config email-provider); the shared sender is for getting started.The Schoology integration was built to Schoology's current page markup and documented API and tested against faithful fakes. If numbers ever differ from Schoology's, save the gradebook page (names removed) under packages/core/test/fixtures/ and extend the parser tests. Unrecognized pages produce a clear PARSE_FAILED error, never guessed numbers.