This blog runs on **Yet-Another-Blog developed in Python (Flask) and SQLite. This open-source project is designed to provide a simple, secure, and customizable experience.
I developed Yet-Another-Blog to meet my own needs: a simple, flexible, and efficient solution without unnecessary features. My goal was to create a blog engine that allows me to publish easily, manage multiple languages, and maintain full control over the content, while avoiding the complexity and heaviness of traditional CMS platforms. This project reflects my vision of a minimalist yet complete tool, designed for performance and customization.
✨ Key Features
Multilingual Support
- Native support for multiple languages (English, French, German).
- Automatic language detection and preference storage via cookies.
- JSON files for localization and text customization.
Content Management
- Admin interface with Markdown editor.
- Post statuses: Draft, Published, Scheduled.
- Author profiles with bio, social links, and photo.
- Media library for managing images.
- Automatic reading time calculation and full-text search.
- Ability to add custom pages.
UX and Themes
- Available themes: Default, Light, Dark, Vibrant.
- Dark mode toggle with preference persistence.
- Responsive design based on Bootstrap 5.
- Lazy loading for images to optimize performance.
SEO and Performance
- RSS feeds per language.
- Automatic meta tags, Open Graph, Twitter Cards, and sitemap.xml.
- Configurable robots.txt file.
- Dynamic sitemap.txt file.
Engagement
- Easy sharing on LinkedIn, Twitter/X, and Bluesky.
- “Helpful / Not Helpful” reactions.
- Dedicated pages for each author.
Security
- Secure authentication with password hashing.
- CSRF protection and parameterized SQL queries.
- Secure file uploads.
- 2FA for administrators/editors.
Project Link
Check out the GitHub repository: jmousqueton/Yet-Another-Blog
Have ideas to improve Yet-Another-Blog? Contribute on GitHub or share your suggestions!