finds.dev← search

// the find

rauchg/next-ai-news

★ 846 · TypeScript · updated Feb 2024

A Next.js 14 App Router reference project that reimplements the shell of Hacker News, with an Anyscale-hosted Mixtral model generating fake front-page content on a cron job. It's built by Vercel's CEO as a showcase for Server Actions, streaming, and PPR rather than as a usable product — good for developers who want to see idiomatic App Router patterns in something bigger than a todo app.

The RSC/Server Actions/streaming setup is a legit reference for real App Router usage — no data caching, straight streaming SSR with PPR for the static shell, which is a pattern most tutorials don't bother demonstrating. The search stack (Postgres + pg_trgm + GIN index via Drizzle) is a small, honest example of full-text search without reaching for Elasticsearch. Structured generation for the AI content uses Zod schema validation against the LLM output, which is a sane way to keep generated JSON from breaking the app. The component surface is deliberately thin — nearly everything is shadcn/Radix, with only one hand-rolled component (time-ago), so there's little custom UI code to audit.

Voting and ranking — the entire point of Hacker News — is unimplemented and sitting on the TODO list, so this isn't actually a replica, it's a front-end and comment thread around AI-generated stories. Comments have no pagination and the author flags the data structure as inefficient, so it won't hold up under a real thread. Auth is password-only via Auth.js with no forgot-password flow, and the whole stack is wired tightly to Vercel-specific services (KV for rate limiting, Neon for Postgres, Anyscale for the model) making it awkward to run anywhere else. Last pushed February 2024, so it predates the current Next.js and Drizzle releases and the Anyscale/Mixtral AI pipeline is the part most likely to have rotted.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →