a0ad92dd47f302d5f40466c9959f089cd410f915
Merge pull request 'fix(MemberService): wrap multi-step writes in database transactions' (#203) from fix/missing-database-transactions into main
Mitgliederverwaltung
A Nextcloud app for managing members, families, fees, camps and more for scouting associations (Pfadfindervereine). Integrates with Nextcloud Calendar, Contacts and Files.
Prerequisites
- Docker & Docker Compose
- Node.js (for building the frontend)
Quick Start
# 1. Create your .env from the example and adjust passwords
cp .env.example .env
# 2. Build frontend + vendor deps, start containers, install Nextcloud, enable app
make deploy
Nextcloud will be available at http://localhost:8080.
Log in with the NEXTCLOUD_ADMIN_USER / NEXTCLOUD_ADMIN_PASSWORD from your .env.
Make Targets
| Target | Description |
|---|---|
make deploy |
Full first-time setup: install deps, build frontend, start containers, install Nextcloud, copy & enable app |
make redeploy |
Rebuild frontend and re-copy the app into a running Nextcloud (use after code changes) |
make build |
Install deps and build the frontend (production) |
make deps |
Install npm and Composer dependencies only |
make up |
Start containers in the background |
make down |
Stop containers |
make logs |
Tail Nextcloud container logs |
make clean |
Stop containers and delete all volumes (full reset) |
make package |
Build and create a distributable tar.gz (optionally Ed25519-signed) |
make release |
Package, tag, and upload as a Gitea release |
Production Installation
To install on an existing Nextcloud 28+ instance (without Docker):
- Download the latest release tarball from the Releases page, or build it yourself with
make package - Extract into your Nextcloud
custom_appsdirectory:tar -xzf mitgliederverwaltung-*.tar.gz -C /path/to/nextcloud/custom_apps/ chown -R www-data:www-data /path/to/nextcloud/custom_apps/mitgliederverwaltung - Enable the app:
sudo -u www-data php /path/to/nextcloud/occ app:enable mitgliederverwaltung
Development Workflow
After the initial make deploy, the typical cycle is:
# Watch for frontend changes (auto-rebuilds on save)
npm run watch
# After changes, copy the rebuilt app into the running container
make redeploy
npm Scripts
| Script | Description |
|---|---|
npm run build |
Production webpack build |
npm run dev |
Development webpack build (once) |
npm run watch |
Development build with file watching |
Environment Variables
Copy .env.example to .env and set your values:
| Variable | Description |
|---|---|
MYSQL_ROOT_PASSWORD |
MariaDB root password |
MYSQL_DATABASE |
Database name (default: nextcloud) |
MYSQL_USER |
Database user (default: nextcloud) |
MYSQL_PASSWORD |
Database user password |
NEXTCLOUD_ADMIN_USER |
Nextcloud admin username |
NEXTCLOUD_ADMIN_PASSWORD |
Nextcloud admin password |
Architecture
- Backend: PHP (Nextcloud app framework), served by Nextcloud 28 (Apache)
- Frontend: Vue 3 + Pinia + Vue Router, using
@nextcloud/vuecomponents - Database: MariaDB 10.11
- Build: Webpack 5, Babel, Sass
License
AGPL
Description
Nextcloud app for managing scout group (Pfadfinderverein) members — member data, families, fees, camps, and Nextcloud integrations