Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

besscroft/PicImpact

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,007 Commits
1,007 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PicImpact

License ESLint Docker Build Repo Size

简体中文 | English | 日本語


简体中文

PicImpact 是一个支持自部署的摄影作品展示网站,基于 Next.js + Hono.js 开发。

功能特性

  • 瀑布流相册展示图片,支持实况照片(Live Photos),基于 LivePhotosKit JS 开发。
  • 基于 WebGL 的高性能图片查看器,支持流畅的缩放和平移,采用图片分块(Tiling)和 LOD 技术优化大图加载性能。
  • 支持地图模组标记图片,根据图片经纬度标记在地图上。
  • 点击图片查看原图,浏览图片信息和 EXIF 信息,支持直链访问。
  • 响应式设计,在 PC 和移动端都有不错的体验,支持暗黑模式。
  • 图片存储兼容 S3 API、Cloudflare R2、Open List API。
  • 图片支持绑定标签,并且可通过标签进行交互,筛选标签下所有图片。
  • 支持输出 RSS,可以使用 Follow 订阅,并支持订阅源所有权验证。
  • 支持批量自动化上传,上传图片时会生成 0.3 倍率的压缩图片,以提供加载优化。
  • 后台有图片数据统计、图片上传、图片维护、相册管理、系统设置和存储配置功能。
  • 双因素认证功能,基于 TOTP 算法 RFC 6238,支持 Google Authenticator、Microsoft Authenticator 和 1Password 等。
  • Passkey 无密码登录功能,基于 WebAuthn 标准,支持生物识别(指纹、面容等)和硬件安全密钥登录。
  • 基于 SSR 的混合渲染,采用状态机制,提供良好的使用体验。
  • 基于 Prisma 的自动初始化数据库和数据迁移,简化部署流程。
  • 支持 Vercel 部署、Node.js 部署、Docker 等容器化部署,当然 k8s 也支持。

如何部署

你可以点击下面的按钮来一键部署到 Vercel,然后将 Build Command 设置为 pnpm run build:vercel,也可以 Fork 项目后手动部署到任何支持的平台。

我们推荐当新版本发布时您再进行版本更新!

Deploy with Vercel

Key 备注
DATABASE_URL PostgreSQL 连接字符串,如使用 Supabase:postgres://postgres.[project]:[password]@aws-0-[region].pooler.supabase.com:6543/postgres?pgbouncer=true
DIRECT_URL 用于 prisma migrate 的直连地址,非 serverless 数据库与 DATABASE_URL 保持一致即可
BETTER_AUTH_SECRET 权限机密,执行 npx auth secret 生成随机字符串
BETTER_AUTH_URL 访问地址,如:https://example.com
BETTER_AUTH_PASSKEY_RP_ID Passkey 依赖方标识符,填写您的域名,如:example.com
BETTER_AUTH_PASSKEY_RP_NAME Passkey 依赖方名称,如:PicImpact

Vercel 部署将 Build Command 设置为 pnpm run build:vercel,Node.js 自行部署使用 pnpm run build:node

Passkey 功能依赖 HTTPS 环境(本地开发可使用 localhost)。

更多详细配置请查阅文档

本地开发

git clone https://github.com/besscroft/PicImpact.git
pnpm i
pnpm run dev

技术栈

类别 技术
Web 框架 Next.js + Hono.js
UI Radix + shadcn/ui
数据库 PostgreSQL + Prisma
认证 better-auth (Email/Password, TOTP, WebAuthn)
图片渲染 WebGL 查看器(基于 Afilmory

English

PicImpact is a self-deployable photography portfolio website built with Next.js + Hono.js.

Features

  • Masonry gallery layout with Live Photos support via LivePhotosKit JS.
  • High-performance WebGL image viewer with smooth zoom/pan, tiling, and LOD optimization.
  • Map module for geotagging photos based on EXIF coordinates.
  • Full-resolution image preview with EXIF metadata and direct link access.
  • Responsive design with dark mode support for both desktop and mobile.
  • Storage compatible with S3 API, Cloudflare R2, and Open List API.
  • Tag-based image organization with interactive tag filtering.
  • RSS feed output with Follow subscription and ownership verification.
  • Batch upload with automatic 0.3x compressed preview generation.
  • Admin dashboard: statistics, upload, image management, album management, settings, and storage config.
  • Two-factor authentication via TOTP (RFC 6238), supporting Google Authenticator, Microsoft Authenticator, 1Password, etc.
  • Passkey passwordless login via WebAuthn standard (biometrics, hardware keys).
  • SSR-based hybrid rendering with state management for optimal UX.
  • Automatic database initialization and migration via Prisma.
  • Deployable on Vercel, Node.js, Docker, and Kubernetes.

Deployment

Click the button below to deploy to Vercel. Set Build Command to pnpm run build:vercel.

Deploy with Vercel

Key Description
DATABASE_URL PostgreSQL connection string
DIRECT_URL Direct connection for prisma migrate (same as DATABASE_URL for non-serverless)
BETTER_AUTH_SECRET Auth secret, generate with npx auth secret
BETTER_AUTH_URL App URL, e.g., https://example.com
BETTER_AUTH_PASSKEY_RP_ID Passkey relying party ID (your domain, e.g., example.com)
BETTER_AUTH_PASSKEY_RP_NAME Passkey relying party name (e.g., PicImpact)

For more details, see the documentation.

Local Development

git clone https://github.com/besscroft/PicImpact.git
pnpm i
pnpm run dev

Tech Stack

Category Technology
Web Framework Next.js + Hono.js
UI Radix + shadcn/ui
Database PostgreSQL + Prisma
Auth better-auth (Email/Password, TOTP, WebAuthn)
Image Rendering WebGL Viewer (based on Afilmory)

日本語

PicImpact は、Next.js + Hono.js で構築されたセルフデプロイ可能な写真ポートフォリオサイトです。

機能

  • マソンリーレイアウトのギャラリー。ライブフォト(Live Photos) に対応(LivePhotosKit JS ベース)。
  • WebGL ベースの高性能画像ビューア。スムーズなズーム・パン操作、タイリングと LOD による大画像の最適化。
  • 地図モジュールで EXIF の座標情報に基づいて写真をマッピング。
  • 画像クリックで原寸表示、EXIF メタデータの閲覧、ダイレクトリンクに対応。
  • レスポンシブデザイン、ダークモード対応(PC・モバイル両対応)。
  • S3 API、Cloudflare R2、Open List API に対応したストレージ。
  • タグベースの画像整理とインタラクティブなタグフィルタリング。
  • RSS フィード出力、Follow による購読と所有権検証に対応。
  • バッチアップロード、0.3 倍率の圧縮プレビュー自動生成。
  • 管理画面:統計、アップロード、画像管理、アルバム管理、設定、ストレージ設定。
  • TOTP 二要素認証(RFC 6238)、Google Authenticator / Microsoft Authenticator / 1Password 等に対応。
  • WebAuthn 標準による Passkey パスワードレスログイン(生体認証、ハードウェアキー)。
  • SSR ベースのハイブリッドレンダリング。
  • Prisma によるデータベースの自動初期化とマイグレーション。
  • Vercel、Node.js、Docker、Kubernetes でのデプロイに対応。

デプロイ

以下のボタンで Vercel にデプロイできます。Build Commandpnpm run build:vercel に設定してください。

Deploy with Vercel

Key 説明
DATABASE_URL PostgreSQL 接続文字列
DIRECT_URL prisma migrate 用の直接接続(サーバーレスでなければ DATABASE_URL と同じ)
BETTER_AUTH_SECRET 認証シークレット、npx auth secret で生成
BETTER_AUTH_URL アプリの URL、例:https://example.com
BETTER_AUTH_PASSKEY_RP_ID Passkey の RP ID(ドメイン名、例:example.com
BETTER_AUTH_PASSKEY_RP_NAME Passkey の RP 名(例:PicImpact

詳細はドキュメントをご覧ください。

ローカル開発

git clone https://github.com/besscroft/PicImpact.git
pnpm i
pnpm run dev

技術スタック

カテゴリ 技術
Web フレームワーク Next.js + Hono.js
UI Radix + shadcn/ui
データベース PostgreSQL + Prisma
認証 better-auth (Email/Password, TOTP, WebAuthn)
画像レンダリング WebGL ビューア(Afilmory ベース)

Contributing

New Ideas & Bug Reports | Fork & Pull Request

PicImpact welcomes all contributions including improvements, new features, documentation, and bug reports.

Browser Support

  • Last 2 versions of Chrome, Firefox, Safari and Edge
  • Firefox ESR

Accessibility

Based on WAI-ARIA standards.

Acknowledgements

This project uses JetBrains open source license, developed with IntelliJ IDEA.

JetBrains logo

WebGL image viewer based on Afilmory webgl-viewer module (MIT License).

License

PicImpact is open source software licensed as MIT.

Packages

 
 
 

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.