
Template details
Scribbly
Open-source journal web app with Next.js, mood tracking, tags, daily email reminders, and Stripe subscriptions.
About this template
Scribbly is an open source digital journal web app built on the Next.js App Router that lets users write, tag, and manage personal journal entries with mood tracking, daily email reminders, and Stripe-powered subscriptions.
What is Scribbly?
Scribbly is a journaling web application written in TypeScript and distributed under the MIT license. It takes user-written entries — a title, block-style content, a mood, and comma-separated tags — as input and stores them in a PostgreSQL database via Drizzle ORM, then renders them as filterable journal cards. The app was created by Subham Bharadwaz (GitHub: subhamBharadwaz) and runs on Next.js with the /app directory, Tailwind CSS, and shadcn/ui components. It handles authentication, subscriptions, email reminders, analytics, and error monitoring out of the box.
Key Features
- Next.js App Router — Uses the /app directory with nested layouts, route handlers, server and client components, metadata files, and middleware.
- Block-style editor — Entry content is written with Editor.js; images inside entries are uploaded through UploadThing tokens.
- Mood and tags — Each entry can have a mood and comma-separated tags so journal cards can be scanned and organized by context.
- Autosave — Title, content, mood, and tags are saved automatically after a short pause while editing; manual saving remains available.
- Daily reminder emails — Opt-in users receive a reminder email every day at 9 pm, generated with React Email and delivered via Resend.
- Better Auth authentication — Sign-in and session management are handled by Better Auth (the repository metadata also references Clerk).
- Stripe subscriptions — A monthly subscription plan is processed through Stripe and grants additional features.
- Observability and data fetching — TanStack Query handles client-side fetching/caching, PostHog tracks analytics, Sentry reports errors, and Zod validates inputs.
Who is it for?
- Personal journalers — People who want a digital, searchable journal with mood tracking and tags, plus a 9 pm email reminder to keep a daily writing habit.
- Full-stack developers — Developers looking for a production-grade Next.js reference app that demonstrates the app router, Drizzle ORM, Better Auth, Stripe, Resend, and Sentry working together in one codebase.
- Self-hosters — Anyone who wants to run their own private journal on PostgreSQL with an MIT-licensed codebase and full control of their data.
What can you do with Scribbly?
- Write and organize daily entries: Create entries in a block editor, assign a mood and tags, and let autosave capture your changes while you type.
- Scan and filter by context: Use the tags and mood on each journal card to quickly find entries about a topic or a particular feeling.
- Build a consistent journaling habit: Turn on the reminder feature to receive a 9 pm email every day and make journaling part of your routine.
- Fork and extend the app: Because the code is MIT-licensed, you can modify the auth, add features, change the UI, or swap integrations for your own deployment.
How does Scribbly work?
To run it locally: clone the repository, install dependencies with pnpm, copy .env.example to .env.local, and fill in the variables for PostgreSQL, Better Auth secret, UploadThing, Stripe, and Resend. Then run pnpm db:migrate to apply Drizzle migrations, and pnpm dev to start the development server. For Vercel deployments, the repository root must be set to . (not src), because the app uses src/ as its source directory and middleware paths are resolved from the root.
Pricing
The source code is free and MIT-licensed, so you can self-host without paying anything. The app itself includes a monthly subscription plan processed through Stripe, which unlocks additional benefits, though no prices are listed in the repository.
FAQ
Is Scribbly free?
Yes, the entire codebase is open source under the MIT license and can be self-hosted at no cost. The app also has a monthly subscription plan via Stripe for users who want the extra features, but the repository doesn't state any specific prices.
What database does Scribbly use?
Scribbly uses PostgreSQL as its database, accessed through Drizzle ORM. The required connection string goes in the DATABASE_URL environment variable, and database migrations are applied with pnpm db:migrate.
How do I deploy Scribbly on Vercel?
Set the project root directory to . instead of src. The Next.js app uses src/ as its source directory, and if you set Vercel's root to src, middleware and proxy paths are resolved incorrectly as src/src/.... The rest of the setup follows standard Vercel environment variables.
Does Scribbly send reminder emails?
Yes, if a user activates the reminder option, Scribbly sends a reminder email every day at 9 pm. The emails are built with React Email and sent through Resend.










