---
# System prepended metadata

title: Social Media Platform Task for Laravel Trainer

---

# Social Media Platform Task - Laravel

## Objective
Develop a Laravel-based social media platform that showcases proficiency in database design, especially with complex relationships, morph relations, real-time features, and AJAX.

## Features

### 1. User Profiles
  - Users can have multiple posts, comments, and reactions.
  - Users can follow and be followed by other users.

### 2. Posts
  - Posts can have multiple comments and reactions.
  - Each post can belong to multiple categories.

### 3. Comments
  - Comments can also have multiple reactions.

### 4. Reactions
  - A reaction can belong to a post or a comment.

### 5. Categories
  - Each category can have multiple posts associated with it.

### 6. Followers
  - establish the follower and following mechanism.

## Functionalities

### 1. AJAX-based CRUD
- Implement CRUD operations for posts, comments, and reactions using AJAX to ensure seamless user experience.

### 2. Real-time Notifications
- Users should receive real-time notifications (using Laravel's broadcasting features) when:
  - Someone reacts to their post or comment.
  - Someone comments on their post.
  - Someone starts following them.

### 3. Search & Filter
- Users should be able to search for other users and posts.
- Users should be able to filter posts based on categories.

### 4. User Dashboard
- Show a dashboard for users where they can view:
  - Their posts and the reactions they received.
  - Comments on their posts.
  - List of their followers and who they are following.
  - Use AJAX to paginate the user's posts.

## Requirements

- Use Laravel's Eloquent ORM for all database operations.
- Ensure the use of proper validation and request sanitization.
- Follow best practices for Laravel application structure.

## Bonus

- Implement an image upload feature where users can upload profile pictures and post images.
