feat: add child actions menu and achievements feature design
Chore App Build, Test, and Push Docker Images / build-and-push (push) Successful in 4m51s

- Introduced a new feature specification for displaying a menu with actions (Award Certificate, Award Badge) when a child's card is clicked in ParentView.
- Created a detailed plan for an achievements system, outlining phases for implementation, including achievement taxonomy, MVP set, and UX considerations.
- Added a template for future feature specifications to standardize documentation.
This commit is contained in:
2026-07-12 18:52:59 -04:00
parent 06d17e3d34
commit 7f0326eff1
51 changed files with 419 additions and 20 deletions
+6 -6
View File
@@ -2,20 +2,20 @@
"cookies": [
{
"name": "refresh_token",
"value": "reYniSI2OIXUAcXkeBNTaaOD7MJOzNEhwxwSDO42bew",
"value": "G_lq6dT7MCHBDgoW18PimjumaPeyWi7hRSwj2WKA_JI",
"domain": "localhost",
"path": "/api/auth",
"expires": 1787504746.987795,
"expires": 1791672153.30646,
"httpOnly": true,
"secure": true,
"sameSite": "Strict"
},
{
"name": "access_token",
"value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImUyZS1jY0B0ZXN0LmNvbSIsInVzZXJfaWQiOiJhNDQyY2E4Ni1lNGIzLTRjZjEtYThmYS0zNWJmYmZhNzk5NjYiLCJ0b2tlbl92ZXJzaW9uIjowLCJleHAiOjE3Nzk3Mzk1NDZ9.3zqjc9RdG9jpr5wbmhbqYUCvzxUl9d8tcc4EY1-BYJc",
"value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImUyZS1jY0B0ZXN0LmNvbSIsInVzZXJfaWQiOiJkMWU3MzM3OC04N2I4LTQ2ZjQtYmE2ZC1hMDdhYjE0YjFkOWUiLCJ0b2tlbl92ZXJzaW9uIjowLCJleHAiOjE3ODM5MDY5NTN9.9GiSopufAFJ7qa9Cu0AhYpUDfempiYayhLaYIA_IoSc",
"domain": "localhost",
"path": "/",
"expires": 1779739546.987748,
"expires": 1783906953.306413,
"httpOnly": true,
"secure": true,
"sameSite": "Lax"
@@ -27,11 +27,11 @@
"localStorage": [
{
"name": "authSyncEvent",
"value": "{\"type\":\"logout\",\"at\":1779728746835}"
"value": "{\"type\":\"logout\",\"at\":1783896153166}"
},
{
"name": "parentAuth",
"value": "{\"expiresAt\":1779901547148}"
"value": "{\"expiresAt\":1784068953466}"
}
]
}
+6 -6
View File
@@ -2,20 +2,20 @@
"cookies": [
{
"name": "refresh_token",
"value": "DlW9UoiIvVxuPPp3wfo3qsVP5tlO2Iw2e8TZThWeMDw",
"value": "fgz_j-G_5UJ-xLf2dJBqcrtiWJkC3amMr8Y90dx_Kdo",
"domain": "localhost",
"path": "/api/auth",
"expires": 1787504746.877459,
"expires": 1791672153.435032,
"httpOnly": true,
"secure": true,
"sameSite": "Strict"
},
{
"name": "access_token",
"value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImUyZS1kZWxldGVAdGVzdC5jb20iLCJ1c2VyX2lkIjoiM2E3ZDA3NjYtYTQyNy00NTQ5LWE0NGEtMWU0ZjUwOGRhZDBhIiwidG9rZW5fdmVyc2lvbiI6MCwiZXhwIjoxNzc5NzM5NTQ2fQ.jFLpGeJBM7U-x-N1jT-muHjBStXFyeb5oQS0LryWwr0",
"value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImUyZS1kZWxldGVAdGVzdC5jb20iLCJ1c2VyX2lkIjoiYjExZTViNzItNGJlOC00YmY1LTk0ODYtMjE2Nzc5ZGU4Y2ViIiwidG9rZW5fdmVyc2lvbiI6MCwiZXhwIjoxNzgzOTA2OTUzfQ.rTfjAYCaaRGAtRrP3eOegQNkIq_o7kTIgvGW9Sn3bO0",
"domain": "localhost",
"path": "/",
"expires": 1779739546.877411,
"expires": 1783906953.43499,
"httpOnly": true,
"secure": true,
"sameSite": "Lax"
@@ -27,11 +27,11 @@
"localStorage": [
{
"name": "authSyncEvent",
"value": "{\"type\":\"logout\",\"at\":1779728746722}"
"value": "{\"type\":\"logout\",\"at\":1783896153271}"
},
{
"name": "parentAuth",
"value": "{\"expiresAt\":1779901547028}"
"value": "{\"expiresAt\":1784068953610}"
}
]
}
+6 -6
View File
@@ -2,20 +2,20 @@
"cookies": [
{
"name": "refresh_token",
"value": "Xz4WQkQNdryfFsS3GaA09dGDz3yEaRwHxF2VdIh8LwQ",
"value": "5-wHHNkUIcILfUZqXFDTiggTIE4F_rhifieI07DQ6WQ",
"domain": "localhost",
"path": "/api/auth",
"expires": 1787504745.201123,
"expires": 1791672151.681425,
"httpOnly": true,
"secure": true,
"sameSite": "Strict"
},
{
"name": "access_token",
"value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImUyZUB0ZXN0LmNvbSIsInVzZXJfaWQiOiJhMWVlZGNkOC1hMGE0LTQyYjMtOWU3ZC01MWRmNGM1ZTFiNTUiLCJ0b2tlbl92ZXJzaW9uIjowLCJleHAiOjE3Nzk3Mzk1NDV9.Q2q-xiDjAw8pu3t8ioaawUpGK1__5wBiPZ-vFvXHnmw",
"value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImUyZUB0ZXN0LmNvbSIsInVzZXJfaWQiOiIyNTgxZmQwOS05OTMxLTQ3ZTctYmRkYi00MjEwZmQxM2U1MDkiLCJ0b2tlbl92ZXJzaW9uIjowLCJleHAiOjE3ODM5MDY5NTF9.8qvDLe203vx2YOUnzAoOmBDcT6uov4HhsM5o00UseMg",
"domain": "localhost",
"path": "/",
"expires": 1779739545.201078,
"expires": 1783906951.68138,
"httpOnly": true,
"secure": true,
"sameSite": "Lax"
@@ -27,11 +27,11 @@
"localStorage": [
{
"name": "authSyncEvent",
"value": "{\"type\":\"logout\",\"at\":1779728745058}"
"value": "{\"type\":\"logout\",\"at\":1783896151561}"
},
{
"name": "parentAuth",
"value": "{\"expiresAt\":1779901545328}"
"value": "{\"expiresAt\":1784068951811}"
}
]
}
+63 -2
View File
@@ -1,4 +1,65 @@
{
"status": "passed",
"failedTests": []
"status": "failed",
"failedTests": [
"ef79c4d59112f5749637-c6693163663a7bc4af47",
"3949411e68481643919b-e327f34655d14e94d19b",
"fec17c26f90fca53cae9-b0219eaf807eb93484de",
"539fbf55106c07a0b0af-4dbe4ab6bd5b824248fe",
"a0ff00fe9db1b94ee976-70bd0af5bd4dc0fc90f8",
"60daab3ab23c5105aded-4ff2d3abc6221e754043",
"573422bc1cb767632e56-3b881fd32c8dca14d993",
"a0ede9b164ff4874e0ea-1430723f42605dce5096",
"73e956d909565ee0ca8d-2027a05776ace22fcea7",
"7aed7c2f6df74087d7cf-768260ba8f7794e89556",
"f29a758461fac766bf43-480f0ca0072bcc8fb76f",
"fee2e0be313c94e5185c-2badde8a28abc5c92483",
"09d158a9a9fa648fe02b-834e154496de68909d7e",
"57f43742bac53b67778c-267067f10b8182dd62d2",
"d687e3783b3095baa295-34bf92454984a3e87508",
"af256c240cf1a2fb3f6b-194c319d22a4af671ff8",
"c71403f444e9a906f110-e6ecd6bb63b4ec5a5a25",
"d6f8839cd56b790be4c0-34272e575f57bb690613",
"252e6efd0a4ebdeaacb8-a975d50326943969dc39",
"b3bc53914d8153862f2d-cf454c9d14c4d890a799",
"0445e4f0b57f766a6451-f4a2bd69ecb1b7eff202",
"1aca78671e91610cfc9f-6588e52abfbc15f784e0",
"b774d3e2b6f2ab46c8be-712d31bbc4fd0bd84af0",
"cce20a13127be7ea2249-a1e21277b88115dec270",
"03642ed65289ed2617e8-8509dd8e7ffa8afb8dd4",
"5a9cc0eb7bb05d0304c1-ccef440cfe201a210d22",
"f962074ab28ffe10b237-ea88306db2c45f2140d7",
"6c63717f825d79d1f694-1c19b7cf35610bc938bd",
"b9f570289262774d1452-2cea4ebc13e842e0985f",
"198b299b4340f34d5cd8-1382ca783eb1a0df2f90",
"2fc044a25384fd9f0d2e-e5dc2182f906ab69b27e",
"1fe10bf5a089bf03c3d4-54a8b73063048512c9a8",
"88fb6b12140d9598bca5-63e11902b68d2508ccd1",
"9196a99e5e3448680c82-30e720656820ccdbdae8",
"4cf8bbd68887cddb5d7d-8ae6e42f7fc7d3fa7e6a",
"5da8774fa40a8b041983-096e580bb83c023e014d",
"f023cabcfbd72e9c251e-766e068ad9eb2a388263",
"29cf2a7310bfafff8608-9edd7583e0e756876a86",
"d8a456b031baa1625a54-0c1555e61dea4396c276",
"abb177b0248c39107c83-969aa0015db0fc99d5ee",
"0d5d17a469d01de6a6b0-65be18163a6824f56957",
"0d5d17a469d01de6a6b0-69e9aaee75fe0e476257",
"0d5d17a469d01de6a6b0-98cb437eec17db3eeb0d",
"0d5d17a469d01de6a6b0-211b11979089425fba87",
"0d5d17a469d01de6a6b0-cb56e46a1465364b8983",
"0d5d17a469d01de6a6b0-5787b1c19c5c3b93cbb4",
"22fbaea7d0c75fbdca8e-4aaa785e7a4dfdc6c43a",
"d450fb075a7292ee9d55-51b084418c21b19c1e90",
"367d416bc67f2212f2ea-d7b6f60f5a9c28db1e79",
"e7caec8f355ec9da3afb-126bac0fba5fb25bb468",
"68f4a83ea53b695d9889-c260f9d095c72937b8d6",
"4a81e53ab660f2d9ca43-237bf2b7adc9bcde6cd8",
"4a81e53ab660f2d9ca43-d60881fdd2c89e327569",
"4a524ee12c5a95d8b699-fa48b54e49f31839e5a8",
"f7f03fab22cee8cdd386-53724737f77985005257",
"f7f03fab22cee8cdd386-9e5db08c6f11001430bf",
"05c60e5489894b04b806-a583933cd36dbec0fbc8",
"1aeb41645bc07733ddab-0bfabbf02a8ee16b1c21",
"1aeb41645bc07733ddab-63443be391ff2e2e6a9a",
"cc1bb6b0a79d3836a965-6ecd8fb21115aebcda0d"
]
}