← Barcha loyihalar
PlatformaFalaq nashriyoti

Falaq — audio va elektron kitoblar

Backend, veb-sayt va admin panel · mobil ilova boshqa jamoa a’zosida

Kitobni bir marta sotib olib, uni onlayn tinglash va o‘qish, hamda internetsiz ishlatish mumkin bo‘lgan platforma. Asosiy muhandislik vazifasi — kontentni himoyalash: fayllar shifrlangan, kalit qurilmaga bog‘langan.

  • NestJS 11
  • TypeORM
  • PostgreSQL
  • Redis · BullMQ
  • Cloudflare R2
  • Next.js
  • React

Muammo

Nashriyot audio va elektron kitoblarni sotmoqchi, lekin bitta shart bilan: sotib olingan kitob internetsiz ham ishlashi kerak, va shu bilan birga fayl ko‘chirib tarqatilmasligi kerak. Bu ikki talab bir-biriga zid: fayl qurilmada bo‘lishi kerak, lekin undan foydalanib bo‘lmasligi kerak.

Mening rolim

Backend (NestJS, modulli monolit), mijozlar uchun veb-sayt va admin panelni qildim. Mobil ilova (Flutter) boshqa jamoa a’zosi tomonidan qilingan — men unga API va integratsiya hujjatlarini tayyorladim.

Imkoniyatlar

Kontent va himoya

  • Har bir fayl uchun alohida tasodifiy kalit (DEK), fayl AES-256-CTR bilan shifrlanadi — audio’ni surish va HTTP Range uchun
  • Kalitlar master kalit (KEK) bilan AES-256-GCM da o‘raladi; bazada faqat o‘ralgan kalit turadi
  • Omborda (R2) hech qachon ochiq fayl turmaydi — hatto bepul namuna ham shifrlangan
  • Katta fayllar brauzerdan to‘g‘ridan-to‘g‘ri R2 ga yuklanadi (presigned PUT), shifrlash navbatda

Kirish va litsenziya

  • Bir martalik xarid: bitta xarid kitobning audio va elektron variantini ochadi
  • Oflayn litsenziya 30 kun amal qiladi, keyin internetga ulanib yangilanadi
  • Qurilmalar ro‘yxati va nazorati
  • Telefon OTP (Eskiz SMS) + Google / Apple OAuth, JWT rotatsiyasi bilan

Platforma

  • Katalog, kutubxona, sharh va reyting, bildirishnomalar, obunalar
  • 4 tilli API: o‘zbek (lotin va kirill), rus, ingliz
  • Admin panel: kitoblar, nashrlar, fayllar yuklash, foydalanuvchilar

Arxitektura

Mijozlar
Flutter ilovaNext.js saytReact admin panel
API
NestJS modulli monolitAuth + OTPKirish va litsenziya
Fon ishlari
BullMQ: shifrlashPreview tayyorlash
Ma’lumot
PostgreSQL (TypeORM)Redis (OTP, navbat)Cloudflare R2

Muhim muhandislik qarorlari

1

Envelope encryption

Har fayl o‘z kaliti bilan shifrlanadi, kalitlar esa master kalit bilan o‘raladi. Master kalitni almashtirish kerak bo‘lsa, 500 MB li fayllarni qayta shifrlash shart emas — faqat kichik kalitlar qayta o‘raladi. Har faylning alohida kaliti tufayli bepul namuna kaliti pullik kontentni ochmaydi.

2

CTR rejimi — audio uchun

Kontent AES-CTR bilan shifrlangan: bu faylning istalgan joyidan o‘qish imkonini beradi. Foydalanuvchi audio’ni o‘rtasiga sursa, butun faylni ochish shart emas.

3

Fayllar API dan o‘tmaydi

Yuklash ham, yuklab olish ham presigned URL orqali to‘g‘ridan-to‘g‘ri R2 bilan. Server faqat kalitlar va ruxsatlar bilan ishlaydi — katta fayllar uning xotirasini band qilmaydi. R2 tanlovi ham shu bilan bog‘liq: chiqish trafigi bepul.

4

Muddatli oflayn litsenziya

Oflayn kalit 30 kunlik. Obuna yoki huquq tugasa, qurilma keyingi ulanishda kalitni yangilay olmaydi — fayl o‘chirilmasa ham foydasiz bo‘ladi.

Loyihangiz bormi yoki biznesingizni avtomatlashtirish kerakmi?

CRM, ERP, SaaS, Telegram bot, SMS eslatmalar, to‘lov integratsiyasi yoki mavjud loyihani qo‘llab-quvvatlash — vazifani yozing, qanday avtomatlashtirish mumkinligini birga ko‘ramiz.