https://github.com/alimanian/pezhvaak
Pezhvaak is a social media API platform that offers user, post, comment, like, and follow functionalities using modern web technologies and RESTful principles.
https://github.com/alimanian/pezhvaak
laravel laravel-framework php rest rest-api
Last synced: 5 months ago
JSON representation
Pezhvaak is a social media API platform that offers user, post, comment, like, and follow functionalities using modern web technologies and RESTful principles.
- Host: GitHub
- URL: https://github.com/alimanian/pezhvaak
- Owner: alimanian
- Created: 2024-08-20T11:59:18.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-09-02T14:39:07.000Z (almost 2 years ago)
- Last Synced: 2025-01-10T04:52:10.640Z (over 1 year ago)
- Topics: laravel, laravel-framework, php, rest, rest-api
- Language: PHP
- Homepage:
- Size: 109 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
.
نسخه فارسی (کلیک کنید)
# 🚀 پروژه API لاراول پژواک
این پروژه یک API مبتنی بر Laravel برای پژواک است، یک پلتفرم رسانه اجتماعی که به کاربران امکان میدهد پست ایجاد کنند، نظر دهند، لایک کنند و کاربران دیگر را دنبال کنند.
## 📋 پیشنیازها
- PHP >= 8.2
- Composer
- MySQL (یا هر پایگاه دادهای که Laravel پشتیبانی میکند)
## 🛠️ نصب و راهاندازی
1. کلون کردن مخزن:
```
git clone https://github.com/alimanian/pezhvaak.git
```
2. نصب وابستگیها:
```
composer install
```
3. کپی کردن `.env.example` به `.env` و پیکربندی متغیرهای محیطی:
```
cp .env.example .env
```
4. تنظیم اطلاعات دیتابیس در فایل `.env`:
اطلاعات ورود به دیتابیس و نام دیتابیس را در فایل `.env` تنظیم کنید. مثال:
```
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=pezhvaak
DB_USERNAME=root
DB_PASSWORD=
```
5. تولید کلید برنامه:
```
php artisan key:generate
```
6. اجرای مایگریشنها و سیدرها:
```
php artisan migrate --seed
```
7. شروع سرور توسعه:
```
php artisan serve
```
## 📚 مستندات API
### 📌 نمای کلی
- URL پایه: `http://pezhvaak.test/api`
- احراز هویت: توکن Bearer (برای اکثر نقاط پایانی مورد نیاز است)
### 🔐 نقاط پایانی احراز هویت
| نقطه پایانی | متد | پارامترها | توضیحات |
|-------------|------|-----------|---------|
| `/register` | POST | `name`, `email`, `password` | ایجاد حساب کاربری جدید |
| `/login` | POST | `email`, `password` | احراز هویت و دریافت توکن API |
### 👤 نقاط پایانی کاربر
| نقطه پایانی | متد | نیاز به احراز هویت | پارامترها | توضیحات |
|-------------|------|---------------------|-----------|---------|
| `/v1/users/` | GET | خیر | - | دریافت همه کاربران |
| `/v1/users/{user_id}/posts` | GET | خیر | `user_id` (مسیر) | دریافت پستهای کاربر |
| `/v1/users/{user_id}/comments` | GET | خیر | `user_id` (مسیر) | دریافت نظرات کاربر |
| `/v1/users/{user_id}/likes` | GET | خیر | `user_id` (مسیر) | دریافت لایکهای کاربر |
| `/v1/users/{user_id}/followers` | GET | خیر | `user_id` (مسیر) | دریافت دنبالکنندگان کاربر |
| `/v1/users/{user_id}/following` | GET | خیر | `user_id` (مسیر) | دریافت کاربرانی که کاربر دنبال میکند |
| `/v1/users/{user_id}/follow` | POST | بله | `user_id` (مسیر) | دنبال کردن کاربر |
| `/v1/users/{user_id}/unfollow` | DELETE | بله | `user_id` (مسیر) | لغو دنبال کردن کاربر |
### 📝 نقاط پایانی پست
| نقطه پایانی | متد | نیاز به احراز هویت | پارامترها | توضیحات |
|-------------|------|---------------------|-----------|---------|
| `/v1/posts` | GET | خیر | - | دریافت همه پستها |
| `/v1/posts/{post_id}` | GET | خیر | `post_id` (مسیر) | دریافت پست با شناسه |
| `/v1/posts` | POST | بله | `content`, `attachments[]` (اختیاری) | ایجاد پست |
| `/v1/posts/{post_id}` | PUT | بله | `post_id` (مسیر), `content` | بهروزرسانی پست |
| `/v1/posts/{post_id}` | DELETE | بله | `post_id` (مسیر) | حذف پست |
### 💬 نقاط پایانی نظر
| نقطه پایانی | متد | نیاز به احراز هویت | پارامترها | توضیحات |
|-------------|------|---------------------|-----------|---------|
| `/v1/comments` | POST | بله | `content`, `post_id` | ایجاد نظر |
| `/v1/comments/{comment_id}` | DELETE | بله | `comment_id` (مسیر) | حذف نظر |
### ❤️ نقاط پایانی لایک
| نقطه پایانی | متد | نیاز به احراز هویت | پارامترها | توضیحات |
|-------------|------|---------------------|-----------|---------|
| `/v1/likes` | POST | بله | `post_id` | ایجاد لایک |
| `/v1/likes/{like_id}` | DELETE | بله | `like_id` (مسیر) | حذف لایک |
### ℹ️ اطلاعات اضافی
1. **مدیریت خطا**: تمام نقاط پایانی پاسخهای JSON را برمیگردانند. در صورت بروز خطا، پاسخ شامل پیام خطا و کد وضعیت HTTP مناسب خواهد بود.
2. **محدودیت نرخ**: اطلاعات مربوط به محدودیت نرخ در مشخصات فعلی API ارائه نشده است. لطفاً برای جزئیات سیاستهای محدودیت نرخ با ارائهدهنده API تماس بگیرید.
3. **هدرهای درخواست**:
- برای درخواستهای احراز هویت شده، توکن Bearer را در هدر Authorization قرار دهید.
- برای تمام فراخوانیهای API، `Accept: application/json` را در هدرهای درخواست تنظیم کنید.
4. **فرمت پاسخ**: تمام پاسخهای موفق در قالب JSON خواهند بود.
5. **صفحهبندی**: در صورت پیادهسازی، جزئیات مربوط به صفحهبندی (مانند اندازه صفحه، لینکهای صفحه بعدی/قبلی) باید در پاسخ برای نقاط پایانی که چندین مورد را برمیگردانند، گنجانده شود.
6. **نسخهبندی**: نسخه فعلی API v1 است، همانطور که از مسیرهای نقطه پایانی مشخص است.
7. **پارامترهای مسیر**: پارامترهایی که با (مسیر) مشخص شدهاند، بخشی از مسیر URL هستند و باید هنگام ارسال درخواستها با مقادیر واقعی جایگزین شوند.
توجه: برای اطلاعات دقیقتر در مورد نمونههای درخواست/پاسخ، کدهای خطای خاص و راهنمای استفاده، لطفاً به مستندات کامل API مراجعه کنید یا با ارائهدهنده API تماس بگیرید.
## 📮 کالکشن Postman
برای سهولت در تست و استفاده از API، یک فایل کالکشن Postman با نام `pezhvaak.postman_collection.json` در دایرکتوری اصلی پروژه قرار داده شده است. شما میتوانید این فایل را در Postman وارد کرده و به راحتی API را تست کنید.
### راهنمای استفاده از کالکشن Postman:
1. فایل `pezhvaak.postman_collection.json` را در Postman وارد کنید.
2. در Postman، به بخش `Pezhvaak` بروید و سپس قسمت `Variables` را باز کنید.
3. مقدار `base_url` را در هر دو فیلد `INITIAL VALUE` و `CURRENT VALUE` تنظیم کنید (معمولاً `http://localhost:8000/api`).
4. یک درخواست `/login` ارسال کنید تا توکن دریافت کنید.
5. توکن دریافت شده را در بخش `Variables` در `Pezhvaak` برای متغیر `token` در هر دو فیلد `INITIAL VALUE` و `CURRENT VALUE` قرار دهید.
6. اکنون میتوانید از APIهای مختلف استفاده کنید.
## 🤝 مشارکت
لطفاً قبل از مشارکت در این پروژه با ما تماس بگیرید. شما میتوانید با ایجاد یک issue یا ارسال یک pull request مشارکت کنید.
## 📄 مجوز
این پروژه تحت مجوز [نام مجوز] منتشر شده است. برای جزئیات بیشتر، فایل LICENSE را مشاهده کنید.
# 🚀 Pezhvaak Laravel API Project
English Version (Click to collapse)
This project is a Laravel-based API for Pezhvaak, a social media platform allowing users to create posts, comment, like, and follow other users.
## 📋 Prerequisites
- PHP >= 8.2
- Composer
- MySQL (or any database supported by Laravel)
## 🛠️ Installation and Setup
1. Clone the repository:
```
git clone https://github.com/alimanian/pezhvaak.git
```
2. Install dependencies:
```
composer install
```
3. Copy `.env.example` to `.env` and configure environment variables:
```
cp .env.example .env
```
4. Set up database information in the `.env` file:
Configure your database credentials and database name in the `.env` file. For example:
```
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=pezhvaak
DB_USERNAME=root
DB_PASSWORD=
```
5. Generate application key:
```
php artisan key:generate
```
6. Run migrations and seeders:
```
php artisan migrate --seed
```
7. Start the development server:
```
php artisan serve
```
## 📚 API Documentation
### 📌 Overview
- Base URL: `http://pezhvaak.test/api`
- Authentication: Bearer Token (required for most endpoints)
### 🔐 Authentication Endpoints
| Endpoint | Method | Parameters | Description |
|----------|--------|------------|-------------|
| `/register` | POST | `name`, `email`, `password` | Create a new user account |
| `/login` | POST | `email`, `password` | Authenticate and receive API token |
### 👤 User Endpoints
| Endpoint | Method | Auth Required | Parameters | Description |
|----------|--------|---------------|------------|-------------|
| `/v1/users/` | GET | No | - | Get all users |
| `/v1/users/{user_id}/posts` | GET | No | `user_id` (path) | Get user posts |
| `/v1/users/{user_id}/comments` | GET | No | `user_id` (path) | Get user comments |
| `/v1/users/{user_id}/likes` | GET | No | `user_id` (path) | Get user likes |
| `/v1/users/{user_id}/followers` | GET | No | `user_id` (path) | Get user followers |
| `/v1/users/{user_id}/following` | GET | No | `user_id` (path) | Get user following |
| `/v1/users/{user_id}/follow` | POST | Yes | `user_id` (path) | Follow user |
| `/v1/users/{user_id}/unfollow` | DELETE | Yes | `user_id` (path) | Unfollow user |
### 📝 Post Endpoints
| Endpoint | Method | Auth Required | Parameters | Description |
|----------|--------|---------------|------------|-------------|
| `/v1/posts` | GET | No | - | Get all posts |
| `/v1/posts/{post_id}` | GET | No | `post_id` (path) | Get post by ID |
| `/v1/posts` | POST | Yes | `content`, `attachments[]` (optional) | Create post |
| `/v1/posts/{post_id}` | PUT | Yes | `post_id` (path), `content` | Update post |
| `/v1/posts/{post_id}` | DELETE | Yes | `post_id` (path) | Delete post |
### 💬 Comment Endpoints
| Endpoint | Method | Auth Required | Parameters | Description |
|----------|--------|---------------|------------|-------------|
| `/v1/comments` | POST | Yes | `content`, `post_id` | Create comment |
| `/v1/comments/{comment_id}` | DELETE | Yes | `comment_id` (path) | Delete comment |
### ❤️ Like Endpoints
| Endpoint | Method | Auth Required | Parameters | Description |
|----------|--------|---------------|------------|-------------|
| `/v1/likes` | POST | Yes | `post_id` | Create like |
| `/v1/likes/{like_id}` | DELETE | Yes | `like_id` (path) | Delete like |
### ℹ️ Additional Information
1. **Error Handling**: All endpoints return JSON responses. In case of an error, the response will include an error message and appropriate HTTP status code.
2. **Rate Limiting**: Information about rate limiting is not provided in the current API specification. Please contact the API provider for details on rate limiting policies.
3. **Request Headers**:
- For authenticated requests, include the Bearer token in the Authorization header.
- Set `Accept: application/json` in the request headers for all API calls.
4. **Response Format**: All successful responses will be in JSON format.
5. **Pagination**: If implemented, details about pagination (e.g., page size, next/previous page links) should be included in the response for endpoints that return multiple items.
6. **Versioning**: The current API version is v1, as evident from the endpoint paths.
7. **Path Parameters**: Parameters marked with (path) are part of the URL path
## 📮 Postman Collection
For ease of testing and using the API, a Postman collection file named `pezhvaak.postman_collection.json` is provided in the root directory of the project. You can import this file into Postman and easily test the API.
### Guide to using the Postman collection:
1. Import the `pezhvaak.postman_collection.json` file into Postman.
2. In Postman, go to the `Pezhvaak` section and then open the `Variables` tab.
3. Set the `base_url` value in both the `INITIAL VALUE` and `CURRENT VALUE` fields (typically `http://localhost:8000/api`).
4. Send a `/login` request to receive a token.
5. Place the received token in the `Variables` section under `Pezhvaak` for the `token` variable in both `INITIAL VALUE` and `CURRENT VALUE` fields.
6. You can now use the various APIs.
## 🤝 Contributing
Please contact us before contributing to this project. You can contribute by creating an issue or submitting a pull request.
## 📄 License
This project is licensed under the [License Name]. See the LICENSE file for details.