Skip to content
kkanda0Public

About

Usage-based smart parking with real-time sessions and RLUSD settlement on XRPL.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

39 Commits

Folders and files

Repository files navigation

PayPark

Pay for the parking you actually use.

PayPark is a real-time parking platform that replaces fixed parking blocks with usage-based sessions. Drivers can discover parking, start a session, track cost in real time, and settle payment using RLUSD on the XRP Ledger.

Built at Columbia DivHacks 2025.

πŸ† 3rd Place Overall
πŸ† Best Financial Hack β€” Capital One
πŸ† On-Chain Innovation β€” Ripple
πŸ† Most Popular Hack


Why PayPark?

Parking usually asks you to predict the future.

Pay for an hour and leave after 22 minutes? You overpaid.

Pay for 30 minutes and stay for 38? Now you are rushing back to a meter or risking a ticket.

PayPark changes the unit of parking from a prepaid block of time to a live session.

Start parking when you arrive. Stop when you leave. Pay for the time in between.


How It Works

  1. Find a parking location through the interactive TomTom map.
  2. Start a parking session and begin tracking elapsed time and cost.
  3. Monitor the session in real time as pricing updates.
  4. End the session when you leave.
  5. Settle the exact amount through RLUSD on the XRP Ledger.
  6. Review the transaction and session history from the application.

Demo

Add a GIF here showing the full flow:

Find spot β†’ Start session β†’ Live timer β†’ End session β†’ RLUSD payment

A short demo is much more useful here than several screenshots.


Architecture

                         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                         β”‚       PayPark Web       β”‚
                         β”‚    Next.js + React      β”‚
                         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                      β”‚
                         API + real-time events
                                      β”‚
                β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                β”‚               Express API                 β”‚
                β”‚                                           β”‚
                β”‚   Sessions β€’ Payments β€’ Wallet β€’ Maps     β”‚
                β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
                           β”‚            β”‚            β”‚
                           β”‚            β”‚            β”‚
                 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”  β”Œβ”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”  β”Œβ”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                 β”‚   Prisma    β”‚  β”‚  TomTom  β”‚  β”‚ XRP Ledger   β”‚
                 β”‚ Session DB  β”‚  β”‚ Maps API β”‚  β”‚   Testnet    β”‚
                 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
                                                       β”‚
                                                RLUSD settlement

PayPark separates application state from payment settlement. Parking sessions and application data are handled through the Express/Prisma backend, while RLUSD transfers are submitted and verified through the XRP Ledger testnet.


Engineering Highlights

Usage-Based Parking Sessions

Instead of purchasing a fixed block of parking time, PayPark models parking as a continuously running session.

Each session records:

  • start time
  • elapsed time
  • current cost
  • parking location
  • payment state
  • completion status

The interface updates as the session progresses, allowing the final charge to reflect the time actually used.


Real-Time State

PayPark uses Socket.io to keep parking-session information synchronized between the backend and frontend.

This allows changes such as session timing and parking state to appear without requiring a full-page refresh.


RLUSD Settlement on XRPL

Parking payments are settled using RLUSD on the XRP Ledger testnet.

The payment flow handles:

User wallet
    β”‚
    β”‚ RLUSD payment
    β–Ό
XRP Ledger
    β”‚
    β”‚ transaction confirmation
    β–Ό
PayPark
    β”‚
    └── session marked as paid

The application also manages XRPL trustlines and synchronizes wallet balances with ledger state.

PayPark currently uses XRPL Testnet. No real funds are involved.


Map-Based Parking Discovery

TomTom provides the geospatial layer for the application, allowing parking information to be presented directly within an interactive map rather than through a traditional list-based interface.

This creates a single flow from:

Discovery β†’ Parking β†’ Session β†’ Payment

Tech Stack

Frontend

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS

Backend

  • Node.js
  • Express.js
  • TypeScript
  • Prisma
  • SQLite

Real-Time

  • Socket.io

Payments

  • XRP Ledger
  • RLUSD
  • XRPL Testnet

Maps

  • TomTom Maps API

Repository Structure

PayPark/
β”œβ”€β”€ api/
β”‚   β”œβ”€β”€ prisma/
β”‚   └── src/
β”‚       β”œβ”€β”€ routes/
β”‚       └── index.ts
β”‚
β”œβ”€β”€ web/
β”‚   └── src/
β”‚       β”œβ”€β”€ app/
β”‚       β”œβ”€β”€ components/
β”‚       └── lib/
β”‚
β”œβ”€β”€ config/
β”‚   └── setup.sh
β”‚
β”œβ”€β”€ docs/
β”‚   β”œβ”€β”€ SETUP.md
β”‚   β”œβ”€β”€ SYSTEM_ARCHITECTURE.md
β”‚   β”œβ”€β”€ GENESIS_BANK_INFO.md
β”‚   └── TOMTOM_INTEGRATION.md
β”‚
β”œβ”€β”€ package.json
β”œβ”€β”€ pnpm-lock.yaml
└── pnpm-workspace.yaml

Running Locally

1. Clone the repository

git clone https://github.com/kkanda0/PayPark.git
cd PayPark

2. Install dependencies

pnpm install

3. Configure environment variables

cp api/.env.example api/.env

Add the required API and XRPL credentials to your local .env.

Never commit wallet secrets or API credentials.

4. Initialize Prisma

pnpm --filter api prisma generate
pnpm --filter api prisma migrate dev

5. Start PayPark

pnpm dev

The application runs locally with:

Web: http://localhost:3000
API: http://localhost:4000

Documentation

More detailed technical documentation lives in /docs:

  • SETUP.md β€” environment and installation instructions
  • SYSTEM_ARCHITECTURE.md β€” system and payment flow
  • GENESIS_BANK_INFO.md β€” RLUSD issuer architecture
  • TOMTOM_INTEGRATION.md β€” map integration
  • TESTING_INSTRUCTIONS.md β€” testing workflow

What We Learned

PayPark started with a simple question:

Why should parking require someone to guess how long they will stay?

Answering that meant connecting several systems that normally live separately: geospatial discovery, real-time application state, usage-based pricing, wallets, and blockchain settlement.

The most interesting challenge was not getting any one of those components working independently. It was making the transition between them feel like one product.


License

MIT

About

Usage-based smart parking with real-time sessions and RLUSD settlement on XRPL.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages