{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreic22oj3dhsykl6mztmxh4xca6d6r534jk3n3dfdohizdpo7ztbhei",
"uri": "at://did:plc:25rdn5elo5izoxrmtis34zuk/app.bsky.feed.post/3mphi2gfuo562"
},
"coverImage": {
"$type": "blob",
"ref": {
"$link": "bafkreicie2s64vhztwrxyh6z74ehit67mgyak7c5tlwaysmieuiezubwze"
},
"mimeType": "image/webp",
"size": 172102
},
"path": "/bizzi_cole87_26ec228487d6/building-innward-a-b2b-hospitality-operating-system-with-vercel-and-amazon-aurora-1fec",
"publishedAt": "2026-06-29T21:35:24.000Z",
"site": "https://dev.to",
"tags": [
"aws",
"nextjs",
"aurora",
"Hack the Zero Stack with Vercel v0 and AWS Databases",
"https://aurastay-pms-build-five.vercel.app/",
"@aws-sdk"
],
"textContent": "This blog post is created for the purposes of entering the **Hack the Zero Stack with Vercel v0 and AWS Databases** hackathon. #H0Hackathon\n\n# Building Innward: A B2B Hospitality Operating System with Vercel and Amazon Aurora\n\nThe hospitality industry is notorious for relying on \"legacy\" software—clunky, slow, and disconnected. For the **Hack the Zero Stack** hackathon, I set out to build **Innward** , a modern, AI-ready Property Management System (PMS) that proves you can build enterprise-grade B2B tools in record time using Vercel v0 and AWS Databases.\n\n## The Vision: Moving Beyond the Spreadsheet\n\nHotel managers don't just need a place to store \"Room 101: Occupied.\" They need to solve the **\"Hidden Math\"** of revenue management. This means:\n\n 1. **Relational Complexity:** Linking dates, room groups, and individual stays.\n 2. **Dynamic Pricing:** Deriving rates based on occupancy and logic-based rules.\n 3. **Market Intelligence:** Real-time benchmarking against competitors.\n\n\n\n## The \"Zero Stack\": Vercel + Amazon Aurora\n\nTo handle this complexity, I chose **Amazon Aurora PostgreSQL (Serverless v2)**.\n\n### Why Aurora for B2B?\n\nIn a B2B SaaS environment, data isolation and relational integrity are non-negotiable. Aurora provided the robust relational power needed to join complex pricing tables while scaling automatically as more hotels (tenants) join the platform.\n\n### The Zero-Secret Architecture\n\nOne of the most rewarding parts of this build was implementing the **AWS RDS Signer**. Following the \"Zero Stack\" philosophy, I moved away from static database passwords. Innward uses IAM-based authentication to communicate between Vercel and AWS.\n\nBy utilizing the `@aws-sdk/rds-signer`, the application generates short-lived tokens on the fly. This means even if an environment variable were leaked, the database remains locked tight.\n\n\n\n // lib/db.ts snippet\n const signer = new Signer({\n credentials: awsCredentialsProvider({\n roleArn: process.env.AWS_ROLE_ARN!,\n clientConfig: { region: process.env.AWS_REGION },\n }),\n region: process.env.AWS_REGION,\n hostname: process.env.PGHOST!,\n username: process.env.PGUSER || \"postgres\",\n port: 5432,\n });\n\n const pool = new Pool({\n password: () => signer.getAuthToken(),\n ssl: { rejectUnauthorized: false },\n });\n\n\n## Scaffolding with v0: Designing for Information Density\n\nB2B users don't want \"simple\"—they want **clarity**. I used **v0** to scaffold a high-information-density UI using Next.js 15 and Shadcn.\n\n### The Custom Gantt Grid\n\nA highlight of the project is the **Reservation Timeline**. Most calendar libraries fail at showing \"Half-Day\" turnovers (where one guest leaves at 11 AM and another arrives at 3 PM). I used v0 to build a custom CSS Grid implementation with horizontal insets, accurately reflecting the physical reality of hotel room turnovers.\n\n### Financial Volatility with Candlestick Charts\n\nInnward includes a background worker built with **Playwright** that scrapes competitor rates. I visualized this data using **Recharts Candlestick components**. This gives revenue managers a \"Volatility Pulse,\" showing the spread between the cheapest and most expensive rooms in their city.\n\n## Overcoming the \"Serverless Ceiling\"\n\nDuring development, I hit a major hurdle: the **Vercel 300s timeout**. Scraping market data for multiple cities across a 14-day window was a heavy task.\n\nI solved this by building a **\"Timeout-Aware\" algorithm**. The sync loop monitors its own execution time. If it reaches 280 seconds, it stops gracefully, saves a \"checkpoint\" to Aurora, and returns a partial success response. The next Vercel Cron run simply picks up where it left off.\n\n## B2B Granular IAM via JSONB\n\nSecurity is the heart of B2B software. I leveraged PostgreSQL’s **JSONB** capabilities to store a map of 15+ granular permission keys per staff member. This allowed for a highly flexible \"Manage Access\" UI where hotel owners can toggle specific permissions (like `revenue.kpis` or `stays.check_in`) without needing a new database column for every feature.\n\nBuilding with the Zero Stack has been an eye-opener. The speed of Vercel combined with the enterprise reliability of AWS Databases allowed me to focus 100% on solving the business logic of hospitality.\n\n**Check out the project:** https://aurastay-pms-build-five.vercel.app/\n**Built with:** Next.js 15, Vercel v0, Amazon Aurora PostgreSQL.\n\n#H0Hackathon #Vercel #AWS #FullStack #NextJS #PostgreSQL",
"title": "Building Innward: A B2B Hospitality Operating System with Vercel and Amazon Aurora"
}