# ChirpNest API
**ChirpNest API** هو Backend لشبكة اجتماعية شبيه بتويتر، مبني باستخدام **NestJS 11.x و TypeScript**، مع اتباع أفضل ممارسات البناء والأنماط المعمارية الحديثة.
---
## الميزات الرئيسية
* **CRUD عام**: قاعدة واحدة لكل العمليات تقلل التكرار
* **Single Table Inheritance (STI)**: دعم أنواع مستخدمين متعددة
* **JWT Authentication**: وصول آمن وتدوير Refresh Token
* **Pagination & Filtering متقدم**: دعم استعلامات معقدة
* **Swagger Docs تفاعلية**: توثيق شامل
### المستخدمون
* أربعة أنواع: Regular, Premium, Admin, Moderator
* إدارة الحالة (Active, Inactive, Suspended, Banned)
* ملفات شخصية، BIO وصورة
### التغريدات
* CRUD كامل
* استخراج هاشتاغ تلقائي
* ترشيح، تصفية، وتجميع التغريدات
* دعم Soft Delete
### هاشتاغات
* كشف تلقائي للتغريدات
* متابعة الهاشتاغات الشائعة
---
## الميزات التقنية
* **نمط CRUD عام**: BaseService للتقليل من التكرار
* **استجابة موحدة**: كل Endpoints تعطي JSON بنفس الهيكل
* **استعلامات متقدمة**: Pagination, Filtering, Sorting, Search
* **STI للمستخدمين**: نوع واحد للجدول مع خصائص مختلفة لكل ChildEntity
* **Testing**: Unit + E2E + Test Coverage
---
## التقنيات
| التقنية | الغرض | النسخة |
| ---------- | ----------------- | ------ |
| NestJS | Framework Backend | 11.x |
| TypeScript | لغة البرمجة | 5.x |
| PostgreSQL | قاعدة بيانات | 16.x |
| TypeORM | ORM & Migrations | 0.3.x |
| JWT | Authentication | 4.x |
| bcrypt | Password Hashing | 6.x |
| Swagger | API Docs | 8.x |
---
## التثبيت السريع
1. Clone repository:
```bash
git clone https://github.com/yourus...
cd chirpnest-api
npm install
```
2. إعداد البيئة:
```bash
cp .env.example .env
# عدل بيانات DB و JWT
```
3. إعداد قاعدة البيانات:
```bash
npm run migration:run
```
4. تشغيل السيرفر:
```bash
npm run start:dev
```
---
## Endpoints أساسية
* **Auth:** `/auth/signup`, `/auth/login`, `/auth/refresh`
* **Users:** CRUD كامل + قائمة paginated + البحث
* **Tweets:** CRUD كامل + الترشيح والفلاتر
* **Hashtags & Profiles:** CRUD كامل
---
## بنية المشروع
```
chirpnest-api/
├── src/
│ ├── common/ # Utilities, interceptors, filters, providers
│ ├── auth/ # Authentication module
│ ├── users/ # Users module
│ ├── tweet/ # Tweets module
│ ├── hashtag/ # Hashtags module
│ ├── profile/ # Profiles module
│ └── main.ts # Entry point
├── docs/ # Documentation
├── test/ # Unit & E2E tests
├── .env.example # Template
└── package.json
```
---
## Deployment
* **Docker:**
```bash
docker build -t chirpnest-api .
docker run -p 3000:3000 --env-file .env chirpnest-api
```
* **مباشر / PM2:**
```bash
npm run build
pm2 start dist/main.js --name chirpnest-api
```
---
## نصائح الأداء
* Connection pooling، Query optimization، Pagination
* Lazy loading للعلاقات حسب الحاجة
* Response caching مع Redis اختياري
---
## المساهمة
1. Fork & Clone
2. Branch جديد
3. Commit & Push
4. إنشاء Pull Request
مع اتباع **معايير TypeScript، unit tests، conventional commits**
---
## الترخيص
**MIT License**