Topaz is a personal platform built to track, organize, and revisit my reading journey through fanfiction, webnovels, and serialized internet fiction. It is tailored specifically for fanfic and long-form web content. Topaz helps me catalog what I've read, what I'm currently reading, and what I want to return to, without relying on fragile browser bookmarks, cluttered spreadsheets, or unreliable third-party services.
- Track reading progress across multiple platforms (AO3, FFN, Wattpad, RoyalRoad, and more)
- Organize stories with custom tags and fandoms
- Monitor reading status (Reading, Completed, Paused, Plan to Read, Dropped)
- Rate stories and add personal notes
- Full-text search across titles, authors, descriptions, tags, and fandoms
- View detailed library statistics and insights
Before you begin, ensure you have the following installed:
- Node.js 20.x+ or Bun 1.x+
- PostgreSQL 14.x+
- Docker (optional, for local PostgreSQL)
- Discord Application (for authentication)
-
Clone the repository
git clone https://github.com/yehezkieldio/topaz.git cd topaz -
Install dependencies
Using Bun (recommended):
bun install
-
Set up environment variables
Copy the example environment file and fill in your credentials:
cp .env.example .env
Required environment variables:
DATABASE_URL- PostgreSQL connection stringAUTH_SECRET- Random secret for NextAuth (generate withopenssl rand -base64 32)AUTH_DISCORD_ID- Discord OAuth client IDAUTH_DISCORD_SECRET- Discord OAuth client secretALLOWED_DISCORD_ID- Your Discord user ID (restricts entry creation to your account only)
-
Set up the database
If using Docker for local development (requires just command runner):
just dev-up
Or using Docker directly:
docker compose up
Push the database schema:
bun run db:push
-
Start the development server
bun dev
Open http://localhost:3000 in your browser.
-
Build for production
bun run build bun start
bun run db:generate- Generate database migrationsbun run db:migrate- Apply database migrationsbun run db:studio- Open Drizzle Studio for database managementbun run check- Run Biome linter and formatter checksbun run typecheck- Run TypeScript type checking
This project is licensed under the MIT license.