Skip to content

ChrisRobinT/mindbloom

Β 
Β 

Repository files navigation

🧠 MindBloom

AI-powered collaborative brainstorming platform for teams

Live Demo License: MIT

Transform your ideas into visual mindmaps with real-time collaboration and AI assistance. Built for teams who want to brainstorm smarter, not harder.

MindBloom Demo

✨ Features

  • πŸ—ΊοΈ Interactive Mindmaps - Dynamic visualization with D3.js/react-flow
  • πŸ‘₯ Real-Time Collaboration - Multiple users editing simultaneously
  • πŸ€– AI-Assisted Ideation - OpenAI integration for smart suggestions
  • 🎨 Live Cursors - See where teammates are working in real-time
  • πŸ”„ Conflict Resolution - Automatic handling of concurrent edits
  • πŸ’Ύ Auto-Save - Never lose your work with real-time sync
  • πŸ” Authentication - Secure user management with Supabase Auth

🎬 Demo

Live Application: mindbloom-demo.vercel.app (Add your actual URL)

How It Works

  1. Create a mindmap - Start with a central idea
  2. Invite collaborators - Share your workspace with teammates
  3. Brainstorm together - Add nodes, connect ideas in real-time
  4. Get AI suggestions - Let AI help expand your thinking
  5. Export & share - Save your mindmap as image or JSON

πŸš€ Quick Start

Prerequisites

Installation

# Clone the repository
git clone https://github.com/ChrisRobinT/mindbloom.git
cd mindbloom

# Install frontend dependencies
cd frontend
npm install

# Install backend dependencies
cd ../backend
pip install -r requirements.txt

# Setup environment variables (see below)
cp .env.example .env
# Add your API keys to .env

# Run backend
uvicorn main:app --reload

# Run frontend (in another terminal)
cd frontend
npm run dev

Visit http://localhost:3000

πŸ”‘ Environment Variables

Frontend .env.local

NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
NEXT_PUBLIC_API_URL=http://localhost:8000

Backend .env

OPENAI_API_KEY=sk-your-openai-key
SUPABASE_URL=your_supabase_url
SUPABASE_SERVICE_KEY=your_supabase_service_key

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                      Frontend (Next.js)                  β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”‚
β”‚  β”‚  React Flow β”‚  β”‚   D3.js     β”‚  β”‚  Supabase   β”‚     β”‚
β”‚  β”‚   Mindmap   β”‚  β”‚Visualizationβ”‚  β”‚  Realtime   β”‚     β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                         β”‚
                         β”‚ REST API / WebSockets
                         β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   Backend (FastAPI)                      β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”‚
β”‚  β”‚   OpenAI    β”‚  β”‚  Business   β”‚  β”‚  Supabase   β”‚     β”‚
β”‚  β”‚   API       β”‚  β”‚   Logic     β”‚  β”‚  Client     β”‚     β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                         β”‚
                         β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                Supabase (Backend as a Service)           β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”‚
β”‚  β”‚ PostgreSQL  β”‚  β”‚  Realtime   β”‚  β”‚    Auth     β”‚     β”‚
β”‚  β”‚  Database   β”‚  β”‚  Sync       β”‚  β”‚             β”‚     β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ› οΈ Tech Stack

Frontend

  • Framework: Next.js 14 with TypeScript
  • Mindmap Visualization: D3.js / react-flow
  • Styling: Tailwind CSS
  • Real-time: Supabase Realtime (WebSockets)
  • State Management: React Context / Zustand
  • Authentication: Supabase Auth

Backend

  • Framework: FastAPI (Python)
  • Database: PostgreSQL (via Supabase)
  • AI: OpenAI GPT-4 API
  • Real-time: Supabase Realtime subscriptions
  • Authentication: Supabase Auth integration

πŸ“‚ Project Structure

mindbloom/
β”œβ”€β”€ frontend/                # Next.js frontend
β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”œβ”€β”€ page.tsx        # Home page
β”‚   β”‚   β”œβ”€β”€ mindmap/        # Mindmap editor
β”‚   β”‚   └── layout.tsx
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ MindmapCanvas.tsx
β”‚   β”‚   β”œβ”€β”€ Toolbar.tsx
β”‚   β”‚   └── CollaboratorCursors.tsx
β”‚   β”œβ”€β”€ lib/
β”‚   β”‚   β”œβ”€β”€ supabase.ts     # Supabase client
β”‚   β”‚   └── api.ts          # API client
β”‚   └── package.json
β”‚
β”œβ”€β”€ backend/                 # FastAPI backend
β”‚   β”œβ”€β”€ main.py             # FastAPI app
β”‚   β”œβ”€β”€ routers/
β”‚   β”‚   β”œβ”€β”€ mindmaps.py
β”‚   β”‚   └── ai.py           # OpenAI integration
β”‚   β”œβ”€β”€ models/
β”‚   β”‚   └── mindmap.py
β”‚   β”œβ”€β”€ services/
β”‚   β”‚   β”œβ”€β”€ openai_service.py
β”‚   β”‚   └── supabase_service.py
β”‚   └── requirements.txt
β”‚
└── README.md

🎯 Key Features Explained

Real-Time Collaboration

  • WebSocket-based sync - Changes propagate instantly to all users
  • Operational Transformation - Handles concurrent edits gracefully
  • Live presence - See who's online and where they're working
  • Cursor tracking - Visual indicators of collaborator positions

AI-Assisted Ideation

  • Smart suggestions - AI proposes related ideas and connections
  • Auto-expand - Generate child nodes from any idea
  • Summarization - AI creates concise summaries of complex mindmaps
  • Question generation - Get thought-provoking questions to deepen exploration

🚧 Roadmap

  • Export to PDF/PNG
  • Template library (project planning, SWOT analysis, etc.)
  • Version history & time travel
  • Comments & annotations
  • Mobile app (React Native)
  • Integrations (Notion, Slack, Teams)
  • Advanced AI features (sentiment analysis, auto-organize)
  • Voice-to-mindmap

🀝 Contributing

Contributions are welcome! This project was built as part of a team development cycle.

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“ Development Process

This project was developed in an 8-week sprint as a 2-person team:

  • Week 1-2: Requirements gathering, architecture design
  • Week 3-4: Core mindmap functionality, database schema
  • Week 5-6: Real-time collaboration, OpenAI integration
  • Week 7-8: Polish, testing, deployment

My role: Backend architecture, OpenAI API integration, real-time sync logic

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

πŸ‘¨β€πŸ’» Authors

Johannes Tampere

Chris-Robin Talts

πŸ’‘ Inspiration

Built to solve the problem of scattered ideas during team brainstorming sessions. Combines the fluidity of analog mind mapping with the power of AI and real-time collaboration.


Built with 🧠 to help teams think better together

⬆ Back to Top

About

Real-time collaborative mindmapping app with AI-assisted ideation and live multi-user editing.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 60.8%
  • TypeScript 34.2%
  • CSS 4.0%
  • Other 1.0%