← BackML
Malkander
MOBILE · API · EVENT MANAGEMENT
Malkander is a production event management system for a Dutch organization, combining a Node.js/Express REST API with a cross-platform .NET MAUI mobile app.
Tech Stack
- Node.js + Express — REST API with async error handling via `express-async-errors`
- MySQL2 — connection pooling (10 connections) with transaction support for multi-table writes
- bcryptjs + JWT — password hashing and 12-hour token authentication for the admin flow
- .NET MAUI (.NET 9) — single C# codebase targeting Android, iOS, macOS Catalyst, and Windows
- SkiaSharp — 2D graphics rendering in the mobile UI
- Dependency Injection — `MauiProgram.cs` wires singletons (`EventService`, `CacheService`) with constructor injection into pages
Features
- Public browsing of upcoming activiteiten filtered by category, with event photos decoded from MySQL Buffer objects into `byte[]` for display
- Two-tier caching in `EventService`: in-memory cache for same-session speed, file-based cache (10-minute TTL) with images serialized as base64 for persistence
- Dual JSON shape handling — list endpoint returns flat photo fields for performance (SQL `GROUP BY`), detail endpoint returns nested `begeleiders` and `fotos` arrays; both parsed by a
single `ParseActiviteitFromJson` method
- JWT-protected admin panel for full CRUD on events, categories, supervisors (begeleiders), and users — with transaction rollback on any failure
- Inschrijven endpoint atomically increments registration counts without exposing the full event update
NET MAUIExpressMySQL2JWTSkiaSharpbcryptjs