# Watch Finished Web Interface
A modern Next.js web application providing a complete UI for managing the Watch Finished video processing system.
## Application Structure
```mermaid
graph TB
subgraph "Pages (App Router)"
DASH[Dashboard
page.tsx]
FILES[Files
files/page.tsx]
TASKS[Tasks
tasks/page.tsx]
SETTINGS[Settings
settings/page.tsx]
end
subgraph "Components"
NAV[Navigation
components/Nav.tsx]
WSOCK[WebSocketProvider
providers/WebSocketProvider.tsx]
QUERY[QueryProvider
providers/QueryProvider.tsx]
end
subgraph "File Management"
FLIST[FileList
components/files/FileList.tsx]
FFORM[FileForm
components/files/FileForm.tsx]
FMAINT[MaintenanceTools
components/files/MaintenanceTools.tsx]
end
subgraph "Task Management"
TLIST[TaskList
components/tasks/TaskList.tsx]
TPROGRESS[TaskProgress
components/tasks/TaskProgress.tsx]
end
subgraph "Settings"
DSET[DatasetSettings
components/settings/DatasetSettings.tsx]
SYSSET[SystemSettings
components/settings/SystemSettings.tsx]
end
subgraph "API Integration"
API[API Client
lib/api.ts]
WS[WebSocket Client
lib/websocket.ts]
end
DASH --> NAV
FILES --> FLIST
FILES --> FFORM
FILES --> FMAINT
TASKS --> TLIST
TASKS --> TPROGRESS
SETTINGS --> DSET
SETTINGS --> SYSSET
FLIST --> API
FFORM --> API
FMAINT --> API
TLIST --> API
TPROGRESS --> WS
DSET --> API
SYSSET --> API
WSOCK --> WS
QUERY --> API
style DASH fill:#e3f2fd
style API fill:#e8f5e8
style WSOCK fill:#f3e5f5
```
## Features
- **Dashboard**: Real-time watcher status, task monitoring, and system statistics
- **File Management**: Browse, add, edit, and delete processed video files by dataset
- **Task Queue**: View processing tasks, monitor progress, and manage the queue
- **Settings Management**: Configure datasets, watcher settings, and system preferences
- **Maintenance Tools**: Cleanup, purge, and prune operations with easy-to-use forms
- **Real-time Updates**: WebSocket integration for live status updates
## Tech Stack
- **Framework**: Next.js 14 with App Router
- **UI**: React with TypeScript
- **Styling**: Tailwind CSS
- **State Management**: TanStack Query for server state
- **Real-time**: Socket.IO client for WebSocket communication
- **Forms**: React Hook Form with validation
- **Icons**: Heroicons
## Main Pages
- `/` - Dashboard with system overview and active tasks
- `/files` - File management with CRUD operations and maintenance tools
- `/tasks` - Task queue monitoring and management
- `/settings` - Configuration management for datasets and system settings
## Development
```bash
# Install dependencies
pnpm install
# Run development server
pnpm run dev
# Run tests
pnpm run test
# Build for production
pnpm run build
```
## Environment Variables
- `NEXT_PUBLIC_WATCH_FINISHED_API` - API service URL (default: http://localhost:3001)
## Key Components
- **ClientHomeWidgets**: Dashboard widgets for watcher status and API health
- **FileList**: Table view of processed files with actions
- **FileCrud**: Form component for file management
- **MaintenanceDropdown**: Dropdown with cleanup, purge, and prune operations
- **TaskList**: Task queue display with progress indicators
- **SettingsCrud**: Configuration management interface
## Real-time Features
The web app connects to the API service via WebSocket to receive live updates:
- Task progress updates
- File processing status changes
- Watcher start/stop events
- Maintenance operation results
```
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
## Learn More
To learn more about Next.js, take a look at the following resources:
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
## Deploy on Vercel
The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
```