# Neon Notes CMS Neon Notes is a small PHP blog CMS with a Bludit-style content layout: ```text bl-content/pages//index.txt ``` Posts and static pages are Markdown `.txt` files with front matter. Comments are stored in SQLite, site configuration and generated indexes are JSON, and visit stats are CSV for easy Excel import. ## Requirements - PHP 8.1 or newer - PDO SQLite enabled - Apache with `mod_rewrite` for `.htaccess` pretty URLs, or the PHP built-in server for local testing ## Local Server ```bash php -S 127.0.0.1:8080 router.php ``` ## CLI ```bash php cli/blog.php help php cli/blog.php list --all php cli/blog.php create "New Post" --status=published --category=Notes --tags=php,markdown php cli/blog.php update hello-neon --title="Hello Neon" php cli/blog.php delete old-slug php cli/blog.php rebuild ``` ## Comments Comments are moderated by default and protected by captcha plus a honeypot field. ```bash php cli/blog.php comments:list --status=pending php cli/blog.php comments:approve 1 php cli/blog.php comments:spam 2 php cli/blog.php comments:delete 3 ``` ## Import Bludit Import from a local directory on the server. The source can be the old Bludit root or the old `bl-content` folder. ```bash php cli/import-bludit.php /var/www/old-bludit --dry-run php cli/import-bludit.php /var/www/old-bludit php cli/import-bludit.php /var/www/old-bludit/bl-content php cli/import-bludit.php --source=/var/www/old-bludit --overwrite ``` The importer preserves original publish dates, modified dates, post/static-page type, draft/published state, categories, tags, authors, cover image metadata, allow-comments flags, page order, page-local files, and `bl-content/uploads`. It also scans local comment export files under the old `bl-content/databases` and `bl-content/workspaces` directories. To point it at a specific local comment export: ```bash php cli/import-bludit.php /var/www/old-bludit --comments=/var/www/old-bludit/comments.json ``` ## Stats Visits are appended to `storage/stats/visits.csv` with a header row suitable for spreadsheet import. ```bash php cli/blog.php stats:summary ``` ## Apache The included `.htaccess` enables pretty URLs and blocks direct access to app code, configuration, SQLite, CSV, JSON databases, and Markdown content files. For a subdirectory install such as `https://example.com/blog`, either place the app in that folder and let the CMS auto-detect the path, or set: ```json { "base_url": "https://example.com/blog", "base_path": "/blog" } ``` `base_path` controls generated links, assets, forms, RSS, and sitemap paths.