A self-hosted, fully offline platform covering the entire commercial video pipeline — from client discovery through delivery — in one unified system.
What is XteVision Producer and who is it for?
XteVision Producer (formerly VidPro) is a fully offline, self-hosted video production management platform that covers the entire commercial video pipeline — from client discovery through delivery — in one unified system. No external services, no cloud dependency, runs on local hardware.
All 5 phases from the spec are implemented as of v1.8.3 (2026-07-25). The platform includes 49 API routes, 14 project tabs, 3 languages, 40+ database tables, and a redesigned glassmorphic UI with themeable accents. All routes are authenticated and workspace-isolated.
High-level design and communication flow
┌─────────────────────────────────────────────────────────────────┐
│ Browser (Client) │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ Next.js 16 (App Router) │ │
│ │ ┌────────┐ ┌──────────┐ ┌────────┐ ┌────────┐ ┌──────┐ │ │
│ │ │ Auth │ │ Dashboard│ │Project │ │ Budget │ │Script│ │ │
│ │ │ │ │ │ │ Detail │ │ │ │ │ │ │
│ │ └────────┘ └──────────┘ └────────┘ └────────┘ └──────┘ │ │
│ │ ┌────────┐ ┌──────────┐ ┌────────┐ ┌────────┐ ┌──────┐ │ │
│ │ │ Shot │ │ Shooting │ │Schedule│ │ Post- │ │Invoice│ │ │
│ │ │ List │ │ Day │ │(Gantt) │ │Prod │ │ │ │ │
│ │ └────────┘ └──────────┘ └────────┘ └────────┘ └──────┘ │ │
│ └───────────────────────────────────────────────────────────┘ │
└──────────────────────────────┬──────────────────────────────────┘
│ HTTP/REST API
┌──────────────────────────────┴──────────────────────────────────┐
│ Next.js API Routes (Server) │
│ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌──────────────┐ │
│ │ Auth │ │Project │ │ Budget │ │ Script │ │ AI Chat │ │
│ │ Routes │ │ CRUD │ │ Engine │ │ Editor │ │ + Tool Calls │ │
│ └────────┘ └────────┘ └────────┘ └────────┘ └──────────────┘ │
│ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌──────────────┐ │
│ │Export │ │Upload │ │Currency│ │ DB │ │ Settings │ │
│ │(XLSX) │ │(files) │ │(API) │ │ (pg) │ │ │ │
│ └────────┘ └────────┘ └────────┘ └────────┘ └──────────────┘ │
└──────────────────────────────┬──────────────────────────────────┘
│
┌──────────┴──────────┐
│ PostgreSQL 18.4 │
│ xtevision_producer │
│ 40+ tables, 14 enums │
└─────────────────────┘XteVision Producer is designed for self-hosted, fully offline operation:
xtevision_producerFrontend, backend, and infrastructure technologies
| Technology | Version | Purpose |
|---|---|---|
| Next.js | 16 (App Router) | React framework, SSR/SSG, API routes |
| Tailwind CSS | v4 | Utility-first styling |
| TypeScript | 5.9 | Type safety |
| Lucide React | - | Icon library |
| next-intl | v4 | Internationalization (EN/DE/ZH) |
| SheetJS (xlsx) | 0.18.5 | Workspace export/import |
| Technology | Version | Purpose |
|---|---|---|
| Next.js API Routes | 16 | REST API server |
| PostgreSQL | 18.4 | Primary database |
| pg | latest | Node.js PostgreSQL driver |
| Bcrypt / crypto.scrypt | - | Password hashing |
| Server | Any OS | Node.js ≥ 20, PostgreSQL ≥ 14 |
| Build | Standalone | Self-contained Node.js server |
pg driver (no native binaries), so it runs on any platform. Column names remain camelCase (quoted identifiers in SQL).Get XteVision Producer running on your server
Extract the package, run the one-command setup, and start the app. The setup script creates the database, applies the schema, generates a secure AUTH_SECRET, and writes your .env automatically.
# 1. Extract the package
mkdir -p /opt/xtevision
cd /opt/xtevision
tar zxvf xtevision-producer-build.tar.gz -C deploy/
cd deploy
# 2. One-command setup (creates DB, applies schema, writes .env)
./setup.sh
# 3. Start the app
sudo npm install -g pm2
pm2 start server.js --name xtevision-producer
pm2 save
pm2 startup # follow the printed instructions to auto-start on boot
You can customise the setup with environment variables, e.g.
DB_NAME=myproducer DB_PASS=mysecret APP_PORT=8080 ./setup.sh.
http://your-server-ip:3000
The app runs on port 3000 by default. To use a different port, set
APP_PORT when running setup, or edit PORT in .env and restart.
The package includes Example_Workspace.xlsx — a ready-made demo
workspace with 3 imaginary clients and a full project (brief, budget, script, shot list,
shooting days, milestones, tasks, invoice, post-production, delivery), plus sample gear,
talent, locations, crew, and vendors.
To import it and see the Total Recall feature in action, open
Settings → Workspace → Import, select Example_Workspace.xlsx,
and confirm. The import remaps all IDs automatically, so the demo data is fully
self-contained and safe to import into any workspace. Explore it, then edit or delete the
demo entries to make the workspace your own.
Directory layout and module organization
XteVision-Producer/ ├── src/ │ ├── app/ │ │ ├── [locale]/ │ │ │ ├── (main)/ # Authenticated pages │ │ │ │ ├── dashboard/ # Dashboard stats + quick actions │ │ │ │ ├── projects/ # Project list + detail (14 tabs) │ │ │ │ ├── clients/ # Client CRM │ │ │ │ ├── invoices/ # Invoice CRUD + detail/print │ │ │ │ ├── crew/ # Crew roster │ │ │ │ ├── vendors/ # Vendor management │ │ │ │ ├── casting/ # Talent + locations │ │ │ │ ├── inventory/ # Studio's & Gear │ │ │ │ ├── calendar/ # Global calendar │ │ │ │ └── settings/ # Company, team, profile │ │ │ └── (auth)/ # Login, register │ │ └── api/ # 49 API route files │ ├── components/ # Shared UI components │ │ ├── ui/ # Button, input, pagination, etc. │ │ ├── projects/ # Project tabs (14 feature modules) │ │ ├── layout/ # Sidebar, topbar │ │ ├── ai/ # Chat wizard FAB + modal │ │ ├── budget/ # Budget line items │ │ ├── calendar/ # Calendar components │ │ └── production/ # Production log components │ ├── lib/ # Shared library │ │ ├── db.ts # pg query helper │ │ ├── auth.ts # Session management │ │ ├── currency.ts # Currency conversion + formatting │ │ ├── workspace-export.ts # XLSX export builder │ │ └── workspace-import.ts # XLSX import parser │ ├── i18n/ # next-intl routing config │ └── messages/ # en.json, de.json, zh.json ├── migrations/ # SQL migrations (001–013) ├── schema.sql # Full PostgreSQL schema ├── public/ # Static assets, uploads, favicons └── deploy/ # Extracted standalone build
| # | Tab | Description |
|---|---|---|
| 1 | Brief | Project intake form: goals, audience, tone, KPIs, brand guidelines |
| 2 | Budget | Line-item grid with 11 categories, contingency %, multi-currency conversion |
| 3 | Script | Scene-based screenplay editor with metadata extraction |
| 4 | Shot List | 12 shot types, 13 camera moves, 11 lenses, auto-generate from script |
| 5 | Storyboard | Visual grid with image upload, drag-to-reorder, pacing timeline |
| 6 | Shooting Days | Multi-day planner with crew calls, equipment booking, dependencies |
| 7 | Call Sheet | Printable crew/location/equipment summary from shooting day data |
| 8 | Calendar | Project-scoped monthly view, multi-day shoots span all days |
| 9 | Schedule | Interactive Gantt chart with real data, drag-to-resize, dependency arrows |
| 10 | Production Log | Daily report, camera log (A–D), DIT checksum, continuity notes |
| 11 | Post-Production | Edit/Color/Sound/VFX pipeline, review cycles, picture lock |
| 12 | Delivery | Mastering specs, platform optimization, QC, archive |
| 13 | Milestones & Tasks | Due dates, phases, dependencies, priority, completion counters |
| 14 | Communication | Email/Phone/Meeting/Note entries per client, scoped to project |
The five production phases covered end-to-end
Planning and creative foundation for every project.
| Sub-step | Feature |
|---|---|
| Client Discovery & Briefing | Structured intake form: goals, audience, tone, KPIs, brand guidelines |
| Creative Concept & Scripting | Scene-based screenplay editor with metadata extraction; auto-generate shot lists |
| Budget & Timeline | Interactive budgeting engine with line-item breakdown, contingency %, multi-currency |
| Casting & Location Scouting | Talent profiles with rates, location database with permits and insurance |
| Storyboarding | Visual shot list builder with image upload, camera move annotations, pacing timeline |
| Crew & Vendor Assembly | Crew roster with 19 roles, vendor management, contract storage |
| Scheduling | Call sheet generation, multi-day shoot planning, weather data, dependency tracking |
Execution and on-set management during the shoot.
| Sub-step | Feature |
|---|---|
| Set/Location Prep | Scouting checklist, permits tracker, power/Wi-Fi/safety verification |
| Production Logs | Daily report, camera log (multi-cam A–D), DIT checksum, continuity notes |
| On-Set Direction | Director/1st AD/script supervisor role assignments and task tracking |
| Capture Management | Camera logs, lighting/audio setup docs, B-roll tracking, pick-ups |
| Talent Management | Direction notes, continuity tracking, call times, wardrobe/props |
| DIT & Daily Backup | Card offload logging, checksum verification, daily dailies tracking |
| Wrap & Inventory | Equipment return tracking, location restore confirmation, asset log |
Editing, polish, and client approval workflow.
| Sub-step | Feature |
|---|---|
| Post-Production Tracker | Edit/Color/Sound/VFX pipeline with department notes and status overview |
| Edit Workflow | Not Started → Rough Cut → Fine Cut → Picture Lock with lock/unlock timestamp |
| Color Grading | Creative look notes, exposure correction logs, brand consistency checklist |
| Sound Design & Mixing | Foley/ambience/ADR tracking, music licensing, final mix specs |
| VFX / Motion Graphics | Compositing/titles/lower thirds/animation task tracking |
| Client Review Cycles | Screenings with feedback tracking, revision rounds, approval status |
| Final Mastering | Codec/resolution/frame rate/loudness standards configuration |
Platform-ready output and long-term archive.
| Sub-step | Feature |
|---|---|
| Platform Optimization | Multi-select aspect ratios (16:9, 9:16, 1:1, Cinema), subtitle languages |
| Quality Control | QC pass/fail toggle, delivery date tracking, format verification |
| Delivery Tracker | Codec, resolution, frame rate, loudness standard (-24 LUFS) selection |
| Archive & Storage | Archive path, delivery notes, retention policy tracking |
Keeps the pipeline transparent and on-track throughout.
| Sub-step | Feature |
|---|---|
| Client CRM | Pipeline stages (LEAD→ACTIVE), contact info, communication history |
| Milestone Tracking | Due dates, status (Pending/In Progress/Completed/Blocked), phase assignment |
| Task Management | Title, status, priority (Low→Urgent), assignee, dependency tracking |
| Communication Log | Email/Phone/Meeting/Note entries per client, scoped to project |
| Legal Releases | 5 release types, sign-now with timestamp + document hash, audit trail |
| Invoicing | Estimates/deposits/progress/final, line items, tax, status workflow |
| Settings | Company profile, team management, workspace members + roles |
Key platform capabilities
Brief, Budget, Script, Shot List, Storyboard, Shooting Days, Call Sheet, Calendar, Schedule, Production Log, Post-Production, Delivery, Milestones & Tasks, Communication.
11 line-item categories with contingency %, estimated vs actual, multi-currency conversion via live Frankfurter API rates. 9 currencies supported.
Real-data Gantt chart pulling from ShootingDay, Milestone, and Task tables. Drag-to-move/resize, orthogonal dependency arrows, Month/Week/Day zoom, localStorage-first persistence.
Printable call sheets from shooting day data (crew sorted by call time, location, equipment). Invoice print layout hides sidebar/topbar for A4 output.
Live Open-Meteo integration with geocoding. Daily forecast (temperature, conditions, sunrise/sunset) for shooting days. Per-day weather data for multi-day shoots. Locale-aware formatting (EN °F, DE/ZH °C). Fetch Weather button on each shooting day.
Floating chat button with draggable/resizable modal. Configurable backend (MLX, LM Studio, Ollama, Copilot, OpenRouter). Database querying via tool calling.
English, Deutsch, 中文 — 500+ translation keys per language. Full UI translation including DB task names translated on frontend via position-matched arrays.
Full workspace export to Excel (.xlsx) with 34 tables in FK-safe order. Import recreates all records with new UUIDs and preserves relationships via ID remapping.
Aggregates shooting days + milestones across all projects. Color-coded per project. Multi-day events span all days. Clickable events navigate to project tabs.
All 49 API routes authenticated + workspace-scoped. Security audit passed. Session-based auth with crypto.scrypt passwords and signed cookies.
In-depth feature documentation
Custom session-based auth using crypto.scrypt for password hashing and signed session cookies. Each user belongs to a workspace with RBAC roles (Admin, Producer, Crew, Client-Viewer, Accountant).
workspaceIdOverview page with key metrics and quick actions:
Full client relationship management with pipeline stages:
Interactive budgeting with comprehensive financial controls:
Scene-based screenplay management:
Comprehensive shot planning with industry-standard options:
Visual shot planning with image uploads:
Multi-day production planning with full resource management:
Printable production document generated from shooting day data:
Two complementary views for production timeline management:
On-set documentation with 4 sub-sections:
End-to-end post-production pipeline:
Final output specifications and distribution:
Project management with dependency tracking:
Configurable AI Assistant with database querying
Floating AI Assistant available on all pages:
The AI Wizard can query the workspace PostgreSQL database directly:
tools/tool_calls protocolworkspaceId as parameterThe AI Wizard can fetch live weather forecasts via the Open-Meteo API:
| Backend | Default URL | Port | Notes |
|---|---|---|---|
| MLX | your-ai-server-ip | 5010 | Apple Silicon, best privacy |
| LM Studio | your-ai-server-ip | 1234 | Local GGUF models |
| Ollama | your-ai-server-ip | 11434 | Popular local models |
| Copilot | your-ai-server-ip | 5015 | GitHub Copilot bridge |
| OpenRouter | openrouter.ai | 443 | Third-party gateway |
Run and manage the platform on your server
sudo npm install -g pm2cd /opt/xtevision/deploy
pm2 start server.js --name xtevision-producer
pm2 save
pm2 startup # follow the printed instructions to auto-start on boot
Without pm2, run ./start.sh directly, or keep it running in the
background with nohup ./start.sh > app.log 2>&1 &.
| Variable | Value | Description |
|---|---|---|
DATABASE_URL | postgresql://producer:<password>@localhost:5432/xtevision_producer?schema=public | PostgreSQL connection (dedicated producer user) |
PORT | 3000 | Server port |
HOSTNAME | 0.0.0.0 | Listen on all interfaces |
AUTH_SECRET | 64-char hex | Session signing secret (auto-generated by setup) |
NEXT_PUBLIC_APP_NAME | XteVision Producer | Application name |
NEXT_PUBLIC_DEFAULT_LOCALE | en | Default language |
These are written to .env automatically by setup.sh. Edit
.env to change them, then restart the app.
pm2 stop xtevision-producer
cp .env /tmp/xv-env.bak
cp -r uploads /tmp/xv-uploads.bak
rm -fr deploy && mkdir deploy
tar zxvf xtevision-producer-build.tar.gz -C deploy/
cp /tmp/xv-env.bak deploy/.env
cp -r /tmp/xv-uploads.bak deploy/uploads
pm2 start xtevision-producer
Then apply any new database migrations included in the package:
cd deploy
for f in migrations/*.sql; do
echo "Applying $f"
psql "$(grep DATABASE_URL .env | cut -d'=' -f2- | tr -d '"')" -f "$f"
done
Complete REST API endpoint inventory
All 49 API routes are authenticated and workspace-scoped. Every route calls requireAuth() and filters queries by workspaceId.
| Category | Routes | Methods |
|---|---|---|
| Auth | /api/auth/login, /register, /logout, /me, /workspace | POST, GET |
| Dashboard | /api/dashboard/stats | GET |
| Projects | /api/projects, /api/projects/[id] | GET, POST, PUT, DELETE |
| Clients | /api/clients, /api/clients/[id] | GET, POST, PUT, DELETE |
| Budget | /api/projects/[id]/budget | GET, PUT |
| Script | /api/projects/[id]/scenes, .../[sceneId] | GET, POST, PUT, DELETE |
| Shot List | /api/projects/[id]/shots | GET, PUT |
| Storyboard | /api/projects/[id]/storyboard, .../storyboard-upload | GET, PUT, POST |
| Shooting Days | /api/projects/[id]/shooting-days | GET, PUT |
| Call Sheet | /api/projects/[id]/call-sheet | GET |
| Calendar | /api/projects/[id]/calendar, /api/calendar/global | GET |
| Schedule | /api/projects/[id]/gantt | GET, PATCH |
| Production Log | /api/projects/[id]/production-log | GET, PUT |
| Post-Production | /api/projects/[id]/post-production | GET, PUT |
| Delivery | /api/projects/[id]/delivery | GET, PUT |
| Milestones | /api/projects/[id]/milestones | GET, PUT |
| Tasks | /api/projects/[id]/tasks | GET, PUT |
| Communication | /api/projects/[id]/communication | GET, PUT |
| Legal Releases | /api/projects/[id]/legal-releases | GET, PUT |
| Invoices | /api/invoices, /api/invoices/[id] | GET, POST, PUT, DELETE |
| Crew | /api/crew | GET, POST, PUT, DELETE |
| Vendors | /api/vendors | GET, POST, PUT, DELETE |
| Casting/Talent | /api/casting/talent | GET, POST, PUT, DELETE |
| Locations | /api/casting/locations | GET, POST, PUT, DELETE |
| Inventory | /api/inventory, /api/inventory/[id] | GET, POST, PUT, DELETE |
| Equipment Booking | /api/projects/[id]/equipment-booking | GET, PUT |
| Settings | /api/settings, /api/settings/team | GET, PUT |
| AI Chat | /api/ai/chat | GET, POST |
| Weather Forecast | /api/weather/forecast?location=...&startDate=...&endDate=... | GET |
| Currency | /api/currency/rates | GET |
| Uploads | /api/uploads/[...path] | GET |
| Workspace | /api/workspaces/[id], /api/workspaces/[id]/export | GET, PUT, DELETE |
| Workspace Import | /api/workspaces/import | POST |
Version history and release notes
weatherData JSONB column (migration 024). Calendar now shows correct weather for each individual date, not just the first day's data.get_weather_forecast tool. Geocoding + locale-aware formatting with source attribution.public/XteVision_Producer_Manual.html.postgres to dedicated producer role (migration 023).docs/overview.md and docs/how-to.md.xlsx (SheetJS) — pure JS, architecture-agnosticGET /api/workspaces/[id]/export, POST /api/workspaces/importsrc/lib/currency.ts. Display-only conversion — original values preserved.GET /api/currency/rates with 6-hour server-side cachingquery_database tool. SELECT-only, 200-row limit, 10s timeout, full DB schema awareness, workspace-isolated.dependsOn.pg (raw SQL). Session-based auth with crypto.scrypt.vidpro-spec.md covering all 5 production phases.Common issues and solutions
EADDRINUSE error on the configured portkill $(lsof -ti:3000) (use your port), or change PORT in .env.systemctl status postgresql. Check DATABASE_URL in .env. Ensure the xtevision_producer database exists. Re-run ./setup.sh to fix the role/database.Command 'pm2' not foundsudo npm install -g pm2. If npm is unavailable, run the app directly with ./start.sh or nohup ./start.sh > app.log 2>&1 &.uploads/<projectId>/ directory exists and has write permissions. Check the upload API route is working.