Initial commit

This commit is contained in:
root
2025-12-21 09:59:17 -05:00
committed by Sebastian Krupinski
commit 974d3fe11b
53 changed files with 7555 additions and 0 deletions

118
README.md Normal file
View File

@@ -0,0 +1,118 @@
# Chrono Manager Module
The Chrono Manager module provides the backend management layer for calendar, event, task, and journal functionality within the Ktrix platform.
## Overview
This module implements the Provider-Service-Collection-Entity architecture for chronological data:
- **Providers**: Calendar/task service providers (local, CalDAV, Exchange, etc.)
- **Services**: Individual calendar/task services within a provider
- **Collections**: Calendars, task lists, or journal collections
- **Entities**: Individual events, tasks, or journal entries
## Features
- Multi-provider support for calendars and tasks
- CRUD operations for collections and entities
- Event management with recurrence support
- Task management with priorities and subtasks
- Journal entry support
- Delta synchronization
- Filtering and sorting capabilities
## Architecture
### PHP Backend (`lib/`)
- `Manager.php`: Core manager class handling all operations
- `Module.php`: Module registration and lifecycle
### TypeScript Frontend (`src/`)
- **Types**: TypeScript interfaces for all data structures
- **Services**: API communication layer
- **Stores**: Pinia stores for state management
- **Models**: Data model classes with validation
## Usage
### Backend (PHP)
```php
use KTXM\ChronoManager\Manager;
// Register providers
Manager::registerProvider('local', LocalProvider::class);
// Create manager instance
$manager = new Manager($logger);
// List collections
$collections = $manager->collectionList($tenantId, $userId);
// Create entity
$entity = $manager->entityCreate($tenantId, $userId, $providerId, $serviceId, $collectionId, $entityData);
```
### Frontend (TypeScript)
```typescript
import { useCollectionsStore, useEntitiesStore } from '@ChronoManager/stores';
// Get stores
const collectionsStore = useCollectionsStore();
const entitiesStore = useEntitiesStore();
// Load collections
const collections = await collectionsStore.list();
// Create entity
const entity = await entitiesStore.create(collection, entityData);
```
## Entity Types
### Event
Calendar events with start/end times, locations, attendees, and recurrence patterns.
### Task
Todo items with priorities, due dates, completion tracking, and subtasks.
### Journal
Journal entries with timestamps and content.
## Development
### Build TypeScript
```bash
npm install
npm run build
```
### Watch Mode
```bash
npm run watch
```
## API Endpoints
All endpoints are prefixed with `/m/chrono_manager/`:
- `/provider/list` - List available providers
- `/provider/extant` - Check provider availability
- `/service/list` - List available services
- `/service/fetch` - Get service details
- `/collection/list` - List collections
- `/collection/create` - Create collection
- `/collection/modify` - Update collection
- `/collection/destroy` - Delete collection
- `/entity/list` - List entities
- `/entity/create` - Create entity
- `/entity/modify` - Update entity
- `/entity/destroy` - Delete entity
- `/entity/delta` - Get delta changes
## License
AGPL-3.0-or-later