Skip to content

Commit 83b7d2f

Browse files
committed
Resolve merge conflicts in StatusFilters.tsx
2 parents efea441 + d8aca75 commit 83b7d2f

File tree

180 files changed

+16155
-4003
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

180 files changed

+16155
-4003
lines changed

.claude/settings.local.json

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,16 @@
11
{
22
"permissions": {
33
"allow": [
4-
"Bash(dotnet format:*)",
5-
"Bash(dotnet build)",
6-
"Bash(dotnet add package:*)",
4+
"Bash(dotnet:*)",
5+
"Bash(npm:*)",
6+
"Bash(npx tsc:*)",
77
"Bash(curl:*)",
88
"Bash(taskkill:*)",
9-
"Bash(dotnet clean:*)",
10-
<<<<<<< HEAD
11-
"mcp__chakra-ui__get_component_example",
12-
"Bash(npm run build:*)",
13-
"Bash(npm run lint)",
14-
"mcp__chakra-ui__list_components"
15-
=======
16-
"Bash(dotnet run:*)",
17-
"Bash(powershell:*)",
18-
"Bash(dotnet build:*)",
19-
"Bash(powershell:*)"
20-
>>>>>>> eca8109102259deb41bba4cf33476a6cf6005f65
9+
"mcp__chakra-ui",
10+
"mcp__serena",
11+
"Bash(sqlite3:*)",
12+
"Bash(dir:*)",
13+
"Bash(timeout:*)"
2114
],
2215
"deny": [],
2316
"ask": []

.serena/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/cache
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# ThingConnect Pulse - Code Style & Conventions
2+
3+
## General Principles
4+
- Follow GitHub issues in /issues/ and /pulse_env_issues/ folders
5+
- Implement one issue at a time, complete with tests before moving on
6+
- Always use Chakra UI MCP tools when working with UI components
7+
- NEVER create files unless absolutely necessary for achieving goals
8+
- ALWAYS prefer editing existing files to creating new ones
9+
10+
## Backend (.NET) Style
11+
- **Language**: C# with nullable reference types enabled
12+
- **Framework**: ASP.NET Core 8.0 with latest language features
13+
- **Analyzers**: StyleCop.Analyzers + Microsoft.CodeAnalysis.NetAnalyzers enabled
14+
- **Code Analysis**: EnforceCodeStyleInBuild=true, treat warnings as errors in Release
15+
- **Namespaces**: Use file-scoped namespaces
16+
- **Indentation**: 4 spaces (configured in .editorconfig)
17+
- **Line Endings**: CRLF (Windows standard)
18+
- **Encoding**: UTF-8
19+
20+
### Naming Conventions
21+
- **Classes**: PascalCase (e.g., `ConfigurationService`)
22+
- **Methods**: PascalCase (e.g., `GetConfigurationAsync`)
23+
- **Properties**: PascalCase (e.g., `ConnectionString`)
24+
- **Fields**: camelCase with underscore prefix (e.g., `_logger`)
25+
- **Constants**: UPPER_CASE (e.g., `DEFAULT_TIMEOUT`)
26+
- **Interfaces**: PascalCase with 'I' prefix (e.g., `IConfigurationService`)
27+
28+
### Architecture Patterns
29+
- **Dependency Injection**: Constructor injection throughout
30+
- **Services**: Scoped services for business logic
31+
- **Controllers**: Thin controllers, delegate to services
32+
- **Authentication**: Cookie-based with ASP.NET Core Identity
33+
- **Logging**: Structured logging with Serilog
34+
- **Configuration**: YAML + JSON configuration files
35+
36+
## Frontend (React/TypeScript) Style
37+
- **Language**: TypeScript with strict type checking
38+
- **Framework**: React 19 with functional components and hooks
39+
- **Build**: Vite with SWC for fast compilation
40+
- **Linting**: ESLint 9.33.0 with TypeScript, React, and Prettier rules
41+
- **Formatting**: Prettier 3.6.2 with 2-space indentation
42+
- **Import Order**: External libraries first, then internal modules
43+
- **File Extensions**: .tsx for React components, .ts for utilities
44+
45+
### Component Conventions
46+
- **Components**: PascalCase files and component names
47+
- **Hooks**: camelCase starting with 'use' (e.g., `useConfiguration`)
48+
- **Props**: TypeScript interfaces with 'Props' suffix
49+
- **State**: useState and React Query for server state
50+
- **Styling**: Chakra UI components and theme system
51+
- **Icons**: Lucide React icons preferred
52+
53+
### Directory Structure
54+
- **components/**: Reusable UI components
55+
- **features/**: Feature-specific components and logic
56+
- **hooks/**: Custom React hooks
57+
- **api/**: API client functions
58+
- **types/**: TypeScript type definitions
59+
- **utils/**: Utility functions
60+
61+
## Quality Standards
62+
- **Backend**: All warnings treated as errors in Release builds
63+
- **Frontend**: ESLint errors must be fixed, no console.warn/error in production
64+
- **Testing**: NUnit for backend testing (when implemented)
65+
- **Pre-commit**: Husky hooks run linting and formatting checks
66+
- **Build**: Both projects must build without warnings/errors
67+
68+
## Documentation Standards
69+
- **API**: OpenAPI/Swagger documentation required
70+
- **Code**: XML documentation for public APIs in C#
71+
- **README**: Keep project README.md updated with setup instructions
72+
- **Issues**: Follow GitHub issue templates and confidence scoring
Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
# ThingConnect Pulse - Codebase Structure
2+
3+
## Root Directory Structure
4+
```
5+
ThingConnect.Pulse/
6+
├── ThingConnect.Pulse.Server/ # ASP.NET Core backend
7+
├── thingconnect.pulse.client/ # React frontend
8+
├── docs/ # Technical specifications
9+
├── ops/ # Development operations
10+
├── installer/ # Windows service installer
11+
├── brand/ # Branding and design assets
12+
├── marketing/ # Marketing materials
13+
├── website/ # Project website
14+
├── ref/ # Reference materials
15+
├── flow/ # Process flows
16+
├── ui/ # UI mockups/designs
17+
├── publish/ # Build outputs
18+
├── ThingConnect.Pulse.sln # Visual Studio solution
19+
├── Directory.Build.props # Solution-wide build properties
20+
├── README.md # Main project documentation
21+
├── CLAUDE.md # AI development context
22+
└── sample-config.yaml # Example configuration
23+
```
24+
25+
## Backend Structure (ThingConnect.Pulse.Server/)
26+
```
27+
ThingConnect.Pulse.Server/
28+
├── Controllers/ # API controllers
29+
│ ├── AuthController.cs
30+
│ ├── ConfigurationController.cs
31+
│ ├── HistoryController.cs
32+
│ ├── StatusController.cs
33+
│ └── UserManagementController.cs
34+
├── Data/ # Entity Framework context
35+
├── Services/ # Business logic services
36+
│ ├── Monitoring/ # Monitoring engine services
37+
│ ├── Rollup/ # Data aggregation services
38+
│ └── Prune/ # Data cleanup services
39+
├── Models/ # Data models and DTOs
40+
├── Infrastructure/ # Cross-cutting concerns
41+
├── Helpers/ # Utility classes
42+
├── Migrations/ # EF Core migrations
43+
├── Properties/ # Assembly info
44+
├── Program.cs # Application entry point
45+
├── appsettings.json # Production configuration
46+
├── appsettings.Development.json # Development configuration
47+
└── ThingConnect.Pulse.Server.csproj # Project file
48+
```
49+
50+
## Frontend Structure (thingconnect.pulse.client/)
51+
```
52+
thingconnect.pulse.client/
53+
├── src/
54+
│ ├── api/ # API client functions
55+
│ ├── components/ # Reusable UI components
56+
│ ├── features/ # Feature-specific components
57+
│ ├── hooks/ # Custom React hooks
58+
│ ├── pages/ # Page components
59+
│ ├── providers/ # Context providers
60+
│ ├── router/ # Routing configuration
61+
│ ├── theme/ # Chakra UI theme
62+
│ ├── types/ # TypeScript definitions
63+
│ ├── utils/ # Utility functions
64+
│ ├── icons/ # Custom icon components
65+
│ ├── assets/ # Static assets
66+
│ ├── App.tsx # Root component
67+
│ └── main.tsx # Application entry point
68+
├── public/ # Static public assets
69+
├── dist/ # Build output
70+
├── node_modules/ # NPM dependencies
71+
├── package.json # NPM configuration
72+
├── package-lock.json # Dependency lock file
73+
├── tsconfig.json # TypeScript configuration
74+
├── vite.config.ts # Vite build configuration
75+
├── eslint.config.js # ESLint configuration
76+
└── thingconnect.pulse.client.esproj # MSBuild project file
77+
```
78+
79+
## Documentation Structure (docs/)
80+
```
81+
docs/
82+
├── openapi.yaml # API specification (frozen)
83+
├── openapi-frozen.yaml # Backup of frozen API spec
84+
├── config.schema.json # YAML configuration schema
85+
├── data-model.cs # EF Core entity definitions
86+
├── rollup-spec.md # Data aggregation algorithms
87+
├── assumptions.md # Project assumptions
88+
├── erd-diagram.md # Database design
89+
├── installer-spec.md # Windows installer requirements
90+
├── logging-spec.md # Logging configuration
91+
├── probes-spec.md # Network probe specifications
92+
├── security.md # Security considerations
93+
├── nfr.md # Non-functional requirements
94+
├── scope-v1.md # Version 1 scope definition
95+
├── roadmap.md # Product roadmap
96+
└── ops/ # Operations documentation
97+
├── dev.md # Development commands
98+
├── dev-backend.md # Backend setup
99+
└── dev-frontend.md # Frontend setup
100+
```
101+
102+
## Key Configuration Files
103+
104+
### Solution Level
105+
- **Directory.Build.props**: Solution-wide MSBuild properties
106+
- **ThingConnect.Pulse.sln**: Visual Studio solution file
107+
- **.editorconfig**: Code formatting rules (if exists)
108+
- **.gitignore**: Git ignore patterns
109+
110+
### Backend Configuration
111+
- **appsettings.json**: Production configuration
112+
- **appsettings.Development.json**: Development overrides
113+
- **ThingConnect.Pulse.Server.csproj**: Project dependencies and settings
114+
115+
### Frontend Configuration
116+
- **package.json**: NPM dependencies and scripts
117+
- **tsconfig.json**: TypeScript compiler settings
118+
- **vite.config.ts**: Build tool configuration
119+
- **eslint.config.js**: Linting rules
120+
- **thingconnect.pulse.client.esproj**: MSBuild integration
121+
122+
## Data Storage Locations
123+
124+
### Development
125+
- **Database**: Local SQLite file in project directory
126+
- **Logs**: Console output and file logs in /logs directory
127+
- **Config**: test-config.yaml and sample-config.yaml in root
128+
129+
### Production (Windows Service)
130+
- **Database**: `C:\ProgramData\ThingConnect.Pulse\pulse.db`
131+
- **Configuration**: `C:\ProgramData\ThingConnect.Pulse\config.yaml`
132+
- **Logs**: `C:\ProgramData\ThingConnect.Pulse\logs\`
133+
- **Installation**: `C:\Program Files\ThingConnect.Pulse\`
134+
135+
## Important Entry Points
136+
137+
### Application Startup
138+
- **Backend**: ThingConnect.Pulse.Server/Program.cs
139+
- **Frontend**: thingconnect.pulse.client/src/main.tsx
140+
141+
### API Controllers
142+
- **Authentication**: Controllers/AuthController.cs
143+
- **Configuration**: Controllers/ConfigurationController.cs
144+
- **Monitoring Data**: Controllers/StatusController.cs and HistoryController.cs
145+
- **User Management**: Controllers/UserManagementController.cs
146+
147+
### Services
148+
- **Configuration Management**: Services/ConfigurationService.cs
149+
- **Monitoring Engine**: Services/Monitoring/
150+
- **Data Aggregation**: Services/Rollup/
151+
- **Status Tracking**: Services/StatusService.cs
152+
153+
### Frontend Routes
154+
- **Router Configuration**: src/router/
155+
- **Main Pages**: src/pages/
156+
- **Feature Components**: src/features/
157+
158+
## Build Outputs
159+
- **Backend**: bin/ and obj/ directories
160+
- **Frontend**: dist/ directory
161+
- **Installer**: publish/ directory
162+
- **Solution**: Published applications and installers
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# ThingConnect Pulse - Project Overview
2+
3+
## Purpose
4+
ThingConnect Pulse is a free, on-premises network availability monitoring system designed for manufacturing sites. It provides YAML-configured monitoring with live dashboard, historical rollups, and CSV export. The system is designed for plant IT/OT admins, production supervisors, and maintenance engineers who need reliable network device monitoring with zero external dependencies.
5+
6+
## Key Features
7+
- **Local-first**: No cloud dependencies, all data stays on-premises
8+
- **Lightweight**: 5-minute setup with single Windows Service installer
9+
- **Readable config**: Simple YAML configuration with explicit Apply workflow
10+
- **Network Monitoring**: ICMP ping, TCP connect, HTTP status checks with concurrent execution
11+
- **Data Storage**: SQLite with automatic 15-minute/daily rollups
12+
- **Web Interface**: Real-time status dashboard with live data integration
13+
- **Configuration Management**: Apply, list, and download configuration versions
14+
- **Alerting**: Status change detection with flap damping (2/2 thresholds)
15+
- **Outage Tracking**: Automatic outage detection with start/end timestamps
16+
17+
## Project Structure
18+
- **ThingConnect.Pulse.Server/** - ASP.NET Core backend API
19+
- **thingconnect.pulse.client/** - React frontend application
20+
- **docs//** - Technical specifications and API documentation
21+
- **ops//** - Development and deployment operations
22+
- **installer//** - Windows service installer scripts
23+
- **brand//** - Branding assets and design resources
24+
25+
## Architecture
26+
- **Backend**: ASP.NET Core 8.0 with Entity Framework Core and SQLite
27+
- **Frontend**: React 19 with TypeScript, Vite, and Chakra UI v3
28+
- **Deployment**: Windows Service with professional Inno Setup installer
29+
- **Database**: SQLite stored in ProgramData/ThingConnect.Pulse
30+
- **Configuration**: YAML files with JSON Schema validation
31+
32+
## Current Status
33+
- Basic ASP.NET Core server scaffolding exists
34+
- React frontend has default template
35+
- Cookie-based authentication system implemented
36+
- Configuration management endpoints implemented
37+
- Monitoring engine operational with background probing
38+
- Database integration complete
39+
- Ready for feature implementation based on GitHub issues

0 commit comments

Comments
 (0)