Ideas is a social media web app built with Laravel.
Users share, discover, and interact with ideas through a clean interface.
The app includes a RESTful API, an admin dashboard, and performance optimizations.
- Authentication – Secure registration and login
- Welcome Emails – Sent automatically via Laravel Queues
- Idea Management – Create, view, edit, and delete ideas with preserved formatting
- Dynamic Actions – Like/unlike and follow/unfollow without reloading the page (AJAX)
- Profiles – Display bio, ideas, and stats (followers, following, ideas, comments, likes)
- Profile Customization – Upload and update profile pictures, edit bio
- Personalized Feed – Shows ideas from followed users
- Top Users – Discover popular creators
- Search – Find users by name or username
- Statistics – Widgets for total counts (Admins, Users, Ideas, Comments)
- User Management – List, search, delete, promote/demote users
- Inline Editing – Edit name, username, or email directly in the table (AJAX)
- Idea & Comment Management – View and delete any idea or comment
- AJAX Tables – Seamless updates for actions like delete or status changes
- Token-Based Auth – Secured with Laravel Sanctum
- CRUD for Ideas – Endpoints for create, read, update, delete
- Social Endpoints – Like/unlike, follow/unfollow, post/delete comments
- User Endpoints – Fetch profiles, followers, and followings
- API Resources – Clean JSON output using Laravel Resources
- Eager Loading – Used in controllers to reduce N+1 queries
- Model-Level Eager Loading –
$withproperty on Idea model auto-loads author - Targeted Controller Loading – Avoids redundant nested relationships
- In-Memory Checks – Uses collection
.contains()instead of queries in Blade
- Welcome Emails – Sent in the background using
SendWelcomeEmailJob - Queue Worker – Runs continuously (
php artisan queue:work) - Supervisor – Used in production to manage queue processes
- Like/Follow Actions – AJAX updates database and UI instantly
- Admin Panel – Uses AJAX for delete and status updates without reload
- PHP >= 8.1
- Composer
- Node.js & NPM
- Database (MySQL recommended)
git clone https://github.com/YousefAlTohamy/Ideas.git
cd Ideascomposer install
npm installcp .env.example .env
php artisan key:generate- Update database credentials in
.env - Update mail configuration (see Mail Server Setup below)
php artisan migratephp artisan storage:linknpm run devUse npm run build for production.
For Gmail SMTP:
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=your-email@gmail.com
MAIL_PASSWORD=your-16-character-app-password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS="your-email@gmail.com"
MAIL_FROM_NAME="${APP_NAME}"
Then clear config:
php artisan config:clearInstall concurrently if missing:
npm install concurrently --save-devAdd this to package.json:
"scripts": {
"start": "concurrently \"php artisan serve\" \"php artisan queue:work\""
}Run both servers:
npm run startApp runs at:
http://127.0.0.1:8000
Queue worker stays active to process jobs.
Developer: Yousef Al Tohamy Ahmed
Email: youseftohtoh46@gmail.com
LinkedIn: linkedin.com/in/yousefaltohamy
GitHub: github.com/YousefAlTohamy