FlutterBro | Samandar Takhirov
23 subscribers
55 photos
19 videos
4 files
34 links
Software developer at udevs.io
- Mobile Application
- Personal portfolio
Creator: @takhirovs
Download Telegram
FlutterBro | Samandar Takhirov
Video message
Ancha bo’gan ekan ruchka bilan biron joyga kop narsa yozmaganimga. Sababi ko’p ishlarini computerda yozib e-imzo orqali imzolab qo’yaverardim.

Bu esa 2025-yil sarhisobi va 2026-yilga planni blaknotega yozishga qaror qildim.

@flutterbro1
👍2🔥2❤1👏1
Forwarded from Janob Panda
"15 million fuqaro ma'lumotlari" ...

Sardor aka:
"PHP da qilish kerak edi."

Jahongir aka:
"Rust da qilish kerak edi."

Men:
"Somon 35 ming"

@mukhammadkarim_tukhtaboev
⚡️📱 Telegram’ни ёпишим мумкин, лекин фойдаланувчиларнинг шахсий ёзишмаларини ҳеч кимга бермайман

Pavel Durov: Telegram
ўз тарихида учинчи томонларга хабар алмашиш маълумотларидан НОЛ байт ҳам ошкор қилмаган. Ва биз буни қилишни бошлагандан кўра, бутун лойиҳани ёпишни афзал кўрамиз.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Forwarded from Pavel Durov (Pavel Durov)
Russia is restricting access to Telegram in an attempt to force its citizens to switch to a state-controlled app built for surveillance and political censorship.

8 years ago, Iran tried the same strategy — and failed. It banned Telegram on made-up pretexts, trying to force people onto a state-run alternative.

Despite the ban, most Iranians still use Telegram (bypassing censorship) and prefer it to surveilled apps.

Restricting citizens’ freedom is never the right answer. Telegram stands for freedom of speech and privacy, no matter the pressure.
Forwarded from Fazliddin │ Blog
#claudecode CLI'ni setup qilish


1. The Memory (CLAUDE.md)

CC'da /init command yozsangiz Claude o'zi CLAUDE.md file'ni create qilib beradi. Lekin man buni ichiga o'zimga moslashtirib customization qilganman.

Nega bu file muhim?
Project root'dagi CLAUDE.md har bir session boshlanganida context'ga yuklanadi. Ya'ni bu file qancha katta bo'lsa, har safar shuncha ko'p token sarflanadi. Shu sababli uni ~200 qatordan kichik bo'lgani yaxshi.

Yana bir muhim qoida - "Write clean code" kabi abstract gaplar yozmang. CC sizning "clean code" deganda nimani nazarda tutayotganingizni bilmaydi. Buning o'rniga aniq va measurable qoidalar yozing:

• Do not use dynamic data type, always use Object?
• Functions over ~40 lines need a comment explaining intent.


CLAUDE.md ichiga asosan quyidagilarni yozganman:
- Project Overview
- Behavioral guidelines
- Common Commands
- Architecture
- Guardrails
- Before opening a PR


Project Overview
Project haqida 3-4 qatorlik qisqa description. Hech qanday architectural detail emas, faqat "bu project nima qiladi" degan savolga javob.

Behavioral guidelines
Bu section LLM'larda keng tarqalgan xatolarni kamaytirish uchun. Masalan: assumption qilmaslik, kerakmas refactor qilmaslik va hokazo. Buning uchun andrej-karpathy-skills'dan foydalanganman.

Common commands
Project'da tez-tez ishlatiladigan commandlar. Man projectda Makefile'dan foydalanaman, shuning uchun shularni yozganman:

• Get dependencies: make get
• Full code generation: make gen
(build_runner + flutter_gen + l10n + format + clean + get)
• ...


Architecture
Project'ning asosiy architectural choice'lari — state management, routing, networking, database uchun qaysi package ishlatilgan. To'liq architecture ARCHITECTURE.md'da, bu yerda faqat key package'larni yozgan yaxshi:

• State management: control package
• Routing: elixir package (custom Navigator 2.0 wrapper)
• Networking: http (HTTP client + middleware) + ws (WebSocket)
• Database: Drift (SQLite)
schema: lib/src/common/database/app_database.dart
• ...


Guardrails
Bu CLAUDE.md'ning eng muhim qismi. Bu yerga Claude hech qachon buzmasligi kerak bo'lgan strict qoidalar yoziladi. Misol uchun:

• If editing lib/** the rules in .claude/rules/flutter.md are loaded automatically by glob. Read them before planning changes.
• ...

Muhim qoida: har bir guardrail'ni qo'shishdan oldin o'zingizdan so'rang "Claude bu rule'ni buzganmi?" Agar buzmagan bo'lsa, hozircha bu rule kerakmas. Har bir qator token sarflaydi, shuning uchun faqat real tajribadan kelib chiqib yozgan yaxshi.

Before opening a PR
PR ochishdan oldin Claude bajarishi kerak bo'lgan oxirgi checklist:

• make format clean (or auto-applied by PostToolUse hook)
• fvm flutter analyze clean
• fvm flutter test passing (if tests exist for the touched area)
• Use the pr-checklist skill in .claude/skills/ for full sequence


O'zim ishlatadigan CLAUDE.md file.

Part 1/7
Forwarded from Fazliddin │ Blog
#claudecode CLI'ni setup qilish


2. Rules

Rules nima?
Rules — bu .claude/rules/ directory'dagi markdown file'lar. Har bir file YAML frontmatter format'dan foydalanadi va project uchun aniq qoidalarni saqlash uchun ishlatiladi.

Masalan:

---
name: flutter-rules
description: Project-wide conventions that apply to every package in lib/
globs:
- "lib/**"
---

# Flutter rules

## Code style

- Keep widget files under ~250 lines. Extract subwidgets into the feature's widget/ directory; do not extend.
• dynamic is banned by avoid_annotating_with_dynamic. Use Object? if the value is truly heterogeneous.
- Public functions over ~40 lines need a comment explaining intent.
- ...


YAML frontmatter'da uchta muhim field bor:
1. name - rule file'ning idenfikatori
2. description - Claude session boshlanganida hamma rule file'larning description'larini ko'radi. Shu sababli description aniq, tushunarli bo'lishi kerak
3. globs - eng muhim qism. Bu yerda qaysi file path'lar uchun bu rule yuklanishi yoziladi. "lib/**" degani lib/ directory'dagi har qanday file uchun ushbu rule qo'llaniladi.

O'zim ishlatadigan rule filelar.

Part 2/7
Forwarded from Fazliddin │ Blog
#claudecode CLI'ni setup qilish


3. Skills

Skills nima?
Skills - bu .claude/skills/ directory'dagi packaged workflow'lar. Har bir skill o'z papkasida SKILL.md file'i bilan yashaydi va aniq bir vazifani bajarish uchun yo'riqnoma sifatida ishlaydi.

Rules'dan asosiy farq, rules - Claude eslab turishi kerak bo'lgan qoidalar. Skills - Claude bajarishi kerak bo'lgan ishlar.

Misol uchun:
Backend qaytargan JSON'ga data class yozish uchun, har bir model bir xil pattern bo'lishi kerak:
@immutable final class
defensive fromJson
ValueGetter-based copyWith
manual ==, hashCode, toString


Har safar backend'dan yangi response kelganida bu boilerplate'ni Claude'ga yozib tushintirish kerak bo'ladi va biror detailni unutib qolish ehtimoli bor. Skill bilan bir marta yoziladi, keyin "create a model for this JSON" desangiz bo'ldi.

Skill uchun misol:

---
name: dart-model-from-json
description: Generate an immutable Dart data class from a JSON sample. Use when the user provides JSON and asks for a model, or says "create a model for this response".
allowed-tools: Read, Write, Edit
---

# dart-model-from-json

## Conventions
Every generated model must follow this structure:

1. `@immutable final class ModelName` — no inheritance.
2. `const` constructor with `required` named params for every field.
3. `factory fromJson(Map<String, Object?> json)` with defensive parsing:
- Strings: `json['key']?.toString() ?? ''`
- Ints: `int.tryParse(json['key']?.toString() ?? '') ?? 0`
- DateTime: `DateTime.tryParse(...)?.toLocal()`
- Nested maps: use `switch` expression to type-check.
4. `copyWith` uses `ValueGetter<T>?` so callers can pass null explicitly.
5. Manual `==`, `hashCode`, `toString`. Do not use freezed.

## Do not
- Do not use freezed, json_serializable, or build_runner.
- Do not throw from fromJson — return defaults.
- Do not skip `?.toLocal()` on DateTime fields.


YAML frontmatter'da ikkita muhim field bor:
1. description — Claude shu description'dan tushunadi qachon skill'ni ishga tushirishni. Aniq trigger phrase yozish kerak ("create a model for this JSON").
2. allowed-tools — security layer. Skill faqat shu list'dagi tool'larni ishlata oladi.

O'zim ishlatadigan skillar.

Part 3/7
Forwarded from Fazliddin │ Blog
#claudecode CLI'ni setup qilish


4. Agents

Agents nima?
Agents - bu .claude/agents/ directory'dagi markdown file'lar. Har bir agent o'z alohida context window'ida, o'z system prompt'i va o'z tool restriction'lari bilan ishlaydi. Asosiy session'ingiz ularga vazifa beradi, ular natijani qaytaradi. Agents - alohida session sifatida ishga tushiriladigan worker.

Nima uchun bu muhim?
Misol uchun, siz feature ustida ishlayapsiz va Claude'dan "barcha LoginBloc ishlatadigan joylarni topib ber" deb so'raysiz. Claude grep'lab qidirishni boshlaydi, ~10 ta file ochadi, hammasini context'ga yuklaydi, keyin sizga 2-3 qatorlik javob beradi.

Lekin shu ~10 ta file endi sizning session'ingizning context'ida qoladi. Keyingi vazifalar uchun ham yuklab turiladi va bunga token sarflaydi. Bu context pollution deyiladi.

Agents bu muammoni hal qiladi. Agent o'z alohida context'ida ishlaydi, vazifani bajaradi, va sizga faqat summary qaytaradi. ~10 ta file sizning context'ingizga umuman kirmaydi.


---
name: code-reviewer
description: Reviews a diff for convention compliance against `.claude/rules/`, generated-file leakage, and the project's hand-written state-equality pattern. Use proactively after any non-trivial change to lib/** or data/** before opening a PR. Read-only; cannot modify code.
tools: Read, Glob, Grep, Bash(git diff:*), Bash(git status:*), Bash(git log:*), Bash(fvm flutter analyze:*)
model: sonnet
---

You are a senior code reviewer for this repository.

Review checklist, in order:
1. Convention compliance. Read `.claude/rules/` files matching the changed paths. Check the diff against them. Quote the specific rule being violated.
2. Test coverage. Every changed public function needs at least one test path. Flag missing coverage.
3. Generated files. No manual edits to `*.g.dart`, `*.freezed.dart`, or `*.gen.dart`.
4. Security. No hardcoded secrets, no leftover `debugPrint`, no unrestricted `dynamic` returns.

Output format:
- "Verdict": pass | needs-changes | blocker
- Bullet list of findings, each with file:line and a one-line fix
- Do not suggest unrelated refactors. Stay within the diff.


YAML frontmatter'da uchta muhim field bor:
1. name - agent'ning idenfikatori
2. description - Claude qachon ushbu agent'ga delegate qilishni description orqali tushunadi. "Use proactively after..." kabi aniq trigger yozish kerak.
3. tools - agent qaysi tool'larni ishlata olishi. Bu yerda read-only restriction muhim - code-reviewer agent code'ni o'zgartira olmaydi, faqat o'qib analiz qila oladi.
4. model - agent'ni vazifasiga qarab Claude model tanlash kerak. Misol uchun code review qilish uchun Sonnet yetarli va u Opusdan arzonroq.

O'zim ishlatadigan sub-agentlar.

Part 4/7
Forwarded from Fazliddin │ Blog
#claudecode CLI'ni setup qilish


5. Hooks
Hooks nima?

Hooks - bu Claude Code'da ma'lum bir change bo'lganda avtomatik ishga tushadigan shell script'lar. Masalan: Claude file'ni yozganda, Bash command ishlatganda, yoki siz prompt yuborganda.

Nimaga kerak?
Misol uchun, CLAUDE.md'da "DO NOT MODIFY GENERATED FILES" deb rule yozgansiz. Claude ko'p hollarda bu qoidaga rioya qiladi, lekin har doim emas. Model probabilistic, ya'ni ~95% to'g'ri qaror qiladi, ~5% xato.

Hook esa deterministic. Agar Claude *.g.dart file'ni edit qilmoqchi bo'lsa, hook uni to'xtatadi. Hech qanday istisno yo'q.

Hook'ning anatomiyasi
Hook'lar .claude/settings.json file'ida configure qilinadi.

{
"hooks": {
"PreToolUse": [
{
"matcher": "Write|Edit|MultiEdit",
"hooks": [
{
"type": "command",
"command": ".claude/hooks/block_generated_files.sh"
}
]
}
],
"PostToolUse": [
{
"matcher": "Write|Edit|MultiEdit",
"hooks": [
{
"type": "command",
"command": "dart format \"$CLAUDE_TOOL_FILE_PATH\" 2>/dev/null || true"
}
]
}
]
}
}


Uchta muhim element bor:
1. Event type - qachon ishga tushishi. PreToolUse — tool ishlatishdan oldin (bloklash uchun). PostToolUse — tool ishlatilgandan keyin (cleanup uchun).
2. matcher - qaysi tool'larda ishga tushishi. Write|Edit|MultiEdit — file yozish va o'zgartirish tool'lari.
3. command - shell script yoki inline command. Stdin'da JSON oladi, stdout'da JSON qaytaradi.

Real misol: Generated file'larni bloklash
Project'da dart run build_runner ishlatadigan generated file'lar bor. Claude ba'zan ularni "tuzatishga" harakat qiladi. Bu xato chunki file generator'dan qaytadan yaratilishi kerak.

1. PreToolUse

.claude/hooks/block_generated_files.sh:

#!/usr/bin/env bash
# Refuses Write/Edit/MultiEdit on files that are produced by code
# generators in this project. The glob mirrors `analyzer.exclude` in
# analysis_options.yaml — those are the files marked as write-only by
# their respective generator (build_runner, drift_dev, flutter_gen,
# pubspec_generator, vector_graphics_compiler).
#
# Triggers on the `Write|Edit|MultiEdit` matcher in PreToolUse.
set -euo pipefail

payload="$(cat)"
path="$(printf '%s' "$payload" | jq -r '.tool_input.file_path // empty')"

case "$path" in
*.g.dart\
|*.freezed.dart\
|*.gen.dart\
|*.gql.dart\
|*.config.dart\
|*.mocks.dart\
|*.pb.dart\
|*.pbenum.dart\
|*.pbjson.dart\
|*/lib/src/common/localization/generated/*\
|*/lib/src/common/model/generated/*\
|*/lib/src/common/constant/gen/*)
jq -nc '{
"permissionDecision": "deny",
"reason": "Generated file. Edit the source declaration (drift table, .arb file, pubspec.yaml, etc.) and run `make gen` instead."
}'
;;
*)
jq -nc '{"permissionDecision": "allow"}'
;;
esac


Endi Claude qancha harakat qilsa ham generated dart file'ni edit qila olmaydi😁

2. PostToolUse

Har file edit, yozilgandan keyin avtomatik format qiladi:

dart format "$CLAUDE_TOOL_FILE_PATH" 2>/dev/null || true


Claude file'ni edit qilib bo'lgandan keyin PostToolUse ishga tushadi va o'zi edit qilgan file'ni formatlaydi.

O'zim ishlatadigan hook'lar.

Part 5/7
Forwarded from Fazliddin │ Blog
#claudecode CLI'ni setup qilish


6. MCP

MCP nima?
MCP (Model Context Protocol) - bu Claude'ni tashqi tool va data source'larga ulaydigan standard protocol. MCP Claude'ga yangi imkoniyatlar beradi - database'ni o'qish, Sentry'dan error olish, codebase'ni symbol darajasida tushunish.

Nimaga kerak?
Oddiy holatda Claude faqat project'dagi file'larni ochib, text bo'yicha qidiradi.

Misol uchun, siz: "LoginController qayerlarda ishlatilgan?", deb so'rasangiz, Claude kerakli joylarni topish uchun ko'p file'larni qidirib chiqishi mumkin. Project katta bo'lsa, bu ko'proq vaqt va token sarflaydi.

Dart MCP server ulangan bo'lsa, Claude Dart analyzer'dan foydalana oladi. Ya'ni u code'ni oddiy text sifatida emas, class, function va reference'lar sifatida tushunadi.

Shunda Claude:
• LoginController qayerlarda ishlatilganini;
• qaysi function qayerdan chaqirilganini;
• code'dagi analyzer error'larni
aniqroq va tezroq topa oladi.

MCP server qo'shish
MCP server'lar claude mcp add command orqali qo'shiladi.

Har bir server uchun uchta scope bor:

- local - faqat shu projectda, faqat sizda
- project - .mcp.json orqali team bilan share qilinadi
- user - barcha projectlarda ishlaydi


Flutter project uchun official Dart MCP server'ni qo'shish:

claude mcp add --transport stdio dart -- dart mcp-server


Bu Claude'ga Dart analyzer, hot reload, va ishlab turgan app'dan runtime error'larni o'qish imkonini beradi.

Important
MCP server qo'shganingizda Claude yangi tool'larga ega bo'ladi. Tool'lar ko'paysa, Claude qaysi tool'ni ishlatishni tanlashi qiyinlashishi mumkin. Shuning uchun faqat real workflow'ingizda ishlatadigan MCP server'larni qoldirgan yaxshi.

O'zim ishlatadigan .mcp.json file.

Part 6/7
Forwarded from Fazliddin │ Blog
#claudecode CLI'ni setup qilish


7. Project Architecture (ARCHITECTURE.md)

ARCHITECTURE.md nima?
ARCHITECTURE.md - bu project'ning to'liq architectural xaritasi. Qaysi layerlar bor, ular qanday bog'lanadi, state/data flow - hammasi shu file'da yoziladi.

Part 1'da CLAUDE.md'ning Architecture section'i faqat key package'larni sanab o'tiladi. Sababi - CLAUDE.md har session'da context'ga yuklanadi, shuning uchun u qisqa bo'lishi kerak. To'liq architecture esa ARCHITECTURE.md'ga ketadi.

Nimaga kerak?
CLAUDE.md Claude'ga "qaysi package ishlatilgan" deb aytadi. ARCHITECTURE.md esa "nima uchun shunday qilingan va qanday ishlatish kerak" deb tushuntiradi.

ARCHITECTURE.md ichida nimalar bo'lgani yaxshi:
• High-level overview - qatlamlar diagrammasi
• Technical stack - har layer uchun qaysi package
• Project structure - lib/ va packages/ tree
• Dependency injection - Dependencies container
• Data flow - UI → Controller → Repository → Data source
• State management - control package, StateController
• Screen state pattern - part file orqali logic/UI ajratish
• Navigation - qanday handle qilinganligi
• Error handling - typed exception hierarchy


Claude'ga qanday ko'rsatish kerak
ARCHITECTURE.md'ni shunchaki yaratib qo'yish yetarli emas - Claude uni avtomatik o'qimaydi. CLAUDE.md'ning Guardrails section'iga shu qatorni qo'shish kerak:

• Before planning any change that adds or moves a file, read ARCHITECTURE.md to confirm the correct layer and the feature module convention.


Endi Claude yangi feature rejalashtirayotganda avval ARCHITECTURE.md'ni o'qiydi va file'ni to'g'ri qatlamga, to'g'ri konvensiya bilan joylashtiradi.

Part 7/7
👍2
Forwarded from Fazliddin │ Blog
Bir haftadan ko'proq vaqt davomida Claude Code'ni o'zim uchun qanday setup qilganim haqida bo'lishdim. Agar seriya kimgadur foydali bo'lgan bo'lsa, xursandman 🙌

Claude Code'ni setup qilishda asosan quyidagi maqoladan foydalandim:
I Spent 6 Months Tuning Claude Code - Here's the Exact Setup That Finally Worked

To'liq setup repo: github.com/ibragimov05/claudecode-setup
👍2🔥2👏1
🚀 Udevs Mobile Intern qidirmoqda!

Flutter va AI Engineering tools bilan real commercial loyihalarda ishlashni xohlaydigan yosh dasturchilarni qidiryapmiz.

Flutter bilimi bor, o'sishga tayyor, mas'uliyatli — bu siz uchun!

📩 CV / GitHub / portfolio yuborish uchun: @ yopildi
🔗 Batafsil: https://lnkd.in/p/dFBPXRvt

#Flutter #Internship #Udevs #MobileDevelopment
Forwarded from QuizlyMarket 💡
This media is not supported in your browser
VIEW IN TELEGRAM
📚 Imtihonga tayyorlanish endi oson!

QuizlyMarket — talabalar uchun testlar bozori.

✅ O'zingizga qulay rejimda yeching: Custom yoki University (haqiqiy imtihon formati)
🏆 Natijani darhol ko'ring va xatolar ustida qayta ishlang
🚀 Do'stingizni taklif qiling, ikkalangiz ham bonus oling 🔥

Telegram guruhlarda test qidirib vaqt yo'qotmang. Hammasi bitta ilovada.

📱 PlayMarket - QuizlyMarket
📱 AppStore - QuizlyMarket
📱 MacBook - QuizlyMarket
📱 WebSite - QuizlyMarket
🤖 Telegram Ilova - @quizlymarketbot

📱 @quizlymarket
📱 @quizlymarket
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Doniyor Ashiraliyev
Claude💬 obunasi va ovqatlanish uchun sarflaydigan pulim farqi😁
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1😁1
🤖 Lyra — Samandar's AI Assistant

Salom, FlutterBro! Men Lyra — Samandar Takhirovning shaxsiy AI yordamchisiman.

Qayerda topasiz?
📢 Kanal → @flutterbro1
🤖 Bot → @lyra_exec_bot

Savol bo'lsa — yozing 👇