Skip to content

Divine

Short-form looping video on the decentralized web

Divine is an open-source platform for sharing 6-second looping videos, built on Nostr — a decentralized social protocol. Think Vine, but nobody owns it and nobody can shut it down.

What We're Building

Divine brings back the magic of short-form looping video in a way that's:

  • Decentralized — No single company controls your content or social graph
  • Open Source — All our code is public and contributions are welcome
  • Interoperable — Your videos and followers work across any Nostr client
  • Censorship Resistant — Content lives on multiple relays, not one server

Architecture

Frontend Applications

Repository Stack Description
divine-web React + TypeScript + Vite Web app at divine.video
divine-mobile Flutter Native iOS and Android apps
divine-space React + TypeScript + Vite MySpace-inspired video social network on Nostr
divine-relay-manager React + TypeScript + Vite Nostr relay management dashboard

Core Backend Services

Repository Stack Description
divine-funnelcake Rust / Axum Nostr relay + REST API + ClickHouse analytics (relay.divine.video / api.divine.video)
keycast Rust / Axum OAuth 2.0 + NIP-46 remote signing + UCAN tokens (login.divine.video)
divine-blossom Rust / Fastly Compute Content-addressed media storage via Blossom protocol (media.divine.video)
divine-inquisitor Rust / Axum C2PA Content Credentials verification service
divine-relay-sync Rust Sync Nostr events between relays using NIP-77 negentropy
funnel Rust Analytics pipeline and REST API

Trust & Safety

Repository Stack Description
divine-moderation-service Cloudflare Worker Human-in-the-loop content moderation — NSFW, violence, AI-generated, and deepfake detection via Hive.AI + Reality Defender
divine-moderation-api Cloudflare Worker Public API for content moderation — queue producer + status checker
divine-realness Multi-provider deepfake detection for Nostr video events
osprey Rust High-performance safety rules engine for real-time event processing at scale
social-media-age-rules-db Global social media age regulations database with admin UI

Edge & Infrastructure

Repository Stack Description
divine-cdn-worker Cloudflare Worker Media CDN and Blossom server (cdn.divine.video)
divine-router Rust / Fastly Compute Edge router for divine.video subdomains
divine-name-server Cloudflare Worker NIP-05 name server
divine-name-sync NIP-05 name synchronization
divine-rest-gateway Cloudflare Worker REST API caching proxy for Nostr
divine-push-service Push notification service for the mobile app
divine-identify-verification-service Cloudflare Worker Identity and verification service
divine-github-actions GitHub Actions Reusable CI/CD workflows for Divine repositories

Libraries & SDKs

Repository Stack Description
keycast_flutter_demo Flutter / Dart Keycast Flutter library and demo app for OAuth + PKCE + BYOK Nostr signing
c2pa-flutter Flutter / Dart Flutter wrapper for the official C2PA mobile SDKs
c2pa-rs Rust Fork of the C2PA Rust SDK for content provenance and authenticity
media-kit Flutter / Dart Fork of cross-platform video & audio player for Flutter

Other

Repository Description
divine-resurrection Legacy identity recovery for former Vine creators
brand-guidelines Brand DNA, tone of voice, and visual identity

How It Works

Nostr Protocol

Nostr (Notes and Other Stuff Transmitted by Relays) is a simple, open protocol for decentralized social networking. Here's how Divine uses it:

  • Identity: Users have a cryptographic keypair. Your public key is your identity, and you sign all your content with your private key. No email, no phone number, no company owns your account.

  • Content: Videos are published as Nostr events (kind 34236) containing metadata and links to the actual video files. These events are signed and can be verified by anyone.

  • Social Graph: Follows, likes, reposts, and comments are all Nostr events. Your social connections aren't locked into Divine — they work across the entire Nostr ecosystem.

  • Relays: Content is stored on relays — servers that accept and serve Nostr events. You can use any relay, run your own, or use multiple for redundancy.

Blossom (Media Storage)

Blossom is a protocol for decentralized media storage that complements Nostr. Since Nostr events are lightweight (just JSON), large files like videos are stored separately:

  • Videos are uploaded to Blossom servers and addressed by their SHA-256 hash
  • The hash is included in the Nostr event, linking the metadata to the media
  • Multiple Blossom servers can host the same file, providing redundancy
  • Anyone can verify file integrity by checking the hash

This separation keeps Nostr relays fast while enabling rich media content.

C2PA Content Credentials

Divine integrates C2PA (Coalition for Content Provenance and Authenticity) to provide content provenance and authenticity verification. This helps users understand the origin of media and detect AI-generated or manipulated content.

Keycast (Authentication & Signing)

Keycast provides OAuth 2.0 authentication with NIP-46 remote signing, allowing users to log in and sign Nostr events without exposing their private keys. It issues UCAN tokens for cross-service authorization.

Contributing

We welcome contributions! Whether you're fixing bugs, adding features, or improving documentation, we'd love your help.

Getting Started

  1. Find an issue — Check the issues tab in any repository, or open a new one
  2. Fork & clone — Fork the repo and clone it locally
  3. Create a branch — Make your changes in a feature branch
  4. Submit a PR — Open a pull request with a clear description

Development Setup

divine-web:

git clone https://github.com/divinevideo/divine-web
cd divine-web
npm install
npm run dev

divine-mobile:

git clone https://github.com/divinevideo/divine-mobile
cd divine-mobile
flutter pub get
flutter run

Rust services (keycast, divine-funnelcake, divine-blossom, etc.):

git clone https://github.com/divinevideo/<repo-name>
cd <repo-name>
cargo build

Community

  • Nostr: Follow us on Nostr for updates

License

All Divine repositories are open source. Check individual repositories for specific license information.


Divine is part of the broader movement to build a more open, decentralized internet. We believe social media should be a protocol, not a platform.

Popular repositories Loading

  1. divine-mobile divine-mobile Public

    Dart 227 41

  2. divine-web divine-web Public

    TypeScript 34 22

  3. divine-moderation-service divine-moderation-service Public

    Human in the loop content moderation service for diVine video platform - detects NSFW, violence, AI-generated content, and deepfakes

    JavaScript 4 1

  4. divine-name-server divine-name-server Public

    TypeScript 3 3

  5. keycast keycast Public

    Rust 3 2

  6. divine-relay-manager divine-relay-manager Public

    Nostr relay management interface

    TypeScript 2

Repositories

Showing 10 of 29 repositories

Top languages

Loading…

Most used topics

Loading…