{"id":50410897,"url":"https://github.com/alsheroziy/web-app","last_synced_at":"2026-05-31T03:30:52.547Z","repository":{"id":355008539,"uuid":"1074912892","full_name":"alsheroziy/web-app","owner":"alsheroziy","description":null,"archived":false,"fork":false,"pushed_at":"2026-01-20T07:38:05.000Z","size":1465,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-01T12:33:31.856Z","etag":null,"topics":["bot","rash-model"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alsheroziy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-12T17:58:26.000Z","updated_at":"2026-04-15T12:53:49.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/alsheroziy/web-app","commit_stats":null,"previous_names":["alsheroziy/web-app"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/alsheroziy/web-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alsheroziy%2Fweb-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alsheroziy%2Fweb-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alsheroziy%2Fweb-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alsheroziy%2Fweb-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alsheroziy","download_url":"https://codeload.github.com/alsheroziy/web-app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alsheroziy%2Fweb-app/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33718446,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bot","rash-model"],"created_at":"2026-05-31T03:30:48.926Z","updated_at":"2026-05-31T03:30:52.541Z","avatar_url":"https://github.com/alsheroziy.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Onatili RASH Test - Telegram Mini App\n\nOna tili (O'zbek tili) bilimini tekshirish uchun Telegram Mini App.\n\n## Loyiha haqida\n\nBu loyiha Telegram bot orqali foydalanuvchilarning ona tilidan bilim darajasini tekshirish uchun mo'ljallangan. Foydalanuvchilar Telegram botga o'z ism va familiyalarini kiritib, test topshirishlari mumkin.\n\n## Texnologiyalar\n\n- **Next.js 15** - React framework\n- **TypeScript** - Type safety\n- **Tailwind CSS v4** - Styling\n- **ShadCN UI** - UI komponentlar\n- **Telegram WebApp API** - Telegram integratsiyasi\n\n## O'rnatish\n\n1. Dependencies o'rnatish:\n```bash\nnpm install\n```\n\n2. Development serverni ishga tushirish:\n```bash\nnpm run dev\n```\n\n3. Production build:\n```bash\nnpm run build\nnpm start\n```\n\n## Telegram Bot sozlash\n\n### 1. Bot yaratish\n\n1. Telegram'da [@BotFather](https://t.me/BotFather) botini oching\n2. `/newbot` buyrug'ini yuboring\n3. Bot nomini kiriting (masalan: \"Onatili RASH Test\")\n4. Bot username'ini kiriting (masalan: \"onatili_rash_bot\")\n5. BotFather sizga **API token** beradi, uni saqlang\n\n### 2. Bot kodini yozish\n\nPython uchun misol (telebot yoki aiogram kutubxonasidan foydalanish mumkin):\n\n```python\nimport telebot\nfrom telebot import types\n\n# Bot tokenini kiriting\nBOT_TOKEN = \"YOUR_BOT_TOKEN_HERE\"\n# Web App URL'ingizni kiriting\nWEB_APP_URL = \"https://your-domain.vercel.app\"  # yoki localhost:3000\n\nbot = telebot.TeleBot(BOT_TOKEN)\n\n# Foydalanuvchi ma'lumotlarini saqlash\nuser_data = {}\n\n@bot.message_handler(commands=['start'])\ndef start(message):\n    chat_id = message.chat.id\n    bot.send_message(\n        chat_id,\n        \"👋 Assalomu alaykum! Onatili RASH testiga xush kelibsiz.\\n\\n\"\n        \"Testni boshlash uchun ismingizni kiriting:\"\n    )\n    bot.register_next_step_handler(message, get_first_name)\n\ndef get_first_name(message):\n    chat_id = message.chat.id\n    first_name = message.text.strip()\n    \n    if not first_name:\n        bot.send_message(chat_id, \"❌ Ism bo'sh bo'lishi mumkin emas. Qaytadan kiriting:\")\n        bot.register_next_step_handler(message, get_first_name)\n        return\n    \n    user_data[chat_id] = {'first_name': first_name}\n    bot.send_message(chat_id, \"Familiyangizni kiriting:\")\n    bot.register_next_step_handler(message, get_last_name)\n\ndef get_last_name(message):\n    chat_id = message.chat.id\n    last_name = message.text.strip()\n    \n    if not last_name:\n        bot.send_message(chat_id, \"❌ Familiya bo'sh bo'lishi mumkin emas. Qaytadan kiriting:\")\n        bot.register_next_step_handler(message, get_last_name)\n        return\n    \n    user_data[chat_id]['last_name'] = last_name\n    \n    # Web App tugmasini yaratish\n    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)\n    web_app = types.WebAppInfo(url=WEB_APP_URL)\n    button = types.KeyboardButton(text=\"🎯 Testni ishlash\", web_app=web_app)\n    markup.add(button)\n    \n    bot.send_message(\n        chat_id,\n        f\"✅ Ma'lumotlar saqlandi!\\n\\n\"\n        f\"👤 Ism: {user_data[chat_id]['first_name']}\\n\"\n        f\"👤 Familiya: {user_data[chat_id]['last_name']}\\n\\n\"\n        f\"Testni boshlash uchun tugmani bosing:\",\n        reply_markup=markup\n    )\n\n@bot.message_handler(commands=['reset'])\ndef reset(message):\n    chat_id = message.chat.id\n    if chat_id in user_data:\n        del user_data[chat_id]\n    bot.send_message(chat_id, \"🔄 Ma'lumotlar o'chirildi. /start buyrug'i bilan qaytadan boshlang.\")\n\n# Botni ishga tushirish\nprint(\"Bot ishga tushdi...\")\nbot.infinity_polling()\n```\n\n### 3. Bot ishga tushirish\n\n1. Python va kerakli kutubxonalarni o'rnating:\n```bash\npip install pytelegrambotapi\n```\n\n2. Bot kodini fayl ichiga saqlang (masalan: `bot.py`)\n\n3. `BOT_TOKEN` va `WEB_APP_URL` qiymatlarini o'zgartiring\n\n4. Botni ishga tushiring:\n```bash\npython bot.py\n```\n\n### 4. Mini App sozlash\n\n1. [@BotFather](https://t.me/BotFather) ga `/mybots` buyrug'ini yuboring\n2. O'z botingizni tanlang\n3. \"Bot Settings\" → \"Menu Button\" → \"Configure Menu Button\"\n4. Web App URL'ini kiriting (masalan: `https://your-domain.vercel.app`)\n\n## Deploy qilish\n\n### Vercel'ga deploy\n\n1. Vercel'ga push qiling:\n```bash\nnpm install -g vercel\nvercel\n```\n\n2. Deploy URL'ni oling va bot kodida `WEB_APP_URL` ga qo'ying\n\n### Domain sozlash\n\nDeploy qilingandan so'ng, URL'ni bot konfiguratsiyasiga qo'shishni unutmang.\n\n## Xususiyatlar\n\n### ✅ Tayyor\n\n- [x] Telegram WebApp integratsiyasi\n- [x] Foydalanuvchi profili (ism, familiya)\n- [x] Test interfeysi (20 savol)\n- [x] Timer (30 daqiqa)\n- [x] Savollarga javob berish\n- [x] Natijalarni ko'rsatish\n- [x] Responsiv dizayn\n- [x] Dark/Light mode qo'llab-quvvatlash\n\n### 🚧 Keyingi qadamlar\n\n- [ ] Backend API yaratish\n- [ ] Savollar bazasi\n- [ ] Natijalarni saqlash\n- [ ] Statistika va tahlil\n- [ ] Leaderboard (reyting)\n- [ ] Turli xil test turlari\n\n## Fayl strukturasi\n\n```\nrash-onatili/\n├── app/\n│   ├── (root)/\n│   │   ├── page.tsx          # Bosh sahifa (profil + test)\n│   │   ├── layout.tsx         # Telegram Provider\n│   │   └── test/\n│   │       ├── page.tsx       # Test sahifasi\n│   │       └── result/\n│   │           └── page.tsx   # Natijalar sahifasi\n│   ├── layout.tsx             # Root layout\n│   └── globals.css            # Global CSS\n├── components/\n│   ├── telegram-provider.tsx  # Telegram context\n│   ├── profile-card.tsx       # Profil kartasi\n│   ├── test-card.tsx          # Test kartasi\n│   └── ui/\n│       └── button.tsx         # UI komponent\n├── lib/\n│   ├── telegram.ts            # Telegram utilities\n│   └── utils.ts               # Helper functions\n└── package.json\n```\n\n## Development\n\n```bash\n# Development\nnpm run dev\n\n# Lint \u0026 format\nnpm run lint\nnpm run format\n\n# Build\nnpm run build\n```\n\n## Murojaat\n\nSavollar yoki muammolar bo'lsa, issue oching.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falsheroziy%2Fweb-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falsheroziy%2Fweb-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falsheroziy%2Fweb-app/lists"}