Subscription Tracker - bu shaxsiy obunalarni boshqarish uchun mo'ljallangan Node.js/Express asosidagi backend API loyihasi. Ushbu loyiha foydalanuvchilarga o'zlarining barcha obunalarini bir joyda kuzatish, boshqarish va nazorat qilish imkonini beradi.
- Obunalarni markazlashtirilgan boshqarish - barcha obunalarni bir joyda saqlash va boshqarish
- Moliyaviy nazorat - obuna xarajatlarini kuzatish va tahlil qilish
- Avtomatik eslatmalar - to'lov sanalarini eslatib turish
- Kategoriyalash - obunalarni turli kategoriyalar bo'yicha guruhlash
- Foydalanuvchi ro'yxatdan o'tishi (Sign-up)
- Tizimga kirish (Sign-in)
- Tizimdan chiqish (Sign-out)
- JWT token asosida xavfsizlik
- Profil ma'lumotlarini ko'rish va tahrirlash
- Parol o'zgartirish
- Hisob sozlamalari
- Yangi obuna qo'shish
- Mavjud obunalarni ko'rish
- Obuna ma'lumotlarini tahrirlash
- Obunani o'chirish
- Obuna holatini boshqarish (active, expired, cancelled)
- Sports - sport obunalari
- Entertainment - ko'ngilochar kontentlar
- Education - ta'lim platformalari
- Health - sog'liqni saqlash xizmatlari
- Other - boshqa kategoriyalar
- Valyutalar: USD, EUR, GBP
- To'lov davriyligi: kunlik, haftalik, oylik, yillik
- Narx kuzatuvi va xarajatlar tahlili
- Avtomatik jarayonlar yaratish
- Eslatmalar va bildirishnomalar
- To'lov sanalarini kuzatish
- Backend: Node.js, Express.js
- Ma'lumotlar bazasi: MongoDB (Mongoose ODM)
- Autentifikatsiya: JWT, bcryptjs
- Validatsiya: Joi
- Xavfsizlik: Arcjet middleware
- Workflow: Upstash Workflow
- Email: Nodemailer
- API Documentation: Swagger UI, swagger-jsdoc
git clone https://github.com/Omarkhodjaev/subscription-tracker.git
cd subscription-trackernpm install.env.development.local.example faylini .env.development.local ga nusxalang va kerakli ma'lumotlarni to'ldiring:
cp .env.development.local.example .env.development.localKerakli environment o'zgaruvchilar:
PORT- server portiMONGODB_URI- MongoDB ulanish manziliJWT_SECRET- JWT token uchun maxfiy kalitEMAIL_*- email xizmati sozlamalari
npm run devnpm startAgar workflow funksiyalarini test qilmoqchi bo'lsangiz:
npx @upstash/qstash-cli devLoyiha uchun to'liq API dokumentatsiyasi Swagger UI orqali mavjud:
http://localhost:5500/api-docs
Swagger UI da quyidagilar mavjud:
- Barcha endpoint'lar - to'liq API yo'llari ro'yxati
- Request/Response schemalar - har bir endpoint uchun kirish va chiqish ma'lumotlari
- Interaktiv test - to'g'ridan-to'g'ri brauzerda API'ni test qilish
- Authentication - JWT token bilan himoyalangan endpoint'larni test qilish
- Model schemalar - User va Subscription model'larining to'liq tavsifi
- Swagger UI ga kiring:
http://localhost:5500/api-docs - Authentication bo'limidan
/api/v1/auth/sign-upyoki/api/v1/auth/sign-inorqali token oling - "Authorize" tugmasini bosing va JWT tokenni kiriting
- Himoyalangan endpoint'larni test qiling
POST /api/v1/auth/signup- Ro'yxatdan o'tishPOST /api/v1/auth/signin- Tizimga kirishPOST /api/v1/auth/signout- Tizimdan chiqish
GET /api/v1/users- Barcha foydalanuvchilarGET /api/v1/users/:id- Bitta foydalanuvchi ma'lumotlariPUT /api/v1/users/:id- Foydalanuvchi ma'lumotlarini yangilashDELETE /api/v1/users/:id- Foydalanuvchi o'chirish
GET /api/v1/subscriptions- Barcha obunalarni ko'rishGET /api/v1/subscriptions/upcoming-renewals- Kelgusi to'lovlar ro'yxatiGET /api/v1/subscriptions/:id- Bitta obuna ma'lumotlariPOST /api/v1/subscriptions- Yangi obuna qo'shishPUT /api/v1/subscriptions/:id- Obuna yangilashDELETE /api/v1/subscriptions/:id- Obuna o'chirishGET /api/v1/subscriptions/user/:id- Foydalanuvchining barcha obunalariPUT /api/v1/subscriptions/:id/cancel- Obunani bekor qilish
POST /api/v1/workflows- Yangi workflow yaratishGET /api/v1/workflows- Workflow'larni ko'rish
- Ro'yxatdan o'ting -
/api/v1/auth/signupendpoint orqali hisob yarating - Tizimga kiring -
/api/v1/auth/signinorqali autentifikatsiya qiling - Obuna qo'shing -
/api/v1/subscriptionsPOST so'rovi bilan yangi obuna yarating - Obunalarni boshqaring - GET, PUT, DELETE so'rovlari orqali obunalaringizni nazorat qiling
- Workflow sozlang - avtomatik eslatmalar va jarayonlar uchun workflow yarating
- JWT token asosida autentifikatsiya
- Parollar bcryptjs bilan shifrlangan
- Arcjet middleware orqali qo'shimcha himoya
- Input validatsiya Joi kutubxonasi bilan
- CORS va boshqa xavfsizlik choralarl
Loyihaga hissa qo'shmoqchi bo'lsangiz:
- Fork qiling
- Feature branch yarating
- O'zgarishlaringizni commit qiling
- Pull request yuboring
Ushbu loyiha shaxsiy foydalanish uchun mo'ljallangan.
Umarkhon Khodjaev