Skip to content

patrickulrich/vlogstr-android

Repository files navigation

Vlogstr

A decentralized video sharing app powered by Nostr - the open social protocol.

Overview

Vlogstr is a mobile-first video sharing application that leverages the Nostr protocol for decentralized content distribution. Built with Flutter and powered by Purplestack, it provides a familiar short-form video experience while maintaining user sovereignty over their content and social graph.

Features

🎥 Video Creation & Publishing

  • Built-in Camera Recording: Record videos directly within the app with front/back camera switching
  • Gallery Upload: Select and share existing videos from your device
  • Smart Video Compression: Automatically compresses videos by 60-80% for faster uploads
  • Dual Progress Tracking: Real-time feedback during compression and upload phases
  • NIP-71 Compliant: Full support for Nostr video events (kinds 21 & 22)

📱 Core Functionality

  • Home Feed: Discover videos from the Nostr network
  • User Profiles: View and edit profile information including display name, bio, and avatar
  • Video Player: Full-featured video playback with controls
  • Engagement Metrics: Track likes, reactions, and engagement on videos
  • Dashboard: Personal analytics showing your videos, followers, and engagement stats

🔐 Authentication & Security

  • Amber Signer Integration: Secure key management via NIP-55 compatible Android signer
  • Multi-account Support: Switch between multiple Nostr identities
  • Private Key Security: Keys handled securely with no permanent storage

📤 Sharing & Social

  • Unified Share Modal: Single share button with two options - copy URL or share to Nostr
  • Share to Nostr: Create kind 1 notes referencing your videos with unified vlogstr.com URLs
  • Quick Insert Tools: Easily add video URLs and metadata to posts
  • Delete Videos: Remove your content with NIP-09 deletion events
  • Follow System: Build your social graph on the decentralized network

🎨 User Experience

  • Material 3 Design: Modern, clean interface following latest Material Design guidelines
  • Dark/Light Theme: Automatic theme switching based on system preferences
  • Responsive Layouts: Optimized for various screen sizes
  • Skeleton Loading: Smooth loading states that match content structure
  • Pull-to-refresh: Update feeds with familiar gestures (where appropriate)
  • Double-tap to Like: Intuitive gesture controls - single tap to play/pause, double-tap to like videos
  • Lightning Wallet Integration: Connect Nostr Wallet Connect (NWC) compatible wallets for zap functionality

🔧 Technical Features

  • Local-first Architecture: Content cached locally for offline viewing
  • Relay Pool Management: Efficient connection to multiple Nostr relays
  • Blossom Protocol: Decentralized file storage for video content
  • State Persistence: Maintains app state across sessions
  • Deep Linking: Support for vlogstr.com URLs

Technology Stack

  • Flutter: Cross-platform mobile framework
  • Riverpod: State management and dependency injection
  • Purplestack: Nostr development framework
  • Models Package: Domain models for Nostr events
  • Purplebase: SQLite-powered local storage and relay pool
  • Amber Signer: NIP-55 authentication
  • Blossom: Decentralized file upload protocol

Getting Started

Prerequisites

  1. Flutter SDK (3.8.1 or higher)
  2. Android Studio or VS Code with Flutter plugins
  3. Android device or emulator
  4. Amber app for authentication

Installation

# Clone the repository
git clone https://github.com/patrickulrich/vlogstr-android.git
cd vlogstr-android

# Install dependencies
flutter pub get

# Run the app
flutter run

Building for Release

# Build APK for Android
flutter build apk --target-platform android-arm64 --split-per-abi

# The APK will be available at:
# build/app/outputs/flutter-apk/app-arm64-v8a-release.apk

Project Structure

lib/
├── screens/          # UI screens
│   ├── main_screen.dart         # Bottom navigation container
│   ├── home_screen.dart         # Video feed
│   ├── discover_screen.dart     # Discovery/explore
│   ├── recorder_screen.dart     # Video recording/upload
│   ├── dashboard_screen.dart    # User analytics
│   ├── camera_recording_screen.dart  # Built-in camera
│   ├── video_publish_screen.dart     # Video metadata editor
│   ├── note_composer_screen.dart     # Share to Nostr composer
│   ├── contact_selection_screen.dart # DM contact selection
│   ├── settings_screen.dart     # App settings and wallet config
│   └── ...
├── providers/        # Riverpod providers
├── widgets/          # Reusable UI components
├── services/         # Business logic services
└── utils/           # Utility functions

Configuration

The app uses a relay pool configuration for connecting to Nostr relays. Default relays include:

  • wss://relay.damus.io
  • wss://relay.primal.net

These can be configured in the storage configuration.

Contributing

Contributions are welcome! Please feel free to submit pull requests or open issues for bugs and feature requests.

Distribution

Consider distributing through Zapstore for a freedom-focused app store experience.

License

MIT


Powered by Purplestack - Development stack for building Nostr-enabled applications

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •