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
- Detailed change history
- Version restoration
- Change tracking with user attribution
- 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