Rimo (React Miro) — современное веб-приложение для визуального совместного редактирования, вдохновленное Miro. Позволяет командам работать над досками в реальном времени: рисовать, размещать фигуры, перемещать объекты и взаимодействовать друг с другом онлайн.
- Мультипользовательская коллаборация: одновременное редактирование несколькими участниками.
- Реальное время: мгновенная синхронизация состояния доски благодаря Convex и Liveblocks.
- Интуитивный интерфейс: простая навигация, масштабирование, перетаскивание и набор инструментов для рисования.
- Масштабируемая архитектура: поддержка множества досок и организаций.
- Frontend: React, TypeScript, Next.js, Tailwind CSS, shadcn/ui
- Backend / Real-time DB: Convex (серверные функции и хранилище данных)
- Collaboration Layer: Liveblocks для присутствия, курсоров, передачи событий
- Code Quality & Tooling: ESLint, Prettier, VSCode, GitHub Actions
├── app/ # Основные страницы (Next.js App Router)
│ ├── (dashboard)/ # Дашборд с перечнем досок и орг-меню
│ └── board/[boardId]/ # Страница конкретной доски и её компоненты
├── components/ # Переиспользуемые UI-компоненты и модалки
├── convex/ # Convex схемы и серверные функции
├── hooks/ # Кастомные React-хуки
├── lib/ # Утилитарные функции
├── providers/ # Провайдеры контекста (Convex, модалки)
├── public/ # Статические ресурсы: иконки, SVG
├── scripts/ # Вспомогательные утилиты (генерация аватарок)
└── types/ # Общие TypeScript типы
- App Router: маршрутизация и лэйауты в
app/layout.tsx, страницы вapp/(dashboard)иapp/board/[boardId]. - Convex: все операции с базой данных в
convex/schema.ts,convex/boards.ts,convex/board.ts. - Liveblocks: конфигурация в
liveblocks.config.ts, авторизация через API-роутapp/api/liveblocks-auth/route.ts.
| Language | Files | Lines of Code |
|---|---|---|
| TypeScript JSX | 73 | 5,132 |
| TypeScript | 28 | 1,303 |
| Python | 2 | 140 |
| JavaScript | 4 | 35 |
| PostCSS (CSS) | 1 | 122 |
| Shell Script | 1 | 5 |
Всего кода: 6 737 строк
-
Клонировать репозиторий
git clone https://github.com/dedbin/rimo.git cd rimo -
Выбрать способ запуска — вручную или через Docker:
-
Установить зависимости
npm install
-
Создать файл окружения
CONVEX_DEPLOYMENT=<your_convex_deployment> NEXT_PUBLIC_CONVEX_URL=<your_convex_url> NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=<your_clerk_publishable_key> CLERK_SECRET_KEY=<your_clerk_secret_key> CLERK_FRONTEND_API_URL=<your_clerk_frontend_api_url> NEXT_PUBLIC_LIVEBLOCKS_PUBLIC_KEY=<your_liveblocks_public_key> NEXT_PUBLIC_LIVEBLOCKS_SECRET_KEY=<your_liveblocks_secret_key> NEXT_PUBLIC_SITE_URL=<your_site_url> -
Запустить локально
npm run dev
-
Открыть в браузере: http://localhost:3000
-
Создать
.envфайл (как описано выше) -
Запустить с Docker
./run.sh
Или вручную:
docker-compose up --build -d
-
Открыть в браузере: http://localhost:3000
Если у вас уже склонирован репозиторий и установлены зависимости, вы можете обновить проект до последней версии без переустановки:
git pullЭта команда подтянет последние изменения из удалённого репозитория.
После git pull можно перезапустить приложение с учётом изменений:
./run.shили вручную:
docker compose up --build -d- Создание и удаление досок
- Генерация уникальных аватарок досок
- Добавление, выбор и перемещение прямоугольников и других фигур
- Выделение объектов рамкой, смена цвета
- Панорамирование и масштабирование холста
- Просмотр курсоров участников и их аватарок в реальном времени
- Приглашение участников по ссылке
- Вставка изображений с автоматической подгонкой размеров и отслеживанием загрузки
- Предпросмотр ссылок с заголовком, описанием и изображением
- Выбор шрифта, размера и цвета текста
- Локализация интерфейса на русском и английском языках
Если вы хотите помочь развитию Rimo, создавайте issue или PR.
TODO (отмечены в коде как TODO:):
- Мобильная адаптация: доработать отзывчивость интерфейса для смартфонов и планшетов.
- Тестирование: больше тестов!!!!!
- Оптимизация производительности: улучшить рендеринг большого числа объектов и lazy-load компонентов.
- Импорт досок из Miro: дать пользователям возможность импорта досок из miro (например используя api miro)
- Экспорт досок: Добавить экспорт доски в PDF с настройками масштаба и формата страниц. Рендерить холст offscreen, разбивать при необходимости на страницы и сохранять через jsPDF или pdf-lib.
MIT © 2025 dedbin