Symfony Blog
A complete blog platform built with Symfony 7, featuring an advanced administration system, full CRUD management for articles, categories and tags, and a comment system with moderation. Deployed with Docker for a reproducible and scalable development environment.
Features
- Complete CRUD system for articles, categories, tags and comments
- Role-based admin dashboard with statistics
- Comment system with moderation and deletion capabilities
- Dynamic frontend filtering by category and tag using vanilla JavaScript
- Secure authentication and access control (ROLE_ADMIN)
- Hybrid database setup: relational content in MySQL and messages in MongoDB
- Responsive design implemented with Sass
Development Specs
- Backend: Symfony 7, PHP 8.2+
- Database: MySQL/MariaDB (content), MongoDB (messages)
- Frontend: Twig templates, Sass (modular structure), JavaScript (ES6+)
- Infrastructure: Docker, Docker Compose with Makefile automation
- Testing: PHPUnit
- Security: Symfony Security component, CSRF protection, role-based access control
Administration Dashboard
Public Interface
The Challenge
The main challenge of this project was building a complete blogging platform with a clear separation between the public interface and the administration panel. I implemented a secure role-based access control system to restrict administrative features to authorized users only.
Managing the relationships between entities — Articles, Categories, Tags, and Comments — with Doctrine ORM required careful structuring to keep the code maintainable and queries efficient. MySQL was used for the main relational data, while MongoDB handled user messages, offering a flexible and scalable hybrid database setup.
On the frontend, I implemented a dynamic filtering system using vanilla JavaScript to fetch and display articles by category or tag without reloading the page, improving user experience and performance.
Containerization was also a major aspect of the project. I set up a Docker environment for both development and production, and created a Makefile to simplify common tasks such as starting, stopping, and rebuilding containers. This made the setup process much faster and ensured a consistent environment across different machines.
Responsive Design
The application adapts seamlessly across all devices