This is a monorepo containing three Meteor applications:
app- Member-facing PWA (Progressive Web Application) for desktop and mobileadmin- Administrator interface for database managementpayment- Payment callback service for processing Swish payments
See the README in each directory for more details.
The common directory contains schema definitions, collections, and utility functions shared across all applications. It is accessible via symlinks from each app's imports/common.
Uses publications and Meteor reactivity to keep data in sync between the database and frontend. Built with Collection2, Blaze, FlowRouter, Tabular, AutoForm, and Bootstrap 3.
Uses Meteor methods to fetch data. Built with React, React Router, and Tailwind CSS.
Minimal server-only application that receives Swish payment callbacks and processes them into the shared database.
Comprehensive system documentation is in the docs/ folder:
| Document | Contents |
|---|---|
| Architecture | How the three apps work together, shared DB |
| Data Model | All collections, schemas, and relationships |
| Business Rules | Membership types, pricing, renewals, family rules |
| Payments | Swish and Bankgiro payment flows |
| Door Access | Door unlocking via Home Assistant and legacy Danalock |
| Certificates | Certificate types and attestation workflow |
| Messaging | Email, push notifications, templates |
| Auth and Roles | Authentication, authorization, and member onboarding |
| Configuration | Settings, deployment, and development setup |