🎒
In Development

CareReady

A serverless belongings checklist with no-login family access and share-code facility templates

🧑‍🤝‍🧑 For caregivers🏢 For care facilities🙂 For care recipients
PWAIndexedDBAWS LambdaDynamoDBAmazon CognitoAWS CDK

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.

It is honest about its scope: 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.

The repository is public — github.com/larai-w/careready-belongings-checker.