title: Adventure of my Micropub client and server
date: 2018/02/11 10:40:20
slug: adventure-of-my-micropub-client-and-server
status: published
link: https://jj.isgeek.net/2018/02/adventure-of-my-micropub-client-and-server/
display_format: entry
syndication: https://twitter.com/jjdelc/status/962637426920476672


The experience of developing a Micropub client and server plus adding support for webmentions on top of adapting Pelican to be used programatically to generate my blog has been amazing. Tonight I just added offline support to the client, which allows me to "tweet" and publish on my blog while I'm offline and sync later.

I ended up learning and using a number of technologies I hadn't before:

 * Pyramid for backend
 * VueJS for the client
 * Making an SPA
 * Lots of CORS drama
 * IndieAuth support all the way
 * Sync events on service workers
 * IndexedDB and localStorage
 * Offline support for client
 * Microformats
 * Pelican deep internals - Static blog generator
 * the Js Fetch API instead of good old XHR
 * Lots ES6 new fancy syntax, will surely surely break in older browsers :) 

And among other adventures:

 * Implementing by following w3c spec
 * Testing to play in harmony with many other indieweb endpoints (webmention.rocks, brid.gy)
 * Going through all the deploy/logs/montoring story
 * LetsEncrypt!
 * Python3 bytes vs strings, It will bite you, but it's for your own good!
 * 100% mobile web support, installable as an app icon
 * Ain't nobody cares about Edge and browsers I cannot test. 

What I still need to do is learn how are js apps "compiled" in 2018 to make my client be just one bundle since I don't need to have separate requests for CSS and JS on my SPA.

I will also need to finish writing lots of (backend only :-/) tests for my server implementation, some readme files at the very least and make it all public. 

I wanted to write what I learned every night, but I didn't have a finished product to blog with yet! ha. 