You're viewing old version number 12. - Current version

6 min

Veery Blog App - April 2015

Proposed idea. Yet another blog or web-based publishing tool. Best way for me to learn new concepts.

Existing apps:

  • Junco - wiki and blog
  • Kinglet - private web-based messaging that's part email and microblog
  • Grebe - blog
    • Grebe-Client-NodeJS
  • Scaup - blog

I think that I will call this new app Veery. It will be based upon Scaup.

I'll create separate git repositories for:

  • Veery-API-Perl
  • Veery-Client-Perl
  • Veery-Client-NodeJS
  • Veery-API-Go

The first three can created by borrowing from Scaup, Grebe, and Grebe-Client-NodeJS. The last one will give me a chance to learn some Golang.

I can mix and match. I could use the Perl client against either the Perl API or the Go API, etc. I suppose that I can create multiple sub domains to use the different options, and have all of the API code point to the same database.

It would be fun to use the NodeJS client against the Go API. Of course, the JavaScript browser editor bypasses the server-side client code and talks directly to the API.

The rest of the stack will remain the same:

  • Nginx
  • CouchDB
  • Elasticsearch

The exception might be that I use Redis instead of Memcached. The reason: to use something different.

I used Redis for Grebe, but I was using the Perl code to read from Redis, instead of letting Nginx do it. That's because the Redis module was not installed by default for Nginx. The Nginx install included the Memecached module.

I'll need to upgrade my Digital Ocean account to the $10 per month plan, so that I can increase RAM from 512 meg to 1 gig, which will permit me to run all the different services that I want to test.

I'll need to download the appropriate Nginx Redis module, download the latest Nginx code, and rebuild Nginx with the Redis module.

Also, download the latest version of Redis.

Initially, I won't be doing anything fancy with Redis. I'll use simple key-value caching.

Steps

  1. upgrade DO account
  2. rebuild Nginx with the Redis module
  3. use Scaup to create the Veery API in Perl, using test scripts
  4. create the Perl client code
  5. create the NodeJS client code by using some code from Grebe-Client-NodeJS
  6. learn Go

Golang modules:

  • Redis
  • Markdown, MultiMarkdown, Textile (at least one)

I could simplify this and only support Markdown all API code.

Markup

The Perl version of MultiMarkdown does not support all of the so-called MultiMarkdown standard, therefore I will not use this module.

I cannot accept the default behavior of Markdown which does not convert newlines to the HTML br tag.

On occasion, it would be nice to use Textile's footnote and table formatting options.

Initially, I'll start with Markdown only, but I'll use my own flavored version of Markdown, which will be similar to what exists with Grebe.

My Formatting Options

My own flavored Markdown, which will have the option to turn on and off the newline_to_br.

It will also have the option to turn on and off the url_to_link where bare URLs are automatically converted to a clickable link.

In Scaup, I have a command which prevents the hashtags from being converted to link. Within code blocks, the pound sign is used within CSS, and I need to have the ability to set hashtag_to_link=no or I need to add the smarts to processing code blocks to avoid creating links.

Markdown has fence code block capabilities, but it's annoying to indent four spaces on each line. I greatly dislike hidden formatting commands. It's too word processor-like. I don't like how Markdown adds a br tag by requiring a user to type two blank spaces at the end of a line. Poor design and user experience.

I will include my own formatting commands:

  • br.
  • hr.

I'm unsure if I will include my old q./q.. block formatting command. But the solution within Markdown, however, is more annoying because it will require the greater-than sign on each paragraph versus surrounding the area with my own q./q.. command. The other option is to type our the HTML blockquote tag.

If I wanted to use HTML only then I would avoid these text markup languages. But I don't want to type a bunch of greater-than and less-than symbols, especially when creating a post on the phone.

That's why I'll add the ++ and -- commands so that I don't have to type out the HTML big and small tags. Same for strikethrough and underline.

Without Textile, I won't be able create simple tabular data. Maybe I'll continue to flavor my Markdown to include footnotes and tables. I can borrow code from Textile and MultiMarkdown.

I could also leave Markdown alone and add my additional formatting options in a separate module. I'll need to modify the Markdown module some.

Grebe and Scaup makes all headers as links. Junco doesn't do this. I rarely use a header link within another post, but it is nice to be able to link to a section of an article rather than to the top of an article, which would require the user to scroll down and find the pertinent article section.

Parula (toledotalk.com), Junco, and Grebe support the toc command, which produces a table of contents, Wikipedia-style, for an article page. Scaup does not contain this command. I'll probably leave it out of Veery.

I should scour my Parula, Junco, Grebe, Scaup, and Kinglet apps for ALL the formatting and power command options that I've created. I forgot that I added the hashtag_to_link=no option to Scaup, which is my most recently-created app.

Parula and Junco contain some wiki features, like double-bracket case to link to existing articles, ability to link to non-existent or new articles, template includes, redirects, etc.

Parula, Junco, and Grebe contain versions and differences, but Scaup does not. I may add versions and diffs to Scaup and/or Veery later. I don't want to get bogged down in too many features right now. I want to focus on CouchDB, Elasticsearch, NodeJS, and Go. I can add features from my other apps later.

Scaup did not include all the embed commands for various video types. Since Scaup and Veery will be single-user apps, then I won't limit the HTML allowed.

Grebe is nice because it's multi-user.

Scaup does not contain RSS. This needs to be supported in Veery.

Grebe and Scaup do not contain an archives function that will show posts by month. It's on the to-do list for Grebe. I'll leave this out for Veery. Let's keep this dead simple.

Definitely simplify the templates and CSS for Veery. Start with 1995 HTML. Should I include the HTML5 semantic tags, such as header, nav, article, section, footer? Probably.

#veery #go #nodejs #perl #couchdb #programming #blogging

From JR's : articles
1107 words - 6525 chars - 6 min read
created on
updated on - #
source - versions

Related articles
Veery Blog App - April 2015 - Aug 03, 2015
Scaup web publishing app update as of Feb 21, 2015 - Mar 02, 2015
Blogosphere v2.0? - Jan 26, 2016
Web and mobile development using Perl, HTML5, CSS3, and JavaScript - May 28, 2013
Perl code to create random string of characters - Feb 09, 2015
more >>



A     A     A     A     A

© 2013-2017 JotHut - Online notebook

current date: Nov 20, 2024 - 10:34 a.m. EST