https://github.com/robertaboukhalil/multiplayer-igv
Multiplayer IGV
https://github.com/robertaboukhalil/multiplayer-igv
Last synced: about 1 year ago
JSON representation
Multiplayer IGV
- Host: GitHub
- URL: https://github.com/robertaboukhalil/multiplayer-igv
- Owner: robertaboukhalil
- License: mit
- Created: 2021-10-02T03:22:46.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2024-06-18T20:28:33.000Z (about 2 years ago)
- Last Synced: 2025-04-29T11:12:40.690Z (about 1 year ago)
- Language: JavaScript
- Homepage: https://igv.sandbox.bio
- Size: 497 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Multiplayer IGV
Adds real-time collaboration to an IGV.js view, with share links and saved annotations.
## Demo
Test it out at https://igv.sandbox.bio/.
## Development
### Pre-requisites
1. Supabase account with free tier (needed even for local dev unless you setup [their open source infra](https://github.com/supabase/realtime) yourself)
2. Cloudflare account (not needed for local dev)
### Supabase config
After cloning this repo, create a `.env` file in the root folder that contains your Supabase database's **public** URL and anonymous key:
```
PUBLIC_SUPABASE_URL = "https://YOUR_SUPABASE_PROJECT_ID.supabase.co"
PUBLIC_SUPABASE_KEY_ANON = "YOUR_SUPABASE_ANON_KEY"
SUPABASE_KEY_ADMIN = "YOUR_SUPABASE_ADMIN_KEY"
```
You'll find that information in your Supabase dashboard under Settings --> API.
Make sure you use the **anonymous** key for `PUBLIC_SUPABASE_KEY_ANON` since it is exposed on the frontend, which is intended.
### Supabase table creation
The SQL needed to create the table that stores information about each IGV session:
```sql
create table
public.rooms_stg (
id bigint generated by default as identity not null,
uuid text not null,
name text null,
config jsonb null,
regions jsonb not null default '[]'::jsonb,
time_created timestamp with time zone null default now(),
constraint rooms_pkey primary key (id)
) tablespace pg_default;
```
### Cloudflare config (skip for local dev)
In your Cloudflare account's dashboard, set up Cloudflare Pages. In the form:
1. Connect your fork of this repo so that it gets deployed every time you push to `main`
2. For build settings, choose the Svelte Kit preset
3. For environment variables, set:
```
NODE_VERSION=16
PUBLIC_SUPABASE_URL = "https://YOUR_SUPABASE_PROJECT_ID.supabase.co"
PUBLIC_SUPABASE_KEY_ANON = "YOUR_SUPABASE_ANON_KEY"
SUPABASE_KEY_ADMIN = "YOUR_SUPABASE_ADMIN_KEY" # Make sure to click the encrypt icon for this one
```
### Launch web server (local dev)
```bash
npm run dev
```