O'quv markazlari va maktablar uchun mo'ljallangan, zamonaviy va kengaytirshga qulay Incentive Management (Geymifikatsiya va Rag'batlantirish) Tizimi. Ushbu platforma o'quvchilarni darsga qiziqtirish, davomat samaradorligini oshirish va ichki virtual iqtisodiyot (tanga va sovg'alar do'koni) orqali o'quv jarayonini interaktiv qilish uchun ishlab chiqilgan.
- O'quvchilarni qiziqtirish (Gamification): Darsga o'z vaqtida qatnashgan, uyga vazifasini mukammal bajargan va faol o'quvchilar avtomatik ravishda bonus tangalari (coins) bilan taqdirlanadi.
- Jarima tizimi (Penalty Logic): Darsga sababsiz kelmagan yoki ichki tartib-qoidalarni buzgan o'quvchilarning hamyonidan tangalar tizim tomonidan chegirib tashlanadi.
- Virtual Do'kon (Rewards Store): O'quvchilar yig'gan tangalari evaziga tizim ichidagi do'kondan jismoniy (futbolka, ruchka), raqamli (kurslar, kuponlar) yoki imtiyozli (guruhni o'zgartirish, imtihonni qayta topshirish) sovg'alarni sotib olishlari mumkin.
- Xavfsiz Multi-tenant Arxitektura: Bir vaqtning o'zida yuzlab o'quv markazlari va maktablar (Tenant) tizimdan mutloq xavfsiz va bir-biridan ajratilgan (Isolated) holda foydalana oladi.
- Granulyar Role-based Access (RBAC): Foydalanuvchilar o'z rollari va ruxsatnomalari (Permissions) doirasidagina tizim qismlariga kirish huquqiga ega.
- Creator - Platformaning global yaratuvchisi (Super-super admin). Hech bir tenantga tegishli bo'lmagan holda, tizimning barcha qismlarini va global parametrlarni nazorat qiladi.
- Super Admin - Loyihaning asosiy egalari va boshqaruvchilari. Yangi o'quv markazlarini (Tenant) ro'yxatdan o'tkazadi va global moliya/auditingni kuzatadi.
- Tenant Admin - Muayyan o'quv markazi yoki maktab rahbari. O'z filialining o'qituvchilari, o'quvchilari, guruhlari, kurslari va tangalar qoidalarini to'liq boshqaradi.
- Teacher - O'qituvchi. Dars jurnali orqali guruhlarni bittada (Bulk) yo'qlama qiladi va o'quvchilarga qo'lda (Manual) yoki dars asosida (Auto) tangalar yozadi.
- Student | Parent - O'quvchi va ota-ona kabineti. Joriy tangalar balansini, batafsil tranzaksiyalar tarixini, reytinglar jadvalini (Leaderboard) ko'radi hamda do'kondan xaridlarni amalga oshiradi.
- Multi-Tenant Isolation: Maxsus
@TenantContext()dekoratori orqali ma'lumotlar xavfsizligi va tenantlararo aloqa cheklanishi ta'minlangan. - Bulk Attendance & Auto-Coin System: Guruhni bittada davomat qilish orqali butun guruhga avtomatik ravishda
CoinRuleasosida tanga berish yoki ayirish logikasi. - Transactional Wallet Integrity: Barcha moliya operatsiyalari Prisma
$transaction(Atomik amallar) orqali yoziladi. Balans hech qachon to'g'ridan-to'g'ri o'zgarmaydi, faqatCoinTransactionorqali inkrement/dekrement qilinadi. - Store & Refund Logic: Talaba sovg'a sotib olganda ombor zaxirasi (
stock) avtomatik kamayadi. Admin xaridni rad etsa (rejected), tangalar talaba hamyoniga qaytariladi va zaxira tiklanadi. - Leaderboard (Reyting Tizimi): Database darajasida indekslangan va optimallashtirilgan eng ko'p tangaga ega talabalar TOP ro'yxati.
- Audit Logging & Security: Tizimdagi har bir xavfli operatsiya va xarid tarixi qat'iy nazorat ostida log qilinadi.
| Texnologiya | Maqsadi |
|---|---|
| Node.js (v18+) | Backend runtime muhiti |
| TypeScript | Strict type-safe dasturlash tili |
| NestJS | Enterprise darajadagi, modulli backend framework |
| Prisma ORM | Tizimli va type-safe ma'lumotlar bazasi munosabatlari |
| PostgreSQL | Relational ma'lumotlar bazasi (Tranzaksiyalar uchun qulay) |
| Class-Validator & Transformer | DTO darajasida requestlarni qat'iy va xavfsiz validatsiya qilish |
| JWT (Access & Refresh) | Ikki bosqichli xavfsiz autentifikatsiya tizimi |
| Swagger / OpenAPI | Interaktiv va avtomatik generatsiya bo'luvchi API hujjatlar jamlanmasi |
git clone <repository-url>
cd erp-coin-system-backendnpm install.env faylini yarating:
# Port
PORT=3000
# Database URL for Prisma (PostgreSQL)
DATABASE_URL="postgresql://postgres:your_pass@localhost:5432/erp_coin_db?schema=public"
# Token secrets (Kamida 32 belgidan iborat murakkab kalit yozing)
JWT_ACCESS_SECRET="your_extremely_strong_access_token_key_2026"
JWT_REFRESH_SECRET="your_extremely_strong_refresh_token_key_2026"
# Gmail SMTP Providers
SMTP_PASSWORD="your_smtp_app_password"
SMTP_USER="info@yourdomain.com"
SMTP_HOST="smtp.gmail.com"
SMTP_PORT=587
# SMS API Service (Eskiz.uz integratsiyasi)
ESKIZ_EMAIL="your_eskiz_email@gmail.com"
ESKIZ_PASSWORD="your_eskiz_password"
ESKIZ_SENDER="4545"
# Global Creator (Secret Master Account)
CREATOR_PHONE="+998945426307"
CREATOR_PASSWORD="secure_creator_password_123"
CREATOR_NAME="Muxammadi Toshtemirov"
CREATOR_EMAIL="muxammadi0799@gmail.com"
# System Super Admin Datas
SUPER_ADMIN_PHONE="+998901234567"
SUPER_ADMIN_PASSWORD="super_admin_secure_pass"
SUPER_ADMIN_NAME="Super Admin Chief"
SUPER_ADMIN_EMAIL="admin@erpcoin.uz"
# Frontend Web Domain URL
FRONTEND_DOMEN="http://localhost:3000"
# Working environment
NODE_ENV="development"npx prisma migrate dev --name initnpx prisma generatenpx prisma db seedBu komanda:
- β System tenant yaratadi
- β Creator, Super Admin, Base roller'ni yaratadi
- β Creator va Super Admin user'larini yaratadi
- β Default reward kategoriyalarini yaratadi
- β Wallet'larni yaratadi
# Development rejimida
npm run start:dev
# Production rejimida
npm run build
npm run start:prodnpx prisma studioBu buyruq http://localhost:5555'da database'ni visual ko'rish imkoniyatini beradi.
erp-coin-system-backend/ βββ src/ β βββ auth/ # Autentifikatsiya, JWT, Login/Logout va Guardlar β β βββ decorators/ # @CurrentUser, @TenantContext maxsus dekoratorlari β β βββ guards/ # JwtAuthGuard, RolesGuard β βββ coin-rules/ # Tanga berish/ayirish mezonlari (CRUD) β βββ coin-transactions/ # Kirim-chiqim tranzaksiyalari & Wallet (Atomik Servis) β βββ rewards/ # Do'kon sovg'alari boshqaruvi (CRUD) β βββ purchases/ # Xaridlar tarixi & Admin Tasdiqlash/Qaytarish logikasi β βββ sessions/ # Darslar jadvali & Bulk Attendance (Yo'qlama jurnali) β βββ users/ # Foydalanuvchilar va profil boshqaruvi β βββ tenants/ # O'quv markazlari (Tenant) boshqaruvi β βββ prisma/ # Prisma Service ulanishi va seed mantiqlari β βββ common/ # Global Interceptorlar, Exception Filterlar va Pipelar β βββ app.module.ts # Markaziy ildiz moduli βββ prisma/ β βββ schema.prisma # Markaziy Database relyatsion sxemasi β βββ migrations/ # SQL migratsiya fayllari tarixi βββ .husky/ # Git pre-commit pre-push hooklar (Linting & Case-sensitivity protection) βββ .env # Atrof-muhit o'zgaruvchilari fayli βββ package.json # Loyiha skriptlari va kutubxonalari ro'yxati βββ README.md # Loyiha qo'llanmasi
- Tashqi file-uploading ulash
- Dars jadval tizimini ishlab chiqish
- Unit tests'ni yozish
- Integration tests'ni yozish
- Docker setup'ni yaratish
- CI/CD pipeline'ni sozlash
- Frontend integration
- Schema:
prisma/schema.prisma - Seed data:
src/prisma/seed.ts - Environment:
.env
- β Creator - hech kimga ma'lum emas (maxfiy)
- β Super Admin - loyiha buyurtmachisi
- β Tenant Admin - har filialning o'z admini
- β Barcha harakatlar AuditLog'da qayd qilinadi
- β Tenant isolation - faqat o'z filialini ko'radi
- β Role-based permissions - faqat roli bo'yicha imkoniyatlar
- Yaratuvchi (Lead Engineer): Muxammadi Toshtemirov
- Telefon raqam: +998(94) 542-63-07
- Elektron pochta: muxammadi0799@gmail.com
- Telegram: @Muxammadi_Dev
β Tizim MVP talablari bo'yicha ishlab chiqarish (Production) va sinov rejimlariga to'liq tayyor!