ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
Practise IELTS Writing Task 1 and 2 and Speaking Parts 1–3 with AI feedback and timed mock tests.
EducationTypeScript · PLpgSQLGitHub @vidtechnoOnlineOwner 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.
AI-powered IELTS Writing and Speaking practice at scorify.uz. Learners submit an essay or a spoken answer and get an estimated band, per-criterion scores, corrections and next steps within seconds.
Live in production. Personal practice only (Teacher Mode was removed). Sign-in with Google or Telegram.Read the full README ↗AI-powered IELTS Writing and Speaking practice, plus full Reading and Listening tests, at scorify.uz. Learners submit an essay or a spoken answer and get an estimated band, per-criterion scores, corrections and next steps within seconds.
Live in production. Personal practice only (Teacher Mode was removed). Sign-in with Google or Telegram.
/learn), the centre of the product: four open levels, Beginner (5 units, 88 lessons, 14 of them real-life scenes), Elementary / A1 (6 units, 90 lessons) Pre-Intermediate / A2 (6 units, 90 lessons) and Intermediate / B1 (6 units, 90 lessons). Short situation lessons (5–12 min) sit between the full lessons (15–25 min); every hard topic is followed by practice games (44 in Beginner, 62 in Elementary, 65 in Pre-Intermediate, 66 in Intermediate), then a unit test. Explanations in Uzbek, examples and exercises in English; every English text has a natural pre-recorded voice. 7 days free, then the Learn plan (details in docs/learning-course.md)./learn/start) and is placed at the right level (they can also pick a level or say "Bilmayman"); someone who picked a level that is too easy takes a quick test (/learn/upgrade/:level) to move up. Beginner and Elementary end with a skills-based final exam (grammar, vocabulary, reading, listening, writing, plus an unscored speaking part) and a certificate.src/features/learn/scene/, content in content/beginner/uN/, see docs/learning-course.md)./leaderboard)./reading, 5 full Academic tests to choose from, each with a name and a short description: 3 passages, 40 questions, 60 min, all official question types) and Listening (/listening, 5 tests: 4 sections, 40 questions, British voices recorded with Kokoro, exam mode plays once) scored in the browser with an estimated band, accuracy by question type and an answer review with a transcript (test 1 of each is free); Speaking has a topic bank of 40 Part 1 themes, 50 Part 2 cue cards and about 74 Part 3 sets browsable by category, a real-card layout and a one-minute preparation timer for Part 2; mock tests, a daily grammar test, vocabulary, AI Mentor./dashboard): continue card with the next steps of the course, streak and XP, IELTS practice row, plan usage, recent activity./support): opens a Telegram chat with @scorify_support with the user's ID, plan and page pre-filled; the same account takes payments.Part of the same product (same Supabase project, accounts, plans and results), not a separate service. Built in a separate Claude session; full details in docs/telegram-bot.md.
/auth (bot confirmation) and automatic sign-in in the Mini App (/tg); Google users can connect Telegram from Profile. Handled by the telegram-auth Edge Function.telegram_outbox → pg_net → bot). Also daily test reminders (18:00–20:00 Tashkent), plan expiry warnings, a Sunday weekly report and announcements of new blog posts.telegram-bot; scheduled jobs run with pg_cron.| Plan | Price / month | Writing | Speaking | Mock tests |
|---|---|---|---|---|
| Free (7-day Learn trial) | 0 | 3 | 2 | 0 |
Learn (internal slug go) | 49 000 UZS | 0 | 0 | 0 |
IELTS (internal slug plus) | 129 000 UZS | 50 | 30 | 3 |
Paying 6 months at once is 10% cheaper. Payment is made through Telegram (@scorify_support) and the plan is switched on by an admin.
Defined in src/lib/plans.ts.
/admin)touch_presence, src/hooks/usePresence.ts) every 2 minutes; the database writes at most once a minute per user (user_presence table, no direct access). "Online" means a heartbeat in the last 5 minutes. Statistics come from admin_user_stats(), the list from admin_users_list() (online_at)./admin/blog/:id), images, SEO fields, publish/draft, view stats.Server-rendered pages from Vercel serverless functions (api/*.ts), cached at the CDN (s-maxage=300; add ?nc=<timestamp> to bypass when verifying).
api/blog.ts: blog hub, posts and RSS (posts live in the blog_posts table).api/seo.ts: programmatic hubs and topic pages: Writing Task 2 questions, Task 1 samples (SVG charts from api/_lib/charts.ts), Speaking Part 1/2/3, vocabulary by topic and the band score calculator.api/_lib/course-pages.ts: public course pages in Uzbek (/ingliz-tili-darslari, the open levels and all their lessons) generated from data-course.ts (npx tsx scripts/build-course-seo.ts).api/_lib/learn-pages.ts: learning SEO that feeds the course: Uzbek grammar guides /ingliz-tili-qoidalari (data-learn-guides.ts, 15 guides), topic word lists /inglizcha-sozlar (data-learn-words.ts, 11 topics with IPA) and the English landing /learn-english-from-uzbek (hreflang pair with the Uzbek course hub). Checked by src/test/learn-seo.test.ts.api/sitemap.ts: sitemap of the course, guides, word lists, IELTS pages and blog posts.Scorify with alternate names) to win branded searches.api/_lib/data-*.ts; integrity is checked by src/test/seo-data.test.ts and faq.test.ts.vercel.json).Vendor chunks split in vite.config.ts (react, radix, supabase, motion, query). Auth, support and level-check pages are lazy; Dashboard, Learn and the lesson page are prefetched when the browser is idle. Plans are cached for 30 minutes, the subscription is shared through one query, and /audio/* and /assets/* are cached for a year (audio URLs carry ?v= from AUDIO_VERSION, raise it when recordings change). The editor and chart libraries are not in the landing preload set. AI Mentor, announcements, pricing modal and the goals chart load lazily. Dashboard data uses shared TanStack Query caches (src/hooks/useDashboardData.ts).
React 18, Vite, TypeScript, Tailwind + shadcn/ui, TanStack Query, framer-motion, recharts. Supabase (auth, Postgres with RLS, RPCs, storage, Edge Functions: grade-essay, grade-speaking, transcribe-audio, transcribe-lesson, ai-mentor, generate-grammar-test, process-mock-test, telegram-bot, telegram-auth). Hosted on Vercel; every push to main deploys automatically.
Copy .env.example to .env.local, fill in the public Supabase settings, then run:
npm ci
npm run dev
The development server uses port 8080. .env and .env.local are ignored by Git. Frontend builds contain only the public Supabase URL and publishable key. Never put a service-role key, OpenAI key or database password in a VITE_* variable.
npm run typecheck
npm test
npm run build
npm run lint
deno test --allow-env supabase/functions/_shared/
deno check supabase/functions/*/index.ts
Supabase project: bywqpgjojnqscelloxew. Frontend on Vercel at scorify.uz / www.scorify.uz.
VITE_SUPABASE_URL and VITE_SUPABASE_PUBLISHABLE_KEY for builds. The api/* functions read blog posts from Supabase REST.telegram-auth). Allow callback URLs for https://scorify.uz and https://www.scorify.uz.telegram_bot_token); deployment details are in docs/telegram-bot.md.OPENAI_API_KEY only in Supabase Edge Function secrets.execute_sql, in small pieces: a long migration can time out). Latest: 20261024000000_certificates, 20261026000000_lesson_completion_threshold, 20261027000000_security_and_load_hardening, 20261028000000_start_placed_and_upgrade_level, 20261029000000_user_presence_and_stats. Blog posts were inserted with ad-hoc SQL, not migrations. In the Supabase Auth settings enable leaked-password protection (a dashboard switch, not a migration).More course levels (Upper-Intermediate and up), an Android app (APK), a broader online payment flow, mistake notebook and daily Telegram exercises, A/B conversion tests, more blog and programmatic SEO content, Bing/Yandex indexing.