Notabase is a personal knowledge base for networked thinking.
It lets you connect knowledge and form ideas by linking notes together. These links allow you to traverse your notes like webpages and find connections that you never would have thought of otherwise. Think of it as a personal Wikipedia for your brain that you can edit and browse as you like. As you add more notes, it gets more powerful!
It is inspired by note-taking apps such as Notion, Obsidian, Typora, and Roam Research.
Notabase is in beta. It is under active development.
- Browse your notes with page stacking / sliding panes (similar to Andy's working notes)
- WYSIWYG editor with markdown support makes it easy to read and edit notes
- Linked/unlinked references let you see other notes that reference a specific note
- Your notes are synced to the cloud and can be accessed on any device
- Use the graph view to analyze your knowledge graph
- Full-text search lets you easily find relevant notes
- Block references (coming soon)
- Offline support (coming soon)
- Open source, allowing community involvement and transparent development
Notabase is currently focused on the hosted experience, but it is possible for you to self-host it as well. Here's a list of steps that you need to take to get it running locally (not tested):
-
Notabase uses Supabase as the backend (for authentication and the database), so you'll have to make a Supabase account. If you prefer to self-host Supabase as well, you can follow the instructions in their docs.
-
Copy
.env.local.example
into.env.local
and fill in the environment variables from your Supabase dashboard. Go toSettings
and click onAPI
.NEXT_PUBLIC_SUPABASE_URL
is theConfig URL
andNEXT_PUBLIC_SUPABASE_KEY
is the publicanon
key. -
Go to the Table Editor on the Supabase dashboard and create two new tables:
users
andnotes
.users
requires aid
column with typeuuid
.notes
requires aid
column with typeuuid
, auser_id
column that is a foreign key for theusers
id
column, atitle
column with typetext
, and acontent
column with typejsonb
. -
You'll want to create a stored procedure that creates a new user in the
users
table whenever a new user is created through Supabase authentication. Go to the SQL tab on the Supabase dashboard and create a new query. Paste the following inside:create function public.handle_new_user() returns trigger as $$ begin insert into public.users (id) values (new.id); return new; end; $$ language plpgsql security definer; create trigger on_auth_user_created after insert on auth.users for each row execute procedure public.handle_new_user();
Then run the query.
-
In your local development environment, install the packages using
npm install
, and then run the project usingnpm run dev
.
If you have any feedback about these instructions or have ways to make it better, please let me know.