Initial commit
This commit is contained in:
118
README.md
Normal file
118
README.md
Normal 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
|
||||
Reference in New Issue
Block a user