A personal AI knowledge hub where Terry Murray logs the AI content he consumes (articles, videos, whitepapers) and publishes original essays. Built with a DaVinci Parchment theme.
- Framework: Next.js 16 (App Router) + TypeScript
- Database: PostgreSQL + Prisma ORM
- Auth: NextAuth.js (Google OAuth, single-user whitelist)
- Editor: TipTap WYSIWYG (planned)
- Styling: Tailwind CSS v4 (CSS-first config)
- PWA: next-pwa for Android share target (planned)
- Node.js 20+
- PostgreSQL running locally
- A Google OAuth client (from Google Cloud Console)
npm installCreate a PostgreSQL database:
createdb terrymurrayCopy the example and fill in your values:
cp .env.local.example .env.localRequired variables in .env.local:
DATABASE_URL=postgresql://user:password@localhost:5432/terrymurray
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=<generate with: openssl rand -base64 32>
GOOGLE_CLIENT_ID=<from Google Cloud Console>
GOOGLE_CLIENT_SECRET=<from Google Cloud Console>
ALLOWED_EMAIL=<your Google account email>
UPLOAD_DIR=./uploads/images
npx prisma migrate devThis creates all tables (users, posts, tags, post_tags, images) and sets up the full-text search trigger.
npm run devOpen http://localhost:3000.
| Command | Description |
|---|---|
npm run dev |
Start development server |
npm run build |
Production build |
npm run start |
Start production server |
npm run lint |
Run ESLint |
npx prisma studio |
Browse database in the browser |
npx prisma migrate dev |
Apply pending migrations |
npx tsc --noEmit |
Type-check without emitting |
src/
app/
page.tsx # Home page (bio + feed)
post/[id]/page.tsx # Full essay view (SSR)
login/page.tsx # Google OAuth sign-in
admin/ # Admin dashboard + editor (planned)
api/
auth/ # NextAuth routes
posts/ # CRUD endpoints
tags/ # Tag listing + autocomplete
components/
layout/ # Header, Footer
feed/ # PostFeed, LogEntry, EssayEntry, EssayRenderer, FilterBar
ui/ # TagPill, SearchInput, Button
lib/
prisma.ts # Prisma client singleton
auth.ts # NextAuth config + session helper
utils.ts # extractDomain, stripHtml
prisma/
schema.prisma # Database schema
docs/
terrymurray-tdd.md # Technical design document
terrymurray-tasks.md # Phased task breakdown
terrymurray-wireframes.html # Visual wireframes
Production target is an AWS Lightsail instance running behind Nginx with PM2. See docs/terrymurray-tasks.md Phase 14 for the full deployment checklist.