IIIF(International Image Interoperability Framework)に準拠したマニフェストを生成し、画像コレクションを管理するためのWebアプリケーション。
- 📚 IIIF準拠: IIIF Presentation API 2.1/3.0に完全準拠
- 🔐 認証機能: Google OAuth認証とIIIF Auth APIサポート
- 🌍 多言語対応: 日本語/英語の切り替え機能
- 🌓 ダークモード: システム連動のテーマ切り替え
- 📁 コレクション管理: 複数のマニフェストをコレクションとして管理
- 🖼️ 画像アップロード: S3互換ストレージへの画像アップロード機能
- 🔍 Mirador統合: IIIF対応ビューワーMiradorの組み込み
- 📊 API提供: RESTful APIとOpenAPI仕様書の自動生成
- Node.js 18.x以上
- npm または yarn
- SQLite(開発環境)またはPostgreSQL(本番環境)
- S3互換オブジェクトストレージ(画像保存用)
git clone [your-repo-url]
cd iiif-manifest-toolnpm install.env.exampleをコピーして.envを作成:
cp .env.example .env以下の環境変数を設定:
# サイトURL
NEXT_PUBLIC_SITE_URL=http://localhost:3000
# 認証設定
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=your-secret-key # openssl rand -base64 32 で生成
# Google OAuth(任意)
GOOGLE_CLIENT_ID=your-client-id
GOOGLE_CLIENT_SECRET=your-client-secret
# データベース
DATABASE_URL=file:./dev.db
# S3ストレージ
MDX_S3_ENDPOINT=https://s3.amazonaws.com
MDX_S3_REGION=us-east-1
MDX_S3_ACCESS_KEY_ID=your-access-key
MDX_S3_SECRET_ACCESS_KEY=your-secret-key
MDX_S3_BUCKET_NAME=your-bucket-name
# IIIF設定
JWT_SECRET=your-jwt-secret # openssl rand -base64 32 で生成
IIIF_API_VERSION=3npx prisma migrate devnpm run devhttp://localhost:3000でアプリケーションが起動します。
src/
├── app/
│ ├── [locale]/ # 多言語対応ページ
│ │ ├── dashboard/ # ダッシュボード
│ │ └── about/ # アバウトページ
│ ├── api/ # API エンドポイント
│ │ ├── auth/ # 認証API
│ │ ├── collections/ # コレクションAPI
│ │ ├── iiif/ # IIIF API
│ │ └── upload/ # アップロードAPI
│ └── api-doc/ # API ドキュメント
├── components/ # React コンポーネント
├── lib/ # ライブラリ関数
│ ├── iiif.ts # IIIF関連
│ ├── auth.ts # 認証関連
│ └── s3.ts # S3ストレージ関連
├── messages/ # 翻訳ファイル
└── prisma/ # データベーススキーマ
- コレクションの作成・編集・削除
- コレクション内のアイテム管理
- メタデータの編集
- IIIF Presentation API 2.1/3.0準拠
- 画像シーケンスの管理
- メタデータの設定
- ドラッグ&ドロップによる画像アップロード
- S3互換ストレージへの保存
- サムネイル生成
- Google OAuth認証
- IIIF Auth API実装
- プローブサービス
- アクセストークン管理
- RESTful API
- OpenAPI仕様書の自動生成
- Swagger UIによるAPIドキュメント
GET /api/collections- コレクション一覧POST /api/collections- コレクション作成GET /api/collections/{id}- コレクション詳細PUT /api/collections/{id}- コレクション更新DELETE /api/collections/{id}- コレクション削除
GET /api/iiif/3/{id}/manifest- IIIF v3 マニフェストGET /api/iiif/{id}/manifest- IIIF v2.1 マニフェストGET /api/iiif/collection/{id}- IIIF コレクションGET /api/iiif/image/{path}- 画像配信
GET /api/iiif/auth/probe/{id}- プローブサービスGET /api/iiif/auth/access/{id}- アクセストークンPOST /api/iiif/auth/token/{id}- トークン取得
詳細は /api-doc のSwagger UIを参照してください。
npm run buildnpm run startdocker build -t image-collection-tool .
docker run -p 3000:3000 --env-file .env image-collection-toolnpm run test # ユニットテスト
npm run test:e2e # E2Eテスト- フレームワーク: Next.js 15 (App Router)
- 認証: NextAuth.js
- データベース: Prisma ORM (SQLite/PostgreSQL)
- ストレージ: AWS S3 SDK
- UI: React 19, Tailwind CSS
- 国際化: next-intl
- IIIF: カスタム実装
プルリクエストを歓迎します。大きな変更の場合は、まずissueを開いて変更内容について議論してください。
MIT License
npx prisma generate
npx prisma migrate dev- S3の認証情報を確認
- バケットのCORS設定を確認
- エンドポイントURLが正しいか確認
NEXTAUTH_SECRETが設定されているか確認- Google OAuthの設定を確認(使用する場合)
- コールバックURLが正しく設定されているか確認