FLOWS

Overall program flow: Read input information → Create data → Render module page → User can navigate pages and manually render each page

Overall note rendering flow (probably): Module → Topics → Sub-Topics → Refined Notes → Definitions → Questioning Notes → Priming Notes → Flashcards → Question Answers → Cheat Sheet(s) (midterm and final?)

When bits of data are rendered in multiple blocks, make those bits of text linked with MetaBind for easier editing/(re-)rendering + obviously only initially render in one place.

MAYBE ACTUALLY DO ALL RENDERS WITH REPLACE SELF BUTTONS???? FOR EASIER FINE-GRAIN RE-RENDERING???????


DATA

“Templates/Module Template” rendered with…

MODULE_LEVEL_DATA = {
    "module": {
        "info": {
            "coordinator": {
                "name": "some name",
                "email": "some email",
            },
            "name": {
                "short": "some module name",
                "long": "some module name with code",
                "formatted": "**some module code** some module name",
            },
            "components": {
                "coursework": {
                    "weight": 0.4,
                    "assignments": [
                        "Weekly Assignment 1",
                        "Weekly Assignment 2",
                        ...,
                    ],
                },
                "portfolio": {
                    "weight": 0.6,
                    "tests": [
                        "Mid-Term",
                        "Final",
                        ...
                    ],
                },
            },
            "outcomes": [
                "LO1",
                "LO2",
                ...,
            ],
        },
        "lectures": {
            "1": {
                "topics": [
                    "some topic",
                    "some other topic",
                    "another topic",
                    ...
                ],
                "questions": {
                    "is this a question?": "this is an answer.",
                    "is this a question?": "this is an answer.",
                    "is this a question?": "this is an answer.",
                    ...,
                },
            },
            "2": {
                "topics": [
                    "some topic",
                    "some other topic",
                    "another topic",
                    ...
                ],
                "questions": {
                    "is this a question?": "this is an answer.",
                    "is this a question?": "this is an answer.",
                    "is this a question?": "this is an answer.",
                    ...,
                },
            },
            ...,
        },
        "notes": {
            "some topic": {
                "some sub-topic": {
                    "some note": {
                        "summary": "this is a summary of the note",
                        "content": {
                            "definitions": {
                                "some name": "some definition",
                                "some name": "some definition",
                                "some name": "some definition",
                                ...,
                            },
                            "examples": {
                                "example question": "example answer",
                                "example question": "example answer",
                                "example question": "example answer",
                                ...,
                            },
                            "historical_context": "this is some historical context",
                        },
                    },
                    ...,
                },
                ...,
            },
            ...,
        }
    }
}  # made from PDFs (and user input if anything is missing)

“Templates/Questions Template” rendered with…

QUESTION_LEVEL_DATA = {
    "questions": {
        "1": {
            "topic": "some topic",
            "marks": "3",
            "content": "some content",
            "solution": "some solution",
        },
        "2": {
            "topic": "some topic",
            "marks": "10",
            "content": "some content",
            "solution": "some solution",
        },
        ...,
    }
}  # made from PDFs

“Templates/Topic Template” rendered with…

TOPIC_LEVEL_DATA = {
    "subtopics": {
        "some sub-topic": {
            "some note": {
                "summary": "this is a summary of the note",
                "content": {
                    "definitions": {
                        "some name": "some definition",
                        "some name": "some definition",
                        "some name": "some definition",
                        ...,
                    },
                    "examples": {
                        "example question": "example answer",
                        "example question": "example answer",
                        "example question": "example answer",
                        ...,
                    },
                    "historical_context": "this is some historical context",
                    },
                },
                ...,
            },
            ...,
        },
        ...,
    }
}

“Templates/Sub-Topic Template” rendered with…

SUBTOPIC_LEVEL_DATA = {
    "notes": {
        "some note": {
            "summary": "this is a summary of the note",
            "content": {
                "definitions": {
                    "some name": "some definition",
                    "some name": "some definition",
                    "some name": "some definition",
                    ...,
                },
                "examples": {
                    "example question": "example answer",
                    "example question": "example answer",
                    "example question": "example answer",
                    ...,
                },
                "historical_context": "this is some historical context",
            },
        },
        ...,
    }
}  # made by extracting a value from module level dictionary and assigning to a new key

“Templates/Refined Note Template” rendered with…

NOTE_LEVEL_DATA = {
    "summary": "this is a summary of the note",
    "content": {
        "definitions": {
            "some name": "some definition",
            "some name": "some definition",
            "some name": "some definition",
            ...,
        },
        "examples": {
            "example question": "example answer",
            "example question": "example answer",
            "example question": "example answer",
            ...,
        },
        "historical_context": "this is some historical context",
    },
}  # made by extracting from module level dictionary

“Templates/Flashcards Template” rendered with…

FLASHCARDS_LEVEL_DATA = {
    "flashcards": {
        "some front text": "some back text",
        "some front text": "some back text",
        ...,
    }
}  # made by simplifying notes

note: think about where to link to these - can always do note level and then combine them up for each level, maybe?

“Templates/Definition Template” rendered with…

DEFINITION_LEVEL_DATA = {
    "definition": "some definition",
}  # made by extracting a value from note level dictionary and assigning to a new key

note: ensure the name of any definitions starts with “Definition of ”

“Templates/Priming Note Template” and “Templates/Questioning Note Template” rendered with…

LECTURE_LEVEL_DATA = {
    "topics": [
        "some topic",
        "some other topic",
        "another topic",
        ...,
    ],
    "questions": {
        "is this a question?": "this is an answer.",
        "is this a question?": "this is an answer.",
        "is this a question?": "this is an answer.",
        ...,
    },
}  # made by extracting from module level dictionary

“Templates/Cheat Sheet Template” rendered with…

CHEATSHEET_LEVEL_DATA = {
    "module": {
        "info": {
            "coordinator": {
                "name": "some name",
                "email": "some email",
            },
            "name": {
                "short": "some module name",
                "long": "some module name with code",
                "formatted": "**some module code** some module name",
            },
            "components": {
                "coursework": {
                    "weight": 0.4,
                    "assignments": [
                        "Weekly Assignment 1",
                        "Weekly Assignment 2",
                        ...,
                    ],
                },
                "portfolio": {
                    "weight": 0.6,
                    "tests": [
                        "Mid-Term",
                        "Final",
                        ...
                    ],
                },
            },
            "outcomes": [
                "LO1",
                "LO2",
                ...,
            ],
        }
    },
    "cheatsheet": {
        "content": "..."
    }
}  # made by appending module info extracted from module level dictionary onto novel content based on existing module folder

note: re-think the design and modularity of the cheat sheet, maybe I can re-use more data.