Grot Blog
(Blog Software)

I've decided to call the blog software I'm writing "Grot Blog". It's a joke. The "grot" is British English for, roughly, junk. There used to be a show on the air in the U.S. called "The Fall and Rise of Reginald Perrin". It was a British series, and part of the joke of which was that the title character, Reginald Perrin, opened a series of shops called "Grot", which sold useless junk. Fortunately or unfortunately for Reginald, the shops turned out to be a brilliant success, despite his attempts to sabotage them. I always thought it was a great joke.

  • Objectives
    • Easy to reconfigure
    • Easy to "skin" or "theme"
    • Generates "static" pages; no templating system
    • Allows owners to upload their posts, without much vetting; no online editor-- use the one you like and upload the post
    • Allows comments or not, depending on the post
    • Filters input for security
    • Avoids the use of RDBMS if possible, or minimal use otherwise
    • Allows for addition of non-blog content, like "About" pages and such
    • Generally follows MVC, but without a full framework
    • Shows excerpts rather than full posts on any given page
    • No front controller
  • Directory Structure
    • /config: for configuration type items
    • /graphics: graphics
    • /models: models
    • /views: views
    • /templates: more than one, configurable
    • /libraries: misc code/classes
    • /data: posts, comments, etc.
  • What we want in the sidebar
    • Months containing posts and how many
    • Topics and how many posts for each
    • Authors and how many posts for each
    • Links to login/logout
    • Link to administer everything, including adding a new post
  • "Database" files
    • config (ini file)
    • data (EDI-style file)
      • stats by month, number of posts
      • stats by topic, number of posts
      • stats by author, number of posts
      • author,login, password, name, email
      • post ID, timestamp (postid), author, topics, last_revision_timestamp, number_of_comments
      • topic_code, topic_name
  • Anatomy of data directory
    • one directory for each post, named for the ID of the post
      • post file
        • author
        • title
        • topics
      • excerpt file
      • comments subdirectory
        • comment files, named for ID of comment
  • Pages needed
    • add user
    • delete user
    • edit user
    • show user
    • list users
    • add post
    • delete post
    • edit post
    • show post
    • list posts
    • add topic
    • delete topic
    • edit topic
    • show topic
    • moderate comments
    • add site nav category
    • edit site nav category
    • delete site nav category
    • add site nav link
    • edit site nav link
    • delete site nav link
    • show/edit config
    • index.php to show current posts

This is one of the most detailed specs I've ever written for a project. And obviously, it's subject to change. The next issue is where to start coding.