Status page api (#1800)
* feat(proto): add status page service proto definitions
Add Protocol Buffer definitions for the status page service including:
- StatusPage and StatusPageSummary messages
- PageComponent and PageComponentGroup messages
- PageSubscriber message
- Full CRUD service definition with 17 RPC methods
* feat(server): implement status page RPC service
Add ConnectRPC service implementation for status pages including:
- Page CRUD operations (create, get, list, update, delete)
- Component management (add monitor/external, remove, update)
- Component groups (create, delete, update)
- Subscriber management (subscribe, unsubscribe, list)
- Content and status endpoints (getStatusPageContent, getOverallStatus)
Includes converters, error handling, and comprehensive test suite with 68 tests.
* feat(server): add workspace limits check for status pages
Add limit validation when creating status pages:
- Check status page count against workspace plan limit
- Add helper functions for feature limits (custom domain, password protection, email domain protection)
- Add test case for limit exceeded scenario using free plan workspace
* refactor(proto): rename token to id in UnsubscribeFromPageRequest
- Rename 'token' field to 'id' in the proto definition
- Update server implementation to use subscriber ID instead of token
- Update tests to use the new field name
* fix(server): improve code quality in status page service
- Fix type mismatch by removing redundant undefined assignment
- Use Drizzle's count() function instead of raw SQL
- Standardize ID validation with trim pattern
- Fix duplicate ternary expressions in error messages
- Wrap subscriber reactivation in transaction for atomicity
- Standardize string coercion patterns using nullish coalescing
* feat(server): add public access validation and maintenance support
- Add public access checks for unpublished and protected pages
- Implement maintenance querying in getStatusPageContent
- Add proper overall status calculation based on reports and maintenances
- Calculate individual component statuses (degraded/maintenance/operational)
- Add new error types for access denied scenarios
- Add tests for public access restrictions
* small fix
* small fix
authored by