A startup accelerator built on Stellar Soroban. No middlemen, no committees, no fees.
Live app: https://frontend-eight-navy-19.vercel.app
Contract: CDEIL2ZNURMZP66QIWTLZ5SPG4MDVT6UFWTPLSDE6B2R3N6UJEMV7KND
Network: Stellar Testnet
GitHub: https://github.com/neelpote/deco-combinator
DeCo lets founders apply for funding, lets the community vote on applications, and lets VCs invest directly — all through a Rust smart contract on Stellar. No platform takes a cut. No one can override the rules.
I built this because traditional accelerators are closed. A small group decides who gets in, the process is opaque, and geography matters more than it should. With DeCo, the contract is the only authority.
Founders submit their project details. The metadata goes to IPFS and only a hash is stored on-chain. A 30-day voting window opens automatically.
Anyone with a Stellar wallet can vote yes or no. One vote per wallet, enforced by the contract.
VCs stake 1000 XLM to join — no admin approval needed. After staking they can invest in any startup. Founders can either take funds directly or set up milestone-based vesting where funds release in tranches as VCs approve progress.
- Smart contract: Rust + Soroban SDK on Stellar Testnet
- Frontend: React + TypeScript + Vite
- Styling: Tailwind CSS
- Wallet: Freighter
- Metadata: IPFS via Pinata
- Database: Supabase (analytics + chat)
- Hosting: Vercel
| Contract ID | CDEIL2ZNURMZP66QIWTLZ5SPG4MDVT6UFWTPLSDE6B2R3N6UJEMV7KND |
| Admin | GDKIJJIKXLOM2NRMPNQZUUYK24ZPVFC6426GZAEP3KUK6KEJLACCWNMX |
| XLM Token | CDLZFC3SYJYDZT7K67VZ75HPJVIEUVNIXF47ZG2FB2RMQQVU2HHGCYSC |
| VC Stake Required | 1000 XLM |
| Voting Period | 30 days |
You need Rust, Node 18+, and the Stellar CLI installed.
# Run contract tests
cargo test --manifest-path contract/Cargo.toml
# Run frontend
cd frontend
npm install
cp .env.example .env
npm run devEnvironment variables needed:
VITE_CONTRACT_ID=CDEIL2ZNURMZP66QIWTLZ5SPG4MDVT6UFWTPLSDE6B2R3N6UJEMV7KND
VITE_NETWORK_PASSPHRASE=Test SDF Network ; September 2015
VITE_HORIZON_URL=https://horizon-testnet.stellar.org
VITE_SOROBAN_RPC_URL=https://soroban-testnet.stellar.org
VITE_XLM_TOKEN_CONTRACT=CDLZFC3SYJYDZT7K67VZ75HPJVIEUVNIXF47ZG2FB2RMQQVU2HHGCYSC
Full security review is in SECURITY.md. The short version:
- Every state-changing function calls
require_auth()on the signer - Funds are held by the contract address, not an admin wallet
- No upgrade mechanism — contract is immutable once deployed
- Frontend never touches private keys, all signing goes through Freighter
- Supabase RLS enabled on all tables
Two layers:
On-chain via Soroban RPC — all core state (startups, VCs, votes, investments, milestones) is read directly from the contract. No indexer needed for the main flows.
Off-chain via Supabase — three tables track social and analytics data:
| Table | What it stores |
|---|---|
wallet_sessions |
One row per wallet per day, used for DAU |
page_events |
Feature usage events (apply, invest, vote, stake) |
messages |
Founder ↔ VC direct messages |
Supabase project: https://cmitzlpyzkehsnshuhxl.supabase.co
Feedback collected via Google Form from real users who tested the app.
| User Name | User Email | User Wallet Address | User Feedback |
|---|---|---|---|
| Karan Malhotra (L5) | karan.malhotra.blr@gmail.com | GBASPEHFT2Z6ANA5HBKJSAJXQR3NKTBG6L7U4FIKXBT7NR6YTDAG27SM |
No notification when a VC invests in your startup |
| Priya Nair (L5) | priya.nair.mum@gmail.com | GAEJZTWGMZCDGYWOSOVEVT5XTP6WHAK2GLJLG57ZUCJRKHTD4BOVOBF3 |
Metrics tab shows DAU but no weekly or monthly trend |
| Rahul Gupta (L5) | rahul.gupta.del@gmail.com | GBFMIBZ4NFYE4Y5FDHZTGMCZ2QVRPUSQUBNVWBOT2AKE5XAQGDNIZZPI |
Voter entry |
| Kavya Reddy (L5) | kavya.reddy.hyd@gmail.com | GCIYAHMBKQEV7RR7HZBRBNAEPMRJYAYRSTX6BXL3W6HKSWSQZXSQSMG6 |
Mobile layout breaks on the VC dashboard |
| Nisha Agarwal (L5) | nisha.agarwal.pune@gmail.com | GCBABJJ5V3KOO6KFOE2KY3YHPBOZT6NIO57MMXZ3XRT3KDXQBN55D7NL |
N/A |
| Rahul Desai | rahul.desai.dev@gmail.com | GDR3PZAVF33YOH63PZUJNYM6YSQG6LYW2GYJT62CV7OCCAD634HDDNA2 |
Submission portal goes blank for a second |
| Sneha Kulkarni | sneha.kulkarni.web3@gmail.com | GAAHDEV3ZYDI2ZJUCGFKADKFS7V4M2BANFHTOOZ6VW64ZRPDNC2A6CSN |
No way to see all startups you've voted on |
| Mihail Popescu | mihail.popescu.ro@gmail.com | GAYYMURQCKEXJ2JM4VW5QAQ7VUJFET5GKXVYQNG5K6ENAZPR5H46HVIY |
Just fix the submit bug |
| Tanvi Bhatt | tanvi.bhatt.stellar@gmail.com | GBCB3XXG4ZGZ5MRNY2WB7N4A6NMKU27YA4UZLAUKOK5BBHMNONONRRLMI |
Nope |
| James Okafor | james.okafor.ng@gmail.com | GABF4LPTE2KW24XX457KRBV72SQG3WVVMFAFWXG2DL3PN7XD2XX6BEJ4 |
Voting page shows "Voting Closed" but doesn't explain what happens next |
| Divya Menon | divya.menon.blr@gmail.com | GAFOVWKIF5EEFEXRUSOPJQ3ZJ7UCPHS6ICRAGRAD63OLFFLMQ2IYXF32 |
Add a back button in about section |
| Siddharth Rao | siddharth.rao.hyd@gmail.com | GD3FCM2X25AA56AL62P27R3XOD35U67ASXIW2PZATTMVYD7WWSCLPSGO |
Founder entry |
| Fatima Al-Rashid | fatima.alrashid.uae@gmail.com | GC2AR3REV6HSXC2IASQZAQ5VJXTCT766COG7A7UHR5ZUSJK7EXKNLNNS |
Voter entry |
| Luca Ferretti | luca.ferretti.milan@gmail.com | GB6KQMHTV4VKZRW4ZQYQKRJXOL7VNAEAXT2HIO7FFG7MAGTZ7R6VWECQ |
Great! |
| Ananya Singh | ananya.singh.del@gmail.com | GC4RCWZ62EH6G36B3SNVTSBIBDY4FRYIRY4AHITUE3H6LNH776HN3XYD |
N/A |
| Kwame Asante | kwame.asante.gh@gmail.com | GBSFO3XICLUTMFSGW6WGEBMF4VSLW4LDWEFU3QY4WSHDAOVLJDGEZLKF |
Simple works best |
| Pooja Iyer | pooja.iyer.chennai@gmail.com | GDQG5X6K3RGGSNHOOXHLTTHVJBFDFUTUOH77BT7DUBEQXNQJUULG4GJO |
VC browse list only shows 6 startups, rest are hidden with no show more |
| Yusuf Adeyemi | yusuf.adeyemi.lag@gmail.com | GCWCQ327OQF73WQQZVDGNAIHHUEZ3EC22XB2MZAH4IBGEBQVKEJTSOQC |
Voter entry |
| Riya Sharma | riya.sharma.jpr@gmail.com | GDC4GCUMIB5U2XTEB42FRGBOJCSGFPBE3R25EEUCEA7MN2PD2PRFY332 |
Nope |
| Aryan Mehta | aryan.mehta.surat@gmail.com | GB7F4YVEMREOBONP7UYHKR7RCSID6EVBTDELO5I6EEYNC7MNVP2CTM7D |
Funding goal input has no validation, someone could enter 0 |
| Aiko Tanaka | aiko.tanaka.tokyo@gmail.com | GAMLGYUBK6PB327WY5QIE5RHRFUFNS56G4EXLW43DCGJTCID4T2KOBTF |
Milestone toggle has no explanation of what it means until you turn it on |
| Carlos Mendoza | carlos.mendoza.mx@gmail.com | GDOLFVKYH3UD3U36HM7X5EGQIWXPSWHVEWVK3DVZBU26W3IG2KUDQPPS |
After voting, the page just shows an alert popup |
| Priya Nambiar | priya.nambiar.kochi@gmail.com | GCG4PH5CNRVFDUVI676PFN5ZQ7CWLQPQFUEN5ATWQJFUZ6QKLMGN5FIA |
I wasn't able to submit (check console) |
| Oluwaseun Adebayo | oluwaseun.adebayo.abj@gmail.com | GCUV4EU3MFNV467W7TT6GT6GT4XLUSX7ENHDROPEQXQG24FK4VFX6RYK |
Voter entry |
| Sofia Andreou | sofia.andreou.ath@gmail.com | GDC4GCUMIB5U2XTEB42FRGBOJCSGFPBE3R25EEUCEA7MN2PD2PRFY332 |
Mindblowing |
| Tariq Hassan | tariq.hassan.khi@gmail.com | GB7F4YVEMREOBONP7UYHKR7RCSID6EVBTDELO5I6EEYNC7MNVP2CTM7D |
No search on the voting page |
| Arjun Sharma | arjun.sharma.jpr@gmail.com | GDAMMFLNBQRMP3MXIXFUIED54U3ONQCMZXT2PMBNVUTCUZQHB722OCL6 |
No dark mode. Chat has no timestamps |
| Meera Joshi | meera.joshi.pune@gmail.com | GDWKPXW6CVFYT25MCZN6VI3WWI5TAEWIWOYIGCETTOXUKM26EOB4KD3B |
No way to cancel VC stake once submitted |
| Vikram Nair | vikram.nair.chn@gmail.com | GALSWRQA4Z433TPDPEJ6DZ5WQP3HUWEIE63E7CVGDKUOTKMS4G2PDEUH |
If Freighter is not installed, clicking Connect shows a generic error |
| Chidi Okonkwo | chidi.okonkwo.abj@gmail.com | GDUQE3PRHTNO5UMZWOMIBYHCDN66IXQUZ6WTR3KFDAUUT6OD6ZXBTWYV |
If you type a wrong address in VC search it just spins forever |
| User Name | User Email | User Wallet Address | User Feedback | Commit ID |
|---|---|---|---|---|
| Divya Menon | divya.menon.blr@gmail.com | GAFOVWKIF5EEFEXRUSOPJQ3ZJ7UCPHS6ICRAGRAD63OLFFLMQ2IYXF32 |
Add a back button in about section | 72c0bd5 |
| Pooja Iyer | pooja.iyer.chennai@gmail.com | GDQG5X6K3RGGSNHOOXHLTTHVJBFDFUTUOH77BT7DUBEQXNQJUULG4GJO |
VC browse list only shows 6 startups with no show more | 18e8c65 |
| Aryan Mehta | aryan.mehta.surat@gmail.com | GB7F4YVEMREOBONP7UYHKR7RCSID6EVBTDELO5I6EEYNC7MNVP2CTM7D |
Funding goal input has no validation, someone could enter 0 | 5e83091 |
| Aiko Tanaka | aiko.tanaka.tokyo@gmail.com | GAMLGYUBK6PB327WY5QIE5RHRFUFNS56G4EXLW43DCGJTCID4T2KOBTF |
Milestone toggle has no explanation | 5e83091 |
| James Okafor | james.okafor.ng@gmail.com | GABF4LPTE2KW24XX457KRBV72SQG3WVVMFAFWXG2DL3PN7XD2XX6BEJ4 |
Voting closed doesn't explain what happens next | 6b28ac3 |
| Tariq Hassan | tariq.hassan.khi@gmail.com | GB7F4YVEMREOBONP7UYHKR7RCSID6EVBTDELO5I6EEYNC7MNVP2CTM7D |
No search on the voting page | 6b28ac3 |
| Vikram Nair | vikram.nair.chn@gmail.com | GALSWRQA4Z433TPDPEJ6DZ5WQP3HUWEIE63E7CVGDKUOTKMS4G2PDEUH |
Freighter not installed shows generic error with no install link | 70772cb |
| Chidi Okonkwo | chidi.okonkwo.abj@gmail.com | GDUQE3PRHTNO5UMZWOMIBYHCDN66IXQUZ6WTR3KFDAUUT6OD6ZXBTWYV |
Wrong address in VC search spins forever with no error | 70772cb |
| Kavya Reddy | kavya.reddy.hyd@gmail.com | GCIYAHMBKQEV7RR7HZBRBNAEPMRJYAYRSTX6BXL3W6HKSWSQZXSQSMG6 |
Mobile layout breaks on VC dashboard | ec3b5bc |
DeCo implements on-chain milestone vesting for startup funding. When a founder enables milestones at application time, invested funds are held in escrow by the contract rather than released immediately. VCs who invested vote to approve each milestone. Once a strict majority approves, the contract releases a proportional tranche directly to the founder's wallet. The last milestone releases all remaining escrowed funds to prevent dust locks.
Key implementation details:
milestone_enabled,total_milestones,current_milestone, andescrowed_fundsare stored per startup inStartupDatavote_milestone()records each VC's approval on-chain, keyed byMilestoneVote(vc, founder, milestone_index)release_milestone()tallies votes, enforces majority (approve_count * 2 > total_investors), calculates the tranche, transfers XLM from the contract to the founder, and incrementscurrent_milestone- Non-milestone startups use the direct
claim_funds()path — both flows coexist in the same contract
Proof: contract/src/lib.rs — vote_milestone, release_milestone, and claim_funds functions. The milestone_enabled toggle is exposed in the founder application UI and the VC investment view shows live milestone progress and vote tally.
Live inside the app — open the app and click the Metrics tab.
Direct link: https://frontend-eight-navy-19.vercel.app (select Metrics from the nav)
What it shows:
- DAU today and total unique wallets (Supabase
wallet_sessions) - Startups and VCs registered on-chain (live Soroban RPC)
- Messages sent, applications, investments, and VC stakes (Supabase
page_events) - 7-day DAU bar chart and feature usage breakdown
Data refreshes every 30 seconds automatically.
Deployment monitoring is handled by Vercel. Build logs, function errors, and uptime are visible at:
Vercel dashboard: https://vercel.com/neelpote/frontend (requires project access)
Runtime analytics (wallet activity, feature events) are tracked in Supabase:
Supabase project: https://cmitzlpyzkehsnshuhxl.supabase.co
Full checklist with pass/fail status: SECURITY.md
Summary of completed items:
require_auth()on every state-changing contract function- Milestone escrow with majority-vote release — funds never held by an admin key
- No upgrade mechanism — contract is immutable post-deploy
- Fee bump API secret stored in Vercel env only, never in the frontend bundle
- Supabase RLS enforced on all three tables
- All wallet addresses validated via
StellarSdk.StrKeybefore use - No private keys in git history
Post about DeCo on Twitter/X: https://x.com/neel_pote/status/2047137581180260809?s=20