Skip to content

software-engineering-final/loomy

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Loomy

Loomy is an open-source collaborative whiteboard. Create infinite boards, invite your team, and bring ideas to life in real time.

Features

  • Infinite canvas — Draw shapes, sticky notes, and connectors with Excalidraw
  • Workspaces & boards — Organize work by workspace; star and revisit recent boards
  • Real-time collaboration — Live updates via WebSockets and Redis pub/sub
  • Auth — Email/password and OAuth (GitHub, Google)
  • Themes — Light, dark, and soft (pastel) themes with i18n (EN, AZ, RU)

Tech stack

Layer Stack
Frontend React 19, Vite 7, TypeScript, Tailwind CSS 4, Excalidraw, Zustand, react-router-dom
Backend FastAPI, Python 3.12+, SQLAlchemy, Alembic, Pydantic
Data PostgreSQL 17, Redis 7
Auth JWT, bcrypt, OAuth 2 (GitHub, Google)

Project structure

loomy/
├── api/app/          # FastAPI backend
│   ├── app/
│   │   ├── api/      # Routes
│   │   ├── core/     # Config, JWT, Redis, security
│   │   ├── db/       # SQLAlchemy base, session
│   │   ├── modules/  # auth, boards, elements, users, workspaces
│   │   └── websocket/
│   └── alembic/      # Migrations
├── apps/frontend/    # React SPA (Vite)
├── docs/api/         # API docs
└── docker-compose.yml  # PostgreSQL + Redis

Prerequisites

  • Python 3.12+ and uv
  • Node.js 20+ and npm
  • Docker (for PostgreSQL and Redis)

Quick start

1. Start PostgreSQL and Redis

docker compose up -d

PostgreSQL: localhost:15432, Redis: localhost:6379.

2. Backend (API)

cd api/app
cp .env.example .env
# Edit .env: DATABASE_URL, SECRET_KEY, REDIS_URL, FRONTEND_URL

uv sync
uv run alembic upgrade head
uv run python -m app.main

API: http://localhost:8000. Docs: http://localhost:8000/docs.

3. Frontend

cd apps/frontend
cp .env.example .env   # optional; VITE_API_URL defaults to http://localhost:8000
npm install
npm run dev

App: http://localhost:5173.

Environment

  • API — See api/app/.env.example for DATABASE_URL, SECRET_KEY, REDIS_URL, FRONTEND_URL, and optional OAuth keys.
  • Frontend — Optional apps/frontend/.env: VITE_API_URL=http://localhost:8000 if the API is not on that URL.

Scripts

Where Command Description
api/app uv run python -m app.main Run API (reload)
api/app uv run alembic upgrade head Apply migrations
api/app uv run pytest Run tests
api/app uv run mypy . Type check
api/app uv run ruff check . Lint
apps/frontend npm run dev Dev server
apps/frontend npm run build Production build
apps/frontend npm run lint ESLint

License

Open-source collaborative whiteboard — use and modify as needed for your project.

About

Loomy is an open-source collaborative whiteboard. Create infinite boards, invite your team, and bring ideas to life in real time

Resources

License

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 61.9%
  • Python 35.8%
  • CSS 1.6%
  • Mako 0.2%
  • HTML 0.2%
  • JavaScript 0.2%
  • Dockerfile 0.1%