8 min

Creating new blog tool based upon Junco and Kinglet

#todo - #programming - #blogging - #grebe

I created Kinglet from Junco code. I'd like to create a smaller blogging tool based upon ideas and code from both Junco and Kinglet.

App name options:

  • Modo
  • Veery
  • Tanager
  • Scaup
  • Grebe

update: I decided upon Grebe. It's a funny sounding name. The letters 'g' and 'b' in Grebe are also used in the word "blog."

Someday, I'll create an app called "Scaup."


  • Development and Design:
    • API first development like Kinglet.
    • Build the server-side API code first, and then create the "client" code that interacts with the browser.
    • Responsive design
    • Keep the CSS significantly simpler and smaller this time. I start out that way but end up with too much CSS.
  • Markup support:
    • pick one of either Markdown, Multimarkdown, or Textile
    • most likely it will either be Multimarkdown or Textile because of the additional features, such as tables and footnotes.
    • some basic HTML commands will be supported too.
    • will the special embed commands for other media types exist?
    • will my long-time customized markup commands exist?
    • if going for a simpler app, then some things will need to be left out of the code, otherwise, it ends up being Junco except designed with API first, which I would prefer to have, but I'd like to do this incrementally with the existing Junco code.
  • User Accounts:
    • (signup - Signup - show_signup_form)
    • (createnewuser - Signup - create_new_user)
    • E-mail activation link
    • (acct - Signup - activate_account)
    • (login - Login - login)
    • (newpassword - Password - create_new_password)
    • (user - Profile - show_user)
    • (settings - UserSettings - show_user_settings_form)
    • (changepassword - Password - change_password)
    • (customizeuser - UserSettings - customize_user)
    • (savedchanges - UserSettings - show_user_changes)
    • (logout - Logout - logout)
    • save login
  • Blog Posts:
    • (blogpostform - BlogAdd - show_blog_post_form)
    • (addarticle - BlogAdd - add_blog_post)
    • permit namespace titles?
    • enforce unique titles?
    • (blogpost - BlogDisplay - show_blog_post)
    • (source - BlogSource - show_blog_source)
    • (versions - BlogVersions - show_version_list)
    • (compare - BlogCompare - compare_versions)
    • use related blog posts? (relatedblogposts - BlogRelated - show_related_blog_posts)
    • (blog - Stream - show_blog_stream) - blog home page
    • will toc command exist?
    • will showintro command exist?
    • will draft command exist? (draft - Stream - show_draft_blog_stream)
    • no need for the private command.
    • for logged-in owner, (deleteblog - BlogDelete - delete_blog)
    • for logged-in owner, (undeleteblog - BlogUndelete - undelete_blog)
    • is it necessary to provide an archives? (blogarchives - Archives - show_archives)
    • necessary? (blogarchivepage - Stream - show_archives_month_year)
    • (edit - BlogEdit - edit_blog_post)
    • (updateblog - BlogUpdate - update_blog_post)
    • will provide both the simple and enhanced writing areas
    • will not provide the wiki-like double-bracket linking.
    • will i provide backlinks (backlinks - Backlinks - show_backlinks) since backlinks can be created by linking to another post with a regular URL and not just with the wiki double-bracket linking?
  • Image Headers
    • for blog posts.
    • is not displayed during the special blog_username stream display.
      gets displayed when viewing the blog post.
    • two command types that specify URL to image after equal sign:
      • imageheader=
      • largeimageheader=
  • Search
    • (search - Search - search)
    • (searchform - Search - display_search_form)
    • (tags - Search - show_tags)
    • hashtags (tag - Search - tag_search)
    • (tagscounts - Search - show_tags_by_counts)
    • will i need this the 30 most used tags display? (tagscountstop - Search - show_tags_by_top_counts)
    • will i need the tagcloud display?
    • do not need the special "blog_" tag.
  • RSS
    • (rss - RSS - get_rss)
    • blog posts
    • search string results
    • hashtag search results
    • by user and overall or just overall?
  • Replies
    • if multi-user mode, will i allow users to post replies to each others blog posts? seems like a reasonable expectation. will replies be limited to 300 chars like with Junco replies, which means they are like microblog posts, or will replies in this blogging tool be permitted to be longer with the same formatting options as a blog post except for editing?
    • (reply - Reply - show_reply_form)
    • (addreply - Reply - add_reply)
    • (replies - Reply - show_replies)
    • (repliesstream - Reply - show_replies_stream)
    • i think the replies stream is for showing the replies by others to my blog posts. will this be available? This also seems like a reasonable option to provide for a multi-user site. May as well install Junco.
  • Etc:
    • (showerror - Function - do_invalid_function)
    • don't need last blog post viewed for logged-in user.
    • will i add the text resizer (textsize - TextSize - set_text_size)?
    • no need for template includes
    • no need for feed command
    • will i need the redirect command? even though I rarely use this, it could be useful.
  • Power commands permitted:
    • toc=yes|no ??
    • draft=yes|no ??
    • imageheader=URL
    • largeimageheader=URL
  • Embedding Media
    • the img HTML tag is permitted.
    • Markdown and Textile provide commands to display an image.
    • custom commands to display other media:
      • youtube=
      • vimeo=

I guess when I have thought about creating a simpler blogging tool, I was thinking it would be a single-user site. I may not even have the code to create user accounts. Maybe the username is added to the config file. Request new password would exist, but no account sign-up form, no account creation, no activation link.

Single-user mode would eliminate other additional features like different types of stream views and replies.

Even if it's a multi-user blog tool, I will not provide following users and following tags. That's Junco.

Notes - Apr 21, 2014

If supporting only multimarkdown markup, then if the title of an article starts with a pound sign, then it's displayed on the front page as a feature article. If the article does not start with a pound sign, then it's considered a note, and it will be accessible through the author's profile page. Notes are public, searchable, tag-searched, but not displayed on the default home page.

Profile page:

  • articles - stream and rss
  • notes - stream and rss
  • tags

Will most likely allow the template include command, via the double-curly brace command.

For formatting, will most likely include my custom commands:

  • br.
  • q. q..
  • tmpl. tmpl..
  • code. code..

Related articles will also be included, but displayed differently. If related articles exist for a post, (feature articles only, not notes), then a count of the number of related articles is displayed along with the link to the related articles page. Will not display 5 related articles on the article page like I do now with Junco and Parula apps.

The only reply mechanism could be Webmentions. It would be a reply type of article, I guess. I would need to add a user account called Webmention, like I do at JotHut. The other option is to carry the discussion at Twitter or wherever. The authors could include their Twitter handle.

If I add Webmention support code to Grebe, then I'll implement what's used at JotHut as of Apr 21, 2014, which is the automatic receiving of Webmentions by two ways:

  • accessing the Webmention endpoint URL at Grebe.
  • dropping in the reply URL into a text input field for the article at Grebe.

Notes - Apr 27, 2014

Header Menu Items

  • home (default blog view of sort by created date)
  • search
  • tags
  • changes (sort by modified date)

When logged-in

  • you (logged-in user's profile page)
  • post
  • logout
  • drafts ??
  • notes??

Footer Links

  • about
  • help
  • contact
  • tags
  • search

keep the following commands/settings:

  • more.
  • code./code..
  • br.
  • q./q..
  • draft=yes

do not keep:

  • double-bracket wiki case for linking
  • double-curly brace template and feed includes
  • toc=


borrow article page layout and menu ideas from:

What about Google serif font Merriweather as used at http://justinjackson.ca/desperation/ ?

Possible Article Page Design


Apr 28, 2014 To-Dos

API Coding

  • update article done
  • tag list sorted by tag name done
  • tag list sorted by tag count done
  • version list done
  • compare two versions done
  • add new get-article function where only html is returned done
  • search:
    • text string done
    • tag name done
  • get articles for user done
  • get drafts for user done
  • get notes for user done
  • include related articles info with get article done
  • rss feeds: this is done by the client code and not the api code
    • search results for text string done
    • tag search done
    • article list done
    • user article list done
  • will i add the text resizer (textsize - TextSize - set_text_size)? - yes. this will be implemented by the client code. done

Apr 30, 2014 notes

Since using Multimarkdown for the markup, at least initially, possibly add the following commands:

  • url_to_link - added
  • newline_to_br - added

I'll try Markdown/Multimarkdown for a while, but if I find it too frustrating or lacking, then I'll switch back to Textile, and that's all that I'll support with Grebe.

May 8, 2014

  • add the toc= command except the default setting will be "no." done
  • add the slug= command to fix the title name for the URL. (not doing this.)

From JR's : articles
1492 words - 9716 chars - 8 min read
created on
updated on - #
source - versions - backlinks

Related articles
Grebe API - Old Page - Jul 18, 2014
Drupal security hole - October 2014 - Oct 31, 2014
Blogosphere v2.0? - Jan 26, 2016
Web-based publishing platforms that I've created - Mar 03, 2015
Possible to-do item - Author Marks - Jul 30, 2013
more >>

A     A     A     A     A

© 2013-2017 JotHut - Online notebook

current date: Nov 30, 2021 - 3:23 p.m. EST