Sendease is a mobile-first, decentralized scheduled remittance MiniApp built on top of Celo MiniPay. It empowers users to automate recurring stablecoin transfers (using USDm) to family and friends. By integrating a natural language intent-parsing agent and an autonomous on-chain automation agent, Sendease makes periodic remittances as simple as sending a chat message.
- Natural Language Intent Parsing: Describe your transfer in plain text (e.g., "Kirim 100 USDm ke Ana tiap tanggal 1"), and our agent will automatically extract parameters to pre-fill the creation form.
- Autonomous Execution Engine: A background cron service with real economic agency executes payments on behalf of users once schedules are due.
- Safety & Limit Controls: User-defined monthly safety limits (
maxMonthlyAmount) to prevent unintended transfers. - ERC-8004 Identity Integration: Registered agent identity on-chain for transparency and trust tracking via standard explorers.
- Mobile-First Design: Custom flat-color layout tailormade for Opera MiniPay viewport heights and connection speeds.
This project is organized as a monorepo powered by Turborepo:
- apps/web - The Next.js 16 frontend app loaded inside MiniPay.
- apps/hardhat - Smart contracts codebase (Hardhat, Solidity, tests).
flowchart TD
%% ====== LEGEND ======
subgraph LEGEND[Legend]
direction LR
U[User] --- A[AI Agent / Backend] --- C[(Remittance Contract)]
M[MiniPay Wallet]
end
%% ====== START ======
START([Buka MiniApp di MiniPay])
%% ====== HOME / DASHBOARD ======
START --> H1[Home / Dashboard\nTampilkan daftar schedule dan activity]
H1 --> H1_CREATE[User tap tombol Create Remittance]
H1_CREATE --> CR1[Screen: New Remittance]
%% ====== CREATE / EDIT REMITTANCE ======
subgraph CREATE[Create / Edit Remittance Flow]
direction TB
CR1 --> IN1[User isi Natural Language Prompt\ncth: Kirim 100 USDm ke Ana tiap tanggal 1]
CR1 --> IN2[Atau isi Form terstruktur\nRecipient, Amount, Frequency, Start date, Limit]
IN1 --> AG1[AI Agent parse intent\nmenjadi amount, currency, recipient, frequency, start date]
AG1 --> F1[Form terisi otomatis dari hasil parsing]
IN2 --> F1
F1 --> R1[User review konfigurasi remittance\nperiksa recipient, amount, jadwal, limit]
R1 --> CONFIRM[Screen: Review dan Approve]
CONFIRM --> M1[MiniPay Wallet prompt\napprove kontrak atau transfer dana awal]
M1 --> C1[(Remittance Contract\nmenyimpan config dan dana)]
C1 --> D1[Kembali ke Dashboard\ntampilkan schedule baru di Active Schedules]
end
%% ====== PERIODIC EXECUTION (AGENT) ======
subgraph EXEC[Periodic Execution oleh Agent]
direction TB
T0[Waktu berjalan\ncron atau scheduler backend] --> CK1[Agent cek semua schedule aktif]
CK1 --> CK2[Untuk tiap schedule:\ncek tanggal, status, saldo, dan limit]
CK2 --> WAIT[Jika belum saatnya atau status nonaktif\nskip dan tunggu tick berikutnya]
CK2 --> AGTX["Jika saatnya kirim dan masih dalam limit\nagent panggil kontrak executeScheduledPayment(id)"]
AGTX --> C2[(Remittance Contract\nkirim stablecoin ke penerima)]
C2 --> TXOK[Transaksi sukses\nsimpan log dan event]
C2 --> TXFAIL[Transaksi gagal\nmisalnya saldo kurang atau error lain]
end
%% ====== USER VIEW HISTORY / DETAIL ======
subgraph DETAIL[Schedule Detail dan History]
direction TB
H1 --> SD1[User pilih salah satu schedule\nbuka Remittance Detail]
SD1 --> SD2[Tampilkan header\nrecipient, amount, frequency, status]
SD2 --> SD3[Bagian Next payment\nnext date dan estimasi nilai lokal]
SD3 --> SD4[Bagian History\nriwayat transaksi: tanggal, status, link explorer]
SD4 --> SD_PAUSE[User toggle Pause atau Resume]
SD4 --> SD_EDIT[User pilih Edit schedule]
SD4 --> SD_CANCEL[User pilih Cancel schedule]
SD_PAUSE --> A_PAUSE[Agent update status schedule di contract]
SD_EDIT --> A_EDIT[Agent jalankan flow edit\nupdate config di contract]
SD_CANCEL --> A_CANCEL[Agent set schedule nonaktif\ndan opsional tarik sisa dana ke user]
A_PAUSE --> SD1
A_EDIT --> SD1
A_CANCEL --> SD1
end
%% ====== NOTIFICATIONS ======
subgraph NOTIF[Notifications dan Safety]
direction TB
TXFAIL --> N1[Agent kirim notifikasi ke user\npembayaran gagal: saldo kurang atau error]
CK2 --> N2[Jika limit bulanan tercapai\nagent kirim notifikasi dan mem-pause schedule]
end
For deeper details regarding specifications and implementation plans:
- 📋 PRD.md - Product Requirements Document containing goals, target audience, functional specifications, and milestones.
- 🎨 DESIGN.md - Visual brand identity, flat color palette, typography guidelines, mobile constraints, and component designs.
- 🤖 AGENTS.md - AI Agent architecture, roles (intent vs automation), safety checks, and execution flows.
- 📊 8004.mermaid - Flowcharts representing creation, verification, and automated scheduler workflows.
- 🧪 TEST_CASE.md - High-level and detailed test cases for QA verification.
- PNPM (v9+ recommended)
- Node.js v18+
-
Install dependencies:
pnpm install
-
Start the development servers:
pnpm dev
This fires up the Next.js dev server (typically on
http://localhost:3000) and watch tasks. -
Check/Compile Smart Contracts:
pnpm contracts:compile pnpm contracts:test
- Deploy local node:
pnpm contracts:deploy - Deploy to Celo Sepolia Testnet:
pnpm contracts:deploy:celo-sepolia - Deploy to Celo Mainnet:
pnpm contracts:deploy:celo
MIT License.