ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
우즈베크어 사용자를 위한 영어 학습 플랫폼 초급부터 IELTS까지 강의·단어·시험·청취 제공
O'zbek tilida so'zlashuvchilar uchun ingliz tili platformasi: Beginner'dan IELTS gacha darslar, lug'at, test va tinglash mashqlari.
교육TypeScript · JavaScriptGitHub @axmadjonilxamov-ship-it온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기LEarn english
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
O'zbek tilida so'zlashuvchilar uchun ingliz tili platformasi. Bosh sahifa — tungi shaharcha xaritasi: har bir tuman bitta daraja (Beginner'dan IELTS gacha), har bir bino esa bitta modul. Binoga bosilsa, egri yo'l bo'ylab chizilgan kurs yo'li ochiladi.README 전문 보기 ↗
O'zbek tilida so'zlashuvchilar uchun ingliz tili platformasi. Bosh sahifa — tungi shaharcha xaritasi: har bir tuman bitta daraja (Beginner'dan IELTS gacha), har bir bino esa bitta modul. Binoga bosilsa, egri yo'l bo'ylab chizilgan kurs yo'li ochiladi.
Saytda ikkita bo'lim bor: Shaharcha (darslar) va Tarjimon. Shaharchada binoni tanlasangiz, qizil mashina oq marshrut bo'ylab o'sha binoga yuradi va yetib borgach kurs yo'li ochiladi. Shift — turbo. Yo'ldagi svetafor qizil bo'lsa mashina o'zi to'xtaydi; Shift bosib turib o'tib ketsangiz, politsiya quvadi va yo'l qoidalari bo'yicha ingliz tilida test beriladi. Kursda 240 ta dars va 720 ta mashq bor — har darajaga 40 tadan. Barcha darslarni tugatgan foydalanuvchi ismi yozilgan sertifikat oladi.
| Qism | Nima ishlatilgan |
|---|---|
| Karkas | Next.js 16 (App Router, Turbopack) |
| Til | TypeScript (strict) |
| Dizayn | Tailwind CSS 4 |
| Baza | Neon Postgres (@neondatabase/serverless) |
| Kirish / ro'yxat | better-auth (email + parol) |
| Talaffuz | Brauzerning Web Speech API'si |
| Tarjima | Saytning o'z lug'ati + MyMemory API (kalitsiz) |
npm install
npm run dev
Keyin http://localhost:9999 ni oching.
.env.local faylida ikkita sozlama bo'lishi kerak (namuna: .env.example):
DATABASE_URL="postgresql://…" # Neon ulanish satri
BETTER_AUTH_SECRET="…" # openssl rand -base64 32
BETTER_AUTH_URL="http://localhost:9999"
npm run dev serverni butun tarmoqqa ochadi. Terminalda ikkita manzil chiqadi:
Local: http://localhost:9999 ← faqat shu kompyuter
Network: http://192.168.x.x:9999 ← bir Wi-Fi'dagi hamma
Ikkinchi manzilni telefon yoki boshqa kompyuterga bersangiz, sayt ochiladi.
Kirish va ro'yxatdan o'tish ham ishlaydi: src/lib/auth.ts dagi
trustedOrigins mahalliy tarmoq manzillariga ruxsat beradi, begona
saytlardan kelgan so'rovlarni esa rad etadi.
Internetdagi hamma uchun ochish kerak bo'lsa, saytni joylashtirish lozim
(masalan Vercel). U holda domeningizni .env ga yozing:
BETTER_AUTH_URL="https://sizning-domeningiz.com"
TRUSTED_ORIGINS="https://sizning-domeningiz.com"
Boshqa buyruqlar:
npm run build # ishlab chiqarish uchun yig'ish
npm run start # yig'ilgan saytni ishga tushirish
npm run lint # kod tekshiruvi
src/
app/
page.tsx Shaharcha xaritasi (bosh sahifa)
path/[level]/ Kurs yo'li — darslar egri yo'l bo'ylab
lesson/[level]/[index]/ Dars: chapda qoida, o'ngda mashq oynasi
translate/ Tarjimon (inglizcha ↔ o'zbekcha)
ielts/ IELTS: Writing ishlaydi, qolganlari tayyorlanmoqda
certificate/ Kurs tugagach beriladigan sertifikat
admin/ Admin panel (role = 'admin' kerak)
login/ register/ Kirish va ro'yxatdan o'tish
api/auth/[...all]/ better-auth ishlov beruvchisi
api/progress/ Tugatilgan darslarni saqlash
api/translate/ Tarjima so'rovi
api/enforcement/ Qoidabuzarlik va blok holati
api/admin/ Admin statistikasi va boshqaruvi
components/
city/CityMap.tsx Shaharcha (SVG)
path/RoadPath.tsx Kurs yo'li (SVG)
lesson/ Dars oynasi va 4 xil mashq
data/
levels/ Darslar — har darajaga bitta fayl (40 tadan)
courses.ts Daraja fayllarini birlashtiradi
words.ts grammar.ts Lug'at va grammatika
lib/
auth.ts auth-client.ts Autentifikatsiya
db.ts Bazaga ulanish
progress.tsx Natijalarni saqlash va sinxronlash
dictionary.ts Darslardan tuzilgan lug'at (tarjimon uchun)
writing-analysis.ts IELTS Writing tahlili (4 ta mezon)
city-scenery.ts Shaharchaning statik bezagi
legacy/ papkasida saytning eski, sof HTML/CSS/JS versiyasi turibdi — kerak
bo'lmasa, o'chirib tashlash mumkin.
src/data/levels/ papkasidan kerakli daraja faylini oching (masalan
beginner.ts), modulni toping va lessons massiviga yangi element qo'shing.
id, tartib raqami va progress avtomatik hisoblanadi.
{
title: "Darsning o'zbekcha nomi",
en: "English title",
min: 4,
text: "Qoidaning o'zbekcha tushuntirishi.",
rule: { icon: "📘", name: "Qoida", en: "Formula", desc: "Izoh" },
tasks: [
{ t: "choose", q: "She ___ a doctor.", opts: ["am", "is", "are"], a: "is", uz: "U shifokor." },
{ t: "build", s: "I am very happy", uz: "Men juda xursandman" },
{ t: "match", pairs: [["mother", "ona"], ["father", "ota"]] },
{ t: "listen", w: "family", uz: "oila" },
],
}
So'rov avval saytning o'z lug'atiga tushadi. Lug'at darslardagi barcha
so'zlar, gaplar va grammatika misollaridan avtomatik tuziladi
(src/lib/dictionary.ts), shuning uchun o'rganilayotgan gaplar darhol, internetsiz
va transkripsiya hamda misol bilan tarjima qilinadi.
Lug'atda topilmagan matn MyMemory tarjima xizmatiga yuboriladi — u bepul va API kalit talab qilmaydi. So'rov server tomonidan yuboriladi va bir soat keshlanadi.
Progress avval brauzerda (localStorage) saqlanadi, shuning uchun sayt hisobsiz
ham to'liq ishlaydi. Foydalanuvchi tizimga kirsa, brauzerdagi va bazadagi
darslar birlashtiriladi — hech narsa yo'qolmaydi.
Bazadagi jadvallar: user, session, account, verification (better-auth)
va lesson_progress.
Loyiha Vercel uchun tayyor. Vercel'da DATABASE_URL, BETTER_AUTH_SECRET va
BETTER_AUTH_URL (sayt manzili) o'zgaruvchilarini kiritish kifoya.
Shaharchadagi mashina qizil chiroqda avtomatik to'xtaydi. Shift bosib turib qizildan o'tsangiz — bu qoidabuzarlik: politsiya quvadi va yo'l qoidalari bo'yicha 10 ta inglizcha savol beriladi.
Blok qurilmaga qo'yiladi (localStorage + serverdagi device_block jadvali),
shuning uchun tabni yopib qayta ochish yordam bermaydi.
/admin sahifasi. Kirish ikki bosqichli:
role = 'admin' bo'lishi kerak:
update "user" set role = 'admin' where email = '[email protected]';
.env.local
faylidagi ADMIN_PASSWORD da saqlanadi va faqat serverda tekshiriladi —
sayt kodiga tushmaydi.Parol to'g'ri kiritilsa, imzolangan httpOnly cookie qo'yiladi va panel
8 soat ochiq turadi. "Qulflash" tugmasi uni bekor qiladi. Xato parol bir
daqiqada 5 martadan ko'p kiritilsa, urinishlar 5 daqiqaga to'xtatiladi.
Panelda: umumiy statistika, foydalanuvchilar ro'yxati (tugatgan darslari, qoidabuzarliklari), qoidabuzar qurilmalar va oxirgi hodisalar. Har bir foydalanuvchi yoki qurilmani vaqtincha bloklash, butunlay yopish, blokdan chiqarish va admin qilish mumkin.
Sayt PWA sifatida ishlaydi: Android va Windows'da brauzer o'zi "O'rnatish" taklifini beradi, iPhone'da esa Ulashish → Bosh ekranga qo'shish. O'rnatilgandan keyin ilova internetsiz ham ochiladi.
/ielts sahifasida to'rtta bo'lim bor. Hozircha Writing ishlaydi,
Listening, Reading va Speaking "soon…" deb turadi.
Writing — Task 1 (grafik tasvirlash, 150+ so'z, 20 daqiqa) va Task 2 (esse, 250+ so'z, 40 daqiqa). Taymer bor, yozilgani brauzerda saqlanadi, "Boshqasi" tugmasi yangi topshiriq beradi.
Yozganingiz IELTS ning to'rtta rasmiy mezoni bo'yicha tekshiriladi
(src/lib/writing-analysis.ts):
| Mezon | Nima tekshiriladi |
|---|---|
| Task Achievement / Response | Hajm, overview (Task 1), aniq pozitsiya (Task 2), misollar, xulosa |
| Coherence and Cohesion | Xatboshilar, bog'lovchilar xilma-xilligi, ishora so'zlari |
| Lexical Resource | Lug'at xilma-xilligi, kam uchraydigan so'zlar, parafraz, imlo |
| Grammatical Range | Gap uzunligi xilma-xilligi, ergash gap, shart gap, passive |
Bu avtomatik tahlil, rasmiy baho emas — o'lchab bo'ladigan narsalarni tekshiradi. Mazmun sifatini faqat inson ekspert baholay oladi.