A real-time collaborative whiteboard application that enables teams to work together on shared canvases, with support for offline editing and synchronization. App uses CRDT (Conflict-free Replicated Data Types) for synchronization.
- User registration and authentication
- Team creation and management
- Role-based access control (Team Members and Administrators)
- Real-time collaboration
- Multiple object types support:
- Lines and shapes (rectangles, ellipses)
- Text fields
- Images and icons
- Object manipulation:
- Move, scale, and rotate
- Grouping
- Object locking
- Undo/Redo functionality
- Comments on objects
- Board export to PNG
- Continued editing without internet connection
- Smart synchronization system
- Merge request workflow for offline changes
- Visual diff comparison for changes
- Review system for offline modifications
- Live user presence indicators
- Real-time object editing visualization
- Concurrent editing support
- Active user list
- Clone the repository
git clone https://github.com/jmacuga/collaboard.git
cd collaboard
- Fill in credentials
Add .env file based on .env.example
- Install dependencies
npm install
- Run db server
docker compose up
- Generate prisma client
npx prisma generate
- Initialize MariaDB by applying migrations
npx prisma migrate dev
- Seed the db
npx prisma db seed
- Run app node.js development server
npm run dev
The application is built using:
- Frontend: Next.js 12, React, TypeScript
- Styling: TailwindCSS, shadcn
- Real-time: WebSocket
- Database: MongoDB
- Synchronization: Automerge, Automerge Repo
- Canvas rendering: Konva.js
- Authentication: NextAuth.js
Each directory contains:
components/: React components organized by featureauth/: Authentication related componentsboard/: Whiteboard and canvas componentsboards/: Team boards view related componentsui/: Shared UI componentslayout/: Layout componentsteams/: Team management components
lib/: Core functionalityservices/: Services implementing buisiness logicauth/: Authentication logicutils/: Shared utilities
pages/: Next.js pages and API routesdb/: Database connections and modelspublic/: Static assets and iconsstyles/: Global styles and Tailwind configurationtypes/: TypeScript type definitions



