Files
prototype-manager/README.md
T
siujamo ed72045f5e feat(prototype): add upload manager and docker ci
- add prototype upload, list, view, and delete api routes
- add prototype manager ui with search, modal, and theme toggle
- add filesystem-backed zip extraction and serving logic
- switch project to pnpm with updated lockfile and tooling
- add multi-stage dockerfile with standalone next.js output
- add github actions to lint, build, and publish docker images
2026-08-31 13:43:59 +08:00

87 lines
1.9 KiB
Markdown

This is a Next.js + Tailwind CSS based Axure prototype manager.
## Tech Stack
- Next.js (App Router, TypeScript)
- Tailwind CSS (atomic utility classes)
- Node runtime API Routes
- Local filesystem persistence (`data/prototypes`)
- Package manager: **pnpm**
## Features
- Prototype card navigation homepage
- Upload Axure prototype ZIP package manually
- Auto-parse and register prototype (ZIP must contain `start.html`)
- Open prototype in **new tab**
- Dark mode toggle (stored in `localStorage`)
- Delete uploaded prototype
## Directory Structure
```text
app/
api/prototypes/
route.ts # list + upload
[id]/route.ts # delete
[id]/[...path]/route.ts # serve prototype files
layout.tsx
page.tsx
components/
AddPrototypeModal.tsx
PrototypeCard.tsx
ThemeToggle.tsx
lib/
prototype.ts
store.ts
data/
prototypes/
index.json # runtime metadata (auto-generated)
<prototype-id>/... # unzipped Axure files
```
## Start Development
```bash
pnpm install
pnpm dev
```
Open `http://localhost:3000`.
## Build & Run Production
```bash
pnpm build
pnpm start
```
## Docker (multi-stage, pnpm)
Build image:
```bash
docker build -t prototype-manager:latest .
```
Run container:
```bash
docker run --rm -p 3000:3000 -v prototype-manager-data:/app/data prototype-manager:latest
```
Notes:
- Image uses Next.js `output: "standalone"` and `pnpm` in multi-stage build.
- Runtime data is written to `/app/data/prototypes`; mount a volume to persist uploads.
## Upload Requirements
- Only `.zip` is accepted
- ZIP must include `start.html`
- Keep Axure relative assets (`resources`, `data`, `images`, etc.) in original structure
## Notes on Deployment
This project writes files at runtime (upload/unzip), so it must run in a writable Node environment (self-hosted server/VM/container with persistent volume).