CareReady
Offline belongings checks for care transitions
When an older relative moves between care settings — a hospital admission, a short stay, a day-service morning — the family has to pack the right belongings, and forgetting one essential can derail the day. CareReady is a serverless PWA where a facility publishes a belongings template and the family redeems it on any browser to get a checklist that works offline and flips into a return-check at the end of the stay.
The family checklist is publicly accessible. The facility backend and administration flow exist, but the complete real-device staff-to-family workflow is still under bounded validation. CareReady is in development and not a medical device — it makes no clinical recommendations. The whole project is open source, backend tests and CDK infrastructure included.
Design constraint: no install, no login for families
The family side is a plain PWA — vanilla JS, a service worker, and IndexedDB. Once a template is redeemed it lives on the device, so the checklist works on the ward, in the car, anywhere with no signal. A dedicated return-check mode turns the same list around at the end of a stay to confirm nothing is left behind. No framework, no frontend build step, and no account for the family: the lowest-friction path is a deliberate product decision, because the person using it is often improvising during a hard transition — not sitting down to configure an app.
Architecture
Family (mobile PWA, IndexedDB) Facility staff (PC, /ready/admin/)
│ /ready/ │ sign-in
▼ ▼
AWS CloudFront ──▶ CloudFront Function (URL rewriter) ──▶ S3 (static PWA)
│
├─ POST /v1/templates/redeem (no auth) ──┐
│ ▼
└─ Staff: template CRUD + JWT ──▶ API Gateway (HTTP API)
│ Cognito JWT authorizer
▼
Lambda (Python 3.12, careready-api)
│
▼
DynamoDB (careready-main, single-table)
Auth: Amazon Cognito user pool (careready-facility) — staff only
IaC: AWS CDK v2 (Python), backend/infra/ · Region: ap-northeast-1
The share code is the whole trust model
Families never create an account. A facility publishes a belongings template and gets a 6-character share code; the family types that code and pulls the facility-specific list onto their phone. That single anonymous path — POST /v1/templates/redeem, no auth — is served by a DynamoDB global secondary index: the code lives in GSI1PK as CODE#<shareCode>, so one query resolves a code straight to its template without the family ever knowing (or needing) the facility ID. Staff writes go to the authenticated FAC#<facilityId> partition behind a Cognito JWT authorizer. The public read path and the private write path are the same single table, split by index — anonymous families and authenticated staff coexist without an account wall.
Codes exclude the ambiguous characters I, O, 0, and 1, because the person typing one is a stressed family member on a phone, not a developer.
Infrastructure as Code
The entire backend is provisioned with AWS CDK v2 in Python (backend/infra/) — nothing is clicked together in the console. A cdk synth produces the API Gateway HTTP API, the Python 3.12 Lambda (boto3 only, no bundled dependencies), the single DynamoDB table (on-demand billing, RemovalPolicy.RETAIN so data survives a stack teardown), and the Cognito user pool for facility staff.
Tech stack
| Layer | Choice |
|---|---|
| Frontend | Vanilla JS PWA · Service Worker · IndexedDB |
| Hosting | AWS S3 + CloudFront + CloudFront Functions |
| API | API Gateway HTTP API + Lambda (Python 3.12, boto3 only) |
| Database | DynamoDB single-table, on-demand, RemovalPolicy.RETAIN |
| Auth | Amazon Cognito user pool (staff only) |
| IaC | AWS CDK v2 (Python), backend/infra/ |
| CI/CD | GitHub Actions — headless-Chrome smoke test + S3 deploy |
Also a product-management portfolio
CareReady doubles as a working PM artifact — a real product taken from problem to deployed system, solo and AI-assisted, with the delivery discipline kept in public:
- Evidence-based delivery — features are gated on pilot evidence, and the write-ups are explicit about what is working versus not yet validated (the facility admin portal is still in progress).
- Stakeholder management — two users with conflicting needs: families who need zero-friction, no-login use, and facility staff who publish templates via a share code — served by one design without an account wall.
- Agile in practice — a live GitHub Project — CareReady Product Delivery, run as experiments, decisions, tasks and risks with a traceable Definition of Ready / Definition of Done, plus issues.
Tested
Backend tests run on pytest + moto (mocked DynamoDB): 9 cases covering the redeem happy path and 404, a full facility-template CRUD round-trip, input-validation limits (empty name, >200 items, item name >100 chars), and the facilityId fallback to the Cognito sub when the custom claim is absent. The frontend gets a syntax check and a headless-Chrome smoke test on every push via GitHub Actions.
FAQ
Does it work on a phone?
Yes. It runs in a mobile browser, and “Add to Home Screen” makes it open like an app (it is a PWA).
Does it work offline?
Yes. Once a list is on the device it runs locally, so you can keep checking on a ward or in the car where the signal is poor.
Does it cost anything?
No. The family checklist is free.
Do families need an account?
No. The family side works with no sign-up. Accounts exist only for facility staff who publish templates.
Are checks and photos sent anywhere?
No. Checks and photos stay on the device. The share button (link / LINE) sends the belongings list only — not the check state, and not the photos.
Can we import a list from a facility?
Yes. If the facility publishes a CareReady template, you can redeem it with a 6-character share code or a link, then add whatever else that person needs on top of the standard list.
Is there a check for the trip home?
Yes. After the stay the same list flips into return-check mode, so you can confirm that everything you packed came back.
Can it be used for medical or care decisions?
No. CareReady helps you record and organize belongings and everyday preparation — it is not a medical device. For medication and medical items, follow the facility’s instructions and the guidance of a doctor, pharmacist, or care professional.
How do I delete my data?
Records live on the device only. You can reset or delete them inside the app, and clearing your browser data removes them entirely.
The repository is public — github.com/larai-w/careready-belongings-checker.
