Loading images…
Overview
The Uhillian is a full‑stack social platform I built in 2022 with Laravel and PHP. It combines classic social networking mechanics (accounts, posts, comments) with a course‑review experience similar to RateMyProfessors, but tailored for my community. The project here is an archive of that work with screenshots and notes about the implementation.
Backend and infrastructure
- Framework: Laravel (PHP), following MVC conventions and service‑oriented helpers.
- Database: MySQL with migrations, seeders, and Eloquent models for all core entities.
- Hosting: AWS‑backed database and app infrastructure, provisioned and deployed via Laravel Forge.
- Security: Email‑based authentication (Laravel Breeze/Jetstream style), CSRF protection, and route middleware.
- Sessions: Server‑backed sessions with sane cookie settings for production.
Deployment and workflow
- Git‑based flow from development to production with topic branches and PRs.
- SSH access configured for zero‑downtime deploys through Laravel Forge.
- Environment management using .env, Forge secrets, and per‑env configs.
- Served a small community of roughly ~80 users in production.
Frontend
- Built with Blade templates, Bootstrap, vanilla JS, HTML, and CSS.
- Reusable Blade components for forms, flash messages, and lists.
- Progressive enhancement approach: works without JS where practical.
Core features
- Email authentication and account onboarding.
- User management: profiles, roles/permissions for admin tasks.
- User sessions with middleware‑guarded routes.
- Posting and commenting with basic moderation tooling.
- Course reviews: create/read with rating fields and comments, similar to ratemyprof.com.
- Notifications and activity feeds (simple, database‑driven).
What I learned
- Trade‑offs between rapid iteration and schema design; migrations and seeds kept the team flexible.
- Forge is a great fit for small apps: reliable deploys, easy SSL, and fast rollbacks.
- Keeping the frontend modest with Bootstrap + Blade helped ship fast and maintain accessibility.