DEV Community

Cover image for Building Innward: A B2B Hospitality Operating System with Vercel and Amazon Aurora
Bizzi Cole87
Bizzi Cole87

Posted on

Building Innward: A B2B Hospitality Operating System with Vercel and Amazon Aurora

This blog post is created for the purposes of entering the Hack the Zero Stack with Vercel v0 and AWS Databases hackathon. #H0Hackathon


Building Innward: A B2B Hospitality Operating System with Vercel and Amazon Aurora

The 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.

The Vision: Moving Beyond the Spreadsheet

Hotel managers don't just need a place to store "Room 101: Occupied." They need to solve the "Hidden Math" of revenue management. This means:

  1. Relational Complexity: Linking dates, room groups, and individual stays.
  2. Dynamic Pricing: Deriving rates based on occupancy and logic-based rules.
  3. Market Intelligence: Real-time benchmarking against competitors.

The "Zero Stack": Vercel + Amazon Aurora

To handle this complexity, I chose Amazon Aurora PostgreSQL (Serverless v2).

Why Aurora for B2B?

In 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.

The Zero-Secret Architecture

One 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.

By 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.

// lib/db.ts snippet
const signer = new Signer({
  credentials: awsCredentialsProvider({
    roleArn: process.env.AWS_ROLE_ARN!,
    clientConfig: { region: process.env.AWS_REGION },
  }),
  region: process.env.AWS_REGION,
  hostname: process.env.PGHOST!,
  username: process.env.PGUSER || "postgres",
  port: 5432,
});

const pool = new Pool({
    password: () => signer.getAuthToken(),
    ssl: { rejectUnauthorized: false },
});
Enter fullscreen mode Exit fullscreen mode

Scaffolding with v0: Designing for Information Density

B2B users don't want "simple"—they want clarity. I used v0 to scaffold a high-information-density UI using Next.js 15 and Shadcn.

The Custom Gantt Grid

A 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.

Financial Volatility with Candlestick Charts

Innward 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.

Overcoming the "Serverless Ceiling"

During 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.

I 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.

B2B Granular IAM via JSONB

Security 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.

Building 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.


Check out the project: https://aurastay-pms-build-five.vercel.app/
Built with: Next.js 15, Vercel v0, Amazon Aurora PostgreSQL.

#H0Hackathon #Vercel #AWS #FullStack #NextJS #PostgreSQL

Top comments (0)