docs: add calendar integration spec

This commit is contained in:
2026-05-05 13:02:14 -04:00
parent f6c351c31e
commit 6e658b8215
6 changed files with 434 additions and 0 deletions

View File

@@ -0,0 +1,38 @@
# Task: Backend calendar source foundation
## Goal
Add backend storage and APIs for organization, workspace, and user calendar sources.
## Feature Spec
- `docs/FEATURES/calendar-integrations.md`
## Scope
- Add a calendar integrations module under `backend/src/Socialize.Api/Modules/CalendarIntegrations`.
- Model calendar sources for organization, workspace, and user scopes.
- Support organization inheritance modes: required and optional.
- Track source URL, catalog reference, display title, color, category, enabled state, and sync metadata.
- Add endpoints to list visible sources for a workspace/user context.
- Add endpoints to create/update/delete sources according to scope permissions.
- Show inherited organization sources in workspace responses as read-only.
- Add validation for source URLs, colors, scope, and inheritance mode.
- Add focused backend tests for permissions and inherited source visibility.
## Relevant Files
- `backend/src/Socialize.Api/Modules/CalendarIntegrations/`
- `backend/src/Socialize.Api/Data/AppDbContext.cs`
- `backend/src/Socialize.Api/Program.cs`
- `backend/tests/Socialize.Tests/`
- `shared/openapi/openapi.json`
- `frontend/src/api/schema.d.ts`
## Validation
```bash
dotnet build backend/Socialize.slnx
dotnet test backend/Socialize.slnx
./scripts/update-openapi.sh
```

View File

@@ -0,0 +1,37 @@
# Task: Curated catalog and ICS import sync
## Goal
Add searchable curated calendar catalog metadata and background `.ics` import sync.
## Feature Spec
- `docs/FEATURES/calendar-integrations.md`
## Scope
- Add curated calendar catalog storage or seed data for trusted external calendar sources.
- Add catalog search/filter APIs by country, region, language, category, culture/religion, and provider.
- Add `.ics` fetch, parse, recurrence expansion, and normalized event storage.
- Support manual refresh for manageable sources.
- Track last attempted sync, last successful sync, and last sync error.
- Preserve all-day events without timezone date shifting.
- Respect timezone-bearing timed events and floating timed events according to the feature spec.
- Add backend tests for parsing, recurrence expansion, timezone behavior, and sync error handling.
## Relevant Files
- `backend/src/Socialize.Api/Modules/CalendarIntegrations/`
- `backend/src/Socialize.Api/Data/AppDbContext.cs`
- `backend/tests/Socialize.Tests/`
- `docs/FEATURES/calendar-integrations.md`
- `shared/openapi/openapi.json`
- `frontend/src/api/schema.d.ts`
## Validation
```bash
dotnet build backend/Socialize.slnx
dotnet test backend/Socialize.slnx
./scripts/update-openapi.sh
```

View File

@@ -0,0 +1,36 @@
# Task: Content calendar UI integration
## Goal
Show imported calendar events and calendar source controls in the Content calendar.
## Feature Spec
- `docs/FEATURES/calendar-integrations.md`
## Scope
- Add calendar source data loading to the Content feature.
- Render imported events as read-only calendar context entries in Month, Week, and Upcoming views.
- Style imported events distinctly from Socialize content items and apply source colors.
- Add a calendar source control grouped by Organization, Workspace, and My calendars.
- Add visibility toggles for displayed sources.
- Add `Add calendar` as the last source-control entry.
- Add an add-calendar flow that supports curated catalog search and custom `.ics` URL subscriptions according to user permissions.
- Keep imported events lower visual priority than actual content work on crowded days.
- Add a quick action to create content from an imported event, prefilled with date and event title.
## Relevant Files
- `frontend/src/features/content/views/ContentItemsView.vue`
- `frontend/src/features/content/`
- `frontend/src/plugins/api.js`
- `frontend/src/locales/en.json`
- `frontend/src/locales/fr.json`
## Validation
```bash
cd frontend
npm run build
```

View File

@@ -0,0 +1,34 @@
# Task: Content date context UI
## Goal
Show calendar context while creating, editing, and viewing content items.
## Feature Spec
- `docs/FEATURES/calendar-integrations.md`
## Scope
- Show compact read-only calendar context pills near the publish date or scheduling area on content detail.
- Include same-day visible calendar events such as Mother's Day, Christmas Eve, Ramadan, and Queen's Day.
- Let users click a pill to open event details or navigate to the matching calendar day.
- Lightly mark dates with visible calendar events in the content create/edit date picker.
- Show event names in a small date context panel during date selection.
- Do not convert calendar context pills into hashtags or content tags automatically.
- Do not add scheduling warnings, blocking behavior, or notifications in this task.
## Relevant Files
- `frontend/src/features/content/views/ContentItemDetailView.vue`
- `frontend/src/features/content/views/ContentItemsView.vue`
- `frontend/src/features/content/`
- `frontend/src/locales/en.json`
- `frontend/src/locales/fr.json`
## Validation
```bash
cd frontend
npm run build
```

View File

@@ -0,0 +1,40 @@
# Task: User ICS export feed
## Goal
Let each user subscribe to a private `.ics` feed containing their Socialize `my work` dates.
## Feature Spec
- `docs/FEATURES/calendar-integrations.md`
## Scope
- Add backend support for user export feed tokens.
- Generate private unguessable feed URLs that do not require login.
- Let users enable, revoke, and regenerate their export URL.
- Emit valid `.ics` containing only the user's `my work` dates.
- Include assigned content, approval work, owned/created content where available, approval due dates, planned publish dates, and accessible campaign dates.
- Exclude imported holiday and observance events by default.
- Avoid sensitive comments or approval discussion details in exported entries.
- Add a user settings UI for copying, revoking, and regenerating the feed URL.
- Add backend tests for feed authorization boundary, token regeneration, and event contents.
## Relevant Files
- `backend/src/Socialize.Api/Modules/CalendarIntegrations/`
- `backend/src/Socialize.Api/Modules/ContentItems/`
- `backend/src/Socialize.Api/Modules/Approvals/`
- `frontend/src/features/user-profile-settings/`
- `frontend/src/config.js`
- `backend/tests/Socialize.Tests/`
## Validation
```bash
dotnet build backend/Socialize.slnx
dotnet test backend/Socialize.slnx
cd frontend
npm run build
./scripts/update-openapi.sh
```