Skip to content

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
└── .dockerignore

Creating the Dockerfile

Create a Dockerfile in the root of your repository:

FROM elixir:1.14-alpine AS builder
# Install build dependencies
RUN apk add --no-cache build-base git npm
# Set working directory
WORKDIR /app
# Install hex and rebar
RUN mix local.hex --force && mix local.rebar --force
# Set build environment
ENV MIX_ENV=prod
# Clone Mindwendel
RUN git clone https://github.com/mindwendel/mindwendel.git . \
&& rm -rf .git
# Install dependencies
RUN mix deps.get --only prod
RUN mix deps.compile
# Build assets
RUN npm install --prefix assets
RUN npm run deploy --prefix assets
RUN mix phx.digest
# Compile application
RUN mix compile
RUN mix release
# Production image
FROM alpine:3.17
RUN apk add --no-cache libstdc++ openssl ncurses-libs
WORKDIR /app
# Copy release from builder
COPY --from=builder /app/_build/prod/rel/mindwendel ./
# Set environment
ENV HOME=/app
ENV PORT=4000
# Expose port
EXPOSE 4000
# Health check
HEALTHCHECK --interval=30s --timeout=10s --start-period=30s --retries=3 \
CMD wget --no-verbose --tries=1 --spider http://localhost:4000/ || exit 1
# Start the application
CMD ["bin/mindwendel", "start"]

Environment Variables Reference

VariableRequiredDefaultDescription
DATABASE_URLYes-PostgreSQL connection string
SECRET_KEY_BASEYes-Phoenix secret key (64+ characters)
HOSTYes-Public hostname
PORTNo4000Application port
POOL_SIZENo10Database connection pool size

Deploying on Klutch.sh

    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:

    Terminal window
    openssl rand -base64 64

    Push Your Repository to GitHub

    Initialize your repository and push to GitHub:

    Terminal window
    git init
    git add Dockerfile .dockerignore README.md
    git commit -m "Initial Mindwendel deployment configuration"
    git remote add origin https://github.com/yourusername/mindwendel-deploy.git
    git push -u origin main

    Create 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:

    • Select HTTP as the traffic type
    • Set the internal port to 4000

    Set Environment Variables

    Add the following environment variables:

    VariableValue
    DATABASE_URLYour PostgreSQL connection string
    SECRET_KEY_BASEYour generated secret key
    HOSTyour-app.klutch.sh
    PORT4000

    Deploy Your Application

    Click Deploy to start the build process. Klutch.sh will:

    • Detect your Dockerfile automatically
    • Build the container image
    • Start the Mindwendel container
    • Provision an HTTPS certificate

    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

  1. Navigate to your Mindwendel instance
  2. Click Create New Brainstorming
  3. Enter a name for your session
  4. Share the generated link with participants

Adding Ideas

During a session:

  1. Type your idea in the input field
  2. Press Enter or click Submit
  3. Your idea appears instantly for all participants
  4. 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:

  1. Click the vote button on any idea
  2. Votes are tallied in real-time
  3. Top ideas rise to prominence
  4. 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:

  1. Click Export on your session
  2. Download ideas as CSV or text
  3. Include vote counts and labels
  4. Share with stakeholders

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:

  1. Set clear objectives before starting
  2. Allow anonymous submissions initially
  3. Use time-boxing for idea generation
  4. Vote after all ideas are collected
  5. 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

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.