Deploying Mindwendel
Introduction
Mindwendel is an open-source brainstorming and idea collection tool built with Elixir and Phoenix LiveView. The application provides a simple, real-time collaborative environment for teams to share ideas, organize thoughts, and vote on the best suggestions during brainstorming sessions.
The name “Mindwendel” combines the German words for “mind” and “spiral,” reflecting the creative process of ideas building upon each other. With its real-time updates powered by Phoenix LiveView, all participants see ideas and votes instantly without page refreshes.
Key highlights of Mindwendel:
- Real-Time Collaboration: See ideas and votes update instantly for all participants
- Anonymous Posting: Option for anonymous idea submission to encourage participation
- Voting System: Democratic voting to identify the most popular ideas
- Label Organization: Categorize ideas with customizable labels
- No Registration Required: Participants can join with just a link
- Export Options: Export brainstorming results for documentation
- Mobile Friendly: Responsive design works on all devices
- Self-Hosted Privacy: Keep brainstorming data on your own infrastructure
- Lightweight: Built with Elixir for efficient resource usage
- Open Source: MIT licensed with active development
This guide walks through deploying Mindwendel on Klutch.sh using Docker, configuring the application, and running collaborative brainstorming sessions.
Why Deploy Mindwendel on Klutch.sh
Deploying Mindwendel on Klutch.sh provides several advantages for collaborative brainstorming:
Simplified Deployment: Klutch.sh automatically detects your Dockerfile and builds Mindwendel without complex orchestration. Push to GitHub, and your brainstorming tool deploys automatically.
Persistent Storage: Attach persistent volumes for your database. Your brainstorming sessions and ideas survive container restarts.
HTTPS by Default: Klutch.sh provides automatic SSL certificates for secure collaboration sessions.
GitHub Integration: Connect your configuration repository directly from GitHub. Updates trigger automatic redeployments.
Scalable Resources: Allocate CPU and memory based on your expected number of concurrent sessions.
Custom Domains: Assign a custom domain for professional brainstorming sessions with clients or teams.
Always-On Availability: Your brainstorming tool remains accessible 24/7 for scheduled and impromptu sessions.
Prerequisites
Before deploying Mindwendel on Klutch.sh, ensure you have:
- A Klutch.sh account
- A GitHub account with a repository for your configuration
- Basic familiarity with Docker and containerization concepts
- A PostgreSQL database (can be deployed on Klutch.sh)
- (Optional) A custom domain for your brainstorming tool
Preparing Your Repository
To deploy Mindwendel on Klutch.sh, create a GitHub repository containing your Dockerfile and configuration.
Repository Structure
mindwendel-deploy/├── Dockerfile├── README.md└── .dockerignoreCreating the Dockerfile
Create a Dockerfile in the root of your repository:
FROM elixir:1.14-alpine AS builder
# Install build dependenciesRUN apk add --no-cache build-base git npm
# Set working directoryWORKDIR /app
# Install hex and rebarRUN mix local.hex --force && mix local.rebar --force
# Set build environmentENV MIX_ENV=prod
# Clone MindwendelRUN git clone https://github.com/mindwendel/mindwendel.git . \ && rm -rf .git
# Install dependenciesRUN mix deps.get --only prodRUN mix deps.compile
# Build assetsRUN npm install --prefix assetsRUN npm run deploy --prefix assetsRUN mix phx.digest
# Compile applicationRUN mix compileRUN mix release
# Production imageFROM alpine:3.17
RUN apk add --no-cache libstdc++ openssl ncurses-libs
WORKDIR /app
# Copy release from builderCOPY --from=builder /app/_build/prod/rel/mindwendel ./
# Set environmentENV HOME=/appENV PORT=4000
# Expose portEXPOSE 4000
# Health checkHEALTHCHECK --interval=30s --timeout=10s --start-period=30s --retries=3 \ CMD wget --no-verbose --tries=1 --spider http://localhost:4000/ || exit 1
# Start the applicationCMD ["bin/mindwendel", "start"]Environment Variables Reference
| Variable | Required | Default | Description |
|---|---|---|---|
DATABASE_URL | Yes | - | PostgreSQL connection string |
SECRET_KEY_BASE | Yes | - | Phoenix secret key (64+ characters) |
HOST | Yes | - | Public hostname |
PORT | No | 4000 | Application port |
POOL_SIZE | No | 10 | Database connection pool size |
Deploying on Klutch.sh
- Select HTTP as the traffic type
- Set the internal port to 4000
- Detect your Dockerfile automatically
- Build the container image
- Start the Mindwendel container
- Provision an HTTPS certificate
Set Up PostgreSQL
Deploy a PostgreSQL database on Klutch.sh or use an external provider. Note the connection URL.
Generate a Secret Key
Generate a secure secret key for Phoenix:
openssl rand -base64 64Push Your Repository to GitHub
Initialize your repository and push to GitHub:
git initgit add Dockerfile .dockerignore README.mdgit commit -m "Initial Mindwendel deployment configuration"git remote add origin https://github.com/yourusername/mindwendel-deploy.gitgit push -u origin mainCreate a New Project on Klutch.sh
Navigate to the Klutch.sh dashboard and create a new project. Give it a descriptive name like “mindwendel” or “brainstorm”.
Create a New App
Within your project, create a new app. Connect your GitHub account if you haven’t already, then select the repository containing your Mindwendel Dockerfile.
Configure HTTP Traffic
Mindwendel serves its web interface over HTTP. In the deployment settings:
Set Environment Variables
Add the following environment variables:
| Variable | Value |
|---|---|
DATABASE_URL | Your PostgreSQL connection string |
SECRET_KEY_BASE | Your generated secret key |
HOST | your-app.klutch.sh |
PORT | 4000 |
Deploy Your Application
Click Deploy to start the build process. Klutch.sh will:
Run Database Migrations
After deployment, run database migrations to set up the schema.
Access Mindwendel
Once deployment completes, access your Mindwendel instance at https://example-app.klutch.sh.
Using Mindwendel
Creating a Brainstorming Session
- Navigate to your Mindwendel instance
- Click Create New Brainstorming
- Enter a name for your session
- Share the generated link with participants
Adding Ideas
During a session:
- Type your idea in the input field
- Press Enter or click Submit
- Your idea appears instantly for all participants
- Add as many ideas as you want
Organizing Ideas
Keep ideas organized:
- Labels: Add color-coded labels to categorize ideas
- Lanes: Organize ideas into columns or categories
- Sorting: Arrange by votes, time, or custom order
Voting on Ideas
Identify the best ideas:
- Click the vote button on any idea
- Votes are tallied in real-time
- Top ideas rise to prominence
- Multiple voting rounds can be conducted
Session Management
Moderation Options
Control your brainstorming session:
- Enable/disable anonymous posting
- Lock the session to prevent new ideas
- Delete inappropriate submissions
- Export results when complete
Exporting Results
Save your brainstorming output:
- Click Export on your session
- Download ideas as CSV or text
- Include vote counts and labels
- Share with stakeholders
Session Links
Manage access to sessions:
- Share the participant link for idea submission
- Use admin link for moderation controls
- Sessions persist until manually deleted
Best Practices
Effective Brainstorming
Run successful sessions:
- Set clear objectives before starting
- Allow anonymous submissions initially
- Use time-boxing for idea generation
- Vote after all ideas are collected
- Discuss top-voted ideas afterward
Large Groups
Handle many participants:
- Enable anonymous mode to reduce inhibition
- Use multiple rounds for focused topics
- Break into smaller groups if needed
- Set time limits per phase
Troubleshooting
Real-Time Updates Not Working
- Check WebSocket connections
- Verify HOST environment variable
- Test in different browsers
- Review Phoenix LiveView logs
Database Connection Issues
- Verify PostgreSQL connection string
- Check database credentials
- Ensure database is accessible
- Review connection pool settings
Session Not Loading
- Clear browser cache
- Try a different browser
- Check server logs
- Verify deployment is running
Additional Resources
- Mindwendel GitHub Repository
- Mindwendel Official Demo
- Phoenix LiveView Documentation
- Klutch.sh Persistent Volumes
- Klutch.sh Deployments
Conclusion
Deploying Mindwendel on Klutch.sh gives you a simple, effective brainstorming tool that facilitates real-time collaboration. With instant updates, anonymous posting, and democratic voting, Mindwendel helps teams generate and prioritize ideas efficiently.
The combination of Mindwendel’s focused feature set and Klutch.sh’s reliable infrastructure provides an always-ready brainstorming environment. Whether you’re running workshop sessions, team retrospectives, or client ideation meetings, Mindwendel on Klutch.sh delivers a smooth, private brainstorming experience.