Skip to content

b310-digital/groupwriter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

GroupWriter

GroupWriter is a collaborative text editing application, similar and influenced by etherpad. Create and edit documents in real-time with colleagues or friends, while sharing images, adding comments, and making suggestions. File upload is based on s3 compatible storage like minio.

Setup

The application is divided into a backend and frontend docker image.

Docker Compose

services:
  editor:
    image: ghcr.io/b310-digital/groupwriter-frontend:latest
    ports:
      - "${APP_FRONTEND_PORT:-8080}:8080"
  backend:
    image: ghcr.io/b310-digital/groupwriter-backend:latest
    container_name: backend
    environment:
      DATABASE_URL: postgresql://groupwriter-user:groupwriter-password@postgres/groupwriter-backend-dev
      PORT: 3000
      OBJECT_STORAGE_BUCKET: groupwriter
      OBJECT_STORAGE_SCHEME: "http://"
      OBJECT_STORAGE_HOST: minio
      OBJECT_STORAGE_PORT: 9000
      OBJECT_STORAGE_REGION: local
      OBJECT_STORAGE_USER: ${DOCKER_COMPOSE_APP_OBJECT_STORAGE_USER}
      OBJECT_STORAGE_PASSWORD: ${DOCKER_COMPOSE_APP_OBJECT_STORAGE_PASSWORD}
      # needs to be exactly 32 chars
      VAULT_ENCRYPTION_KEY_BASE64: ${DOCKER_COMPOSE_APP_VAULT_ENCRYPTION_KEY_BASE64}
      # delete old documents
      FEATURE_REMOVE_DOCUMENTS_TOGGLE: ${DOCKER_COMPOSE_APP_FEATURE_REMOVE_DOCUMENTS_TOGGLE:-false}
      FEATURE_REMOVE_DOCUMENTS_MAX_AGE_IN_DAYS: ${DOCKER_COMPOSE_APP_FEATURE_REMOVE_DOCUMENTS_MAX_AGE_IN_DAYS:-730}
    ports:
      - "3000:3000"
    restart: always
  postgres:
    image: postgres:15-alpine
    environment:
      PGDATA: /var/lib/postgresql/data/pgdata
      POSTGRES_DB: ${POSTGRES_DB:-groupwriter-backend-dev}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-groupwriter-password}
      POSTGRES_USER: ${POSTGRES_USER:-groupwriter-user}

    # Exposing the port is not needed unless you want to access this database instance from the host.
    # Be careful when other postgres docker container are running on the same port
    ports:
      - "${POSTGRES_PORT:-5432}:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data/pgdata

  minio:
    image: minio/minio
    container_name: minio
    ports:
      - "9000:9000"
      - "9001:9001"
    environment:
      MINIO_ROOT_USER: ${DOCKER_COMPOSE_MINIO_USER:-ROOTNAME}
      MINIO_ROOT_PASSWORD: ${DOCKER_COMPOSE_MINIO_PASSWORD:-CHANGEME123}
    volumes:
      - ~/minio/data:/data
    command: server /data --console-address ":9001"

volumes:
  postgres_data:

Example for a .env file:

PORT=3000
DOCKER_COMPOSE_APP_OBJECT_STORAGE_USER=
DOCKER_COMPOSE_APP_OBJECT_STORAGE_PASSWORD=
# needs to be exactly 32 chars
DOCKER_COMPOSE_APP_VAULT_ENCRYPTION_KEY_BASE64=
DOCKER_COMPOSE_APP_FEATURE_REMOVE_DOCUMENTS_TOGGLE=false
DOCKER_COMPOSE_APP_FEATURE_REMOVE_DOCUMENTS_MAX_AGE_IN_DAYS=730

DOCKER_COMPOSE_MINIO_USER=minio
DOCKER_COMPOSE_MINIO_PASSWORD=

Then start it:

docker compose up -d

And visit the app at localhost:8080!

Options and configurations

Please see the dedicated backend repo for details on configuration options.

Testimonials / Sponsors

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. GroupWriter can be found on https://kits.blog/tools and can be used by schools for free.

Logos and text provided with courtesy of kits.

Acknowledgements

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published