Skip to content

chbornman/pavo

Repository files navigation

PAVO - Your Data, Your Control

Break free from Big Tech. PAVO is a fully open source personal cloud platform that puts you in complete control of your data - know exactly where it lives, import and export freely, and never worry about your privacy being sold.

License Next.js TypeScript Tailwind CSS

Why PAVO?

Privacy First

  • Your data never leaves your control - No tracking, no data mining, no surveillance
  • Full export capabilities - Download everything, anytime
  • Self-hosted by default - Run on your own infrastructure
  • Open source transparency - Inspect every line of code

Unified Experience

  • πŸ“Έ Photos - Store memories without giving them away
  • 🎡 Music - Stream without algorithms or ads
  • 🎬 Movies & TV - Watch without surveillance
  • πŸ“„ Documents - Files that stay truly private
  • πŸŒ“ Dark/Light Mode - Beautiful interface that adapts to your preference
  • πŸ“± Mobile Ready - Works perfectly on all devices

Developer Friendly

  • πŸ” Secure Authentication - Built with Clerk
  • ⚑ Smart Caching - Optimized performance
  • πŸ› οΈ Modern Stack - Next.js 15, TypeScript, Tailwind CSS v4

Built on Amazing Open Source Projects

PAVO is a unified interface that brings together the best self-hosted services. We're grateful to these incredible projects:

  • Immich (AGPL-3.0) - Self-hosted photo and video backup solution with AI-powered features
  • Jellyfin (GPL-2.0) - The volunteer-built media server that puts you in control of your media
  • Paperless-ngx (GPL-3.0) - Scan, index, and archive your physical documents

PAVO creates a beautiful, unified dashboard while preserving the full power and flexibility of these excellent services. All credit for the core functionality goes to these amazing development teams.

Prerequisites

  • Node.js 18+ and npm
  • Running instances of:
    • Immich server
    • Paperless-ngx server
    • Jellyfin server
  • API keys/tokens for each service
  • Clerk account for authentication

Quick Start

Option 1: PAVO Cloud (Managed Hosting)

Get started instantly with our managed service:

  • βœ… Zero setup required
  • βœ… Automatic updates and backups
  • βœ… Mobile apps included
  • βœ… 14-day free trial

Start Free Trial β†’

Option 2: Self-Host (Free Forever)

  1. Clone the repository:
git clone https://github.com/chbornman/pavo.git
cd pavo
  1. Install dependencies:
npm install
  1. Configure environment variables:
cp .env.example .env.local
  1. Edit .env.local with your service URLs and API keys:
# Clerk Authentication
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
CLERK_SECRET_KEY=your_clerk_secret_key

# Immich Configuration
NEXT_PUBLIC_IMMICH_URL=https://immich.yourdomain.com
IMMICH_API_KEY=your_immich_api_key

# Paperless-ngx Configuration
NEXT_PUBLIC_PAPERLESS_URL=https://paperless.yourdomain.com
PAPERLESS_API_TOKEN=your_paperless_token

# Jellyfin Configuration
NEXT_PUBLIC_JELLYFIN_URL=https://jellyfin.yourdomain.com
JELLYFIN_API_KEY=your_jellyfin_api_key
JELLYFIN_USER_ID=your_jellyfin_user_id

Development

Run the development server:

npm run dev

Open http://localhost:3000 to view the dashboard.

Production

Build for production:

npm run build
npm run start

Configuration

Jellyfin Setup

  1. Ensure your user has access to the Music library in Jellyfin
  2. Go to Jellyfin Admin β†’ Users β†’ Your User β†’ Library Access
  3. Enable access to Movies, Shows, and Music libraries

Immich Setup

  1. Generate an API key from Immich web interface
  2. Go to User Settings β†’ API Keys β†’ Generate New Key

Paperless Setup

  1. Generate an authentication token
  2. Go to Settings β†’ Token Authentication β†’ Create Token

Tech Stack

  • Framework: Next.js 15.5 with App Router
  • Language: TypeScript
  • Styling: Tailwind CSS v4 with OKLCH colors
  • Authentication: Clerk
  • Fonts: Space Grotesk & JetBrains Mono

Project Structure

/app
  /api          # API routes for proxying service requests
  /components   # React components
  /hooks        # Custom React hooks
  /lib          # Utility functions and API clients
  page.tsx      # Main dashboard page
  layout.tsx    # Root layout with authentication
  globals.css   # Global styles and theme variables

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

PAVO is licensed under the GNU Affero General Public License v3.0.

This ensures that:

  • βœ… You can use, modify, and distribute PAVO freely
  • βœ… Any improvements remain open source and benefit the community
  • βœ… Network copyleft protects against proprietary cloud services using our code without contributing back
  • βœ… Commercial use is allowed with proper attribution and source code sharing

For the complete license terms, see LICENSE.md.

Acknowledgments

  • Built with love for the self-hosting and privacy community
  • Inspired by the need for a unified, privacy-respecting media dashboard
  • Immense gratitude to the teams behind Immich, Jellyfin, and Paperless-ngx for creating the incredible services that power PAVO
  • Special thanks to everyone fighting for digital privacy and data ownership

About

PAVO - Unified media dashboard for Jellyfin, Audiobookshelf, Immich, and Paperless

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •