Files
Transcriptarr/frontend/README.md

246 lines
5.1 KiB
Markdown

# Transcriptarr Frontend
Vue 3 + TypeScript + Vite frontend for Transcriptarr.
## 🚀 Quick Start
### Prerequisites
- Node.js 18+ (use nvm for easy management)
- npm or yarn
### Install nvm (if not installed)
```bash
# Install nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
# Reload shell
source ~/.bashrc # or ~/.zshrc
# Install Node.js 18
nvm install 18
nvm use 18
```
### Install Dependencies
```bash
cd frontend
npm install
```
### Development
```bash
# Start dev server (with hot-reload)
npm run dev
# Backend proxy is configured to http://localhost:8000
# Frontend runs on http://localhost:3000
```
### Build for Production
```bash
npm run build
# Output in dist/ directory
```
### Preview Production Build
```bash
npm run preview
```
## 📁 Project Structure
```
frontend/
├── src/
│ ├── assets/
│ │ └── css/
│ │ └── main.css # Global styles (Tdarr-inspired dark theme)
│ ├── components/ # Reusable Vue components
│ ├── views/ # Page components
│ │ ├── DashboardView.vue # Main dashboard
│ │ ├── WorkersView.vue # Worker management
│ │ ├── QueueView.vue # Job queue
│ │ ├── ScannerView.vue # Library scanner
│ │ ├── RulesView.vue # Scan rules
│ │ └── SettingsView.vue # Settings
│ ├── stores/ # Pinia state management
│ │ ├── system.ts # System status store
│ │ ├── workers.ts # Workers store
│ │ └── jobs.ts # Jobs store
│ ├── services/
│ │ └── api.ts # Axios API client
│ ├── types/
│ │ └── api.ts # TypeScript interfaces
│ ├── router/
│ │ └── index.ts # Vue Router configuration
│ ├── App.vue # Root component
│ └── main.ts # App entry point
├── index.html
├── vite.config.ts # Vite configuration
├── tsconfig.json # TypeScript configuration
└── package.json
```
## 🎨 Design
### Theme
- Dark theme inspired by Tdarr
- Color palette optimized for monitoring and data visualization
- Fully responsive design
### Features Implemented
- ✅ Dashboard with system overview
- ✅ Worker management with real-time updates
- ✅ Auto-refresh every 3-5 seconds
- ✅ Modal dialogs for actions
- ✅ Status badges and progress bars
- ⏳ Job queue view (placeholder)
- ⏳ Scanner control (placeholder)
- ⏳ Rules editor (placeholder)
- ⏳ Settings (placeholder)
## 🔌 API Integration
The frontend communicates with the backend API via Axios:
```typescript
// Example usage
import { workersApi } from '@/services/api'
// Get all workers
const workers = await workersApi.getAll()
// Add a GPU worker
await workersApi.add({
worker_type: 'gpu',
device_id: 0
})
```
### API Proxy Configuration
Vite dev server proxies API requests to the backend:
```typescript
// vite.config.ts
server: {
proxy: {
'/api': 'http://localhost:8000',
'/health': 'http://localhost:8000'
}
}
```
## 🧩 State Management
Uses Pinia for state management:
```typescript
// Example store usage
import { useWorkersStore } from '@/stores/workers'
const workersStore = useWorkersStore()
await workersStore.fetchWorkers()
```
## 🔧 Development
### Recommended IDE Setup
- VS Code with extensions:
- Volar (Vue 3 support)
- TypeScript Vue Plugin
- ESLint
### Type Checking
```bash
npm run build # Includes type checking with vue-tsc
```
### Linting
```bash
npm run lint
```
## 📦 Dependencies
### Core
- **Vue 3** - Progressive JavaScript framework
- **Vite** - Fast build tool
- **TypeScript** - Type safety
- **Vue Router** - Client-side routing
- **Pinia** - State management
- **Axios** - HTTP client
### Dev Dependencies
- vue-tsc - Vue TypeScript compiler
- ESLint - Code linting
- TypeScript ESLint - TypeScript linting rules
## 🚀 Deployment
### Standalone Deployment
```bash
# Build
npm run build
# Serve with any static file server
npx serve dist
```
### Integration with Backend
The built frontend can be served by FastAPI:
```python
# backend/app.py
from fastapi.staticfiles import StaticFiles
app.mount("/", StaticFiles(directory="frontend/dist", html=True), name="static")
```
## 📱 Responsive Design
- Desktop-first design
- Breakpoint: 768px for mobile
- Touch-friendly controls
- Optimized for tablets and phones
## 🎯 Roadmap
### Phase 1 (Current)
- ✅ Dashboard
- ✅ Worker management
- ⏳ Job queue view
### Phase 2
- ⏳ Scanner controls
- ⏳ Rules editor
- ⏳ Settings page
### Phase 3
- ⏳ WebSocket support for real-time updates
- ⏳ Advanced filtering and search
- ⏳ Job logs viewer
- ⏳ Dark/light theme toggle
## 🐛 Known Issues
- Auto-refresh uses polling (will migrate to WebSocket)
- Some views are placeholders
- No authentication yet
## 📄 License
MIT License - Same as backend