Skip to content

Private video-sharing PWA for friend groups. SvelteKit + SQLite + Twilio.

License

Notifications You must be signed in to change notification settings

312-dev/scrolly

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

126 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Scrolly

Scrolly

Private video-sharing PWA for friend groups.

CI Security OpenSSF Scorecard Release License


Share video clips and music links with your close friends through private groups. Built as an installable PWA with a native mobile feel.

Features

  • Video Feed — SMS-based clip sharing via Twilio with inline playback
  • Music Sharing — Cross-platform link resolution via Odesli
  • Groups — Invite codes, customizable accent colors, member management
  • Push Notifications — Real-time alerts via Web Push API
  • Favorites & Reactions — Save and react to shared content
  • Comments — Threaded discussions on posts
  • Themes — Dark, light, and system-based theme switching
  • PWA — Installable on mobile and desktop

Tech Stack

Layer Technology
Frontend SvelteKit 2, Svelte 5 (runes)
Backend SvelteKit adapter-node
Database SQLite via Drizzle ORM
Messaging Twilio SMS
Notifications Web Push (VAPID)
Styling Scoped CSS, custom properties
Language TypeScript

Quick Start

# Clone and install
git clone https://github.com/graysoncadams/scrolly.git
cd scrolly
npm install

# Configure environment
cp .env.example .env
# Edit .env with your values (see comments in file)

# Development
npm run dev

Self-Hosting with Docker

Install

# 1. Download the compose file and env template
curl -LO https://raw.githubusercontent.com/GraysonCAdams/scrolly/main/docker-compose.yml
curl -LO https://raw.githubusercontent.com/GraysonCAdams/scrolly/main/.env.example
cp .env.example .env

# 2. Configure (edit .env — see comments for guidance)
nano .env

# 3. Start
docker compose up -d

The app will be available at http://localhost:3000. Database migrations run automatically on every startup — no manual steps needed.

Upgrade

docker compose pull        # Pull the latest image
docker compose up -d       # Restart with new version (migrations run automatically)

Version Pinning

Edit docker-compose.yml to control which version you run:

image: ghcr.io/graysoncadams/scrolly:1.0.0   # Exact version
image: ghcr.io/graysoncadams/scrolly:1.0      # Latest patch in 1.0.x
image: ghcr.io/graysoncadams/scrolly:latest   # Always newest

All versions are listed on the Releases page.

Auto-Updates (optional)

Uncomment the Watchtower service in docker-compose.yml to automatically pull new images daily.

Backup

docker run --rm -v scrolly_scrolly-data:/data -v $(pwd):/backup alpine \
  tar czf /backup/scrolly-backup-$(date +%Y%m%d).tar.gz -C / data

Scripts

Command Description
npm run dev Start dev server
npm run build Production build
npm run lint Run ESLint
npm run lint:strict Lint with zero warnings
npm run format Format with Prettier
npm run format:check Check formatting
npm run type-check TypeScript type checking
npm run test Run unit tests
npm run test:coverage Run tests with coverage
npm run check SvelteKit diagnostics

Contributing

See CONTRIBUTING.md for development setup, coding standards, and PR guidelines.

Security

See SECURITY.md for our security policy and how to report vulnerabilities.

License

MIT — Created by @GraysonCAdams

About

Private video-sharing PWA for friend groups. SvelteKit + SQLite + Twilio.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors