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

blog's homepage mobile
blog's article mobile
blog's comment section mobile
blog's about page mobile
blog's contact page mobile

Other Projects