Modeling a Creator SaaS in a Single DynamoDB Table A developer built Truss, a B2C SaaS for content creators, using a single DynamoDB table to model six entities including users, videos, clips, streams, analytics, and platform tokens. The single-table design was chosen over a relational database because the dominant read pattern is partition-scoped, DynamoDB's HTTP API fits serverless compute better than connection-pooled databases, and on-demand capacity scales to zero for a hackathon-born product. The schema uses a partition key of CREATOR# and sort keys with entity prefixes, enabling queries via begins_with without secondary indexes, though hot partitions and lack of ad-hoc querying are acknowledged trade-offs. Submitted to the AWS H0 Hackathon — Vercel v0 + AWS Databases track. H0Hackathon Truss is a B2C SaaS for content creators. You upload a video or connect a live stream, and Truss uses Gemini to extract the highest-engagement moments, scores each for virality, and publishes 9:16 vertical clips across YouTube, TikTok, Twitch, and Discord. The data model behind this sounds deceptively simple: users, videos, clips, streams, analytics, platform tokens. Six entities. But the access patterns are what matter — and they pushed me toward a single-table DynamoDB design over a relational database in ways I didn't fully anticipate when I started. The first question I get is always: why not just use a relational database? Three reasons shaped this decision. 1. The dominant read pattern is partition-scoped. Almost every page in this app asks the same question: "Give me everything for user X, filtered by entity type." Dashboard needs recent assets and analytics. Clips page needs clips. Streams page needs streams. In SQL, that's joins or multiple round-trips. In DynamoDB with a single-table design, it's one Query call per page — no joins, no N+1 problems. 2. Serverless + connection pools don't mix well. Vercel functions are stateless and short-lived. Every cold start to a Postgres database burns 30–80ms negotiating a connection before the first query runs. DynamoDB's HTTP API is connectionless by design — it's a natural fit for serverless compute. 3. On-demand capacity. At launch, I have no idea how many creators will sign up. DynamoDB on-demand scales to zero no idle cost and scales up with zero capacity planning. For a hackathon-born product, that's the right default. Everything lives in one DynamoDB table. Partition key: PK String . Sort key: SK String . PK SK Entity ───────────────────── ────────────────────────── ────────────────── CREATOR