feat(apps): Add Apps subsystem: App and AppConnection models, managers, typed request handlers, web UI routes and documentation
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
# Connect Global Apps
|
||||
|
||||
**ID:** ORG-009
|
||||
**Priority:** High
|
||||
**Status:** In Development
|
||||
**Phase:** 1
|
||||
|
||||
## User Story
|
||||
As an organization owner, I want to connect and disconnect first-party apps (foss.global, task.vc, etc.) for my organization so that my team members can use these integrated services.
|
||||
|
||||
## Acceptance Criteria
|
||||
- [ ] View list of available global apps (foss.global, task.vc)
|
||||
- [ ] See connection status for each global app
|
||||
- [ ] Connect a global app to the organization
|
||||
- [ ] Disconnect a global app from the organization
|
||||
- [ ] View which user connected the app and when
|
||||
- [ ] See what scopes/permissions each app requires
|
||||
- [ ] Toggle does not require page reload
|
||||
|
||||
## Technical Notes
|
||||
- Global apps are pre-registered by the platform administrators
|
||||
- Uses `IAppConnection` to track org-to-app relationships
|
||||
- Connection creates OAuth authorization for the app
|
||||
- Apps access org data via granted scopes
|
||||
- No credentials shown to org owners (managed by platform)
|
||||
|
||||
## Data Model
|
||||
|
||||
```typescript
|
||||
interface IGlobalApp {
|
||||
id: string;
|
||||
type: 'global';
|
||||
data: {
|
||||
name: string;
|
||||
description: string;
|
||||
logoUrl: string;
|
||||
appUrl: string;
|
||||
oauthCredentials: IOAuthCredentials;
|
||||
isActive: boolean;
|
||||
category: string;
|
||||
};
|
||||
}
|
||||
|
||||
interface IAppConnection {
|
||||
id: string;
|
||||
data: {
|
||||
organizationId: string;
|
||||
appId: string;
|
||||
appType: 'global' | 'partner' | 'custom_oidc';
|
||||
status: 'active' | 'disconnected';
|
||||
connectedAt: number;
|
||||
connectedByUserId: string;
|
||||
grantedScopes: string[];
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
## UI Components
|
||||
- **AppsView** (`/account/org/:orgName/apps`) - Main tabbed interface
|
||||
- **Global Apps Tab** - List of global apps with toggle switches
|
||||
|
||||
## Related Stories
|
||||
- ORG-010: Browse and Install Partner Apps (AppStore)
|
||||
- ORG-011: Create Custom OIDC Apps
|
||||
- DEV-004: Proper App ID Initialization
|
||||
Reference in New Issue
Block a user