h1. Wren - Static blog generator toc=no Mar 1, 2016 Thinking about this. I will base it upon my Article Preview app, created back in January and the test static page site, created with a command prompt script, created in February. http://article.soupmode.com http://article.soupmode.com/static Need: * create and update markup. * when updating, a backup of the markup is created when the content is saved. * convert markup to html. a separate process or converted at the same time markup is saved, like i do with my database-backed web publishing apps? * maintain a master list of articles with title, slug, date, possibly in JSON format. this would be used to create the list of archives pages. index.html would not be a part of this. index.html will be created like a normal article page. * when is the list of archives pages created? at the time an article is created/updated or is it a separate step? * need a login mech and auth check, probably similar to my apps that only require an email address to log in. mailgun will be used to send the login session activation link. cookies will bet set and checked. * use google or duckduckgo to index the site for search. * maintain tag pages for tag search. Things to include: * sitemap.xml - a Google compatible sitemap of the content on the site. * search with some other search engine, like DuckDuckGo or Google. * cache by using Nginx's caching mechanism ** http://jothut.com/cgi-bin/junco.pl/blogpost/60302/10Sep2015/Nginx-Caching ** http://jothut.com/cgi-bin/junco.pl/blogpost/21154/14May2015/Installing-nodejs-nginx-mysql-junco-and-ghost-on-Digital-Ocean-Droplet#Installing-Nginx ** http://jothut.com/cgi-bin/junco.pl/blogpost/44995/02Oct2014/HTTP-Caching ** http://jothut.com/cgi-bin/junco.pl/blogpost/45403/02Oct2014/Http-caching-oct-2-2014 Add: These commands would be used to override defaults. Normally, the slug would be taken from the post's title. Default directory location for html and txt files and the default post template would be listed in the yaml file. * slug=this-is-a-test (used for .html and .txt files) * dir=/2016/03/02 or /blog or /contact (create directory if it does not exist) * template=index-banner (.tmpl will be added by app.) h3. Formatting Commands Used at Article Preview app at http://article.soupmode.com Samples: http://jothut.com/cgi-bin/junco.pl/blogpost/65125/Article-format-app Can use either Markdown/Multimarkdown or Textile. The markup chose depends upon how the title line is created. The title line is the first line in the markup. If it begins with a pound sign, the markup uses Markdown. If the title line begins with @h1.@ then the markup uses Textile. Commands that can be used within the markup: css. (code) css.. more. toc=yes|NO using_css=YES|no tint_image_header=yes|NO title_over_image=yes|NO publish_info_at_top=yes|NO url_to_link=YES|no hashtag_to_link=yes|NO newline_to_br=YES|no headings_as_links=yes|NO aside=text imageheader=url largeimageheader=url https://www.digitalocean.com/community/tutorials/understanding-nginx-server-and-location-block-selection-algorithms https://www.digitalocean.com/community/tutorials/how-to-configure-the-nginx-web-server-on-a-virtual-private-server http://nginxlibrary.com/enable-directory-listing/ http://stackoverflow.com/questions/10663248/how-to-configure-nginx-to-enable-kinda-file-browser-mode https://www.nginx.com/resources/admin-guide/serving-static-content/ If want a fancier or customized index listing, need to recompile nginx with this module. https://www.nginx.com/resources/wiki/modules/fancy_index/ lo-fi hack: http://www.linickx.com/css-styling-nginx-directory-listings http://nginx.org/en/docs/http/ngx_http_autoindex_module.html#autoindex_format h3. Directories I could use it as a simple blog or as a mini CMS. Possible folders with index.html files: * /blog (like bradfrost.com) possible URIs: ** /blog/article/this-is-a-test.html ** /blog/note/this-is-a-test.html ** /blog/this-is-a-test.html ** /blog/this-is-a-test ** /blog/2016/03/02/this-is-a-test ** /blog/article/2016/03/02/this-is-a-test ** *[X]* /2016/03/this-is-a-test ** or do away with all of the directories and use: *** /this-is-a-test * /contact - could be a post instead of a folder with index.html * /about - could be a post instead of a folder with index.html * /wren (an article, detailing the app) - could be a post instead of a folder with index.html * /tags (index.html contains list of links for design.html, bird.html, etc.) - could be a post instead of a folder with index.html * /tag (/tag/design.html or /tag/design and /tag/bird.html or /tag/bird) - "/tag" would definitely be a folder with no index.html in order to see a directory listing h3. Create and Update * /wren/create ** (will only create in the directory if the file does not exist) * /wren/update/this-is-a-test * /wren/archives ** (will create the stream of pages that contain links to the posts) h3. Perl http://perlmeme.org/faqs/file_io/directory_listing.html #wren #blogging