πŸ“ Notebook – Case Study

πŸ“Œ Project Overview

Name: Notebook – A Terminal-based Note-taking System Tech Stack: C++ (Core), ANSI Escape Codes (for UI styling) Developer: Haris Khan (GitHub Repo)

This project is a lightweight, terminal-powered note-taking system that allows users to create, categorize, and filter notes directly from the command line. Notes are stored in a file-based system, ensuring simplicity, portability, and no external database dependencies.


🎯 Key Features

  • Add Notes with Categories Each note can be tagged with a category (e.g., work, study, personal), making organization intuitive.

  • File-based Storage Notes are stored as plain text files, making them lightweight, portable, and easy to back up.

  • Filtering System Users can filter notes by category in the terminal, allowing quick retrieval of relevant notes.

  • Terminal UI with ANSI Styling Uses colors and formatting to make the note-taking experience more user-friendly and visually appealing.

  • Minimal & Fast No external dependencies like databasesβ€”just compile and run anywhere with C++.


βš™οΈ Technical Architecture

1. Terminal Interface

  • ANSI escape codes provide colors, bold text, and structured output.
  • Interactive prompts for adding, editing, and filtering notes.

2. File-based Storage

  • Notes are saved in plain text files.
  • Each note entry includes metadata like title, category, and body.
  • File I/O operations handle writing new notes and reading existing ones.

3. Filtering & Categorization

  • When creating a note, users specify a category.

  • The system supports filter queries that scan files and only return notes from a given category.

  • Example:

    Enter category to filter: study
    β†’ Displaying all notes under category [study]
    

4. Core Modules

  • noteTakingSystem2.cpp: Main program logic for note creation, storage, and filtering.
  • ansi.h: ANSI escape sequences for UI enhancement.

πŸš€ Workflow

  • Add a note: Enter title, content, and category.
  • View notes: Display all saved notes.
  • Filter: Choose a category to instantly see only relevant notes.

πŸ’‘ Design Decisions

ChoiceRationale
File-based storageLightweight, portable, avoids database complexity.
Categories + filtersImproves organization and retrieval of notes.
Terminal + ANSISimple, cross-platform, and visually engaging.
C++Fast, efficient, and good practice for file I/O and system-level programming.

🌟 Project Impact

  • Strengthened C++ skills with file I/O and string processing.
  • Learned data organization techniques (categories, filters) for real-world applications.
  • Practiced terminal UI/UX design using ANSI escape codes.
  • Built a practical, portable productivity tool that can run in any environment.