---
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)