Skip to content

Repository files navigation

DevConnect

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

שלבי התקנה

  1. שכפל את המאגר:
git clone https://github.com/yairixStudio/rocket.git
cd rocket
  1. צור והפעל סביבה וירטואלית:

Linux / macOS:

python -m venv venv
source venv/bin/activate

Windows:

python -m venv venv
venv\Scripts\activate
  1. התקן את החבילות הנדרשות:
pip install -r requirements.txt
  1. (אופציונלי) צור קובץ .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
  1. בצע מיגרציות:
python manage.py migrate
  1. צור משתמש אדמין:
python manage.py createsuperuser
  1. הפעל את השרת:
python manage.py runserver

השרת יעלה בכתובת http://127.0.0.1:8000/ וממשק הניהול זמין ב-/admin/.

API Endpoints

אותנטיקציה (JWT)

ההתחברות מתבצעת באמצעות אימייל וסיסמה (שדה הזיהוי של המשתמש הוא האימייל).

  • POST /api/auth/token/ — קבלת JWT token (access + refresh)
  • POST /api/auth/token/refresh/ — רענון token
  • POST /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 report

מבנה הפרויקט

rocket/
├── devconnect/             # הגדרות הפרויקט (settings, urls, wsgi/asgi)
├── users/                  # משתמשים ומעקב (User מותאם אישית, Follow)
├── posts/                  # פוסטים, לייקים ותגובות
├── projects/               # פרויקטים ותורמים
├── programming_languages/  # שפות תכנות
├── tests/                  # בדיקות אינטגרציה ו-E2E
├── docs/                   # אפיון Backend, סיפורי משתמש ואסטרטגיית בדיקות
├── manage.py
├── pytest.ini
└── requirements.txt

תיעוד נוסף זמין בתיקיית docs/: אפיון ה-Backend, סיפורי משתמש ואסטרטגיית הבדיקות.

יוצר

Yairix Studio

About

DevConnect — Django REST API for a developers' social network: posts with code snippets, projects with contributors, follows, likes and comments. JWT auth, search and filtering, full pytest suite with integration and E2E tests.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages