This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Personal Nexus is a React SSR personal website that aggregates content from multiple decentralized AT Protocol sources and platforms. It runs on Val.town using Deno runtime with server-side rendering to create a unified personal hub.
# Format code deno fmt # Lint code deno lint # Deploy to val.town (runs lint and format first) deno task deploy
index.tsx - Main handler that fetches data and renders the
React appApp.tsx - Root React component with global styles and layout/components/ - Individual sections (ProfileHeader,
PostsSection, etc.)The application fetches data from multiple sources in parallel:
fetchBlogPosts())fetchBookRecords(), fetchCheckins())@atproto/api AtpAgent to connect to Personal Data Servers (PDS)slingshot.microcosm.blue)buzz.bookhive.book,
app.dropanchor.checkin, community.lexicon.location.addressCACHE_DURATION)blog-posts, book-records, checkins, did-${handle},
pds-${handle}renderToString() for SSRATPROTO_HANDLE: Your AT Protocol handle (defaults to "tijs.org")LEAFLET_PUB_JSON: URL to your Leaflet publication JSON feed (defaults to
"https://tijs.leaflet.pub/json")GITHUB_USERNAME: Your GitHub username for fetching pinned repositories
(required)Each component is self-contained with inline styles using CSS-in-JS. The design uses:
All data fetching includes comprehensive error handling with fallbacks:
Key interfaces defined in both index.tsx and App.tsx:
Post: Blog post structure from JSON feedBook: Bookhive book record with cover blob supportCheckin/Address: DropAnchor location data with address resolutionCheckinWithAddress: Combined checkin and address dataDesigned specifically for Val.town hosting platform with: