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

> Source: <https://dev.to/bizzi_cole87_26ec228487d6/building-innward-a-b2b-hospitality-operating-system-with-vercel-and-amazon-aurora-1fec>
> Published: 2026-06-29 21:35:24+00:00

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

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.

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:

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

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.

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.

``` js
// 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 },
});
```

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.

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.

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.

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.

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://devpost.com/software/innward-property-management-system](https://devpost.com/software/innward-property-management-system)

**Built with:** Next.js 15, Vercel v0, Amazon Aurora PostgreSQL.
