athena

last edited Sat, 20 Jul 2024 12:45:16 GMT
backlinks: Uses bookmarks


I needed a note taking management system that would play nicely with a static site generator, and I didn't want to use tools with restrictive liscensing. Athena is an extenable and minimal pre-configured 11ty theme bundled to work alongside foam and several vscode plugins. Content is written in markdown and HTML is generated during deployment. The simplicity of this workflow allows me to focus more on information rather than the design.

Installation direct link to this section

  1. clone the repository git clone https://gitlab.com/lzrddev/athena.git

  2. install dependencies

    npm install

  3. Edit .eleventy.js to your liking

  4. Edit relevant metadata in package.json

  5. test before deployment

    npx @11ty/eleventy --serve You can debug 11ty under the hood by setting the appropriate environment variable:

$env:DEBUG="Eleventy*"; npx @11ty/eleventy --serve

Customization direct link to this section

Change any files in assets such as logos, images, and css. Templates can be modified, the main goal is that this is a simple system that can be customized to anyone's preferences for a logging system. .eleventyignore can be used to hide private folders, this is enabled by default and applies to the /drafts directory as well. The contents of these folders are stored as a git repository and they will not appear generated in /public.

Directory Map direct link to this section

This is the default directory scheme used for my site:

/athena
   /_includes
   /.foam
   /assets
   /memex
   /public

Templates and layouts are within _includes, /assets contains any media, fonts, and stylesheets used for the site, public denotes the final output of generated files. The input and output directories can also be changed in .eleventy.js like so:

  return {
      dir: {
        input: "site",
        output: "www",
        includes: "_includes",
        data: "_data"
      },
      passthroughFileCopy: true
    };

Collections direct link to this section

I create a memex collection in .eleventy.js that is assigned to all markdown files in the specified notes directory. The same implementation can be used to create collections corresponding to different tags or blog posts.

Content Dates direct link to this section

Default date is set to file creation in 11ty. Easily overriden in front matter.

---
date: 2016-01-01
---

More valid values:

Deployment direct link to this section

Currently only tested with gitlab pages, see .gitlab-ci.yml for implementation details. Feel free to try this out with netlify if that's your jam. Self hosting is also an option, only the static contents of /outputFolder are needed for a fully functional website.

Work in Progress direct link to this section

I removed the stream section because it felt redundant in place of activitypub

Plugins direct link to this section