Package: nefelibata
A blog engine focusing ondata ownershipandpersistence.How is it different?Nefelibata (Portuguese for “one who walks on clouds”) is anIndieWebstatic website generator written inPython3 that focus on preserving your content. In order to achieve that goal, it works similarly to common static website generators, with the following design decisions:Each post is a separate directory. The actual post is written inMarkdownand stored as anemail message, and each post can have its own images, CSS, Javascript and other files.Posts are converted into HTML and/or Gemtext, and the resulting site is composed ofonly static files. There are no databases, and all extra data is stored in JSON files.External images are locally mirrored when the site is built, and the link is altered to point to the local resource.External links are saved to theWayback Machine, and links are annotated with the archived link and date of archival, allowing readers to follow the original links even if they change in the future. The site and new posts are also automatically archived.The site can bepublishedto different locations, using a plugin architecture. Currently, nefelibata supports publishing toAmazon S3, FTP, and arbitrary commands.The IndieWebNefelibata acknowledges that most interactions occur in social networks like Twitter or Mastodon. The engine can be configured with global or per-postannouncersthat will post to social networks linking back to the content, so that people can comment and discuss posts outside of the site, a concept calledPOSSE(Publish on your Own Site, Syndicate Elsewhere) in the IndieWeb.When the site is rebuilt, the announcers will collect any replies and store them locally, so that the comments are displayed in the site with your post. A post can be announced to multiple social networks, and the comments will be aggregated and preserved.Getting startedInstallationFirst install nefelibata using a virtual environment:$pipinstallnefelibataThis will add a program callednbto your path.If you’re impatient, you can run:$nbinitblog$cdblog$nbbuildAnd looks at the files inside thebuild/directory.Creating the site directoryOnce you have installed nefelibata you should initialize a directory that will hold your content:$nbinitblog$lsblognefelibata.yamlnefelibata.yaml.fullposts/templates/Here, the filenefelibata.yamlstores the configuration for your site. Theposts/directory will contain your posts, and should already have a directory calledfirst/with an initial post. Thetemplates/directory has the templates for generating your blog and its Atom feed, as well as a Gemini capsule. Multiple themes are supported for the HTML builder, but there’s currently only one called “minimal”.Configuring your siteThe filenefelibata.yaml.fullhas comments describing all the sections.Creating a new postYour skeleton blog already has a post calledfirst/. You can edit that post, or create a new one with the command:$nbnew"Hello, World!"(Note that you always need to run thenbcommand from inside your site directory.)This will create a new directory calledhello_world/, with the following structure:posts/hello_world/posts/hello_world/index.mkdIf you have theEDITORenvironment set, nefelibata will automatically open your editor to editindex.mkd. You can place any custom CSS, Javascript or images in the corresponding directories, or any other extra files in thehello_world/directory.You’ll notice that theindex.mkdfile has headers and a body. The file itself is actually stored as an email, using theRFC 5322 format. The most important headers are:subject: this is the title of your post.summary: this is a one-line summary of your post.keywords: a comma-separated list of keywords/tags/tags.Additionally, once the post is published adateheader will be added.Building the siteTo build your site, simply run:$nbbuildThis will convert the Markdown files to HTML and/or Gemtext and build the site, with pages for tags and categories as well. Later, once posts have been announced to social networks, this command will also collect replies and store them locally as YAML files.Publishing the siteFinally, you can publish your site with the command:$nbpublishThis will upload the site using any configured publishers (like S3), and announce new posts to social networks.What’s next?If you want to customize your site, take a look at thetemplates/directory inside your site. The templates are written inJinja2.