docs: add calendar integration spec
This commit is contained in:
@@ -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
|
||||
```
|
||||
@@ -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
|
||||
```
|
||||
@@ -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
|
||||
```
|
||||
@@ -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
|
||||
```
|
||||
40
docs/TASKS/calendar-integrations/005-user-ics-export-feed.md
Normal file
40
docs/TASKS/calendar-integrations/005-user-ics-export-feed.md
Normal 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
|
||||
```
|
||||
Reference in New Issue
Block a user