π 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
| Choice | Rationale |
|---|---|
| File-based storage | Lightweight, portable, avoids database complexity. |
| Categories + filters | Improves organization and retrieval of notes. |
| Terminal + ANSI | Simple, 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.