← Back
ML

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