GNU Affero General Public License v3.0

项目介绍

b310-digital/mindwendel 是一个托管在 GitHub 上的开源项目,主要使用 Elixir 编写,采用 GNU Affero General Public License v3.0 许可证,目前获得 142 个 Star、17 次 Fork。

仓库全名
b310-digital/mindwendel
开源许可证
GNU Affero General Public License v3.0
Star 数
142
Fork 数
17
未关闭 Issue
35

README 摘要

mindwendel Create a challenge. Ready? Brainstorm. mindwendel helps you to easily brainstorm and upvote ideas and thoughts within your team. Built from scratch with Phoenix. mindwendel Features Use-cases Getting Started Contributing Workflow Development Testing Production Note Build release and production docker image Formatting Environment Variables Localization Testimonials Acknowledgements Features 5 minute setup…

完整内容见 GitHub 原始 README 或本页 。

常见问题

mindwendel 用什么语言开发?

主要使用 Elixir 编写,采用 GNU Affero General Public License v3.0 许可证,目前有 142 个 Star。

mindwendel 可以免费商用吗?

仓库标注的许可证为 GNU Affero General Public License v3.0,商用前请先阅读仓库 LICENSE 文件确认授权范围。

如何获取 mindwendel 的源码?

可以直接克隆仓库:git clone https://github.com/b310-digital/mindwendel.git,默认分支为 master;安装与运行步骤见仓库 README。

mindwendel 最近还在维护吗?

仓库最近一次更新为 1 周前,当前有 35 个未关闭 Issue;Star 数为 142,可作为社区活跃度的参考。

关于

GitHub 原始描述(英文)

Brainstorm, organize, and prioritize ideas effortlessly. Use it as a collaborative planning board or for live brainstormings within your team.

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

语言占比

Dockerfile
Elixir
HTML
JavaScript
PLpgSQL
Procfile
SCSS
Shell

Release

README

mindwendel

Workflow Status Badge

Create a challenge. Ready? Brainstorm. mindwendel helps you to easily brainstorm and upvote ideas and thoughts within your team. Built from scratch with Phoenix.

Features

  • 5 minute setup (It is not a joke)
  • Anonymously invite people to your brainstormings - no registration needed. Usernames are optional!
  • Easily create and upvote ideas, with live updates from your mindwendel members
  • Cluster or filter your ideas with custom labels
  • Preview of links to ease URL sharing
  • Add automatically encrypted file attachments which are uploaded to an S3 compatible storage backend
  • Add lanes, use drag & drop to order ideas
  • Add comments to ideas
  • AI-powered idea generation using OpenAI-compatible LLM APIs
  • Export your generated ideas to html or csv (currently comma separated)
  • German & English Translation files
  • By default, brainstormings are deleted after 30 days to ensure GDPR compliancy

Use-cases

Brainstorm …

  • … new business ideas
  • … solutions for a problem
  • … what to eat tonight
  • …

Getting Started

mindwendel can be run just about anywhere. So checkout our Installation Guides for detailed instructions for various deployments. The easiest way to deploy and run mindwendel is using our own docker-compose-prod.yml file. For instructions, see Setup for Production. If you want to contribute, jump ahead to Development!

Contributing

To get started with a development installation of mindwendel, follow the instructions below.

mindwendel is built on top of:

Workflow

  1. Fork it (https://github.com/mindwendel/mindwendel/fork)
  2. Create your feature branch (git checkout -b fooBar)
  3. Commit your changes (git commit -am 'Add some fooBar')
  4. Push to the branch (git push origin fooBar)
  5. Create a new Pull Request

Development

  • Startup docker compose setup

    docker compose up --build -d
    
  • Setup the database

    docker compose exec app mix ecto.setup
    
  • Start the server

  docker compose exec app mix phx.server
Localization

You can extract new strings to translate by running:

mix gettext.extract --merge

Testing

  • Startup docker compose setup

    docker compose up --build -d
    
  • Run the test

    docker compose exec app mix test
    

Setup for Production

  • Generate self-signed ssl sertificate for the postgres server on the host machine; the generated files are mounted into the docker container

    mkdir -p ./ca
    openssl req -new -text -passout pass:abcd -subj /CN=localhost -out ./ca/server.req -keyout ./ca/privkey.pem
    openssl rsa -in ./ca/privkey.pem -passin pass:abcd -out ./ca/server.key
    openssl req -x509 -in ./ca/server.req -text -key ./ca/server.key -out ./ca/server.crt
    chmod 600 ./ca/server.key
    test $(uname -s) = Linux && chown 70 ./ca/server.key
    
  • Duplicate and rename .env.prod.default

    cp .env.prod.default .env.prod
    
  • Adjust all configs in .env.prod, e.g. database settings, ports, disable ssl env vars if necessary

  • Start everything at once (including a forced build):

    docker compose --file docker-compose-prod.yml --env-file .env.prod up -d --build --force-recreate
    
  • Open the browser and go to http://${URL_HOST}

Note
  • The url has to match the env var URL_HOST; so http://localhost will not work when your URL_HOST=0.0.0.0
  • The mindwendel production configuration is setup to enforce ssl, see Mindwendel.Endpoint configuration in config/prod.exs
  • The mindwendel production configuration supports deployment behind a reverse porxy (load balancer) by parsing the proper protocol from the x-forwarded-* header of incoming requests, see config/prod.exs
  • If you are having troubles during setup, please raise an issue.

Build release and production docker image

  • Build the docker image based on our Dockerfile
    docker build -t mindwendel_prod .
    

Formatting

We are using Elixir’s built-in formatter.

  • Check if the code is properly formatted
    mix format --check-formatted
    
  • Automatically format the code
    mix format
    

Feature flags

Privacy and automatic data removal

Mindwendel includes a job runner that deletes old brainstormings after a defined number of days. This can be controlled with the setting MW_FEATURE_BRAINSTORMING_REMOVAL_AFTER_DAYS, which can be set to for instance to 30.

File Storage

File storage is available through an s3 compatible object storage backend. An encryption key (VAULT_ENCRYPTION_KEY_BASE64) needs to be generated before, e.g.:

iex
32 |> :crypto.strong_rand_bytes() |> Base.encode64()

or

openssl rand -base64 32

Then, object storage and the vault key need to be set:

OBJECT_STORAGE_BUCKET: mindwendel
OBJECT_STORAGE_SCHEME: "http://"
OBJECT_STORAGE_HOST: minio
OBJECT_STORAGE_PORT: 9000
OBJECT_STORAGE_REGION: local
OBJECT_STORAGE_USER: ...
OBJECT_STORAGE_PASSWORD: ...
VAULT_ENCRYPTION_KEY_BASE64: ...

There is an example given inside the docker-compose.yml with a docker compose minio setup.

To deactivate file storage, use MW_FEATURE_IDEA_FILE_UPLOAD (defaults to true) and set it to false.

AI Integration

Mindwendel supports AI-powered idea generation using OpenAI and OpenAI-compatible APIs. To enable AI features:

For OpenAI (default):

MW_AI_ENABLED=true
MW_AI_API_KEY=your-openai-api-key
MW_AI_API_MODEL=gpt-4o-mini           # Optional, defaults to gpt-4o-mini

For OpenAI-compatible endpoints (e.g., local LLMs, Mistral, etc.):

MW_AI_ENABLED=true
MW_AI_API_KEY=your-api-key
MW_AI_API_MODEL=mistral-large-latest  # Or your model name
MW_AI_API_BASE_URL=https://api.mistral.ai/v1  # Required for non-OpenAI endpoints

Optional token limits to control usage:

MW_AI_TOKEN_LIMIT_DAILY=1000000      # Daily token limit (default: 1M)
MW_AI_TOKEN_LIMIT_HOURLY=100000      # Hourly token limit (default: 100K)
MW_AI_TOKEN_RESET_HOUR=0             # Hour of day to reset daily limit (default: 0/midnight UTC)
MW_AI_REQUEST_TIMEOUT=60000          # Request timeout in milliseconds (default: 60000)

AI features are disabled by default. When enabled, users can generate ideas using AI based on their brainstorming context.

Localization

Currently, there are three language files available, german (de), english (en) and italian (it). To set the default_locale, you can set MW_DEFAULT_LOCALE. The default is english.

Testimonials

kits is a project platform hosted by a public institution for quality development in schools (Lower Saxony, Germany) and focusses on digital tools and media in language teaching. mindwendel is used in workshops to activate prior knowledge, and collect and structure ideas. In addition, mindwendel can be found on https://kits.blog/tools and can be used by schools for free. More info on how to use it can be found in this post https://kits.blog/digitale-lesestrategien-brainstorming/

Logos and text provided with courtesy of kits.

Acknowledgements

Image Licenses

评论

暂无评论