Oracle3
Open-source trading engine and MCP server for prediction markets. Fee-aware no-arbitrage trading across related contracts, live on Kalshi, Polymarket and Solana or on paper.
PriorityPay calculates your split the moment a deposit lands, showing exactly how much to send to retirement, savings, and taxes based on the percentages you set.
FinanceJavaScript · PLpgSQLGitHub @meganmahoney123OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
A real, deployable Next.js app: Supabase for auth + database, Plaid for
read-only bank account linking. PriorityPay calculates a percentage-based
split for every deposit and shows you a checklist of what to send where --
you complete every transfer yourself, in your own bank's app (that's
manual_approval mode, the default -- see lib/executionMode.js). Real
money movement via Dwolla exists in the codebase as an opt-in mode
(TRANSFER_EXECUTION_MODE=dwolla_auto) for later, but isn't required to run
or deploy the app today.Read the full README ↗A real, deployable Next.js app: Supabase for auth + database, Plaid for
read-only bank account linking. PriorityPay calculates a percentage-based
split for every deposit and shows you a checklist of what to send where --
you complete every transfer yourself, in your own bank's app (that's
manual_approval mode, the default -- see lib/executionMode.js). Real
money movement via Dwolla exists in the codebase as an opt-in mode
(TRANSFER_EXECUTION_MODE=dwolla_auto) for later, but isn't required to run
or deploy the app today. Runs in sandbox mode end-to-end for Plaid until
you're approved for Plaid production access (see "Going to production"
below) -- there's no real money at risk either way, since PriorityPay never
touches it regardless of Plaid's environment.
Verified to build clean (next build, no errors) before this was handed to
you.
New to this project? Start with
PROJECT_HANDOFF.mdfirst. This README covers how to run and deploy the app; PROJECT_HANDOFF.md covers the product model, the decisions behind it, and a list of specific gotchas that will otherwise cost you real debugging time.
Next.js App Router, deployed on Vercel. Supabase Auth handles sign-up/login;
Supabase Postgres (with row-level security) holds everything else. The
browser never talks to Plaid, Dwolla, or the database directly — every
sensitive action goes through a Next.js API route (app/api/**) running
server-side, where PLAID_SECRET, DWOLLA_SECRET, PLAID_TOKEN_ENCRYPTION_KEY,
and the Supabase service-role key actually live. See lib/supabaseServer.js
for why it's built this way, and lib/executionMode.js for the
manual-vs-automatic transfer switch mentioned above.
You'll need three free accounts to run the app as it actually works today. A fourth (Dwolla) is optional -- only needed if you plan to test or enable automatic transfer execution later.
prioritypay, set a database password (save it somewhere), pick
a region close to you.supabase/schema.sql from this repo → Run.Project URL → NEXT_PUBLIC_SUPABASE_URLanon public key → NEXT_PUBLIC_SUPABASE_ANON_KEYservice_role secret key → SUPABASE_SERVICE_ROLE_KEY (never expose this one to a browser)client_id → PLAID_CLIENT_IDSandbox secret → PLAID_SECRETPLAID_ENV=sandbox for now.Skip this entirely for now unless you specifically want to test automatic
transfer execution. The default manual_approval mode never calls Dwolla,
so DWOLLA_KEY/DWOLLA_SECRET can stay blank in .env.local and nothing
breaks (lib/dwolla.js builds its client lazily, only when actually
called).
If you do want to test it: go to
dashboard-sandbox.dwolla.com → sign
up for a sandbox account → Applications → default app → copy the Key
and Secret → DWOLLA_KEY / DWOLLA_SECRET → leave DWOLLA_ENV=sandbox →
set TRANSFER_EXECUTION_MODE=dwolla_auto. Note that identity verification
(collecting each user's SSN before Dwolla will move their money) was
removed from onboarding when manual-approval mode became the default --
re-adding that flow is required before dwolla_auto mode is usable with real
users, not just a config flip.
.env.example to .env.local and fill in every
value you collected above.openssl rand -hex 32 → PLAID_TOKEN_ENCRYPTION_KEY.npm install, then npm run dev, then open
http://localhost:3000.user_good,
password pass_good → Percentage Splits → Review) → land on the
Dashboard → seed a test deposit (see app/api/dev/seed-history for the
sandbox-only tooling that backfills realistic mock deposits) → check
Accounts or the Dashboard's "Transfers waiting on you" section for
the checklist PriorityPay generated. There's nothing to check in a
Dwolla dashboard -- nothing was sent anywhere, by design.If anything errors, the browser network tab + your terminal (npm run dev
logs) will show which API route failed and why — almost always a missing
or mistyped env var.
No GitHub repo needed for this — deploying straight from your machine via the Vercel CLI:
npm install -g vercel
vercel login
cd prioritypay-simple
vercel # first run: creates the project, links this folder to it
Then add every env var from .env.local to the Vercel project — either:
vercel env add PLAID_CLIENT_ID production (repeat per variable)Set NEXT_PUBLIC_APP_URL=https://prioritypay.co this time (not localhost).
Deploy for real:
vercel --prod
That gives you a live app on a *.vercel.app URL. Now point your domain at
it:
prioritypay.co.A
record to 76.76.21.21 and a CNAME for www, but use whatever Vercel
displays — it's specific to your setup).prioritypay.co is registered (GoDaddy, Namecheap,
Cloudflare, etc.), find DNS settings, add those records.prioritypay.co is now a real, working app — sign-up, bank linking, and split calculation all function end-to-end, using Plaid's sandbox (fake data, zero real money moved). You complete every transfer yourself; nothing here requires Dwolla to be configured at all.
Plaid production access is a coding-adjacent, not a coding, task:
Plaid — Dashboard → request Production access. You'll fill out a
company profile, a security questionnaire, and (as of this writing) a
Beneficial Owners section that needs a real person's information, not
something to fill in on someone else's behalf. Typically approved within a
couple of business days once submitted. Swap PLAID_ENV=sandbox →
production and the sandbox keys for production ones once approved.
PLAID_TOKEN_ENCRYPTION_KEY needs to be set in that environment too --
same key works fine, or generate a fresh one for production specifically.
Dwolla is not required to go live. The current product works and makes
money on real deposits without ever calling Dwolla, since manual_approval
mode is the default and PriorityPay never initiates a transfer. Only pursue
Dwolla production approval (registered legal business + EIN, Dwolla
Platform verification, and re-adding real identity verification to
onboarding) if and when you decide to build and ship automatic transfer
execution as a real feature -- treat it as a future project, not a launch
blocker.
Nothing else about the app changes for the Plaid cutover — same code, same database, just real credentials.
PROJECT_HANDOFF.md sections 4c and 5, and lib/tokenCrypto.js).lib/allocations.js and the same API routes is the natural path once
the web app is stable; budget real time for App Store / Play Store
review after that.Next.js 14 (App Router) · Supabase (Postgres + Auth) · Plaid · Dwolla (present in the codebase, inactive by default) · Stripe (billing) · Twilio (optional deposit SMS alerts) · Anthropic (optional Tax Strategy Advisor chat) · Tailwind · Recharts · lucide-react. No separate backend — API routes are the backend.