Версия: 1.0.0
Дата: 2025-12-06
Тип: Приложение (@app)
Веб-интерфейс для работы с Platform v1:
- Авторизация (OAuth)
- Воркспейсы и группы
- Проекты
- Чат с Claude (WebSocket)
- Просмотр файлов
┌─────────────┐ WebSocket ┌─────────────┐
│ Browser │◄────────────────►│ Backend │
│ (Svelte) │ │ (FastAPI) │
└─────────────┘ └──────┬──────┘
│
┌────────────────────┼────────────────────┐
│ │ │
┌─────▼─────┐ ┌──────▼──────┐ ┌──────▼──────┐
│ Auth │ │ Claude │ │ Files │
│ (OAuth) │ │ (API) │ │ (Storage) │
└───────────┘ └─────────────┘ └─────────────┘
@platform-ui.app/
├── CLAUDE.md # Этот файл
├── index.yaml # Метаданные
├── docker-compose.yml # Деплой
│
├── backend/ # Python FastAPI
│ ├── main.py # Точка входа
│ ├── config.py # Конфигурация
│ ├── auth/ # OAuth (Google)
│ │ ├── __init__.py
│ │ ├── oauth.py
│ │ └── jwt.py
│ ├── api/ # REST endpoints
│ │ ├── __init__.py
│ │ ├── workspaces.py
│ │ ├── groups.py
│ │ ├── projects.py
│ │ └── files.py
│ ├── ws/ # WebSocket
│ │ ├── __init__.py
│ │ └── chat.py
│ ├── models/ # SQLAlchemy
│ │ ├── __init__.py
│ │ ├── user.py
│ │ ├── group.py
│ │ └── workspace.py
│ └── requirements.txt
│
└── frontend/ # Svelte + Vite
├── src/
│ ├── App.svelte
│ ├── routes/
│ │ ├── Login.svelte
│ │ ├── Workspaces.svelte
│ │ ├── Workspace.svelte
│ │ └── Project.svelte
│ ├── components/
│ │ ├── Header.svelte
│ │ ├── Sidebar.svelte
│ │ ├── Chat.svelte
│ │ ├── FileTree.svelte
│ │ └── FileViewer.svelte
│ ├── stores/
│ │ ├── auth.js
│ │ ├── workspace.js
│ │ └── chat.js
│ └── lib/
│ ├── api.js
│ └── websocket.js
├── package.json
└── vite.config.js
id: UUID
email: string
name: string
avatar: string?
created_at: datetime
id: UUID
name: string
owner_id: UUID (FK User)
created_at: datetime
group_id: UUID (FK Group)
user_id: UUID (FK User)
role: enum (owner, editor, viewer)
joined_at: datetime
id: UUID
name: string
path: string
group_id: UUID (FK Group)
created_at: datetime
id: UUID
workspace_id: UUID (FK Workspace)
name: string
type: string
created_at: datetime
GET /auth/google → Redirect to Google
GET /auth/google/callback → Handle OAuth callback
POST /auth/logout → Logout
GET /auth/me → Current user
GET /api/workspaces → List user's workspaces
POST /api/workspaces → Create workspace
GET /api/workspaces/{id} → Get workspace
DELETE /api/workspaces/{id} → Delete workspace
GET /api/groups/{id} → Get group
POST /api/groups/{id}/invite → Invite user
DELETE /api/groups/{id}/members/{user_id} → Remove member
PATCH /api/groups/{id}/members/{user_id} → Change role
GET /api/workspaces/{ws_id}/projects → List projects
POST /api/workspaces/{ws_id}/projects → Create project
DELETE /api/workspaces/{ws_id}/projects/{id} → Delete project
GET /api/projects/{id}/files → File tree
GET /api/projects/{id}/files/{path} → File content
WS /ws/chat/{project_id} → Chat with Claude
| Действие | owner | editor | viewer |
|---|---|---|---|
| Читать файлы | ✅ | ✅ | ✅ |
| Чат с Claude | ✅ | ✅ | ❌ |
| Создавать проекты | ✅ | ✅ | ❌ |
| Удалять проекты | ✅ | ❌ | ❌ |
| Управлять группой | ✅ | ❌ | ❌ |
| Удалить воркспейс | ✅ | ❌ | ❌ |
# OAuth
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
# JWT
JWT_SECRET=
JWT_ALGORITHM=HS256
JWT_EXPIRE_HOURS=24
# Database
DATABASE_URL=sqlite:///./platform.db
# Claude
CLAUDE_API_KEY=
# Server
HOST=0.0.0.0
PORT=8000
# Backend
cd backend
pip install -r requirements.txt
uvicorn main:app --reload
# Frontend
cd frontend
npm install
npm run dev
docker-compose up -d
Версия: 1.0.0