Project Info:
My personal website, which crowns my learning of programming and is a red thread in my journey to becoming a senior developer. This project includes an extended use of PHP and JS languages, Symfony framework, Sass compiler, good coding practices (Versioning, Webpack, Docker) and addons like Easyadmin (admin interface) and CKEditor (Text editor).
List of the project's main features:
Visitor side:
- Portfolio: projects sorted by category
- Blog: posts sorted by category and author
- Lessons: sorted by category and language
- Create an "Author" account: an author can create lessons and blogposts
- Leave a comment under projects, lessons and posts. Upon creation, an email is sent to the registered person and to the contact address of the site (to notify the administrator).
Admin & Author side:
- Customized Rich Text Editor: Widgets creation for CKEditor (accordions, result box) and addition of extensions (Code blocks, etc.), menu settings according to the project needs, and transformation of the content generated by the text editor (via javascript on the frontend)
- Media library with CKFinder, attached to CKEditor (nodejs library).
Admin side:
- Card system on dashboard: purge of orphaned uploaded files, alert of new registrations (authors), alert of new comments
- Moderation of registrations (authors): authors must be manually validated by an administrator to get access to the dashboard dedicated to authors (access only to editing and creation of blogposts and lessons). The validation of an author starts sending an email to the author, inviting him/her to login to his/her account and write a first blogpost.
- Comments moderation: new comments must be validated by an administrator to be visible on the site.
- Settings page: change logo, site name, contact information, number of columns in the portfolio, number of items on the homepage, and much more
- System for purging orphaned uploaded files (i.e. no longer referenced in the database). The comparison is done via a .json manifest updated after each project, lesson or blogpost registration.
Other technical aspects:
- Customization of the design and buttons of the EasyAdminBundle administration panel.
- Dynamic templating with twig
- Command to manually create admin settings, and admin accounts via the Symfony CLI.