Lwa

 Lwa  is a in-progress social reader by that aims to provide a people-centric approach to the social Web. It's comprised of a PWA for the Web browser, a proxy server for handling requests from Micropub and Microsub as well (for handling Web sign-in, post type discovery and a reply proxying bridge).

Composable Editor
The composable Micropub editor provided in Lwa is meant to be the advanced mode of the editing experience; for those who want to craft a particular item down to the property. This is a set of Web Components optimized for use within Lwa.

Source code (pending) is at https://git.jacky.wtf/indieweb/lwa-composer

Web Proxy
Allowing a PWA to participate 'natively' with the IndieWeb requires the use of a trusted Web server. This proxy aims to provide an approved PWA to have its requests proxied through. The flow follows.

GET /auth?me=https://jacky.wtf/&redirect_uri=https://pwa.example/auth/callback&state=$TOKEN Host: pwa.example

HTTP/1.1 302 Redirect Location: https://proxy.example/authorize?id=[random id]

The proxy server would begin the act of signing in, finding all the available endpoints for use (or only the ones specified in  as part of the initial request) and ask for scopes as provided in. After the proxy server handles all of that, it'll redirect to the redirect URI provided with a  query parameter. This can be redeemed with the original value of  to another endpoint,.

POST /redeem Host: pwa.example .. Browser-specific CORS headers ..

state=$STATE code=$CODE

HTTP/1.1 200 OK Content-Type: application/json

{ "rels": { "micropub": ["http://proxy.example/endpoint/UUID0"] }, "rel-urls": { "http://jacky.example/micropub": { "rels": ["micropub"], "proxy_url": "http://proxy.example/endpoint/UUID0", "title": "Content" } },  "me": "https://jacky.example/" }

This request will work once after redemption &mdash; the values should be stored into either session or local storage for later use. It returns the following:


 * rels: List of endpoint URLs, mapped by their corresponding rel
 * rel-urls: A mapping of relations by their URL. There's an additional key,  which serves as the CORS-friendly proxy URL for this endpoint.

Local Micropub
On the off chance someone doesn't have the ability to use Micropub on their site, Lwa can store posts for authenticated users for at most a month. A read only endpoint for querying posts, tags and the like will be available.

Caveats

 * No nickname cache or hashtag cache support, to prevent spam.
 * The published date cannot be changed.
 * These posts are listed publicly with a global audience.
 * Every post lives as an expiring post with it being marked as such with.
 * These posts do not send Webmentions out, but they can receive them. This is meant to be a spam prevention measure.

Goals

 * Micropub, Microsub and WebSub client
 * Adaptive timeline views (photo/video-optimized, audio-optimized, replies, reactions)
 * Checking if a reaction was made to a particular post
 * Inline reaction views from source and syndicated sources (configurable, requiring auth)
 * Web sign-in
 * backfeed some social operations like following and blocking to one's Micropub server with visibility and audience put into consideration.
 * auto following by looking for follow posts in a particular feed authored by oneself