Manage Atom feeds in a persistent git repository

My goal is to build a CLI tool called thicket in Python that maintains a Git repository within which Atom feeds can be persisted, including their contents.

The configuration file specifies:

  • the location of a git store
  • a list of usernames and target Atom/RSS feed(s) and optional metadata about the username such as their email, homepage, icon and display name
  • a cache directory to store temporary results such as feed downloads and their last modification date that speed up operations across runs of the tool

The Git data store should:

  • have a subdirectory per user
  • within that directory, an entry per Atom entry indexed by the Atom id for that entry. The id should be sanitised consistently to be a safe filename. RSS feed should be normalized to Atom before storing it.
  • within each entry file, the metadata of the Atom feed converted into a JSON format that preserves as much metadata as possible.
  • have a JSON file in the Git repository that indexes the users, their associated directories within the Git repository, and any other metadata about that user from the config file The CLI should be modern and use cool progress bars and any otfrom ecosystem libraries.

The intention behind the Git repository is that it can be queried by other websites in order to build a webblog structure of comments that link to other blogs.