Skip to content

Jadebook-Journal/jadebook-oss

Repository files navigation

Jadebook - Journal Platform

Jadebook is an opinionated framework for personal growth.

It's a solo-dev project aimed at making journaling more accessible and experimenting with the benefits of AI in personal growth.

However, journaling should be private and there aren't many open-source alternatives for a good journaling platform. Thus, we made a special version of Jadebook, one that can be easily hosted and updated.

Important

This is a separate open-source version of the actual Jadebook project. Therefore there are feature and infrastructure differences. This version focuses primarily on the open-source journaling experience. We didn't include the AI stuff or any features added after September 2025. We do however, aim to retain compatibility with the imports/exports for content.

Benefits

  • Everything is held in Supabase, including auth, db and storage
  • Search, tags, covers, icons, transcription and uploading assets
  • Mobile-responsive and available as a Progressive Web App (PWA)
  • Comes with OpenAPI spec in-case you want to build something on top
  • Uses NextJS so the code is fairly accessible and easy to work with
  • Export/Import to and from the SaaS Jadebook platform
  • You can one-click deploy it on Vercel for free
  • Rich-text editor for entries
  • Everything is synced across devices and platforms

Quickstart

You can click the button below. It'll take you through the steps to setting up Jadebook on Vercel and include the Supabase integration. The deployment should take around 3-5 minutes to complete.

Deploy with Vercel

Note

Do not turn off the option to seed the database when setting up Supabase. This is required to set up the correct tables and RLS policies within Supabase.

You'll notice that you need to enter the email you'll be using for your account. Jadebook OSS is not intended or setup to be used for multiple people, thus to stop random people from signing up and using your resources, we only allow 1 email to create the account. You can change the email later.

Environment Variables

  • USER_EMAIL refers to the email that should be allowed to create the account. By default, only one person is allowed to sign-up to prevent abuse
  • NEXT_PUBLIC_AUTH_IMAGE_URL refers to the image shown on auth screens such the sign-in and sign-up. Any image url is good, we recommend getting one from Unsplash

Theming

You can setup themes, letting you change the look and feel of the entire platform in-app.

  • By default, we have around 24 themes for you to choose from
  • Each theme has a different style for light and dark mode
  • You can also change the font, letter spacing, spacing and rounding
  • You can change data layout (i.e. list, grid, monthly view)
  • Turn on/off sidebar features like the goals and search

Goals

Jadebook has a unique view on goals. Rather than a todo list, we have a main generic goal (like Make money) and then an end date. You can then create mini journal entries as you experiment with different things, explore and basically work towards the direction of the goal.

This is mainly for long-term (3 months plus) goals that are difficult quantify.

Security

By default, we have included the following precautions:

  • Supabase (DB) is never accessed on the client and is only accessible through the API
  • The API requires an user's session token which is periodically refreshed
  • The API also handles CORS to deny unknown hosts
  • Tables have an RLS policy to only allow Anon and Authenticated roles to access data
  • Assets are loaded using signed-URLS and expire after a given time
  • We only allow 1 email to sign-up to stop abuse from random people
  • The Vercel Firewall (if hosting on Vercel) should also handle malicious traffic and DDOS protection
  • We gather absolutely no telemetry
  • NextJS security headers are also setup
  • We've disabled search indexing so the platform won't be visible on search

However, there are still some things to understand:

  • We do not encrypt the journal entries. (Unencrypted data allows full-text search to work)
  • We do not handle rate-limiting (Although Vercel Firewall should mitigate this)

Other Features

  • Auth is setup by default, including password reset and email verification
  • You can export or import all your content in JSON format
  • Unlimited character count (although you should try not to go beyond 20K)
  • You can extend the TipTap v3 editor if you wish (however this might cause compatibility issues)
  • Streak tracking
  • We're also using the React Compiler for maximum performance

Local Development

If you plan on extending the app, we recommend using Supabase locally on a docker instance (initializing Supabase from the root will run the migrations as well). You'll have to add the environment variables for Supabase, and then you can do pretty much anything you want.

Thanks and Attributions

We'd like to thank the following because they have helped make Jadebook really good:

  • shadcn/studio -> Our theming is mostly based on the implementation in shadcn/studio
  • Supabase - Supabase allows Jadebook to be possible and so easy to setup. Big thumbs up to them
  • Coolshapes - These are the nice abstract shapes you see in Jadebook. Absolutely amazing and adds so much life to the app
  • Hono Open API Starter - The way we setup our backend to use Hono and OpenAPI is heavily inspired by this starter app. Great resource.
  • Pawel Czerwinski - We use his image from Unsplash for a lot of Jadebook stuff. We love his images btw.

About

Jadebook OSS is the open-source journal platform.

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages