Fork 0
A simple PHP blogging platform
Go to file
sloum 35dc5bf16f Fixes rss generation 2024-01-22 23:02:50 -08:00
css Adds more css options 2023-12-20 20:40:05 -08:00
.gitignore Adds rss capabilities 2024-01-18 09:09:45 -08:00
404.php Initial commit 2023-12-19 15:55:46 -08:00
README.md Adds RSS info to readme 2024-01-18 09:12:15 -08:00
admin-bar-partial.php Switches to using php sessions 2024-01-18 14:09:17 -08:00
admin.php Switches to using php sessions 2024-01-18 14:09:17 -08:00
blog_log.php Switches to using php sessions 2024-01-18 14:09:17 -08:00
chickadee.svg Wide ranging updates to most areas of the system 2023-12-20 15:54:57 -08:00
common.php Adds rss capabilities 2024-01-18 09:09:45 -08:00
config.php Adds more HEAD injection options to config 2023-12-21 16:05:24 -08:00
delete_data.php Switches to using php sessions 2024-01-18 14:09:17 -08:00
edit.php More minor fixes 2023-12-21 15:47:29 -08:00
index.php Adds rss capabilities 2024-01-18 09:09:45 -08:00
logcheck.php Switches to using php sessions 2024-01-18 14:09:17 -08:00
logout.php Removes more root dir references and makes more relative 2023-12-21 14:51:05 -08:00
new-post.php Switches to using php sessions 2024-01-18 14:09:17 -08:00
parsedown.php Initial commit 2023-12-19 15:55:46 -08:00
pass_hash.php More gitignore fudging 2023-12-21 09:27:04 -08:00
post.php Removes logcheck from post.php, which is a public page 2024-01-10 17:15:33 -08:00
rss_gen.php Fixes rss generation 2024-01-22 23:02:50 -08:00
site_actions.php Removes more root dir references and makes more relative 2023-12-21 14:51:05 -08:00
upload.php Adds folder creation to new post/media flows if the folder doesn't exist. Updates readme. 2023-12-21 20:09:03 -08:00



A small php-based blog-system/cms that uses markdown (which also supports regular html markup) for post editing and a flat file system rather than a database. It is a single user system and, by design, does not support comments, social boost widgets, or other cruft. Just simple blogging and very basic media management. No javascript is used and there is no tracking.

Who is this for?

Likely just me and a few friends. That said, anyone wanting a simple and lightweight blog system for their website that just uses basic html and css with no javascript might enjoy it.

Current Capabilities

  • Login (username/password)
    • Login: /blog.log.php
  • Admin area: /admin.php
    • Post Actions
      • Create (markdown is a first class citizen)
      • Delete
      • Edit
    • Media Actions
      • Upload images/documents
      • Delete images/documents
    • Site Actions
      • Enable/Disable integrated simple.css css theme
      • Editable custom css
        • If simple.css is enabled, the css edit page will also show a guide for modifying the variables that simple.css has set up
  • Post Index (index.php)
    • Shows list of posts
    • Customizable top blurb
    • Customizable bottom blurb
    • Site header
    • Site footer
  • Individual Post
    • Post body (rendered from markdown)
    • Site header
    • Site footer
  • Behavioral Customization (config.php)
    • SITE_NAME, shown in site header and elsewhere
    • TOP_BLURB, custom html that appears above post listing on index.php
    • FOOT_BLURB, custom html that appears below post listing on index.php
    • SITE_HEADER, custom html to override default site header
    • SITE_FOOTER, custom html to override default site footer
    • SITE_LANG, language declaration for blog content (default is en)
    • SHOW_DATES, turn on or off dates next to post titles
    • DATE_STYLE, php date format string for how dates should display
    • SIMPLE_CSS, turn on or off including of simple.css (can also be adjusted in the admin screen: /admin.php)
    • INDEX_HEAD, injects additional tags at the end of the <head> element for index.php
    • POST_HEAD, injects additional tags at the end of the <head> element for post.php
  • RSS Feed
    • Automatically creates a basic RSS feed and updates it whenever you make a new post (not an edit)
    • Adds the feed as a <link> to the head of index.php
    • Can be manually linked to using the path /rssFeed.xml in an anchor tag


chickadee requires php and a php capable web server (we use apache2, but whatever floats your boat and also runs php should be fine). There are no other requirements. chickadee is a flat file blog system and no database is required.

To install on your web server, go to where you want the blog installed and clone the repository as whatever you want the directory called. This may look something like the following:

cd /var/www/
git clone https://tildegit.org/sloum/chickadee myawesomeblog
cd myawesomeblog
vim config.php

Replace myawesomeblog with the name of your folder. This may be blog if integrating into an existing site, or may be the name of the website. While I use vim, use whatever you like to edit config.php. It is a well commented file and should direct you to some good defaults for your use case. Once you update it you may want to git add config.php && git commit "Updated config" so that you can still pull down updates of Chickadee if you want (without being hassled by notifications that you have uncommited changes).

Depending on your server setup, you may need to change the owner of the files. On Linux with Apache2 I do something like (from inside the repo dir root folder): sudo chown -R myuser:www-data .. That should make the files writable by the server.


Having installed, you need to set up your login information. This is easy, so long as your server is now exposing the paths and you can access the site: go to /blog_log.php. Enter a username and password of your choosing. Once you do so, you should see the admin area. The username and password you entered are now your username and password (the first ones entered are the ones used). If you ever need to reset your username/password you can go to the web root for the blog on your server and change the BLOG_HASH constant in pass_hash.php to null or false . This will reset the password without deleting any other data. You can then set a new one by going to the login page and entering new credentials.

Cookies are required to use the system, but only one cookie is ever set and no tracking or phoning home are done. When you log in the system will keep you logged in for 30 days unless you explicitly log out (or clear your cookies). If you aren't on your own machine and want to log in we recommend a private browsing window/tab that will clear the cookies automatically when closed.

Actual usage of the amin area is pretty self explanatory and mostly reflects the Admin Area part of Current Capabilities (above).