Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Moni-lite

Moni-lite is a small internal service where a user holds a USDC balance and can send USDC to another address. For context: Moni is a crypto-native payments app for Latin America, and USDC is a dollar-pegged stablecoin (1 USDC is worth roughly 1 US dollar). It runs on Base, an Ethereum Layer 2 network. This app reads a user's balance from the chain and sends USDC from a wallet the user connects in the browser.

It is a small pnpm monorepo with two packages:

  • packages/web — the Next.js client (wallet connection, balance card, send form).
  • packages/server — a Hono API on Node that reads balances from the chain and records sends.

The browser talks to the server over HTTP; the server reads from the chain and persists to a local SQLite database.

Tech stack

  • Next.js (App Router) with TypeScript for the web client
  • Hono on Node for the API server
  • wagmi + viem + Coinbase Wallet for wallet connection and client-side signing
  • Drizzle + SQLite for local persistence
  • Zod for input validation
  • Tailwind for styling

Local setup

Requires Node 22+ and pnpm.

cp packages/web/.env.example packages/web/.env.local
cp packages/server/.env.example packages/server/.env
pnpm install
pnpm dev

pnpm dev starts both packages in parallel:

Then open http://localhost:3000.

Connect your own wallet on Base Sepolia (e.g. Coinbase Wallet). At the start of the session, share your wallet address with your interviewer and they'll send you test USDC to work with.

Your task

This is a collaborative pairing session. Think of it as a normal day on the team picking up an under-reviewed internal app. There are three parts:

  1. Get oriented. Read through the code and understand what the app does. Be ready to walk us through it: how a balance gets read, how a send works, and how the web and server pieces fit together.

  2. Make it production-ready. There's at least one bug producing incorrect balances, and we're not sure the service is safe to expose as-is. Find and fix what would hurt us in production.

  3. Stretch (if there's time). Add a per-user daily send limit of $1,000 per day. Sends beyond the limit should be rejected with a clear error, and the UI should show the user how much of their daily allowance remains.

Use AI (Cursor / Claude / ChatGPT) however you like. We care about how you think about what it produces, not whether you use it.

Project layout

packages/
  web/                 Next.js client
    src/
      app/             routes, layout, providers
      components/      UI: connect wallet, balance card, send form
      lib/             chain + USDC helpers and wallet config
  server/              Hono API on Node
    src/
      routes/          balance + transfer handlers
      lib/             chain + USDC helpers
      db/              Drizzle schema and SQLite client

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages