A web-based graphics template editor for broadcast based on the EBU OGraf standard. Create professional broadcast graphics without needing to be a graphic designer.
- Drag-and-drop interface for creating graphics elements
- Real-time canvas preview with visual element manipulation
- Element toolbar with text, images, rectangles, and circles
- Property panel for fine-tuning element styles and properties
- Responsive design with proper layout handling
- Monaco Editor integration with full syntax highlighting
- JSON manifest editor with real-time validation and error detection
- JavaScript component viewer for generated web components
- Tabbed interface switching between manifest and component code
- Professional code editing with IntelliSense support
- Real-time preview with animation support
- Play/Stop controls for testing graphic animations
- Dynamic data inputs for testing template variables
- Animation controls with configurable directions and timing
- Export functionality for generating preview images
- Template creation wizard with predefined types
- Local storage persistence for template management
- Import/Export functionality for sharing templates
- Template validation against OGraf specification
- Responsive template list with proper scrolling
- Slide animations with 4-direction support (left, right, top, bottom)
- Independent slide-in/slide-out direction controls
- Configurable timing functions (ease-in, ease-out, linear, ease-in-out)
- Real-time animation preview in the preview engine
- OGraf-compliant custom actions (slideIn, slideOut)
- Node.js (version 16 or higher)
- Modern web browser (Chrome, Firefox, Safari, or Edge)
-
Clone or download this repository
-
Install dependencies:
npm install
-
Start the development server:
npm run dev
-
Open your browser to
http://localhost:3000
-
Click "Create Your First Template" or "New Template"
-
Choose a template type:
- Lower Third: Name and title overlays
- Title: Full-screen title cards
- Bug: Small station logos/branding
- Custom: Start from scratch
-
Fill in the template details and click "Create"
- Add Elements: Use the toolbar to add text, images, rectangles, or circles
- Move Elements: Click and drag elements to reposition them
- Resize Elements: Select an element and drag the corner handles
- Delete Elements: Select an element and press Delete key
- Element Properties: Modify position, size, and content of selected elements
- Style Properties: Change colors, fonts, borders, and other visual styles
- Template Properties: Configure data inputs for your template
- Data Inputs: Enter sample data to see how your template will look
- Play/Stop: Test template animations and transitions
- Update: Refresh preview with new data
- Manifest Tab: Edit the OGraf manifest JSON directly
- Component Tab: Modify the Web Component implementation
- Validation: Real-time validation of your code
- Export: Save templates as OGraf-compatible files
- Import: Load existing OGraf templates
- Formats: Support for JSON and OGraf bundle formats
This editor generates templates that are fully compliant with the EBU OGraf v1 specification:
- $schema: Proper JSON schema validation
- Required fields: id, name, main, supportsRealTime/supportsNonRealTime
- Custom actions: Standardized slideIn/slideOut actions
- Data schema: Proper parameter definitions for dynamic content
- Step count: Single-step graphics support
- HTMLElement inheritance: Standard web component structure
- Shadow DOM: Style encapsulation and isolation
- ES Module exports: Proper module system compatibility
- Required lifecycle methods:
load(): Initialize the graphicdispose(): Clean up resourcesplayAction(): Show/animate the graphicstopAction(): Hide the graphicupdateAction(data): Update with new datacustomAction(action, data): Handle custom actions
Each template consists of:
- Manifest (
.ograf.json): Metadata and schema definition - Web Component (
.mjs): HTML/CSS/JavaScript implementation - Generated code: Fully compliant with OGraf rendering systems
- Chrome 90+ (recommended for best Monaco Editor experience)
- Firefox 88+ (full feature support)
- Safari 14+ (Web Components and ES6 modules support)
- Edge 90+ (Chromium-based, full compatibility)
- ES6 Modules: For web component loading
- Custom Elements v1: For OGraf web components
- Shadow DOM v1: For style encapsulation
- Dynamic Imports: For Monaco Editor loading
src/
βββ components/ # UI components
β βββ VisualEditor.js # Drag-and-drop editor
β βββ PropertyPanel.js # Element properties
β βββ PreviewEngine.js # Template preview
β βββ CodeEditor.js # Code editing
βββ models/ # Data models
β βββ OGrafTemplate.js # Template structure
βββ services/ # Business logic
β βββ TemplateManager.js # Template CRUD
β βββ ExportImportService.js # File operations
βββ styles/ # CSS styles
β βββ main.css # Base styles
β βββ components.css # Component styles
βββ main.js # Application entry point
npm run dev # Start development server
npm run build # Build for production
npm run preview # Preview production build
npm run lint # Run ESLint
npm run typecheck # Run TypeScript checks- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
MIT License - see LICENSE file for details
For issues and questions:
- Check the documentation at ograf.ebu.io
- Review existing issues in the repository
- Create a new issue with detailed information
Built with β€οΈ for the broadcast community
