I built Prompt House because I kept losing good prompts. They’d end up scattered across notes apps, browser bookmarks, random text files, and half the time I’d rewrite something from scratch not realizing I’d already solved it. What I needed was a proper library: searchable, organized, and aware of what I was actually storing.
It’s a full-stack web app for managing, sharing, and discovering AI prompts. The backend runs on Node.js with Express and TypeScript, using Drizzle ORM against a PostgreSQL 16 database. The frontend is React + Vite, also TypeScript. Authentication is handled through Authentic via OIDC, and the whole thing deploys via Docker Compose. A good chunk of the initial scaffolding was built with Claude Code, which was an interesting experience in itself.
Organization That Actually Scales
Prompts can be nested into folders, tagged, rated, and favorited. Tags support bulk rename and merge operations, which matters more than it sounds once you’ve accumulated a few hundred prompts and realize you’ve been spelling the same concept three different ways. Every prompt also has full version history with one-click restore, so iterating on a prompt doesn’t mean losing what came before.
Search Beyond Keywords
There’s standard full-text search across titles, content, and descriptions, plus faceted filtering by status, type, model, tags, and folders. But the more interesting piece is semantic search powered by pgvector embeddings. You can search by meaning rather than exact wording: useful when you remember roughly what a prompt does but not what you called it.
AI-Assisted Prompt Work
The app analyzes prompt structure on save, detecting type and scoring confidence. It can generate improvement suggestions and stream refined versions back with an accept/discard workflow, so you’re not committing to a rewrite until you’ve seen it. There’s also an interactive playground where you can test prompts directly against Claude, GPT, Gemini, Grok, and others without leaving the app.
Prompt Types and Templates
Prompts are classified into types: System, Task, Template, Chain, Reference, and Snippet, with auto-detection on creation. Template prompts support {{variable}} substitution with live preview, which makes reusable prompt patterns much more practical to actually reuse.
Multi-Model From the Start
Rather than assuming one provider, Prompt House manages API keys for Anthropic, OpenAI, Google AI, xAI, and OpenRouter. Prompts can be tagged with model compatibility, and the playground lets you configure temperature and token limits per run. The goal was to make it easy to test the same prompt across models without a bunch of context-switching.
The Stuff I Enjoyed Building
A few things I found genuinely interesting to work through: the pgvector semantic search integration, the streaming improvement workflow with its accept/discard UX, and getting OIDC auth wired up cleanly through Authentik. The UI also uses the View Transitions API for navigation, which is a small thing but makes the app feel noticeably more polished.
This is an active project, I use it daily and keep adding to it.