{"repo":"haileyok/blug","free":true,"listed":false,"github":"https://github.com/haileyok/blug","clone":"git clone https://github.com/haileyok/blug.git","description":"My little ATProtocol blog using Remix, Tailwind, and Redis","language":"TypeScript","stars":107,"topics":["atproto","blog","bluesky","remix"],"license":null,"category":"saas-starters-boilerplates","readme_excerpt":"Blug - An ATProtocol Blog A simple little blog that pulls posts from your PDS, using the pub.leaflet.document lexicon. Uses Redis to keep them cached for a bit, in case you're popular and don't want to be constantly polling your PDS. Leaflet Support This blog now uses Leaflet, a block-based document format for ATProtocol. Instead of simple markdown content, posts are composed of structured blocks that support rich formatting and embedded content. Supported Block Types - Text blocks with rich text formatting (bold, italic, strikethrough, code, links) - Header blocks (levels 1-6) with automatic styling - Image blocks with aspect ratios and alt text - Blockquote blocks for quoted content - Code blocks for syntax highlighting - Website cards with preview images and metadata - Embedded Bluesky posts using the official embed widget - Horizontal rules for visual separation Image Handling Images are served via Bluesky's CDN with proper URLs constructed from the DID and blob reference: Configuration Just a few things are needed in your .env file. - ATP SERVICE is the URL of your PDS. It's probably hosted by Bluesky. Find it at internect.info. - ATP IDENTIFIER is your handle. It's used to know which repo to get records from. - ATP DID is...your DID. Again, find it at internect.info. Used to get your Bluesky profile (I use this just to get the already-hosted copy of your profile picture. You could rewrite this if you wanted to, would be faster too). You also need to have Redis running. ","default_branch":null,"files":null,"tree":[],"storefront":"/r/haileyok","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/haileyok/blug/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}