This is a client app for reading curated RSS feeds.
Just FYI, there is an authenticated section and better-auth connection -- it's not gonna work if you don't run the docker and configure some .env vars, but you shouldn't need any of it rn, it'll just be convenient when we do later.
Remember, this app follows RSS standards strictly, with types in apps/server/src/schemas/feed.ts
as the source of truth. Everything else builds on top of this - the components in apps/web/src/components/feed
are locked to these types, and the feed route makes typed RPC calls that return data matching this exact schema.
Read LLM.txt
in the root for more context about the architecture, RSS philosophy, and technical details.
docker compose up -d
to get PostgreSQL runningbun db:migrate
to set up the database schemabun dev
to start both web and server
- Server: Hono.js with tRPC for type-safe APIs, Better-Auth for authentication with NEAR Protocol accounts, Drizzle ORM on PostgreSQL
- Web: React with TanStack Router for routing, TanStack Query for data fetching, tRPC client for server communication
- Data Flow: Better-fetch pulls RSS feeds from
https://rss.curate.fun
, transforms them through Zod schemas, caches with BunCache - Database: PostgreSQL with Docker Compose setup
bun dev
- Start both web and server in developmentbun dev:web
- Start only the web applicationbun dev:server
- Start only the serverbun build
- Build all applicationsbun db:push
- Apply database schema changesbun db:studio
- Open Drizzle Studio database UIbun db:migrate
- Run database migrations
apps/server/src/schemas/feed.ts
- The RSS schema definitions that everything else builds onapps/server/src/routers/index.ts
- tRPC endpoints for feeds, feed items, and health checksapps/web/src/components/feed/index.tsx
- Main feed display componentapps/web/src/components/feed/item.tsx
- Individual feed item componentapps/server/src/index.ts
- Server setup with Hono, tRPC, and auth middlewareLLM.txt
- Detailed architecture and RSS philosophy documentation