# Pending tasks for website editing ## Micropub service Several [Micropub services](https://indieweb.org/Micropub/Servers) exist. None of them however fit our needs * Free Software * Sensible for self-hosting * Reasonably security (excludes PHP code) * Reasonably memory-efficient (excludes Java and Scala code) * Reasonably decentral (excludes Go code) * Reasonable to package (excludes Swift and Elixir code) * Content stored in git (SQL used only for caching if at all) * Content format is Markdown (preferably CommonMark) * must support [article](https://indieweb.org/article) posts * must support updating existing posts [Micropub services]: "Overview of Micropub server implementations" ### Develop server from scratch We will create a proxy service from scratch, using [indieweb] and [git2]. [indieweb]: "indieweb - rust crate implementing utilities for working with the IndieWeb" [git2]: "git2 - rust bindings to libgit2 for interoperating with git repositories" #### Minimal Viable Product * implement only MUSTs in [Microsub server spec] * cover Micropub post [entry] *article* (fail if POST contains any other data than that) * store received post as file (fail if already exists) * add created post file in git (fail if `git add ...` or `git commit ...` fails) [Microsub server spec]: "requirements for server implementations of Micropub" [entry]: "definition of Microsub post entry types" #### addition: edit * cover Micropub scopes *read* and *update* * when requested to read dir, return list of existing files in git * when requested to read file, return content of file in git * when requested to update file, replace existing file in git (fail if unable to do that) ### addition: parse data * convert POST content from html to CommonMark * convert GET content from CommonMark to html ### addition: parse metadata * convert html with [microformats] to [CommonMark-RDF] * convert [CommonMark-RDF] to html with [microformats] [CommonMark-RDF]: "CommonMark-RDF - draft spec for CommonMark with semantic hints" [microformats]: "microformats - Indieweb semantic markup" ### addition: media reference * cover referencing existing media at a [Media Endpoint] [Media Endpoint]: "Media Endpoint - images or videos potentially stored elsewhere" ### addition: media upload * cover accepting upload of new media to local git using git-annex (fail if `git annex add ...` fails) * cover acting as Media Endpoint ## Micropub client Several [Micropub clients] exist. The most promising is [Indigenous]. Unfortunately the desktop flavor is implemented on top of Electron, which is unlikely to ever be packaged in Debian. [Micropub clients]: "Overview of Micropub client implementations" [Indigenous]: "Indigenous - app to interact with Micropub and Microsub services" ### Develop client from scratch Maybe create a desktop client from scratch, using [indieweb] and either [tauri] or [millennium]. [indieweb]: "Rust crate implementing utilities for working with the IndieWeb" [tauri]: "tauri - rust framework to build light & secure cross-platform applications with a web-based UI" [millennium]: "millennium - rust framework to build light & secure cross-platform applications with a web-based UI"