WatchDocs is a single-surface productivity canvas built for the day-to-day work of network, CCTV, and IT-infrastructure engineers. Automate routine checks, sketch topologies, annotate floor plans, and ship living documentation without juggling five separate tools. |
|
| Attribute | Value |
|---|---|
| Public URL | https://watchdocs.dynamicdev.asia |
| Port mapping | 3355:3355 (host : container) |
| Container name | watchdocs |
| Image tag | watchdocs:1.0.0 |
| Docker network | dynamicdev-net (shared, external) |
| Restart policy | unless-stopped |
| Runs as | non-root user nextjs (UID 1001) |
| Healthcheck | HTTP GET / on 127.0.0.1:3355 every 30s |
git clone https://github.com/dynamicdev-official/watchdocs.git
cd watchdocsThe compose stack expects dynamicdev-net to already be present on the Docker host. Create it once - every service in the ecosystem (Postgres, Traefik, Syscare, WatchDocs) attaches to the same network so containers can reach each other by name.
docker network create dynamicdev-net || truecp .env.example .env
# edit DATABASE_URL, NEXT_PUBLIC_APP_URL, etc.docker compose up -d --builddocker compose ps
docker compose logs -f watchdocs
curl -I http://127.0.0.1:3355/Open https://watchdocs.dynamicdev.asia once the reverse proxy has picked up the Traefik labels, or http://<host>:3355 for direct access during bring-up.
π Project Structure
watchdocs/
βββ app/ # Next.js App Router (pages, layouts, globals)
βββ components/
β βββ ui/ # shadcn/ui primitives
β βββ watchdocs/ # Feature components (4 views)
β βββ navbar.tsx
β βββ status-bar.tsx
β βββ automation-playground.tsx
β βββ preview-view.tsx
β βββ fast-note.tsx
β βββ playground-diagram.tsx
β βββ diagram-icons.tsx
βββ lib/ # Shared utilities
βββ public/ # Static assets
βββ Dockerfile # Multi-stage production image
βββ docker-compose.yml # Stack definition (dynamicdev-net)
βββ DEPLOYMENT.md # Detailed self-host guide with Postgres
βββ README.md # This file
| Action | Command |
|---|---|
| Build image only | docker compose build |
| Start in background | docker compose up -d |
| Stop and remove | docker compose down |
| Rebuild from clean state | docker compose up -d --build --force-recreate |
| Follow logs | docker compose logs -f watchdocs |
| Inspect running container | docker exec -it watchdocs sh |
| Check health | docker inspect --format '{{.State.Health.Status}}' watchdocs |
| Prune stale images | docker image prune -f |
graph LR
A[Client Browser] -->|HTTPS| B[Traefik / Edge Proxy]
B -->|watchdocs.dynamicdev.asia :443| C[WatchDocs Container :3355]
C -->|Read / Write| D[(PostgreSQL)]
C -->|Shared LAN| E[Other Services on dynamicdev-net]
style B fill:#24A1C1,color:#fff
style C fill:#B03A2E,color:#fff
style D fill:#4169E1,color:#fff
All services share the external dynamicdev-net Docker network so that internal hostnames like postgres, traefik, and watchdocs resolve without exposing extra ports.
WatchDocs can run in demo mode (in-memory, no DB) for quick evaluation. For multi-user and persistent workspaces, pair it with a Postgres container on the same network. Full schema, migration SQL, and connection wiring are documented in DEPLOYMENT.md.
| Table | Purpose |
|---|---|
app_users |
Account records (replace Supabase Auth) |
notes |
Fast-Note documents |
preview_docs |
Preview view Markdown / HTML snippets |
automations |
Saved automation graphs |
automation_runs |
Historical simulation / execution logs |
diagrams |
Playground Diagram devices, connections, regions |
- Runs as non-root user inside the container (UID 1001)
- Reverse-proxy termination for TLS - do not expose
3355to the public internet - Bind-mount nothing into the container by default
.envsecrets stay on the host, never baked into the image- Logging capped at 10 MB per file, 5 rotations, to avoid disk pressure
- Recommended companion services on the same network: Traefik (TLS), Watchtower (auto-update), Uptime Kuma (monitoring)
| Milestone | Status |
|---|---|
| v1.0 - Four-view workspace | Released |
| v1.1 - Real workflow executor | Planned |
| v1.2 - Multi-user realtime (Yjs) | Research |
| v1.3 - MCP-driven device probes | Discovery |
| v2.0 - Offline PWA for field engineers | Proposed |
Pull requests are welcome for bug fixes, performance improvements, and new diagram icons. For larger changes, open an issue first so we can align on scope and direction.
# Install dependencies
pnpm install
# Start the dev server on http://localhost:3000
pnpm dev
# Produce a production build locally
pnpm build && pnpm start|
For bugs, deployment questions, and service inquiries |
Integration, custom deployment, and collaboration |
Stay updated with the rest of the ecosystem |
Released under the MIT License. See LICENSE for details.






