UNIFI - C++ Notes Backend

cplusplus oop design-patterns googletest unifi

Overview

UNIFI - C++ Notes Backend is an object-oriented software project developed for the Programming Laboratory course at the Università degli Studi di Firenze (UNIFI).

Inspired by note-taking applications such as Bear and Evernote, the system models notes, specialized collections, security locks, and reactive observers in modern C++.

Key Capabilities

  • Rich Note Modeling: Each note encapsulates a title and text payload, with built-in status locking to prevent unauthorized editing or accidental deletion.
  • Categorization & Collections: Notes belong to designated named collections as well as special dynamic collections (such as an Important Notes collection).
  • Observer Pattern: Implements the GoF Observer behavioral pattern (CategoryCounter observing Category) to automatically and reactively track the real-time count of notes contained within any collection.
  • Robust Resource Management: Written with RAII principles, clean encapsulation, and defensive programming.
  • Comprehensive Unit Testing: Includes an automated unit test suite built with Google Test (gtest) verifying collection observers, lock constraints, and edge cases.