engineering blog at https://blog.tangled.sh

more styling and index

anirudh.fi e173e5a3 14576995

verified
Changed files
+77 -50
pages
templates
partials
+5
pages/blog/_index.md
··· 1 + --- 2 + template: index.html 3 + title: tangled engineering 4 + subtitle: all the ropes and scaffolding 5 + ---
+33 -11
pages/blog/intro.md
··· 9 9 --- 10 10 11 11 12 - [Tangled](https://tangled.sh) is a new social-enabled Git collaboration platform, built on top of the [AT Protocol](https://atproto.com). We envision a place where developers have complete ownership of their code, open source communities can freely self-govern and most importantly, coding can be social and fun again. 12 + [Tangled](https://tangled.sh) is a new social-enabled Git collaboration 13 + platform, built on top of the [AT Protocol](https://atproto.com). We 14 + envision a place where developers have complete ownership of their code, 15 + open source communities can freely self-govern and most importantly, 16 + coding can be social and fun again. 13 17 14 - There are several models for decentralized social networks, ranging from ActivityPub's federated model, to Radicle's entirely P2P model. Our approach attempts to be the best of both worlds by adopting atproto -- a protocol for building decentralized social applications with a central identity. 18 + There are several models for decentralized social networks, ranging from 19 + ActivityPub's federated model, to Radicle's entirely P2P model. Our 20 + approach attempts to be the best of both worlds by adopting atproto -- a 21 + protocol for building decentralized social applications with a central 22 + identity. 15 23 16 24 ![tangled architecture](/static/img/arch.svg) 17 25 18 - Our addition to this model is the idea of "knots". Knots are lightweight, headless servers that enable users to host git repositories with ease. Knots are designed for either single or multi-tenant use which is perfect for "community" servers. By default, Tangled provides managed knots where you can host your repositories for free. 26 + Our addition to this model is the idea of "knots". Knots are 27 + lightweight, headless servers that enable users to host git repositories 28 + with ease. Knots are designed for either single or multi-tenant use 29 + which is perfect for "community" servers. By default, Tangled provides 30 + managed knots where you can host your repositories for free. 19 31 20 - The [App View][appview] at [tangled.sh](https://tangled.sh) acts as a consolidated "view" into the whole network, allowing users to access, clone and contribute to repositories hosted across different knots -- completely seamlessly. 21 - 22 - Tangled is still in its infancy, and we're still building out several of its core features as we dogfood it ourselves. We developed these three core tenets to guide our decisions: 32 + The [App View][appview] at [tangled.sh](https://tangled.sh) acts as a 33 + consolidated "view" into the whole network, allowing users to access, 34 + clone and contribute to repositories hosted across different knots -- 35 + completely seamlessly. 23 36 24 - 1. **Ownership of data** 25 - 2. **Low barrier to entry** 26 - 3. **No compromise on user-experience** 37 + Tangled is still in its infancy, and we're still building out several of 38 + its core features as we dogfood it ourselves. We developed these three 39 + core tenets to guide our decisions: 27 40 28 - Collaborating on code isn't easy, and the tools and workflows we use should feel natural and stay out of the way. Tangled's architecture enables common workflows to work as you'd expect, while remaining decentralized. 41 + 1. Ownership of data 42 + 2. Low barrier to entry 43 + 3. No compromise on user-experience 29 44 30 - We believe that atproto has greatly simplfied one of the hardest parts of social media: having your friends on it. We're rolling out invite-only access to Tangled -- join us on IRC and we'll get you set up. 45 + Collaborating on code isn't easy, and the tools and workflows we use 46 + should feel natural and stay out of the way. Tangled's architecture 47 + enables common workflows to work as you'd expect, while remaining 48 + decentralized. 31 49 50 + We believe that atproto has greatly simplfied one of the hardest parts 51 + of social media: having your friends on it. We're rolling out 52 + invite-only access to Tangled -- join us on IRC and we'll get you set 53 + up. 32 54 33 55 [pds]: https://atproto.com/guides/glossary#pds-personal-data-server 34 56 [appview]: https://docs.bsky.app/docs/advanced-guides/federation-architecture#app-views
+38 -38
templates/index.html
··· 2 2 <html lang=en> 3 3 <head> 4 4 {{ template "partials/head.html" }} 5 - <meta name="description" content="{{ .Meta.subtitle }}"> 5 + <link rel="alternate" type="application/rss+xml" title="RSS" href="https://tangled.sh/blog/feed.xml"> 6 + <meta name="description" content="{{ index .Meta "subtitle" }}"> 6 7 </head> 8 + 7 9 <title> 8 - {{ .Meta.title }} 10 + {{ .Meta.title }} &mdash; {{ .Cfg.Title }} 9 11 </title> 12 + 10 13 <body class="bg-slate-100"> 11 - <main class="container mx-auto px-1 pt-4 min-h-screen flex flex-col"> 12 - <div class="sidenav"> 13 - {{ template "partials/nav.html" }} 14 - </div> 15 - <article> 16 - <section class="tagline"> 17 - {{ .Body }} 18 - </section> 14 + <div class="prose mx-auto px-1 pt-4 min-h-screen flex flex-col"> 15 + <main> 16 + <header class="px-12"> 17 + <h1 class="mb-0">{{ index .Meta "title" }}</h1> 18 + <h2 class="font-light mt-1 mb-0 text-lg">{{ index .Meta "subtitle" }}</h2> 19 + </header> 19 20 20 - <hr> 21 + {{ .Body }} 21 22 22 - <section class="posts"> 23 - <h2>writing</h2> 24 - <ul> 25 - {{ $posts := .Extra.blog }} 26 - {{ range slice $posts 0 3 }} 27 - <li> 28 - <div class="post"> 29 - <a href=/{{ .Meta.slug }}>{{ .Meta.title }}</a> 30 - {{ if .Meta.draft }} 31 - (<span class="draft">draft</span>) 32 - {{ end }} 33 - <p class="subtitle">{{ .Meta.subtitle }}</p> 34 - </div> 35 - {{ $dateStr := .Meta.date }} 36 - {{ $date := parsedate $dateStr }} 37 - <div class="index-date">{{ $date.Format "02 Jan, 2006" }}</div> 38 - </li> 39 - {{ end }} 40 - </ul> 41 - <a style="border-bottom: unset;" href="/blog/"><span>more &RightArrow;</span></a> 42 - </section> 43 - </article> 44 - </main> 45 - <footer> 46 - {{ template "partials/footer.html" }} 47 - </footer> 48 - </body> 23 + <section class="py-4"> 24 + <ul class="px-6"> 25 + {{ $posts := .Extra }} 26 + {{ range $posts }} 27 + <li class="mt-5 bg-white py-4 px-6 rounded drop-shadow-sm list-none"> 28 + <div> 29 + <a class="title mb-0 text-lg" href="/{{ .Meta.slug }}.html">{{ .Meta.title }}</a> 30 + {{ if .Meta.draft }} 31 + (<span class="draft">draft</span>) 32 + {{ end }} 33 + <p class="italic mt-1 mb-0">{{ .Meta.subtitle }}</p> 34 + </div> 35 + {{ $dateStr := .Meta.date }} 36 + {{ $date := parsedate $dateStr }} 37 + <div class="post-date py-1 mb-0 text-sm">{{ $date.Format "02 Jan, 2006" }}</div> 38 + </li> 39 + {{ end }} 40 + </ul> 41 + </section> 42 + </div> 43 + </main> 44 + <footer> 45 + {{ template "partials/footer.html" }} 46 + </footer> 47 + </body> 48 + 49 49 </html>
+1 -1
templates/partials/nav.html
··· 1 1 <nav> 2 2 <div class="logo"> 3 - <a href="/"> 3 + <a href="/blog"> 4 4 tangled engineering 5 5 </a> 6 6 </div>