The smart contract is always the source of truth. The dashboard’s database is a convenience layer - it indexes on-chain data into Postgres for fast querying, but every action you take in the dashboard builds and submits a real Soroban transaction.
Authentication
There are no usernames, passwords, or email addresses. Your Stellar wallet address is your identity.- Visit dashboard.vowena.xyz
- Click Connect Wallet
- Approve the connection in your wallet extension
- You’re in
Freighter is the primary supported wallet. Other Stellar wallets that implement the standard wallet interface are also supported, but Freighter provides the best experience.
Two Experiences
The dashboard adapts based on what you do. Any wallet can act as both a merchant and a subscriber - there is no account type to choose.Merchant
Create subscription plans, monitor subscribers, view billing analytics, trigger charges, issue refunds, and configure auto-billing with the built-in keeper service.
Subscriber
View all your active subscriptions across every merchant in one place. Review billing history, handle plan migrations, and cancel subscriptions with a single click.
Tech Stack
Frontend
Next.js 16 with App Router, Tailwind CSS dark theme, React Query for data fetching, and Recharts for analytics visualizations.
Backend
Next.js API routes, Drizzle ORM with Postgres, event indexer service, and a keeper cron job for automated billing.
Blockchain
Freighter wallet integration, Soroban RPC for transaction submission, and SEP-41 token interactions for USDC.
Backend Services
The dashboard runs three backend services that keep the off-chain database in sync with on-chain state:Event Indexer
Event Indexer
A background service that continuously polls Soroban RPC for Vowena contract events. Every
PlanCreated, Subscribed, ChargeSucceeded, ChargeFailed, SubscriptionCancelled, and other event is parsed and written to Postgres. This is what powers instant queries - instead of making RPC calls for every page load, the dashboard reads from its local database.Keeper Service
Keeper Service
An automated cron job that calls
charge() for all subscriptions that are due. Merchants can enable or disable this per-plan from the dashboard. The keeper iterates through due subscriptions, builds charge transactions, signs them with the dashboard’s keeper key, and submits them to the network.Plan Metadata
Plan Metadata
Plans on-chain are identified by numeric IDs and contain only billing parameters. The dashboard stores additional off-chain metadata - human-readable plan names, descriptions, and branding - in Postgres. This metadata is optional and never touches the smart contract.
How Data Flows
Next Steps
Merchant Guide
Create your first plan, share it with subscribers, and set up automated billing.
Subscriber Guide
Manage all your subscriptions, review billing history, and handle migrations.
Keeper Setup
Configure the built-in keeper or run your own standalone billing bot.
Quickstart
Prefer code? Use the TypeScript SDK to integrate Vowena directly into your app.