Blog platform. Written in PHP, with no framework and no external dependencies. Works on any hosting service that supports PHP and SQLite.
- PHP 91.1%
- JavaScript 4.8%
- CSS 4%
- Dockerfile 0.1%
| deploy | ||
| docs | ||
| lang | ||
| public | ||
| src | ||
| tools | ||
| .env.example | ||
| .gitignore | ||
| .htaccess | ||
| README.md | ||
Written Whisper
A simple, fast, and secure personal blog. Pure PHP, SQLite, zero external dependencies.
Supports articles, short notes, and photos, with full Fediverse integration (Mastodon, Pixelfed, Misskey) via ActivityPub.
Requirements
- PHP 8.0+, PDO SQLite extension
- Apache with mod_rewrite or nginx
Quick install
# 1. Copy public/, src/, data/, lang/ to the server
# 2. Copy src/config.example.php -> src/config.php
# (config.example.php has no personal values - safe to use as a starting point)
# 3. Open /setup.php in your browser - configure site title, URL, admin username/password
On shared hosting without the option to set the document root to public/, there's a .htaccess at the project root that automatically rewrites requests (see the comments inside it).
Detailed instructions in docs/en/guide.md (English) or docs/ro/guide.md (Romanian).
Documentation
Documentation is available in English (docs/en/) and Romanian (docs/ro/).
| Document | Content |
|---|---|
| guide.md | Full installation, configuration, usage |
| admin.md | Admin panel guide |
| modules.md | Module system - enabling, creating, removing |
| activitypub.md | ActivityPub / Fediverse - architecture and flows |
| theming.md | Themes and visual customization |
| troubleshooting.md | Common errors and how to fix them |
| tools.md | CLI tools (import, export, migration) |
| contributing.md | Contribution guide |
| changelog.md | Change history |
Author
Made by ThinkRoot.