Skip to main content

A parser to convert text notes into objects to facilitate simple project management

Project description

MuffinTrack

Introduction

MuffinTrack is a text parser that enhances note files with organized, actionable objects in order to facilitate project management. The utility offers a simple, free framework for organizing project development from a stream-of-consciousness notes list into objects for "Questions to be answered", "Important notes to remember", and "Tasks to do".

In tech, there is an expectation that engineers, support techs, administrators, etc. should be able to plan, organize, maintain communication, and execute end-to-end projects, sometimes with no assistance. The aim of this effort is to provide a utility for individuals who have not been trained as project managers to keep projects organized without hefty licensing costs or bulky software implementations.

Installation

MuffinTrack can be installed using the usual Python packaging tools. Example:

pip install MuffinTrack

Using MuffinTrack

  1. Start with a .txt file of notes. Note: The MuffinTrack format is best utilized with a text-editor where matching text fields are highlighted when they are selected to easily visually scan through elements/ids
 - End Users want to start utilizing project on Dec. 1
    - Needs to be fully functional before the Thanksgiving break
 - Cost center for project from Finance for ordering?
 - All equipment must be received for configuration by Oct. 1 -- Per Director, call purchasing if it's not received by 9/25
 - Lyle is no longer on project team
 - Need to test configuration <<Includes:
 	1. Receiving new image file
 	2. Testing with new machines
 	3. Testing installs of all software >>
 - Get director approval
  1. Add formatting to lines that need to be parsed.
    • For lines that should become "Question" objects, prefix the line with "??".
    • Important notes should have the prefix "!!".
    • Task notes should have the prefix "++".
    • Within a line that has a prefix listed above if "--" is found, the rest of the line will be considered a comment on the generated element
    • Multiline text should be enclosed in << and >>.
 - End Users want to start utilizing project on Dec. 1
    !! Needs to be fully functional before the Thanksgiving break
 ?? Cost center for project from Finance for ordering?
 !! All equipment must be received for configuration by Oct. 1 -- Per Director, call purchasing if it's not received by 9/25
 - Lyle is no longer on project team
 ++ Need to test configuration <<Includes:
 	1. Receiving new image file
 	2. Testing with new machines
 	3. Testing installs of all software >>
 ++ Get director approval
  1. Run MuffinTrack as a CLI (python3 -m MuffinTrack). It will ask for the file path to the .txt file. MuffinTrack will parse the file, identifying the lines that need to be expanded into objects based on the prefixes found, and add those objects to the beginning of the file. Objects will be given a unique identifier that will trace back to the originating line so context for the object can easily be traced. The updated file will have a similar structure as the example below:
***Questions
createDateTime: 2026-04-05 22:05:32.397309
text: Cost center for project from Finance for ordering?
status: Open
answer: None
comments: None
relatedId: None
assignedId: 20260405Q1


***Important
createDateTime: 2026-04-05 22:05:32.397257
text: Needs to be fully functional before the Thanksgiving break
status: Active
comments: ++ Get list of department heads to approve they are "fully functional" [[20260405T3]]
relatedId: None
assignedId: 20260405I1

createDateTime: 2026-04-05 22:05:32.397355
text: All equipment must be received for configuration by Oct. 1 
status: Active
comments:  Per Director, call purchasing if it's not received by 9/25
relatedId: None
assignedId: 20260405I2


***Tasks
createDateTime: 2026-04-05 22:05:32.397403
text: Need to test configuration Includes:
 	1. Receiving new image file
 	2. Testing with new machines
 	3. Testing installs of all software
status: To Do
dueDate: None
comments: None
relatedId: None
assignedId: 20260405T1

createDateTime: 2026-04-05 22:05:32.397449
text: Get director approval
status: To Do
dueDate: None
comments: None
relatedId: None
assignedId: 20260405T2

createDateTime: 2026-04-05 22:07:51.948277
text: Get list of department heads to approve they are "fully functional"
status: To Do
dueDate: None
comments: None
relatedId:  [[20260405I1]]
assignedId: 20260405T3


***Original Input
 - End Users want to start utilizing project on Dec. 1
    !! Needs to be fully functional before the Thanksgiving break [[20260405I1]]
 ?? Cost center for project from Finance for ordering? [[20260405Q1]]
 !! All equipment must be received for configuration by Oct. 1 -- Per Director, call purchasing if it's not received by 9/25 [[20260405I2]]
 - Lyle is no longer on project team
 ++ Need to test configuration <<Includes:
 	1. Receiving new image file
 	2. Testing with new machines
 	3. Testing installs of all software >> [[20260405T1]]
 ++ Get director approval [[20260405T2]]

  1. Objects can be modified in any way and modifications will persist through repeated parsings. Subsequent notes can be added anywhere below the "***Original Input" header and the file can be reparsed to the same effect. The prefixes above can also be added in "text" or "comments" element fields (either immediately after the attribute name or as a new line) to be parsed as a new element with a relatedId that is mapped to the original id (example below).
***Questions
createDateTime: 2026-03-29 12:29:24.469269
text:  Test Nested Question 01
status: Open
answer: None
comments: None
relatedId:  [[20260329T1]]
assignedId: 20260329Q1


***Important

***Tasks
createDateTime: 2026-03-29 11:11:06.229244
text:  Test Task 01
status: To Do
dueDate: None
comments: ?? Test Nested Question 01 [[20260329Q1]]
relatedId: None
assignedId: 20260329T1


***Original Input
++ Test Task 01 [[20260329T1]]

Additional Notes

  • Content of the elements are not modified during processing
  • If there is a parse failure, an error will be returned and the version of the file read in at runtime will be restored to the filepath
  • If an unsaved file is processed, the unsaved changes will be lost

More resources

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

muffintrack-2.0.0.tar.gz (8.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

muffintrack-2.0.0-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

Details for the file muffintrack-2.0.0.tar.gz.

File metadata

  • Download URL: muffintrack-2.0.0.tar.gz
  • Upload date:
  • Size: 8.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for muffintrack-2.0.0.tar.gz
Algorithm Hash digest
SHA256 dc75cd839b421bfd453edec8f912f50874fa3d19bb03e2226b9c54c829d822d9
MD5 36af1f4fd85d2ec2179dd8adb4dc4f2c
BLAKE2b-256 97b35191042afe97c641b2aae86668c5bd237e7067f594a6913e455be3f5ded0

See more details on using hashes here.

File details

Details for the file muffintrack-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: muffintrack-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 8.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for muffintrack-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b7233b6f691cb7cfcb417d41e4e95b1ac369fad43e4f71f9144ed2e5a84dc1a9
MD5 43897c13da3b85e774ce5954ffc293f2
BLAKE2b-256 c30dba3a53ae20ff6a27201e4888d6961c1726044e31c3c5c4b043954d319f07

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page