A shared notes app for Android, iOS and web: notes live in "spaces" shared with the people you live or travel with, plus a private area only you can see. Expo/React Native client on a serverless AWS backend defined entirely as code.
Build a real, production-shaped shared-notes product end to end: a cross-platform mobile client, a serverless API with proper authentication and authorisation, relational storage for sharing permissions, and the release, compliance and branding work needed to put it in front of real users. Version 1 is deliberately turn-based sharing (no live co-editing cursors).
The full app design is implemented on Android and backed by a live AWS backend: real sign-up/sign-in, spaces and private notes, invite-by-join-code, inline editing, checklists, profile photos, offline support with conflict detection, and an unseen-activity indicator, all stored in Postgres via a Lambda API. App and infrastructure live in private GitHub repos. A branded self-service password-reset page and a public coming-soon marketing page are both live on the product's own domain.
| Component | Role | Notes |
|---|---|---|
| Amazon Cognito | Sign-up, email verification, sign-in, password reset | Validated at the gateway, so the API never handles raw tokens |
| HTTP API Gateway + Lambda | REST API for spaces, notes, checklists, members, activity | Chosen over REST API Gateway for cost and built-in JWT auth |
| RDS Postgres | Notes, spaces, membership, activity log | Chosen over DynamoDB because sharing permissions are relational |
| S3 + CloudFront | Profile photos, password-reset page | Direct-to-S3 uploads via presigned URLs, with size and type enforced in the signature |
| VPC endpoint | Private access to Secrets Manager | No NAT gateway, keeping fixed monthly cost low |
| AWS CDK (TypeScript) | All of the above as infrastructure-as-code | Changes reviewed with cdk diff before deploy |