An open API service indexing awesome lists of open source software.

https://github.com/kazemcodes/iroom


https://github.com/kazemcodes/iroom

Last synced: 11 days ago
JSON representation

Awesome Lists containing this project

README

          

# آی‌روم — IRoom
## EXPERIMENTAL (dont use it)

Open-source online classroom platform with live video/audio, chat, whiteboard, screen sharing, polls, recordings, and a full admin panel.

**WebSocket-based video/audio streaming** — no WebRTC, no STUN/TURN/ICE needed.

---

## Quick Start

### Docker (Recommended)

```bash
git clone iroom && cd iroom
cp .env.example .env
docker compose up -d
# → http://localhost:80
```

### Development

#### Prerequisites

- Go 1.22+
- Node.js 18+

#### Backend

**Option A — Manual build:**

```bash
go build -o server ./cmd/server && ./server
```

**Option B — Auto-reload with [air](https://github.com/air-verse/air) (recommended):**

```bash
# Install air (one-time)
go install github.com/air-verse/air@latest

# Run — watches .go/.sql/.yaml files and rebuilds on change
air
```

#### Frontend (new terminal)

```bash
cd web && npm install && npm run dev
# → http://localhost:5173
```

**Default login:** `admin@iroom.local` / `admin123`

---

## Architecture

```
┌─────────┐ ┌──────────┐ ┌──────────────┐
│ Caddy │────▶│ Go │────▶│ SQLite │
│ :80 │ │ :8080 │ │ iroom.db │
└─────────┘ │ (Echo) │ └──────────────┘
└──────────┘
```

**Stack:** Go + Echo + SQLite + SvelteKit + Tailwind CSS

---

## Configuration

```bash
cp .env.example .env
```

| Variable | Default | Description |
|----------|---------|-------------|
| `SERVER_PORT` | `8080` | Backend port |
| `JWT_SECRET` | `change-me...` | JWT secret (change in prod!) |
| `JWT_ACCESS_EXPIRY` | `15` | Access token lifetime (min) |
| `UPLOAD_MAX_SIZE` | `52428800` | Max upload (50MB) |

---

## Features

- **Classroom:** Live video/audio, screen sharing, whiteboard, chat, polls
- **Rooms:** Create/manage rooms with invite codes
- **Sessions:** Schedule and manage live sessions
- **Recording:** Cloud recording support
- **Admin Panel:** User management, room management, settings, logs
- **Auth:** JWT + optional TOTP 2FA
- **Persian:** Full RTL, Jalali calendar, Persian numbers

---

## Project Structure

```
iroom/
├── cmd/server/ # Go entrypoint
├── internal/
│ ├── handlers/ # HTTP handlers
│ ├── middleware/ # Auth, CORS, rate limiting
│ ├── models/ # Data models
│ ├── repository/ # Database queries
│ ├── services/ # Business logic
│ └── infrastructure/ # External integrations
├── web/src/ # SvelteKit frontend
├── config.yaml # App configuration
├── docker-compose.yml # Docker services
└── Dockerfile # Multi-stage build
```

---

## License

MIT