Magic Compare Web is a monorepo for reviewing and publishing image comparisons. It is built for focused before/after inspection and does not provide video processing or an in-site discussion workflow.
internal-site: server-backed catalog, case workspace, viewer, Web uploader, publishing, export, and deployment actions.public-site: static read-only pages generated from published manifests.packages/: shared viewer logic, content schemas, UI, and utilities.
cp .env.example .env
# Fill in the required MAGIC_COMPARE_S3_* values.
pnpm install
pnpm dev:internalLocal entry points:
- Internal site: http://localhost:3000
- Public deploy monitor (
pnpm dev:all): http://localhost:3001 - Demo page: http://localhost:3001/g/demo-grain-study--banding-check
Use pnpm dev:bootstrap when demo data needs repair, pnpm dev:public for public-site source development, or pnpm dev:all to monitor static deploy output beside the internal site.
Open /upload, review the pairing plan, then preflight and upload the selected image set. The Web uploader guide is the source for current browser behavior and upload protocol details.
Changes to public groups refresh their published manifests automatically. Export or deploy the complete public site explicitly when needed.
apps/internal-site/ Server-backed internal workspace
apps/public-site/ Static public viewer
packages/ Shared schemas, viewer logic, UI, and utilities
output/published/ Generated published manifest and demo content
docs/ Workflow, API, deployment, and UI notes
| Task | Command |
|---|---|
| Start internal site | pnpm dev:internal |
| Develop public-site source | pnpm dev:public |
| Start deploy monitoring | pnpm dev:all |
| Repair demo and start | pnpm dev:bootstrap |
| Build both apps | pnpm build |
| Run checks and tests | pnpm check |
| Run browser smoke tests | pnpm test:e2e |
| Initialize SQLite | pnpm db:push |
| Seed demo content | pnpm db:seed |
| Export public site | pnpm public:export |
| Deploy public site | pnpm public:deploy |
| Start local Docker runtime | pnpm docker:dev:up |
Copy .env.example to .env. Internal assets use S3-compatible storage; local Docker development uses the Compose configuration and named volumes. Navigation logos and favicons can be configured independently with the MAGIC_COMPARE_INTERNAL_* and MAGIC_COMPARE_PUBLIC_* URL variables. Docker can expose one local branding directory through MAGIC_COMPARE_BRANDING_MOUNT. See the workflow guide for runtime, storage, branding, and deployment details.
- Workflow and deployment guide
- Web uploader guide
- API endpoint reference
- Database architecture
- Demo vs real case/group flow
- UI/UX notes
- Commit guide
- Chinese README
Released under the GNU General Public License v3.0.