Contributing
<Contributing>
Component Plugins
BeginnerExtend the engine with custom component types by implementing the core interface.
interface ComponentCoreDefinition {
type: string
position: { x: number; y: number; width: number; height: number }
content?: string
fontSize?: number
fontWeight?: 'normal' | 'bold'
color?: string
textAlign?: 'left' | 'center' | 'right'
} Expression Functions
BeginnerAdd custom expression functions that are available inside report templates.
registerFunction('avg', (items, field) => {
const values = items.map(i => i[field])
return values.reduce((a, b) => a + b, 0) / values.length
}) Renderers
IntermediateBuild output renderers that convert evaluated report schemas into new formats.
export function renderToCSV(
evaluatedSchema: EvaluatedSchema
): string {
// Transform bands → rows, components → cells
return rows.map(r => r.join(',')).join('\n')
} Templates
BeginnerCreate ready-to-use report templates with sample data. Great first contribution — no engine internals needed, just JSON schema design.
Roadmap
<Roadmap>
v0.2 Plugin System + Advanced Layout next
v0.3 PDF Optimization + Template Versioning planned
v1.0 Auth + Collaboration + Standalone Engine planned
v2.0 AI Integration + MCP Server planned