M. Niyazi Alpay
M. Niyazi Alpay
M. Niyazi Alpay

I've been interested in computer systems since a very young age, and I've been programming since 2005. I have knowledge in PHP, MySQL, Python, MongoDB, and Linux.

 

about.me/Cryptograph

Laravel Blog System - AlphaBlog

I have completed the blog system that I have been developing for my own website in my spare time after work and shared it as open source on my Github account.

I developed this blog system with Laravel and used MongoDB as the database. I also created the site search engine with Meilisearch. To work with MongoDB in Laravel, I used the "mongodb/laravel-mongodb" package officially shared by MongoDB.

To add and resize images in blog or page content, I used Spatie Media Library, but this package is not compatible with MongoDB. To ensure compatibility, I forked the spatie/laravel-medialibrary repository to my own GitHub account, made the necessary adjustments, and included it in this project with composer.

Later, due to the incompatibility of the package I used for webauthn with MongoDB, I tried to fork and modify it as well, but I could not interfere with the authorization part because Laravel's own system works directly through Mysql. Therefore, I reorganized the entire system to use Mysql as the database instead of MongoDB. On Github, both the initial design with MongoDB and the version with Mysql are available in the same repository on different branches.

For this system to work, the following PHP functions must be enabled on the server:

escapeshellarg, escapeshellcmd, proc_open, proc_get_status, proc_close 

Follow these steps for installation after the git clone process:

composer update --no-dev
cp .env.example .env

After editing the .env file with the database information, Meilisearch, SMTP, and Cloudflare Turnstile definitions, continue with the following commands

php artisan key:generate
php artisan storage:link
php artisan migrate:fresh --seed

After all these steps, you can change the admin panel path from the ADMIN_PANEL_PATH variable in the .env file if you wish.

php artisan optimize

The installation process is complete. Finally, we run the following command to create the admin user.

php artisan app:create-user

After running this command, we specify our first name, last name, username, nickname, email address, and password in order. The username used to log into the site and the names displayed in the topics are different. In this case, the username is only known by the user and the system administrator.

General Features of the System

  • Create blog with category
  • Pages
  • Personal notes
    • Your personal notes are stored encrypted in the database.
    • Your encryption key is not stored in the database. If you forget your encryption key, you will not be able to access your notes.
    • Your notes cannot be accessed by the admin or any other user.
  • Site search engine (Meilisearch)
  • Admin panel
  • Webauthn
  • Two-step verification
  • Artificial Intelligence Chatbot - Gemini or ChatGPT
  • IP Filter (Blacklist and Whitelist)
  • User management
  • Cloudflare Turnstile (similar to Google Recaptcha)
  • Email SMTP
  • Media Library
  • MongoDB
  • Laravel 11
  • PHP 8.3
  • Bootstrap 5
  • Font Awesome 6.5.1 (Pro)

https://github.com/niyazialpay/AlphaBlog

Muhammed Niyazi ALPAY - Cryptograph

Senior Software Developer & Senior Linux System Administrator

Meraklı

PHP MySQL MongoDB Python Linux Cyber Security

You may also want to read these

There are none comment

Leave a comment

Your email address will not be published. Required fields are marked *