4 min

Create yet another publishing tool - Jan 2015

A January 2015 project.
Simple blog or note-taking web app.

  • Nginx for the web server
  • Node.js for the "client" code on the server
  • API-based
    • possibly create the initial API code in Perl
    • then create the API code in Node.js
  • use the Express framework for Node.js
  • use Handlebars for templating
  • use CouchDB for the data store
  • use Redis as the caching server

This will be a simpler app than Grebe.

  • account creation and the login procedure will not use a password
  • use only Markdown as the formatting markup (node.js showdown)
  • two types of posts: articles and notes
  • notes will function like in the Grebe app with no char limits
    • if no title, then a note. with title, then article.
  • the home page will look like the stream view when logged into the Junco app with notes and articles displayed
  • only the first 200 to 300 chars for notes and articles will be displayed in the stream view
  • little text area box displayed at the top of the stream view when logged in, which can be used for either notes or articles
  • click post link for a larger textarea box that can also used for both notes and articles
  • no fancy blog-like display options for articles like in Junco with the blog_username tag and like with the default view for Grebe
  • simplify CSS
    • no homepage banner image
    • borrow header and nav ideas from Grebe
  • ability to display articles/notes/entire stream for a user??
  • it will be multi-user
  • do not put the delete/undelete functions on the stream display for logged-in users
    • move delete/undelete to the article page
  • will have a search function
  • Do NOT include the following features:
    • related articles
    • view article source
    • hashtags auto-linked and counts stored in separate view
  • login will be done only through sending a link with mailgun

Content Description

Are multiple types offered? article, draft, note. With the way Grebe works, a note is a draft, since both are not displayed on the front page. The only diffs are the draft has an official title line and the draft=yes command while a note has neither. So an article could be a "draft" by simply remaining as a post with no official title line, which is created with either the Markdown down single pound sign or the Textile h1. command.

_id : either a generated five-character alpha ID or the slug/URI title

post_id : may use or this will be the above _id value. when post is created, this will be a random-generated string: 8 chars long, mixed-case, alpha-numeric.

type : post

title : works like Grebe

slug : (uri_title in my previous apps) ex: this-is-a-test - not needed if the above _id field is based upon the URI title
slug : may use.

format : markdown, textile, or whatever [not needed for now]

markup : the entire original text, including title line, power commands, etc.

html : the body of the post to display. the title line is not included here

text_intro : like the stream page in my Junco app where the first x-number of chars is included in the display after the HTML tags have been removed.

more_text_exists: true or false. if the total body text is greater than X-number of chars, and it requires the "more" link on the stream home page.

html_intro : new field for me. if the "more." command is used, then the HTML body text of the post that precedes the more. command is stored on this field. [don't use for now.]

tags : ex tags: ["nature", "bird", "home"] - (not right now)

post_type : article (with a title), note (no title) or reply

author : do I need an author_id?? not right now.

created_at : 2009/02/17 21:13:39

updated_at : 2009/02/17 21:13:39

reading_time : in minutes

?? these two for both created and modified?? maybe not now
yr_mon_day : [2015, 01, 30]
hr_min_sec : [14, 39, 22]

post_digest : is this still needed? i don't think so. use the couchdb _rev

post_status : public, deleted ( ?? private, draft, old version ??)

parent_id : for versioning and replying to posts

User Description

_id : either the username or an auto-gen char code

type : author

name :

password :

email :

created_date :

status : active, deleted

desc_markup :

desc_format :

user_digest :

orig_email :

current_session_id : used for now

session_id : IS THIS NEEDED? - default '0', -- send in cookie, maintain login - not needed if allowing user to remain logged in through multiple devices at the same time, especially since a session_id doc_type will be used. Since this is JSON, this value could be a hash, and I would not need the session_id doc_type.

It could be:

  "session_ids" : [
      "id" : "aasdfjkioasdfjo",
      "created" : "2015-01-14 14:54:22",
      "status" : "o"
      "id" : "askasdfieiedfjo",
      "created" : "2015-01-13 23:12:05",
      "status" : "o"

login_link_status : (o) open, (p) pending, (d) deleted

Session IDs Description

_id : this will probably be the session_id which has SQL table info of: varchar(255) not null default '0', -- send in cookie, maintain login

_id : let this be created by couchdb.

type : session_id

user_id or user_name : not right now, since it's a single-user app

created_at : 2009/02/17 21:13:39

updated_at : 2009/02/17 21:13:39

status : pending, active, deleted

#scaup - #blogging - #todo

From JR's : articles
886 words - 5190 chars - 4 min read
created on
updated on - #
source - versions - backlinks

Related articles
Static site generators - Sep 02, 2014
Scaup JSON Descriptions - Apr 17, 2015
Scaup web publishing app update as of Feb 21, 2015 - Mar 02, 2015
Creating new blog tool based upon Junco and Kinglet - Jun 18, 2014
Scaup Readme.md - Apr 29, 2015

A     A     A     A     A

© 2013-2017 JotHut - Online notebook

current date: Oct 28, 2021 - 12:59 a.m. EDT