111 lines
3.0 KiB
Markdown
111 lines
3.0 KiB
Markdown
# Baron SSO
|
|
|
|
**Baron SSO** is a white-labeled User Authentication Hub and Unified Launcher.
|
|
It leverages **Descope** for secure, passwordless authentication (Enchanted Link / Magic Link) and provides a custom Flutter UI for a seamless user experience. A Go (Fiber) backend manages Audit Logs via ClickHouse.
|
|
|
|
## 🏗 Architecture
|
|
|
|
### 1. Frontend (Flutter Web)
|
|
- **Framework**: Flutter 3.38.0+
|
|
- **Organization**: `kr.co.baroncs`
|
|
- **Key Packages**: `descope`, `flutter_riverpod`, `go_router`
|
|
- **Features**:
|
|
- Login UI with Tabs (Email / SMS)
|
|
- Descope SDK Integration (Enchanted Link, Magic Link)
|
|
|
|
### 2. Backend (Go Fiber)
|
|
- **Language**: Go 1.26.2+
|
|
- **Framework**: Fiber v2.25+
|
|
- **Database**:
|
|
- **ClickHouse**: Audit Logs (High performance ingestion)
|
|
- **PostgreSQL**: Metadata storage (Primary)
|
|
- **Features**:
|
|
- `POST /api/v1/audit`: Endpoint to ingest audit logs.
|
|
|
|
### 3. Infrastructure (Docker)
|
|
- **Services**: `postgres`, `clickhouse` (defined in `compose.infra.yaml`)
|
|
- **App**: `userfront`, `backend` (defined in `docker-compose.yaml`)
|
|
|
|
---
|
|
|
|
## 🚀 Getting Started
|
|
|
|
### Prerequisites
|
|
- Docker & Docker Compose
|
|
- Flutter SDK (for local development, 3.38.0+)
|
|
- Go (for local backend development)
|
|
|
|
### Environment Setup
|
|
1. Copy the sample environment file.
|
|
```bash
|
|
cp .env.sample .env
|
|
```
|
|
|
|
2. Set the **IDP priority and Ory admin endpoints**. The default is Ory first with Descope as fallback.
|
|
```env
|
|
IDP_PROVIDER=ory,descope
|
|
KRATOS_ADMIN_URL=http://kratos:4434
|
|
HYDRA_ADMIN_URL=http://hydra:4445
|
|
```
|
|
|
|
### Running the Stack
|
|
|
|
#### 1. Start Infrastructure (Databases)
|
|
Start the persistent data layer first.
|
|
```bash
|
|
docker compose -f compose.infra.yaml up -d
|
|
```
|
|
|
|
#### 2. Start Applications
|
|
Start the userfront and backend services.
|
|
```bash
|
|
docker compose up
|
|
```
|
|
|
|
- **userfront**: Accessible at http://localhost:5000
|
|
- **backend**: API active at http://localhost:3000
|
|
- **ClickHouse**: http://localhost:8123
|
|
|
|
### Local Development (Manual)
|
|
If you prefer running without Docker for code editing:
|
|
|
|
**Backend:**
|
|
```bash
|
|
cd backend
|
|
go mod tidy
|
|
go run cmd/server/main.go
|
|
```
|
|
|
|
**userfront:**
|
|
```bash
|
|
cd userfront
|
|
flutter pub get
|
|
flutter run -d chrome
|
|
```
|
|
|
|
---
|
|
|
|
## 📂 Project Structure
|
|
|
|
```
|
|
baron_sso/
|
|
├── backend/ # Go Fiber Application
|
|
│ ├── cmd/server/ # Entry point
|
|
│ ├── internal/ # Domain, Handlers, Repository
|
|
│ └── Dockerfile
|
|
├── userfront/ # Flutter Application
|
|
│ ├── lib/ # UI & Logic
|
|
│ └── pubspec.yaml
|
|
├── compose.infra.yaml # DB Services (Postgres, ClickHouse)
|
|
├── docker-compose.yaml # App Services
|
|
├── .env.sample # Env Config Template
|
|
└── README.md # This file
|
|
```
|
|
|
|
## 📝 Status & Roadmap
|
|
- [x] **Phase 1**: Initial Setup & Architecture (Done)
|
|
- [x] **Phase 2**: Backend Audit API (Done)
|
|
- [x] **Phase 3**: Frontend Login UI & Descope Auth Logic (Done)
|
|
- [ ] **Phase 4**: Connect Frontend to Audit API (Todo)
|
|
- [ ] **Phase 5**: Dashboard & Unified Launcher (Todo)
|