Your private prompt library, with curated public prompts and agent collections.
Create your prompt library on bearprompt.com.
- Private library: Store your own prompts locally in the browser with no signup required.
- Folders, search, and tags: Organize prompts by folder, search quickly, and filter by tags.
- Public prompt library: Browse curated public prompts, featured categories, and highlighted authors.
- Agent library: Explore public agent collections and author pages.
- Share prompts: Share prompts with end-to-end encrypted links (just like Excalidraw).
Bearprompt has two main parts:
- Your private library lives in the browser and is stored locally using IndexedDB.
- Public discovery features such as prompts, agents, authors, and categories are served from Supabase.
This means the app is privacy-first for personal usage, while still supporting a public library experience.
- Node.js 22+ and npm
# Clone the repository
git clone https://github.com/julianyaman/bearprompt.git
cd bearprompt
# Install dependencies
npm install# Start development server
npm run dev
# Open http://localhost:5173 in your browser# Start the dev server
npm run dev
# Build for production
npm run build
# Preview the production build
npm run preview
# Type-check the project
npm run check
# Type-check in watch mode
npm run check:watchCreate a .env file based on .env.example:
cp .env.example .envCurrent environment variables:
SUPABASE_URL: Supabase project URLSUPABASE_ANON_KEY: client-side key for public reads and app usageSUPABASE_SERVICE_ROLE_KEY: server-side key for privileged operationsTURNSTILE_SECRET_KEY: optional Cloudflare Turnstile secret for risk-based verificationPUBLIC_TURNSTILE_SITE_KEY: optional public Turnstile site key
For purely local UI work, you can often develop without the optional Turnstile keys. Public library and publishing-related features depend on Supabase.
# Build for production
npm run buildBuild and run with Docker:
# Build the image
docker build -t bearprompt .
# Run the container
docker run -p 3000:3000 bearpromptThe container runs the SvelteKit Node build with node build and will be available at http://localhost:3000.
- SvelteKit 2 with Svelte 5
- Tailwind CSS 4
- Supabase for public content and server-backed features
- IndexedDB for the local private library
- @vercel/og for Open Graph image generation
- Private library data is stored locally in the browser.
- Public library content is fetched from Supabase.
- Shared links are end-to-end encrypted and use Cloudflare Turnstile for abuse prevention.
If you self-host, review your Supabase and verification configuration carefully before exposing public flows.
Contributions are welcome! Please feel free to submit issues and pull requests.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes using Conventional Commits, for example
feat(public): add category card hover state - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Commit messages in this repo follow:
<type>(<scope>): <description>
Examples:
feat(public): add featured category cardsfix(library): sort prompts alphabeticallydocs(landing): update hero copy
This project is licensed under the MIT License - see the LICENSE file for details.

