https://github.com/kazemcodes/iroom
https://github.com/kazemcodes/iroom
Last synced: 11 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/kazemcodes/iroom
- Owner: kazemcodes
- Created: 2026-06-16T13:53:26.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2026-07-05T13:12:42.000Z (13 days ago)
- Last Synced: 2026-07-05T15:07:02.001Z (13 days ago)
- Language: Go
- Size: 10.3 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Agents: AGENTS.md
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