Full-Stack Web Application
Laravel Blog Platform
About this Project
Project Overview
This project is a fully functional blog created with Laravel, developed as a project for the course "10015 Server Side Systems" at the University of the West of Scotland. It serves as a practical demonstration of building a modern, full-stack web application from the ground up, incorporating key features like user authentication, content management, and a dynamic, filterable frontend.
The Challenge
The primary challenge was to apply server-side development principles to build a complete, database-driven web application using a modern framework. This involved designing a logical database schema, implementing a robust Model-View-Controller (MVC) architecture, securing the application with user authentication and authorization, and creating a clean, interactive user interface for both readers and administrators.
Key Features
- User Authentication: Secure registration, login, and logout functionality for users.
- Post Management: Full Create, Read, Update, and Delete (CRUD) functionality for blog posts, managed through a dedicated admin panel.
- Dynamic Filtering: Posts can be easily filtered by category, author, or a text-based search query.
- Commenting System: Authenticated users can engage with posts by leaving comments.
- Admin Dashboard: A restricted area, protected by a Gate, for administrators to manage all blog content.
- Component-Based UI: The frontend is built with reusable Laravel Blade components for a clean, modular, and maintainable structure.
Technical Deep Dive
Backend: The application is built on the Laravel 8 framework, adhering to the MVC pattern. Data persistence is managed through the Eloquent ORM with migrations for database schema versioning, connecting to a MySQL database. User authorization is handled via Laravel Gates, providing a simple yet effective role-based access control system for the admin dashboard.
Frontend: The user interface is styled with Tailwind CSS, a utility-first CSS framework that allows for rapid and responsive design. JavaScript interactivity for UI elements like dropdowns and flash messages is powered by Alpine.js, providing a lightweight solution without the overhead of a larger framework. All views are rendered using Laravel's Blade templating engine, with a heavy emphasis on reusable components.
DevOps/Deployment:
The project is configured for a standard PHP development environment. Asset bundling is handled by Laravel Mix. The setup includes configuration for linking the public storage disk (php artisan storage:link) to serve user-uploaded assets like post thumbnails correctly.
Personal Learnings
This project was a comprehensive exercise in building a full-stack application from concept to completion. It solidified my understanding of the MVC pattern, database design with migrations, and the importance of a well-structured and maintainable codebase. Implementing a robust authentication and authorization system provided valuable insights into web application security, while building a component-driven frontend with Tailwind CSS and Alpine.js was an excellent experience in modern frontend development workflows.