Skip to content

lwojcik/eleventy-template-multiplicity

Repository files navigation

Multiplicity - RSS Aggregator Starter Based On Eleventy

Multiplicity (abbreviated as 'm10y') is a simple starter pack based on Eleventy static site generator that allows you to create RSS aggregator site.

Alongside the template code, it also contains a GitHub action required to keep the site up to date.

View demo

Want to see a real life example? Check out Blogworm.eu.

(Do you run your own public instance and want to get it listed here? Submit a GitHub issue!)

Project development is primarily done on GitHub. Mirrors of the main branch are also available on Codeberg and GitLab.

Instant deploy

Netlify:

Deploy to Netlify

Vercel:

Deploy with Vercel

Render:

Deploy to Render

Features

  • light / dark mode switcher + honoring color scheme preference
  • pagination
  • translation ready (separate file with static phrases)
  • automatic favicon generation
  • support for RSS and JSON feeds
  • custom avatar alongside each feed item

Setup and personalization

  1. Fork the repository.
  2. Configure the site according to your preferences - see siteConfig.js and template files.
  3. Modify the list of feeds you want to aggregate - they are located in content/sites.
    1. Each site has the following properties:
      • name - name of the site
      • url - URL of the site
      • avatar - image to display alongside the site name (e.g. favicon). During the build process the image will be downloaded, resized and served locally
      • feed - URL of the RSS or JSON feed to fetch articles from
      • hideFromSiteList - set it to true if you want to hide this site from the list of sites on the Sites page. It is useful if you want to add two sites with different RSS feeds under the same name and avoid seeing duplicates on the list
  4. Deploy the site to Netlify or Vercel
  5. Set up the GitHub action in .github/workflows/scheduled_build.yml:
    1. Create a build hook URL and save it as a GitHub secret in your repository - e.g. NETLIFY_BUILD_HOOK_URL or VERCEL_BUILD_HOOK_URL
  6. Done! Your aggregator is up and running.

Translation file

See phrases.js for the list of translatable static phrases.

Note on persisting feed cache

The aggregator uses eleventy-fetch plugin for fetching and caching network requests. If you use a hosting provider that supports persisting cache (e.g. Netlify or Vercel), you can limit number of network requests by making your .cache folder persistent between builds. See Eleventy docs on how to set it up.

Contributions

Contributions of the following kind are welcome:

  • bug reports / fixes
  • feature suggestions / improvements of existing features

Before contributing be sure to read Code of Conduct.

Sponsors

Huge thanks to generous sponsors of this project!

Licence

No license. Public domain, no strings attached. Yes, I'm being serious.