Skip to content

About

A tested desktop note-taking app backed by three file-based Python microservices.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Modular Notes

Modular Notes is a desktop note-taking application built around three independently running, file-based services. The main program creates and displays notes; dedicated services handle editing, listing/search, and deletion.

The project began as an Oregon State University CS 361 course project in Summer 2025. This repository is a transparent portfolio restoration: it preserves the original product and service design while rebuilding missing source into a reproducible, tested package.

Highlights

  • Tkinter desktop interface with create, edit, search, sort, and delete workflows
  • Three separate service processes for editing, listing, and deletion
  • JSON request/response communication through service-specific file queues
  • Atomic writes and cross-process locking to protect shared note data
  • Pagination and multi-select bulk deletion
  • Service timeouts and graceful behavior when an optional dependency is offline
  • No runtime packages outside the Python standard library
  • Automated unit and cross-process integration tests

Architecture

flowchart LR
    App[Desktop main program]
    Edit[Edit service]
    List[List service]
    Delete[Delete service]
    Store[(notes.json)]
    Quote[Optional quote API]

    App <-->|JSON files| Edit
    App <-->|JSON files| List
    App <-->|JSON files| Delete
    Edit --> Store
    List --> Store
    Delete --> Store
    App -.->|GET /quote| Quote
Loading

The application writes a uniquely identified request into .runtime/requests/<service>/. The service processes it and writes the matching response into .runtime/responses/<service>/. See the architecture document for the protocol and example payloads.

Run locally

Python 3.10 or newer is required.

python3 -m venv .venv
source .venv/bin/activate
python -m pip install -e .
modular-notes

The launcher starts all three service processes and stops them when the desktop application closes. Notes are stored locally in data/notes.json; generated data and runtime messages are ignored by Git.

Optional motivational quote service

During the original course project, GitHub user playmakerdaniel supplied a motivational quote service for this main program. Their source is not included here.

If a compatible service is running at http://127.0.0.1:5000/quote, Modular Notes displays its response. A different endpoint can be configured with:

export QUOTE_SERVICE_URL="http://127.0.0.1:5000/quote"
modular-notes

If the service is unavailable, all note functionality continues to work.

Test

The test suite uses only the standard library:

PYTHONPATH=src python -m unittest discover -s tests -v

The tests cover storage persistence, validation, search, sorting, pagination, edit/list/delete service communication, bulk deletion, and the optional HTTP client.

Coursework context and authorship

The original Sprint 3 plan defined Edit Note, Note List, and Delete Note services using file-based communication. The Canvas milestone was submitted on August 13, 2025 and received 100/100.

The original final source directory is no longer available, so this code is not presented as a byte-for-byte copy of the submission. The recovery and refactoring boundary is documented in coursework provenance.

For a source-by-source account of the surviving evidence, see the recovery manifest.

Feifan Qi authored the Modular Notes main program and this restored portfolio implementation. The external quote service is credited above and remains in its author's repository. Feifan also developed a separate permission REST service for another student's main program during the same course; it is intentionally kept separate from Modular Notes.

About

A tested desktop note-taking app backed by three file-based Python microservices.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages