A Django REST API for a developers' social network — share code snippets and projects, follow other devs, like and comment.
רשת חברתית למתכנתים: שיתוף פוסטים עם קטעי קוד, ניהול פרויקטים עם תורמים, מעקב אחרי מפתחים אחרים, לייקים ותגובות. הפרויקט הוא Backend מלא מבוסס Django REST Framework עם אותנטיקציית JWT.
- פרופיל מפתח עם ביוגרפיה, תמונת פרופיל וקישורים לגיטהאב, לינקדאין ואתר אישי
- פוסטים עם קטעי קוד ותיוג שפת תכנות
- לייקים לפוסטים ותגובות מקוננות (תגובות לתגובות)
- מעקב אחרי מפתחים אחרים (Follow / Unfollow)
- פרויקטים עם קישור לגיטהאב, שפות תכנות ותורמים עם תפקידים
- חיפוש וסינון: פוסטים לפי תוכן, קוד, שפת תכנות או מחבר; פרויקטים לפי כותרת, תיאור, שפה או תורם
- ניהול רשימת שפות התכנות (עריכה למנהלים בלבד)
- אותנטיקציית JWT (התחברות באמצעות אימייל), הגבלת קצב בקשות (Rate Limiting) ועימוד (Pagination)
- שפה ו-Framework: Python 3.8+, Django 4.2
- API: Django REST Framework, Simple JWT, django-filter, django-cors-headers
- בסיס נתונים: SQLite כברירת מחדל לפיתוח, תמיכה ב-PostgreSQL דרך משתני סביבה (psycopg2)
- תצורה: python-decouple (קובץ
.envאופציונלי) - בדיקות: pytest, pytest-django, factory-boy, coverage
- Python 3.8 ומעלה
- pip
- שכפל את המאגר:
git clone https://github.com/yairixStudio/rocket.git
cd rocket- צור והפעל סביבה וירטואלית:
Linux / macOS:
python -m venv venv
source venv/bin/activateWindows:
python -m venv venv
venv\Scripts\activate- התקן את החבילות הנדרשות:
pip install -r requirements.txt- (אופציונלי) צור קובץ
.envבתיקיית הפרויקט הראשית. לכל המשתנים יש ערכי ברירת מחדל מתאימים לפיתוח מקומי, כך שאפשר לדלג על שלב זה. לפריסה או לחיבור PostgreSQL הגדר:
SECRET_KEY=your-secret-key
DEBUG=True
ALLOWED_HOSTS=127.0.0.1,localhost
# Database (ברירת מחדל: SQLite)
DB_ENGINE=django.db.backends.sqlite3
DB_NAME=db.sqlite3
DB_USER=
DB_PASSWORD=
DB_HOST=
DB_PORT=
# CORS / CSRF
CORS_ALLOWED_ORIGINS=http://localhost:3000,http://127.0.0.1:3000
CSRF_TRUSTED_ORIGINS=http://localhost:3000,http://127.0.0.1:3000
CSRF_COOKIE_SECURE=False
CSRF_COOKIE_HTTPONLY=False
- בצע מיגרציות:
python manage.py migrate- צור משתמש אדמין:
python manage.py createsuperuser- הפעל את השרת:
python manage.py runserverהשרת יעלה בכתובת http://127.0.0.1:8000/ וממשק הניהול זמין ב-/admin/.
ההתחברות מתבצעת באמצעות אימייל וסיסמה (שדה הזיהוי של המשתמש הוא האימייל).
POST /api/auth/token/— קבלת JWT token (access + refresh)POST /api/auth/token/refresh/— רענון tokenPOST /api/auth/token/verify/— אימות token
GET /api/users/— רשימת משתמשיםPOST /api/users/— הרשמה (פתוח ללא אותנטיקציה)GET /api/users/{id}/— פרטי משתמשPATCH /api/users/{id}/— עדכון פרופיל (הבעלים בלבד)GET /api/users/{id}/posts/— הפוסטים של המשתמשGET /api/users/{id}/followers/— עוקביםGET /api/users/{id}/following/— נעקביםPOST /api/users/{id}/follow/— מעקב אחרי משתמשPOST /api/users/{id}/unfollow/— הפסקת מעקב
GET /api/posts/— רשימת פוסטים (תומך ב-?search=, סינון לפיprogramming_languageו-author, ומיון)POST /api/posts/— יצירת פוסטGET /api/posts/{id}/— פרטי פוסטPATCH /api/posts/{id}/— עדכון פוסט (המחבר בלבד)DELETE /api/posts/{id}/— מחיקת פוסט (המחבר בלבד)POST /api/posts/{id}/like/— לייקPOST /api/posts/{id}/unlike/— הסרת לייקGET /api/posts/{id}/comments/— תגובות לפוסט
POST /api/comments/— יצירת תגובה (או תגובה לתגובה באמצעותparent_comment)PATCH /api/comments/{id}/— עדכון תגובה (המחבר בלבד)DELETE /api/comments/{id}/— מחיקת תגובה (המחבר בלבד)GET /api/comments/{id}/replies/— תגובות מקוננות
GET /api/projects/— רשימת פרויקטים (תומך ב-?search=, סינון לפיprogramming_languages,creatorו-contributor)POST /api/projects/— יצירת פרויקטGET /api/projects/{id}/— פרטי פרויקטPATCH /api/projects/{id}/— עדכון פרויקט (היוצר בלבד)DELETE /api/projects/{id}/— מחיקת פרויקט (היוצר בלבד)POST /api/projects/{id}/add_contributor/— הוספת תורם עם תפקיד (היוצר בלבד)DELETE /api/projects/{id}/remove-contributor/{user_id}/— הסרת תורם (היוצר בלבד)
GET /api/programming-languages/— רשימת שפות תכנות (פתוח)POST /api/programming-languages/— הוספת שפה (אדמין בלבד)PATCH /api/programming-languages/{id}/— עדכון שפה (אדמין בלבד)DELETE /api/programming-languages/{id}/— מחיקת שפה (אדמין בלבד)
הפרויקט כולל בדיקות יחידה למודלים, לסריאלייזרים ול-Views וכן בדיקות אינטגרציה ו-End-to-End שמדמות מסע משתמש מלא — הרשמה, התחברות, עדכון פרופיל, יצירת פרויקט, מעקב והוספת תורמים.
הרצת כל הבדיקות:
pytestהרצת בדיקות האינטגרציה וה-E2E בלבד:
pytest tests/בדיקת כיסוי קוד:
coverage run -m pytest
coverage reportrocket/
├── devconnect/ # הגדרות הפרויקט (settings, urls, wsgi/asgi)
├── users/ # משתמשים ומעקב (User מותאם אישית, Follow)
├── posts/ # פוסטים, לייקים ותגובות
├── projects/ # פרויקטים ותורמים
├── programming_languages/ # שפות תכנות
├── tests/ # בדיקות אינטגרציה ו-E2E
├── docs/ # אפיון Backend, סיפורי משתמש ואסטרטגיית בדיקות
├── manage.py
├── pytest.ini
└── requirements.txt
תיעוד נוסף זמין בתיקיית docs/: אפיון ה-Backend, סיפורי משתמש ואסטרטגיית הבדיקות.