MCPcopy Index your code
hub / github.com/PicPeak/picpeak

github.com/PicPeak/picpeak @v3.44.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v3.44.0 ↗ · + Follow
2,513 symbols 6,043 edges 611 files 520 documented · 21%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

PicPeak

PicPeak Logo

Self-hosted photo sharing for event photographers.

License: MIT Docker Node.js React

Live Demo · Deployment Guide · Homepage


PicPeak lets you create password-protected, time-limited photo galleries for your clients — hosted on your own server. No subscriptions, no storage limits, no third-party access to your photos.

PicPeak Gallery Preview

Demo

Try it out at demo.picpeak.app.

Admin panel: demo.picpeak.app/admin — login with demo@picpeak.app / Demo2026!

The demo resets periodically.

Features

Gallery Management — Create galleries, upload photos via drag & drop, set passwords and expiration dates. Galleries auto-archive when they expire. Events start as drafts so you can upload and prepare before notifying the client.

Client Experience — Responsive galleries that look great on any device. Guests can browse, download individual photos or everything at once. Optional guest uploads and feedback (likes, comments, ratings).

Themes & Branding — 11 built-in theme presets, custom CSS templates, configurable colors/fonts/layouts. White-label your admin panel and login page with your own logo and company name.

Email Notifications — Automated gallery creation, expiration warning, and archive emails. Multilingual templates (EN, DE, NL, PT, RU) editable from the admin UI.

Photo Protection — Watermarking, right-click prevention, canvas rendering, DevTools detection. Configurable per gallery.

External Media — Reference photos from a mounted folder instead of uploading. PicPeak reads originals in place and generates thumbnails on demand.

Multi-Language — Full UI translations for English, German, Dutch, Portuguese, and Russian. Email templates support all languages independently.

Analytics — Built-in view/download tracking plus optional Umami integration for privacy-focused analytics.

Video Support — Upload and stream MP4, WebM, MOV alongside photos. FFmpeg bundled via npm.

Multiple Admins — Role-based access control with super admin, admin, and editor roles.

Quick Start

git clone https://github.com/the-luap/picpeak.git
cd picpeak
cp .env.example .env
# Edit .env — set at least JWT_SECRET and passwords
docker compose up -d

Open http://localhost:3000 and log in with the credentials from your .env.

Permissions: Set PUID and PGID in .env to match your host user (id -u / id -g) so Docker volumes are writable.

See the Deployment Guide for reverse proxy setup, SSL, external media, and production configuration.

Screenshots

Admin Dashboard

Admin Dashboard

Event Management

Event Management

Analytics

Analytics

Comparison

PicPeak PicDrop Scrapbook.de
Self-hosted Yes No No
Monthly cost $0 $29-199 19-99 EUR
Storage Unlimited 50-500 GB 100-1000 GB
Custom branding Full Limited Limited
Open source Yes No No
API Yes Paid No

Tech Stack

  • Backend: Node.js, Express, PostgreSQL (or SQLite)
  • Frontend: React, TypeScript, Tailwind CSS
  • Infrastructure: Docker, Nginx, Redis
  • Processing: Sharp (images), FFmpeg (video)

Release Channels

Stable (stable / latest) — Production-ready. Use this for real deployments.

Beta (beta) — Early access to new features. May have rough edges.

# Set in .env
PICPEAK_CHANNEL=stable  # or beta

# Update
docker compose -f docker-compose.production.yml pull
docker compose -f docker-compose.production.yml up -d

The admin dashboard notifies you when updates are available.

Contributing

We welcome contributions — bug fixes, features, translations, documentation. See CONTRIBUTING.md for setup instructions.

Documentation

Contributors

Thanks to the people whose code, reports, and feedback have shaped PicPeak:

  • @Luca-Timo — native Apple Silicon multi-arch images, external-URL toggle for legal CMS pages, lazy-loaded folder tree picker, admin-email picker, self-hosted webfont system, gallery header/banner decoupling, and several typed-API refactors.
  • @Rekoo-PS — sharp-eyed bug reporter and product feedback. Filed the issues that drove the login-loop fix, gallery-loading skeleton work, mobile-lightbox overhaul, admin-events search-counter fix, photo-count column, and bulk-delete workflow. Also a BuyMeACoffee supporter.

If you've contributed and aren't listed here, please open a PR.

License

MIT — use it for personal or commercial projects.


Homepage · Live Demo · Docs · Issues

Extension points exported contracts — how you extend this code

MosaicPhotoProps (Interface)
* Mosaic Gallery Layout * * Uses CSS Columns for a gap-free masonry/mosaic effect. * Images flow vertically within co
frontend/src/components/gallery/layouts/MosaicGalleryLayout.tsx
ReceiverEntry (Interface)
(no doc)
tests/e2e/webhooks-roundtrip.spec.ts
PasswordConfig (Interface)
* Password generator utility for event creation * Generates secure, memorable passwords based on hostname/venue and eve
frontend/src/utils/passwordGenerator.ts
GallerySetupResult (Interface)
(no doc)
tests/e2e/gallery-feedback-filter.spec.ts
ProtectionViolationEvent (Interface)
(no doc)
frontend/src/types/protection.ts
DevToolsDetectionOptions (Interface)
(no doc)
frontend/src/types/protection.ts
ImageProtectionOptions (Interface)
(no doc)
frontend/src/types/protection.ts

Core symbols most depended-on inside this repo

log
called by 559
backend/src/services/restoreService.js
get
called by 326
backend/src/services/storage/LocalFsStorage.js
requirePermission
called by 221
backend/src/middleware/permissions.js
formatBoolean
called by 171
backend/src/utils/dbCompat.js
delete
called by 151
backend/src/services/storage/s3Storage.js
put
called by 78
backend/src/services/storage/LocalFsStorage.js
logActivity
called by 75
backend/src/database/db.js
stat
called by 56
backend/src/services/storage/LocalFsStorage.js

Shape

Function 1,753
Interface 345
Method 344
Class 71

Languages

TypeScript100%

Modules by API surface

backend/src/services/backupService.js40 symbols
backend/src/services/restoreService.js30 symbols
frontend/src/services/userManagement.service.ts28 symbols
frontend/src/services/photos.service.ts27 symbols
frontend/src/services/guests.service.ts27 symbols
backend/src/utils/errors.js27 symbols
backend/src/services/customerAccountsService.js26 symbols
frontend/src/services/feedback.service.ts25 symbols
frontend/src/services/settings.service.ts24 symbols
frontend/src/components/gallery/PhotoLightbox.tsx24 symbols
frontend/src/types/protection.ts23 symbols
backend/src/services/databaseBackup.js23 symbols

For agents

$ claude mcp add picpeak \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page