Beneficiary Session Management (BSM) is a camp-level desktop application for recording beneficiary visits and producing Excel-ready monthly reporting outputs.
The project foundation is intentionally strict:
- ISO C99 for core logic
- GTK for UI only
- SQLite for local storage
- CMake for builds
- Offline-first behavior
- Deterministic reporting and export behavior
Phase 0 is the active baseline in this repository. The codebase currently contains the project scaffold, quality configuration, smoke test, and the minimum diagnostics module needed to validate the build and test pipeline.
The repository follows the architecture-defined module layout:
docs/ build, test, coding, and traceability documents
include/bsm/ public headers only
src/ implementation modules
tests/ unit, integration, system, performance, golden tests
packaging/windows/ Windows installer and runtime assets
personal_docs/ user-provided concept, architecture, and phase planning
- Core modules must not include GTK headers.
- All warnings are treated as errors in QA builds.
- Public API functions use the
bsm_prefix. - Every public API requires Doxygen-style documentation.
- Unsafe C string functions are prohibited.
- New behavior must ship with tests in the same change set.
Build and test instructions are in docs/build.md. Quality and coding rules are in docs/coding-standard.md.