Skip to content

DoniyorNl/AI-CV-Builder

Repository files navigation

🧠 AI CV Builder

AI yordamida professional CV yaratish platformasi β€” foydalanuvchi ma'lumot kiritadi, GPT-4o matn yozadi, PDF yuklab olinadi yoki premium obuna orqali watermarksiz eksport qilinadi.

πŸ“Œ Loyiha Haqida

AI CV Builder β€” to'liq stack SaaS web ilovasi. Foydalanuvchilar sun'iy intellekt yordamida professional CV yaratadilar. Bepul foydalanuvchilar watermark bilan PDF oladi; Pro obuna egalari toza PDF, va barcha imkoniyatlardan foydalanadi.

Asosiy Xususiyatlar

  • πŸ€– GPT-4o AI β€” summary va tajriba bullet-pointlarini avtomatik yozadi
  • πŸŽ™οΈ Voice Input β€” mikrofon orqali barcha maydonlarga matn kiritish
  • πŸ“„ PDF Export β€” react-pdf bilan server-side PDF generatsiya
  • πŸ’³ Stripe To'lov β€” oylik obuna (Free / Pro)
  • πŸ”₯ Firebase Auth β€” Email, Google, GitHub OAuth
  • πŸŒ™ Dark Mode β€” to'liq dark/light tema qo'llab-quvvatlash
  • ⚑ Auto-Save β€” 1 soniyalik debounce bilan Firestore'ga avtosave
  • πŸ‘οΈ Live Preview β€” CV yozayotganda real-time 3-panel preview

πŸ—οΈ Arxitektura β€” Backend Bormi?

Ha, to'liq backend mavjud. Next.js App Router orqali server-side API Routes ishlatiladi:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                  CLIENT (Browser)                    β”‚
β”‚  React 19 Β· Tailwind CSS Β· Firebase Client SDK       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                      β”‚ HTTP / REST
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚            BACKEND (Next.js API Routes)              β”‚
β”‚                                                      β”‚
β”‚  POST /api/cv/generate     ← OpenAI GPT-4o           β”‚
β”‚  GET  /api/cv/export       ← PDF generatsiya         β”‚
β”‚  POST /api/stripe/checkout ← Stripe session yaratish β”‚
β”‚  POST /api/stripe/webhook  ← Stripe event handler    β”‚
β”‚  POST /api/auth/session    ← Firebase cookie         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
           β”‚                      β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Firebase Admin β”‚    β”‚       External APIs           β”‚
β”‚  (Firestore DB) β”‚    β”‚  OpenAI API Β· Stripe API      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Backend Endpointlari

Endpoint Method Vazifa
/api/cv/generate POST GPT-4o orqali CV matni generatsiya
/api/cv/export GET PDF yaratib qaytaradi (plan tekshiruvi bilan)
/api/stripe/checkout POST Stripe to'lov sessiyasi ochadi
/api/stripe/webhook POST To'lov muvaffaqiyatida is_pro yangilaydi
/api/auth/session POST Firebase session cookie boshqaruvi
/auth/callback GET OAuth callback handler
/auth/signout GET Session o'chirish

πŸ› οΈ Tech Stack

Frontend

Texnologiya Versiya Ishlatilish
Next.js 16.1.6 Full-stack framework (App Router, RSC)
React 19.2.3 UI library
TypeScript ^5 Strict mode
Tailwind CSS ^4 Utility-first styling
Zustand ^5.0.3 Client-side state management
TanStack React Query ^5.74.4 Server state va caching
React Hook Form ^7.55.0 Form boshqaruvi
Zod ^3.24.2 Schema validation
Lucide React ^0.511.0 Icon library
Sonner ^2.0.3 Toast notifications

Backend / Server

Texnologiya Versiya Ishlatilish
Next.js API Routes 16.1.6 REST backend (Node.js runtime)
Firebase Admin SDK ^13.7.0 Server-side Firestore + Auth
OpenAI SDK ^4.93.0 GPT-4o API integratsiya
Stripe ^17.7.0 To'lov va webhook boshqaruvi
@react-pdf/renderer ^4.3.0 Server-side PDF generatsiya

Infratuzilma va Servislar

Servis Ishlatilish
Firebase Auth Email + Google + GitHub OAuth
Firestore NoSQL database (users, cvs, cv_sections, exports)
Stripe Oylik obuna, webhook
OpenAI GPT-4o AI matn generatsiyasi
Vercel Deployment va hosting
Web Speech API Browser-native ovozli kiritish

πŸ“ Loyiha Strukturasi

ai-cv-builder/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ (auth)/
β”‚   β”‚   β”œβ”€β”€ login/page.tsx            # Kirish sahifasi
β”‚   β”‚   └── register/page.tsx         # Ro'yxatdan o'tish
β”‚   β”œβ”€β”€ (dashboard)/
β”‚   β”‚   β”œβ”€β”€ layout.tsx                # Dashboard layout (TopNav + ThemeToggle)
β”‚   β”‚   β”œβ”€β”€ dashboard/page.tsx        # Statistika kartalar + CV ro'yxat
β”‚   β”‚   β”œβ”€β”€ builder/[id]/edit/        # CV yaratish/tahrirlash
β”‚   β”‚   β”œβ”€β”€ builder/[id]/preview/     # CV preview
β”‚   β”‚   β”œβ”€β”€ billing/page.tsx          # Free/Pro rejalari
β”‚   β”‚   β”œβ”€β”€ history/page.tsx          # Eksport tarixi
β”‚   β”‚   └── settings/page.tsx         # Profil sozlamalari
β”‚   β”œβ”€β”€ api/
β”‚   β”‚   β”œβ”€β”€ cv/generate/route.ts      # OpenAI endpoint
β”‚   β”‚   β”œβ”€β”€ cv/export/route.ts        # PDF eksport endpoint
β”‚   β”‚   β”œβ”€β”€ stripe/checkout/route.ts  # Stripe checkout
β”‚   β”‚   └── stripe/webhook/route.ts   # Stripe webhook
β”‚   β”œβ”€β”€ auth/
β”‚   β”‚   β”œβ”€β”€ callback/route.ts         # OAuth callback
β”‚   β”‚   └── signout/route.ts          # Chiqish
β”‚   └── page.tsx                      # Landing page
β”‚
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ landing/LandingPage.tsx       # 9-bo'limli landing page
β”‚   β”œβ”€β”€ builder/
β”‚   β”‚   β”œβ”€β”€ CVBuilderClient.tsx       # 3-panel builder
β”‚   β”‚   β”œβ”€β”€ CVPreviewPanel.tsx        # Real-time preview
β”‚   β”‚   β”œβ”€β”€ TemplateSelector.tsx      # Template tanlash
β”‚   β”‚   └── sections/                 # Form bo'limlari (voice + AI)
β”‚   β”œβ”€β”€ templates/                    # Classic / Modern / Minimal
β”‚   └── ui/
β”‚       β”œβ”€β”€ ThemeToggle.tsx           # Dark/Light toggle
β”‚       └── VoiceMicButton.tsx        # Reusable mic button
β”‚
β”œβ”€β”€ hooks/
β”‚   β”œβ”€β”€ useAutoSave.ts                # Debounced 1s Firestore auto-save
β”‚   β”œβ”€β”€ useCV.ts                      # CV data fetching/mutation
β”‚   β”œβ”€β”€ useSpeechInput.ts             # Web Speech API hook
β”‚   └── useSubscription.ts            # Stripe subscription holati
β”‚
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ openai.ts                     # GPT-4o client + prompt builders
β”‚   β”œβ”€β”€ pdf.ts                        # react-pdf + watermark logika
β”‚   β”œβ”€β”€ stripe.ts                     # Stripe client
β”‚   β”œβ”€β”€ theme.tsx                     # ThemeProvider context
β”‚   └── firebase/
β”‚       β”œβ”€β”€ admin.ts                  # Firebase Admin SDK (server)
β”‚       β”œβ”€β”€ client.ts                 # Firebase Client SDK (browser)
β”‚       β”œβ”€β”€ auth-provider.tsx         # Auth context provider
β”‚       └── session.ts                # Server-side session helper
β”‚
└── types/
    β”œβ”€β”€ cv.types.ts                   # CV ma'lumot tiplari
    └── database.types.ts             # Firestore schema tiplari

πŸ—„οΈ Ma'lumotlar Bazasi (Firestore)

users/{uid}
  β”œβ”€β”€ full_name: string
  β”œβ”€β”€ email: string
  β”œβ”€β”€ is_pro: boolean          ← Stripe webhook yangilaydi
  β”œβ”€β”€ stripe_customer_id: string
  └── created_at: timestamp

cvs/{cvId}
  β”œβ”€β”€ user_id: string
  β”œβ”€β”€ title: string
  β”œβ”€β”€ template: "modern" | "classic" | "minimal"
  β”œβ”€β”€ export_count: number
  └── updated_at: timestamp

cv_sections/{sectionId}
  β”œβ”€β”€ cv_id: string
  β”œβ”€β”€ section_type: "personal" | "summary" | "experience" | ...
  β”œβ”€β”€ content: object
  └── order_index: number

πŸ’° Monetizatsiya Modeli

Funksiya Free Pro
CV yaratish βœ… Cheksiz βœ… Cheksiz
AI generatsiya βœ… βœ…
Voice input βœ… βœ…
Barcha templatelar βœ… βœ…
PDF eksport βœ… Watermark bilan βœ… Toza (watermarksiz)
Eksport tarixi βœ… βœ…
Stripe oylik obuna β€” βœ…

πŸ€– AI Imkoniyatlari

1. Professional Summary

Foydalanuvchi qo'pol matn kiritadi β†’ GPT-4o 3-4 ta professional jumladan iborat summary yozadi (birinchi shaxssiz, active voice).

2. Experience Bullet Points

Ish tavsifini kiritadi β†’ GPT-4o 3-5 ta action verb bilan boshlangan bullet point yozadi (miqdoriy natijalar bilan).

3. Voice Input (Web Speech API)

Barcha form maydonlarida mikrofon tugmasi β€” bosib gapirasiz, matn maydonga qo'shiladi. Firefox'da graceful degradation.


πŸ” Xavfsizlik

  • Auth check β€” har bir API route'da server-side session tekshiriladi
  • Ownership validation β€” foydalanuvchi faqat o'z CV'lariga kira oladi
  • Stripe signature β€” webhooks.constructEvent() bilan imzo tekshiriladi
  • Input validation β€” Zod schema + allowlist bilan barcha kirishlar sanitizatsiya
  • Open-redirect himoya β€” Stripe redirect URL faqat allowlist orqali
  • No secrets in client β€” barcha API kalitlari faqat server-side

Oxirgi yangilanish: Mart 2026