v0.5.2
- New UnifiedSearchController and UnifiedSearchService backend API
- Single endpoint GET /api/v1/search?q=...&category=...&limit=...
- Searches across 6 categories: Mitglieder, Familien, Lager, Inventar, Unfälle, Beiträge
- Highlighted match text with <mark> tags in results
- Per-category result routing to appropriate detail views
- New SearchBar.vue component
- Category filter chips (Alle, Mitglieder, Familien, Lager, Inventar, Unfälle, Beiträge)
- Debounced search with 300ms delay
- Keyboard navigation (arrow keys, enter, escape)
- Stale request handling with request ID counter
- Breadcrumb back navigation
- Grouped results display with highlighted matches
- Empty states and loading indicators
- Cleaned up inline search inputs from:
- FamilyList.vue (removed member search text field)
- Inventory.vue (removed general/stock search text fields)
- PermissionSettings.vue (removed user filter text field)
- FamilyDetail.vue (converted to client-side filtering)
- Removed client-side search actions from stores:
- members.js (removed searchMembers)
- families.js (removed searchFamilies)
- general.js (removed searchText + filteredItems)
- stock.js (removed searchText + filteredItems)
- Added search() methods to existing mappers:
- LagerMapper::search() - searches camps by name, description, attending members
- InjuryMapper::search() - searches injuries by description, activity, member name
- GeneralMaterialMapper::search() - searches general material by name
- StockItemMapper::search() - searches stock items by name
- FeeRecordMapper::search() - searches fee records by member name
- Fixed pre-existing entity property type issue
- Changed protected to public in GeneralMaterial, InventoryCategory,
SaleRecord, StockItem, StockVariant entities
- Bumped version 0.3.2 → 0.4.0 in info.xml, webpack.config.js, main.js
(Closes #200)
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