Thank you for your interest in contributing to the Real-Time Factory Dashboard! This document outlines the required processes and architectural standards for all contributions to the repository.
Before submitting code, please familiarize yourself with the project's foundational technologies:
- MVVM Pattern: The project strictly enforces Model-View-ViewModel using
CommunityToolkit.Mvvm. Views (.xamland.xaml.cs) must contain absolutely no business logic. State and logic reside purely in ViewModels. - Dependency Injection: Services and ViewModels are injected via Microsoft's standard
IServiceCollection. Do not instantiate ViewModels manually. - High-Performance Rendering: We use
LiveChartsCore.SkiaSharpView.WPFfor hardware-accelerated charting. Cartesian charts operate on normalizedTotalSecondson the X-axis to preventdoubleprecision loss that occurs with rawDateTime.Ticks. - Custom UI Overrides: Advanced UI paradigms (like our custom Angular Gauge) rely on pure WPF primitives (Canvas, Path, Line, RotateTransform) instead of constrained charting controls.
We use a strict Phase-Based Milestone Workflow. Do not branch from or merge directly to master.
- Active Integration Branch: All feature development takes place against the current milestone branch (e.g.,
phase/v1.0.0). - Issue Creation: Every change requires a GitHub issue first. Use the provided Issue Templates.
- Feature Branches: Branch exclusively from the active phase branch using the conventional naming format:
type/scope-issuenumber(e.g.,feat/mvvm-setup-8ordocs/architecture-changelog-11) - No Batching: Issues and branches must be granular. Fix one scoped problem per branch.
- Commit Messages: We strictly adhere to Conventional Commits.
Examples:
feat(charts): migrate to LiveCharts2 (closes #28)docs: add CONTRIBUTING.md (closes #32)
- Pull Requests:
- Set the PR base to the active phase branch (e.g.,
phase/v1.0.0), NOTmaster. - Use the provided PR Template to explain your 'What', 'Changes', and 'Testing' checklist.
- All PRs must pass the exacted CI pipeline (
ci.ymlcompiling tonet10.0-windowstargets).
- Set the PR base to the active phase branch (e.g.,
- Merge Strategy: PRs are merged via Squash and Merge.
When reporting an issue, ensure you provide:
- The exact
.NETSDK and Windows OS version you are running. - If it's a render or chart crash, please attach the
crash_task.logorcrash.logfile generated in the application's executable directory.
We appreciate all your efforts to make this dashboard as high-performance and robust as possible!