No playlists yet
Upload a playlist and assign it to a folderNo scenarios yet
Add scenarios with their share codes to launch them directly, and drop them into folders like your playlistsQueue is empty
Add blocks to build your sessionLoading…
Export
Download all your playlists and folder structure as a .zip. Includes the JSON files and a manifest so everything can be restored exactly.
Import
Drop a previously exported .zip to restore your library. Folders and playlists will be recreated in Supabase.
Supabase setup guide
- Go to supabase.com and create a free account
- Create a new project, pick a name and region
- Go to Project Settings → API and copy your Project URL and anon key
- Open SQL Editor and run the table setup queries
- Paste your URL and key below and hit Save
create table if not exists folders (
id uuid default gen_random_uuid() primary key,
name text not null,
position integer,
color text,
parent_id uuid references folders(id) on delete set null,
created_at timestamptz default now()
);
create table if not exists playlists (
id uuid default gen_random_uuid() primary key,
name text not null,
folder_id uuid references folders(id) on delete set null,
game_tag text,
notes text,
file_data jsonb,
share_code text,
color text,
pinned boolean default false,
position integer,
created_at timestamptz default now()
);
create table if not exists scenario_folders (
id uuid default gen_random_uuid() primary key,
name text not null,
position integer,
color text,
parent_id uuid references scenario_folders(id) on delete set null,
created_at timestamptz default now()
);
create table if not exists scenarios (
id uuid default gen_random_uuid() primary key,
name text not null,
folder_id uuid references scenario_folders(id) on delete set null,
share_code text,
game_tag text,
notes text,
pinned boolean default false,
position integer,
created_at timestamptz default now()
);
create table if not exists sens (
id uuid default gen_random_uuid() primary key,
scenario_type text not null unique,
cm360 numeric,
updated_at timestamptz default now()
);
Already have these tables from an older version? Run this too — it's safe to run more than once and won't touch existing data:
alter table folders add column if not exists position integer;
alter table folders add column if not exists color text;
alter table folders add column if not exists parent_id uuid references folders(id) on delete set null;
alter table playlists add column if not exists color text;
alter table playlists add column if not exists pinned boolean default false;
alter table playlists add column if not exists position integer;
alter table scenarios add column if not exists pinned boolean default false;
alter table scenarios add column if not exists position integer;
alter table scenarios add column if not exists folder_id uuid references scenario_folders(id) on delete set null;
alter table scenario_folders add column if not exists position integer;
alter table scenario_folders add column if not exists color text;
alter table scenario_folders add column if not exists parent_id uuid references scenario_folders(id) on delete set null;
create table if not exists resources (
id uuid default gen_random_uuid() primary key,
section text not null,
title text not null,
url text,
description text,
authors text,
featured boolean default false,
position numeric,
created_at timestamptz default now()
);
Folders inside folders now work for playlists and scenarios. If you already have the tables, the alter table block above is all you need — run it once (safe to repeat). If you never created scenario_folders, run its create table if not exists block above first.
Data
Back up or move your playlists, scenarios and folders as a zip.