--- urn: "urn:penemure:4d9fe953-c4d9-43d5-ba27-d86bd7d0eefe" backend: "pub" ancestors: created: 2025-01-10 11:05:01.876954+00:00 updated: 2025-02-12 16:38:30.213353+00:00 tags: description: "Perhaps the worst project management system invented, besides the rest" cover: "urn:penemure:file:blob:bd386f34-9357-4a55-9c04-47fe2d484408.jpg" --- # 📁 Penemure # About ## Explicit Target Audience Academic weapons 🔪✨ ## User Stories - I want to quickly add a task to be categorised later, I should just be able to write the title and be done, no other information required. - I want to create a project - I want to track a project, split it into subprojects (maybe work packages) - Dates relative to project start must be supported, enabling design of hypothetical projects. - And those can become concrete once the project is concrete. - I want to start a timer when I start working, it should record what I'm working on, and which project/customer it was for. - ~~I want to share a grocery list with my partner~~ (perhaps an unnecessarily real-time use case) - I want to be able to model things that are relevant for me, a project just as well as e.g. a plant with metadata about watering frequency and planting season # Important Links - 📓 design docs - 📁 Penemure Development Blog ## Sub-projects ```query-cards GROUP SELECT urn, title_plain AS title, SUBSTRING(blurb, 1, 40) AS blurb, milestone FROM __all__ WHERE parents LIKE '%SELF%' AND type = 'project' ORDER BY type DESC, title_plain ASC ``` urn | title | blurb | milestone --- | ----- | ----- | --------- urn:penemure:d486ec0f-35f1-4ea4-b69a-47ae8987a3bd | 📁 Apps | Now that we've got this cute lil documen | urn:penemure:812c9278-578d-4d5f-92f7-a22dfcc644dc urn:penemure:c025dbb4-8ac2-4985-b348-0dff9b10619f | 📁 Editable Tables | We need editable tables, that's really a | urn:penemure:ede92e3f-06f4-40b7-91b0-5fc559982fe4 urn:penemure:008c42fb-e57d-434a-a20b-559f2d0cdb17 | 📁 External System Integration | The whole point of this system is not fo | urn:penemure:95d20f29-4fc7-4673-9a6c-c25bd7770955 | 📁 Federation | We are moving further and further toward | urn:penemure:812c9278-578d-4d5f-92f7-a22dfcc644dc urn:penemure:5ed982ec-804b-48d5-b3c6-d243db39739d | 📁 Forms | we'd like to have some support for two f | urn:penemure:ede92e3f-06f4-40b7-91b0-5fc559982fe4 urn:penemure:ba261586-817e-42a8-a279-946b74f35af4 | 📁 Note Logs | We need to track when changes happen to | urn:penemure:812c9278-578d-4d5f-92f7-a22dfcc644dc urn:penemure:f7a62731-57ba-43ad-a7ea-7e1d006ba05a | 📁 The Inbox | I want an inbox that i can review daily, | urn:penemure:90afa80f-85d8-4258-af18-687779a32f0a urn:penemure:c994628f-b5a3-4b51-99d0-7337a3b8da4c | 📁 Themes | I would like to be able to use different | urn:penemure:812c9278-578d-4d5f-92f7-a22dfcc644dc urn:penemure:c5a1ca49-89ae-479a-80a5-2752ae7c5552 | 📁 Time Logging | We want to replicate the important featu | urn:penemure:ede92e3f-06f4-40b7-91b0-5fc559982fe4 urn:penemure:1a15e5b4-27e2-447f-8df5-01732febecf7 | 📁 UX | - [x] auto create issue with parent + ba | urn:penemure:812c9278-578d-4d5f-92f7-a22dfcc644dc {: Title="None"} ## Milestones ```query-table SQL SELECT title, DATE(created) AS created FROM milestone WHERE type = 'milestone' AND parents LIKE '%SELF%' ``` title | created ----- | ------- ? 2.0 | 2025-02-06 ? 3.0 | 2025-02-26 ? 1.0 | 2025-02-03 {: Title="None"} ## TODO List ```query-kanban GROUP SELECT title, status FROM task WHERE ancestors LIKE '%SELF%' GROUP BY status ORDER BY title_plain ASC ``` title | status ----- | ------ 📝 A public issue | backlog 📝 Block Properties | backlog 📝 Link backend to the backend's "home" if it exists, in note metadata | backlog 📝 RSS | backlog 📝 Starting time logging from a page, default to that as the title. | backlog 📝 a second templated task | backlog 📝 customised manifest for form pages | backlog 📝 data logging | backlog 📝 duplicating turned URN refs into links properly | backlog 📝 edit title/project of older entries | backlog 📝 edit total time (updates end time.) rather than start/end | backlog 📝 hashtags? | backlog 📝 metadata for file uploads? | backlog 📝 persist start time of time logs when changed | backlog 📝 select tasks which changed from any State to completed within a specific time period | backlog {: Title="backlog"} title | status ----- | ------ 📝 Custom Emoji / Icons | Done 📝 Fix encoding of values into form | Done 📝 Prevent circular parenting | Done {: Title="Done"} title | status ----- | ------ 📝 Get it Working | in-progress 📝 block transclude and search | in-progress 📝 need to redo attachments now | in-progress 📝 tags needs to be completely redone (again) | in-progress {: Title="in-progress"} title | status ----- | ------ 📝 Git based Overlay Filesystem | done 📝 Issue with Status Field | done 📝 Manifest.json | done 📝 Mentions | done 📝 Templates | done 📝 a templated task | done 📝 add function/flag to determine if a grouped result set is empty | done 📝 fix night mode colours on gantt | done 📝 select text + auto-create issues from it | done {: Title="done"} title | status ----- | ------ 📝 If no blocks, auto open children | Backlog 📝 What I'm doing automation | Backlog 📝 add stars/fav/bookmarks | Backlog 📝 attachments deleted when editing | Backlog 📝 separate template tags and regular ones | Backlog {: Title="Backlog"} title | status ----- | ------ 📝 Logging: auto-save title + body field too | 📝 Logging: changing the title doesn't get saved | 📝 log time should order by end time not update time | 📝 maybe do not allow selection of backend for logging time, superfluous, based on project only. | {: Title=""} ```query-table GROUP SELECT title, type, backend FROM __all__ WHERE ancestors LIKE '%SELF%' GROUP BY type ORDER BY type ASC, title_plain ASC ``` title | type | backend ----- | ---- | ------- ⏰ Authentication | log | pub ⏰ Bootstrap | log | pub ⏰ CSV querying | log | pub ⏰ Cleanups | log | pub ⏰ Fixing tags further | log | pub ⏰ Forms | log | pub ⏰ Improving sync interface | log | pub ⏰ Misc other attachment stuff | log | pub ⏰ Print mode | log | pub ⏰ RSS Feeds | log | pub ⏰ Reworking tags again | log | pub ⏰ Updating the time logging implementation | log | pub ⏰ Worked a bit | log | pub ⏰ Working on the project manager | log | pub ⏰ fixing ancestors | log | pub ⏰ imageproxy | log | pub ⏰ implementation | log | pub ⏰ migration to v2 | log | pub ⏰ progress on editable tables | log | pub {: Title="log"} title | type | backend ----- | ---- | ------- ? 1.0 | milestone | pub ? 2.0 | milestone | pub ? 3.0 | milestone | pub {: Title="milestone"} title | type | backend ----- | ---- | ------- 📓 Database | note | pub 📓 Notion Data Model Comparison | note | pub 📓 Notion Databases | note | pub 📓 Review of Initial Goals | note | pub 📓 SQLish | note | pub 📓 Scripting language for forms? | note | pub 📓 Sync | note | pub 📓 Tags | note | pub 📓 Temporality | note | pub 📓 Thoughts on "Separation of Concerns" | note | pub 📓 Use git trailers? | note | pub 📓 blocks or markdown | note | pub 📓 design docs | note | pub 📓 markdown testing | note | pub 📓 motivation | note | pub 📓 parent vs project | note | pub 📓 pm links | note | pub 📓 tasks & bugs | note | pub 📓 testing @ | note | pub {: Title="note"} title | type | backend ----- | ---- | ------- 📁 Apps | project | pub 📁 Editable Tables | project | pub 📁 External System Integration | project | pub 📁 Federation | project | pub 📁 Forms | project | pub 📁 Note Logs | project | pub 📁 The Inbox | project | pub 📁 Themes | project | pub 📁 Time Logging | project | pub 📁 UX | project | pub {: Title="project"} title | type | backend ----- | ---- | ------- 📝 A public issue | task | pub 📝 Block Properties | task | pub 📝 Custom Emoji / Icons | task | pub 📝 Fix encoding of values into form | task | pub 📝 Get it Working | task | pub 📝 Git based Overlay Filesystem | task | pub 📝 If no blocks, auto open children | task | pub 📝 Issue with Status Field | task | pub 📝 Link backend to the backend's "home" if it exists, in note metadata | task | pub 📝 Logging: auto-save title + body field too | task | pub 📝 Logging: changing the title doesn't get saved | task | pub 📝 Manifest.json | task | pub 📝 Mentions | task | pub 📝 Prevent circular parenting | task | pub 📝 RSS | task | pub 📝 Starting time logging from a page, default to that as the title. | task | pub 📝 Templates | task | pub 📝 What I'm doing automation | task | pub 📝 a second templated task | task | pub 📝 a templated task | task | pub 📝 add function/flag to determine if a grouped result set is empty | task | pub 📝 add stars/fav/bookmarks | task | pub 📝 attachments deleted when editing | task | pub 📝 block transclude and search | task | pub 📝 customised manifest for form pages | task | pub 📝 data logging | task | pub 📝 duplicating turned URN refs into links properly | task | pub 📝 edit title/project of older entries | task | pub 📝 edit total time (updates end time.) rather than start/end | task | pub 📝 fix night mode colours on gantt | task | pub 📝 hashtags? | task | pub 📝 log time should order by end time not update time | task | pub 📝 maybe do not allow selection of backend for logging time, superfluous, based on project only. | task | pub 📝 metadata for file uploads? | task | pub 📝 need to redo attachments now | task | pub 📝 persist start time of time logs when changed | task | pub 📝 select tasks which changed from any State to completed within a specific time period | task | pub 📝 select text + auto-create issues from it | task | pub 📝 separate template tags and regular ones | task | pub 📝 tags needs to be completely redone (again) | task | pub {: Title="task"} ## Work Log ```chart-gantt GROUP SELECT title_plain AS title, url, start_date AS time_start, end_date AS time_end, parent_first_title FROM log WHERE ancestors LIKE '%SELF%' AND start_date <> '' AND end_date <> '' GROUP BY parent_first_title ``` title | url | time_start | time_end | parent_first_title ----- | --- | ---------- | -------- | ------------------ ⏰ migration to v2 | /penemure/note/a792f523-3e8d-457d-b236-68cbb911ab77.html | 1740571200.0 | 1740578289.0 | Tags ⏰ Reworking tags again | /penemure/note/281efdb6-eae5-4d4b-b344-6ee0bd442797.html | 1740385800.0 | 1740397380.0 | Tags {: Title="Tags"} title | url | time_start | time_end | parent_first_title ----- | --- | ---------- | -------- | ------------------ ⏰ imageproxy | /penemure/note/2d7d8c59-a6a3-449b-8972-729608b28b83.html | 1740236400.0 | 1740239959.0 | Penemure ⏰ fixing ancestors | /penemure/note/1b53cb53-9c8d-468b-b8fb-225377642511.html | 1738317600.0 | 1738327429.0 | Penemure ⏰ Updating the time logging implementation | /penemure/note/5142f73a-26dd-44c0-85d9-b00874d1dadc.html | 1738139040.0 | 1738140900.0 | Penemure ⏰ Worked a bit | /penemure/note/adbda034-eb22-4827-a8c3-a83a2cf546be.html | 1738137600.0 | 1738138803.0 | Penemure ⏰ Authentication | /penemure/note/58a10360-5708-4d4b-88fe-1d671816b29a.html | 1739530800.0 | 1739538000.0 | Penemure ⏰ Fixing tags further | /penemure/note/38c325c1-8580-49b6-8985-3b8bca4733f5.html | 1740641400.0 | 1740648786.0 | Penemure ⏰ Cleanups | /penemure/note/d48d4f3b-5e5b-45f9-aab8-a9bb2934cc36.html | 1738857600.0 | 1738864800.0 | Penemure ⏰ CSV querying | /penemure/note/63c06e06-676d-4d47-bbc2-9f7f154af81e.html | 1739538000.0 | 1739540611.0 | Penemure ⏰ Print mode | /penemure/note/298d7ff5-8935-4c49-a6f7-a2bd109587dc.html | 1739800800.0 | 1739807697.0 | Penemure ⏰ Working on the project manager | /penemure/note/e2d849bc-e720-4489-82b6-c5d3a22d9b98.html | 1736940600.0 | 1736951400.0 | Penemure {: Title="Penemure"} title | url | time_start | time_end | parent_first_title ----- | --- | ---------- | -------- | ------------------ ⏰ implementation | /penemure/note/dc12ed6d-470b-45f0-a123-700df457e547.html | 1738575180.0 | 1738578962.0 | select text + auto-create issues from it {: Title="select text + auto-create issues from it"} title | url | time_start | time_end | parent_first_title ----- | --- | ---------- | -------- | ------------------ ⏰ RSS Feeds | /penemure/note/a1a7fb49-463a-4f67-84e2-cd3522e476a1.html | 1740398270.0 | 1740405970.0 | Apps {: Title="Apps"} title | url | time_start | time_end | parent_first_title ----- | --- | ---------- | -------- | ------------------ ⏰ Misc other attachment stuff | /penemure/note/4dbeeafe-7fc2-42be-9e19-4d5dc4fb1d73.html | 1739198400.0 | 1739201297.0 | need to redo attachments now {: Title="need to redo attachments now"} title | url | time_start | time_end | parent_first_title ----- | --- | ---------- | -------- | ------------------ ⏰ progress on editable tables | /penemure/note/bc71f53c-8c6b-4e26-855d-9e8143e9b899.html | 1738568581.0 | 1738575197.0 | Editable Tables {: Title="Editable Tables"} title | url | time_start | time_end | parent_first_title ----- | --- | ---------- | -------- | ------------------ ⏰ Forms | /penemure/note/3e558696-8f15-42e4-81bb-7659abe52b01.html | 1739174400.0 | 1739191305.0 | Forms {: Title="Forms"} title | url | time_start | time_end | parent_first_title ----- | --- | ---------- | -------- | ------------------ ⏰ Bootstrap | /penemure/note/446b076a-0e96-42a3-b216-fa1c1e7cd776.html | 1739201387.0 | 1739210632.0 | Themes {: Title="Themes"} title | url | time_start | time_end | parent_first_title ----- | --- | ---------- | -------- | ------------------ ⏰ Improving sync interface | /penemure/note/5b532244-7fb7-46eb-9ea5-e8034e61ac5d.html | 1739286000.0 | 1739291052.0 | Sync {: Title="Sync"} ```chart-bar SQL SELECT SUBSTRING(parent_first_title, 1, 12) AS "Project Title", ROUND(( JULIANDAY(end_date) - JULIANDAY(start_date) ) * 24, 2) AS "Duration (Hours)" FROM log WHERE start_date <> '' AND end_date <> '' AND ancestors LIKE '%SELF%' GROUP BY parent_first_title ORDER BY "Duration (Hours)" DESC ``` "Project Title" | "Duration (Hours)" --------------- | ------------------ select text | None need to redo | None Themes | None Tags | None Sync | None Penemure | None Forms | None Editable Tab | None Apps | None {: Title="None"} ### Attachments ('cover.jpg', urn:penemure:file:blob:bd386f34-9357-4a55-9c04-47fe2d484408.jpg)