Skip to content

Akshad135/bookmarks

Repository files navigation

Bookmarks

A free, self-hostable bookmark manager to organize your web life.

Desktop

Desktop View

Mobile

Mobile View

Setup

  1. Fork this repository to your GitHub account.

  2. Deploy to Vercel:

    • Go to Vercel and "Add New Project".
      • (Create an account and connect your github repo allow Vercel to access your forked repo)
    • Import your forked repository.
  3. Setup Supabase:

    • Create Project: Create a new project on Supabase.com.
    • Create User: Go to Authentication -> Users -> Add User -> "Create New User". Enter your email and password. You will use these to log in.
    • Database Setup: Go to the SQL Editor -> New Query -> Paste and run the following script:
-- Create tables
create table bookmarks (
  id text primary key,
  user_id uuid references auth.users(id) not null,
  title text not null,
  url text not null,
  description text,
  favicon text,
  thumbnail text,
  collection_id text default 'unsorted',
  tags text[] default array[]::text[],
  is_favorite boolean default false,
  is_archived boolean default false,
  is_trashed boolean default false,
  is_pinned boolean default false,
  created_at timestamp with time zone default timezone('utc'::text, now()) not null,
  updated_at timestamp with time zone default timezone('utc'::text, now()) not null
);


create table collections (
  id text primary key,
  user_id uuid references auth.users(id) not null,
  name text not null,
  icon text,
  color text,
  is_system boolean default false
);

create table tags (
  id text primary key,
  user_id uuid references auth.users(id) not null,
  name text not null,
  color text not null
);

-- Enable RLS
alter table bookmarks enable row level security;
alter table collections enable row level security;
alter table tags enable row level security;

-- Policies
create policy "Users can only see their own bookmarks" on bookmarks for all using ((select auth.uid()) = user_id);
create policy "Users can only see their own collections" on collections for all using ((select auth.uid()) = user_id);
create policy "Users can only see their own tags" on tags for all using ((select auth.uid()) = user_id);
  1. Configure Environment Variables in Vercel settings:
    • Required:
      • VITE_SB_HOST: Go to your Supabase Project -> Project Settings -> Data API -> Copy "Project URL".
      • VITE_SB_LEGACY_AN: Go to your Supabase Project -> Project Settings -> API Keys -> Click on to the center tab Legacy anon, service_role API keys -> Copy "anon" public key.
    • Optional (for customization):
      • VITE_USER_TITLE: Name of your app (default: "Bookmarks").
      • VITE_USER_SUBTITLE: Sidebar subtitle text.
      • VITE_USER_ICON: Path or URL to app icon (default: "/favicon.svg").

Supported Browsers

To use the Share via feature on Android, please use a browser that supports PWA installation and Share Target API, such as Chrome Mobile or Samsung Internet. Install the app to your home screen to enable sharing directly from other apps.

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors