You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
124 lines
3.2 KiB
124 lines
3.2 KiB
# Root Organization Platform |
|
|
|
Team collaboration platform with Documents, Kanban, and Calendar - no messaging. |
|
|
|
## Tech Stack |
|
|
|
- **Frontend**: SvelteKit 2 + Svelte 5 + TailwindCSS 4 |
|
- **Backend**: Supabase (PostgreSQL + Auth + Realtime) |
|
- **Deployment**: Docker + adapter-node |
|
|
|
## Features |
|
|
|
- 📁 **Documents** - Folders and rich text documents with collaborative editing |
|
- 📋 **Kanban** - Visual task boards with drag-drop and real-time sync |
|
- 📅 **Calendar** - Team scheduling with events and attendees |
|
- 👥 **Teams** - Organizations, members, roles (Owner/Admin/Editor/Viewer) |
|
|
|
## Quick Start |
|
|
|
### 1. Install dependencies |
|
|
|
```bash |
|
npm install |
|
``` |
|
|
|
### 2. Set up Supabase |
|
|
|
1. Create a project at [supabase.com](https://supabase.com) |
|
2. Copy `.env.example` to `.env` and fill in your credentials: |
|
|
|
```bash |
|
cp .env.example .env |
|
``` |
|
|
|
```env |
|
PUBLIC_SUPABASE_URL=https://your-project.supabase.co |
|
PUBLIC_SUPABASE_ANON_KEY=your-anon-key |
|
``` |
|
|
|
3. Run the database migration in Supabase SQL editor: |
|
- Open `supabase/migrations/001_initial_schema.sql` |
|
- Execute in your Supabase dashboard |
|
|
|
### 3. Run development server |
|
|
|
```bash |
|
npm run dev |
|
``` |
|
|
|
Visit http://localhost:5173 |
|
|
|
## Docker |
|
|
|
### Production |
|
|
|
```bash |
|
docker-compose up app |
|
``` |
|
|
|
### Development (with hot reload) |
|
|
|
```bash |
|
docker-compose up dev |
|
``` |
|
|
|
## Routes |
|
|
|
| Route | Description | |
|
|-------|-------------| |
|
| `/` | Organization list (home) | |
|
| `/login` | Auth (login/signup) | |
|
| `/style` | UI component showcase | |
|
| `/health` | Health check endpoint | |
|
| `/[orgSlug]` | Organization overview | |
|
| `/[orgSlug]/documents` | Documents with rich text editor | |
|
| `/[orgSlug]/kanban` | Kanban boards | |
|
| `/[orgSlug]/calendar` | Calendar events | |
|
|
|
## Project Structure |
|
|
|
``` |
|
src/ |
|
├── lib/ |
|
│ ├── api/ # Supabase API functions |
|
│ │ ├── organizations.ts |
|
│ │ ├── documents.ts |
|
│ │ ├── kanban.ts |
|
│ │ └── calendar.ts |
|
│ ├── components/ |
|
│ │ ├── ui/ # Reusable UI components |
|
│ │ ├── documents/ # FileTree, Editor |
|
│ │ ├── kanban/ # KanbanBoard |
|
│ │ └── calendar/ # Calendar |
|
│ ├── stores/ # Svelte 5 state stores |
|
│ └── supabase/ # Supabase client & types |
|
├── routes/ |
|
│ ├── login/ # Auth pages |
|
│ ├── style/ # Component showcase |
|
│ ├── health/ # Health endpoint |
|
│ ├── auth/callback/ # OAuth callback |
|
│ ├── auth/logout/ # Sign out |
|
│ └── [orgSlug]/ # Organization routes |
|
│ ├── documents/ |
|
│ ├── kanban/ |
|
│ └── calendar/ |
|
└── hooks.server.ts # Auth middleware |
|
``` |
|
|
|
## UI Components |
|
|
|
All components available in `$lib/components/ui`: |
|
|
|
- `Button` - Primary, Secondary, Ghost, Danger, Success variants |
|
- `Input` - Text input with label, error, hint |
|
- `Textarea` - Multi-line input |
|
- `Select` - Dropdown select |
|
- `Avatar` - User avatars with status |
|
- `Badge` - Status badges |
|
- `Card` - Content containers |
|
- `Modal` - Dialog windows |
|
- `Spinner` - Loading indicators |
|
- `Toggle` - On/off switches |
|
|
|
Visit `/style` to see all components.
|
|
|