#+title: php-blog * what php-blog. database-free blogging app in php. articles in markdown, metadata and comments in json. * philosophy a blog should degrade gracefully over time. articles, metadata, and comments live in the git repo, not a database. * install #+begin_src sh cd yourBlog.com git clone #+end_src set the globals at the top of index.php: #+begin_src sh $websiteProtocol = 'https://'; $shortDomain = 'yourBlog.com'; #+end_src clear the sample data and posts: #+begin_src sh cd _data/ && rm -rf * touch comments.json && touch metadata.json cd ../posts/ && rm -rf * touch 001-your-first-post.md #+end_src add a metadata object in _data/metadata.json for every post. enable FallbackResource in apache .conf or .htaccess: #+begin_src sh FallbackResource /index.php #+end_src * structure #+begin_example index.php fallback resource; routes requests, calls functions, fills the template _classes/ Comment.php, Parsedown.php (erusev/parsedown, MIT), Template.php _data/ metadata.json (one object per post), comments.json (written server-side as comments arrive) _functions/ loadJSON.php, loadRSS.php, parseMarkdown.php, submitComment.php _templates/ template.html posts/ markdown post bodies static/ app.css, optional prism.css / prism.js for syntax highlighting #+end_example metadata object: #+begin_src sh { "id": "001", "title": "Title of Post", "author": "Your Name", "description": "...", "tag": "my-category", "created": "2018-12-08 00:00:00", "modified": "2018-12-08 00:00:00", "link": "https://www.example.com/post/name.html", "published": "Yes" } #+end_src let the web user write comments.json (apache is usually www-data): #+begin_src sh chgrp -R www-data /path/to/website/ chmod -R g+w _data/comments.json #+end_src