Files
afilmory/docs/architecture.md
Innei d5a2ea4db2 feat: enhance documentation and add new features for Afilmory
- Introduced a comprehensive `DEVELOPMENT.md` guide for contributors and self-hosters, detailing workspace layout and common commands.
- Updated `README.md` to include links to the new development guide and improved deployment instructions.
- Added new documentation files covering architecture, builder pipeline, configuration, and deployment strategies.
- Implemented new storage provider documentation for Backblaze B2, Eagle, GitHub, and local storage options.
- Enhanced the UI components with new features, including a navigation context and improved theme handling.
- Removed outdated GitHub Action deployment documentation.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-23 19:40:51 +08:00

1.3 KiB

Architecture Overview

  • apps/web: React 19 + Vite SPA. Consumes photos-manifest.json and thumbnails under apps/web/public. Runs standalone or with injected manifest.
  • apps/ssr: Next.js 15 wrapper. Injects manifest into HTML for SEO/OG and serves SPA assets. Provides dynamic OG generation.
  • packages/builder: Photo pipeline. Syncs from storage (S3/B2/GitHub/local/Eagle), processes images, and writes manifest + thumbnails into the SPA.
  • packages/data / packages/utils / packages/hooks / packages/components / packages/ui: Shared data access, utilities, hooks, and design system pieces.
  • be/: Backend (Hono) and dashboard apps. Tenant/auth/billing logic lives here; see docs/backend/* and be/apps/*/AGENTS.md.

Data Flow

  1. Builder downloads photos from configured storage.
  2. Generates thumbnails and photos-manifest.json (apps/web/src/data/photos-manifest.json).
  3. SPA loads manifest either from the bundled JSON or window.__MANIFEST__ when SSR/backend injects it.
  4. SSR wraps SPA for SEO/OG; backend can also inject manifest for full-server mode.

Key Traits

  • Incremental sync to avoid reprocessing unchanged photos.
  • Adapter pattern for storage providers.
  • Shared types between builder, SPA, and SSR/backends to keep manifest schema aligned.