source for getorbyt.com getorbyt.com/
client bsky orbytapp app orbyt bluesky getorbyt orbytvideo atproto video
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Change license from ISC to MIT in package.json for compliance and standardization

+112 -1
+21
LICENSE
··· 1 + MIT License 2 + 3 + Copyright (c) 2026 Jack Hannon 4 + 5 + Permission is hereby granted, free of charge, to any person obtaining a copy 6 + of this software and associated documentation files (the "Software"), to deal 7 + in the Software without restriction, including without limitation the rights 8 + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 + copies of the Software, and to permit persons to whom the Software is 10 + furnished to do so, subject to the following conditions: 11 + 12 + The above copyright notice and this permission notice shall be included in all 13 + copies or substantial portions of the Software. 14 + 15 + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 + SOFTWARE.
+90
README.md
··· 1 + # orbyt-site 2 + 3 + Website for orbyt, a video app for Bluesky. Browse profiles and posts at getorbyt.com. 4 + 5 + <p align="center"> 6 + <a href="https://github.com/Hann8n/orbyt-site">GitHub</a> · <a href="https://tangled.org/jack.orbyt.video/orbyt-site">Tangled</a> · <a href="https://getorbyt.com">Live site</a> · <a href="https://bsky.app/profile/getorbyt.com">Bluesky</a> · <a href="https://community.getorbyt.com">Community</a> 7 + </p> 8 + 9 + ## Architecture 10 + 11 + ### Bluesky API (`src/utils/bluesky-api.ts`) 12 + 13 + - Fetches profiles, posts, and video feeds from `https://public.api.bsky.app/xrpc` 14 + - Key functions: `fetchProfile`, `fetchPost`, `fetchVideoPosts`, `resolveHandle` 15 + - Handles video embeds (`app.bsky.embed.video#view`), thumbnails, HLS playlists 16 + - 5s request timeout, URL/MIME helpers 17 + 18 + ### orbyt API (`src/utils/orbyt-api.ts`) 19 + 20 + - Cloudflare Service Binding to `orbyt-api` worker 21 + - `getColor(did, binding)` returns profile colors (textColor, backgroundColor, joinedAt, isBeta) 22 + - Graceful fallback when binding unavailable 23 + 24 + ### RichText Parser (`src/utils/richtext.ts`) 25 + 26 + - `parseRichText()`: @mentions (TLD required) → `/@handle`, URLs → external links 27 + - XSS-safe HTML escaping, newline-to-`<br>` conversion 28 + 29 + ## Data Flow 30 + 31 + **Profile page** (`/@[handle]`): 32 + 33 + 1. SSR: `fetchProfile`, `fetchVideoPosts` (parallel) → Bluesky 34 + 2. `getColor(profile.did)` via ORBYT_API binding 35 + 3. Cache: `s-maxage=60, stale-while-revalidate=300` 36 + 4. "Load more" pagination via Astro action `loadMorePosts` 37 + 38 + **Post page** (`/@[handle]/[postId]`): 39 + 40 + 1. SSR: `resolveHandle` → DID, then `fetchPost` (getPosts XRPC) 41 + 2. Video URL from embed (playlist or `video.bsky.app/watch/...`) 42 + 3. HLS.js client-side playback, view transitions 43 + 44 + **Static pages:** `/`, `/about`, `/beta`, `/app`, `/contact`, `/discord`, `/terms`, `/privacy` — all prerendered 45 + 46 + ## Deployment 47 + 48 + - **Platform:** Cloudflare Pages (Astro adapter) 49 + - **Config:** [wrangler.jsonc](wrangler.jsonc) — assets binding, ORBYT_API service 50 + - **Site:** getorbyt.com (CNAME) 51 + 52 + ## Project Structure 53 + 54 + ``` 55 + orbyt-site/ 56 + ├── src/ 57 + │ ├── pages/ 58 + │ │ ├── index.astro # Landing 59 + │ │ ├── @[handle].astro # Profile (SSR) 60 + │ │ ├── @[handle]/[postId].astro # Post (SSR) 61 + │ │ ├── about.astro, beta.astro, app.astro, ... 62 + │ │ └── sitemap.xml.ts 63 + │ ├── actions/index.ts # loadMorePosts 64 + │ └── utils/ 65 + │ ├── bluesky-api.ts # Bluesky XRPC client 66 + │ ├── orbyt-api.ts # Color API binding 67 + │ └── richtext.ts # Mention/link parsing 68 + ├── public/ # Static assets, CSS, favicon 69 + ├── astro.config.mjs 70 + └── wrangler.jsonc 71 + ``` 72 + 73 + ## Build Requirements 74 + 75 + - Node.js 18+ 76 + - `npm install` then `npm run build` 77 + - `npm run dev` for local dev (ORBYT_API binding optional) 78 + 79 + ## Dependencies 80 + 81 + - **Astro** 5.x — SSG/SSR 82 + - **@astrojs/cloudflare** — adapter, image service, platform proxy 83 + 84 + ## License 85 + 86 + This project is licensed under the **MIT License**. See the [LICENSE](LICENSE) file for full text. 87 + 88 + --- 89 + 90 + *Bluesky and AT Protocol are independent projects; this site is not officially affiliated.*
+1 -1
package.json
··· 17 17 }, 18 18 "keywords": [], 19 19 "author": "", 20 - "license": "ISC", 20 + "license": "MIT", 21 21 "type": "commonjs", 22 22 "bugs": { 23 23 "url": "https://github.com/Hann8n/orbyt-site/issues"