Larpinq — Features
Larpinq is a worldbuilding and LARP (Live Action Role-Playing) campaign management application for Nextcloud. It provides a complete rule engine for managing characters, players, skills, items, conditions, and events, with a stat calculation engine that applies effects in a deterministic order. Data is stored in OpenRegister (using _register.json auto-import) and characters can be exported as PDF character sheets via the DocuDesk integration.
Larpinq has no direct GEMMA component mapping — it is a domain-specific application for LARP organizations and worldbuilding communities.
Standards Compliance
Larpinq is a niche domain application with no applicable government or interoperability standards. It inherits platform-level compliance from Nextcloud and OpenRegister.
| Standard | Status | Description |
|---|---|---|
| WCAG 2.1 AA | Via platform | Accessibility via Nextcloud and NL Design app |
| GDPR / AVG | Via platform | Data subject rights via OpenRegister |
| NL Design System | Via platform | Government theming via nldesign app |
| Schema.org | Gedeeltelijk | Character → schema:Person; Ability → schema:PropertyValue; Skill → schema:Action |
Features
| Feature | Description | Docs |
|---|---|---|
| Character Management | Full CRUD for characters (PCs, NPCs); stat calculation engine; currency system (gold/silver/copper); approval workflow | character-management.md |
| Character Stats | The Stats tab on a character: each ability with its base, the modifiers that moved it and where they came from, and XP earned, spent and left | character-stats.md |
| Import and export | Export any list to CSV or Excel, import characters and players, and move a whole campaign as one workbook | import-and-export.md |
| Lore pages | Lore per world that players read once it is revealed, with game master secrets kept hidden | lore-pages.md |
| Copy a world | Start a new world from a copy of an existing world's rules, for game masters | copy-world.md |
| Extra character fields | Game masters add their own fields to character sheets per world; players fill in the ones meant for them | character-custom-fields.md |
| Plots and writing | Plots that run through several characters with private and player texts, and the writing progress of plots and characters | plots-and-writing.md |
| Factions, groups and relationships | Factions run by game masters, groups run by players with a leader who invites and removes members, and relationships between characters | factions-and-relationships.md |
| Character builds | Alternative skill sets for a character, checked against the rules and the XP without changing the sheet, and applied by a game master | character-builds.md |
| Character status and bulk edit | Characters are active, retired or dead, retired and dead ones stay out of new events, and game masters change many characters at once | character-status-and-bulk-edit.md |
| Worlds and upcoming events | An event's world, the per-user world switcher that narrows lists, and upcoming events first | worlds-and-upcoming-events.md |
| Award XP to a whole event | Game masters award XP to everyone at an event in one save, ticked by check-in, stamped with who awarded it | xp-batch-award.md |
| Events a player attended | The events a player was checked in at, across characters and years, for game masters and the player themself | player-history.md |
| Event registrations | Sign-ups on an event's form become registrations with capacity, a waiting list, approval and the character the player brings | event-registration.md |
| Event tickets and options | Ticket types with a role and a listed price, early bird windows, codes that unlock hidden tickets, and options such as a meal plan, chosen on the registration | event-tickets-and-options.md |
| Event payments | A payment request in shillinq per accepted registration, the link and reference for the player, reminders before the pay-by date, and the place released when it goes unpaid | event-payments.md |
| Cancel and hand over | Cancel one registration under the event's policy, also one of a group booking, ask shillinq for a refund or credit of a paid one, and hand a registration to another player who accepts it | cancel-and-transfer.md |
| Players who sign up themselves | New players make their own profile and characters in the portal; game masters review them on one list | player-self-signup.md |
| RPG System / Game Mechanics | Skills (with prerequisites), Items, Conditions, Effects, Abilities — interconnected rule engine | rpg-system.md |
| Events & Players | Event management with date ranges, locations, and effect application to participating characters; player profiles | events-players.md |
| PDF Export | Character sheet PDF export via DocuDesk integration; Twig templates scoped to Larpinq | pdf-export.md |
| Admin Settings | Per-entity data source config: internal DB or OpenRegister register+schema per object type | admin-settings.md |
| Register Config Auto-Import | larpinq_register.json bootstraps all schemas and registers on install via repair step | register-config-json.md |
| Object Service | RegisterObjectFetcher resolves OpenRegister mappers per object type from IAppConfig | object-service.md |
| Dashboard | App landing page with ApexCharts infrastructure for campaign analytics | dashboard.md |
| Larping Skill Widget | Nextcloud Dashboard Widget showing skill usage distribution as a pie chart via GraphQL faceting | larping-skill-widget.md |
| Deep Link Registration | Registers URL templates for all entity types in OpenRegister's unified search provider | deep-link-registration.md |
| User Settings | Personal preferences: event reminders, character update notifications, default view | user-settings.md |
| Search Service | Utility methods for MongoDB/MySQL filter construction and query string parsing (legacy inherited code) | search-service.md |
Architecture
Larpinq uses a pure OpenRegister data model. All entity types (Character, Player, Ability, Skill, Item, Condition, Effect, Event) are stored as register objects, with schemas defined in larpinq_register.json (OpenAPI 3.0 format) and auto-imported on app install.
Key architectural components:
RegisterObjectFetcher— Central data access service resolving OpenRegister mappers per type fromIAppConfigCharacterService— Stat calculation engine: applies effects from skills, items, conditions, and events in deterministic order- DocuDesk integration — PDF generation delegated to DocuDesk's
PdfService; gracefully degrades when DocuDesk is not installed
GEMMA Mapping
| GEMMA Component | Larpinq Role |
|---|---|
| N.v.t. | Domain-specific LARP / worldbuilding campaign management |