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)
Türkçe: https://niyazi.net/tr/laravel-blog-sistemi-alphablog
Muhammed Niyazi ALPAY - Cryptograph
Senior Software Developer & Senior Linux System Administrator
Meraklı
PHP MySQL MongoDB Python Linux Cyber Security
There are none comment