SatoshiFund is a full-stack web app we built as a way to explore what peer-to-peer crypto lending could look like in practice. The concept is pretty straightforward: borrowers request loans, and lenders can fund them — with all loans backed 1:1 by crypto collateral.
We wanted to create something that felt like a real product, not just a school project, so we focused on building out core functionality with a clean structure and solid logic behind the scenes.
What We Used
SatoshiFund is built using the MERN stack — that’s MongoDB, Express, React, and Node.js. We also used Jest for testing to make sure key features worked as expected. On the backend, we kept things modular and easy to follow, while on the frontend we aimed for a simple, responsive UI that gets the job done.
Authentication is handled with JSON Web Tokens (JWT), and we set up permission levels so that admins and regular users have different access rights.
Key Features
- Loan Requests and Funding: Borrowers can create a loan request with the amount they need. Lenders can browse active requests and choose to fund one. As a safeguard, borrowers must have enough collateral in their wallet to fully back the loan.
- Wallets and Transfers: Every user gets a digital wallet. When a loan is funded, we automatically transfer the right amounts between the lender and borrower wallets, and log those transfers with time and transaction details.
- Smart Automation: We added logic that calculates when loans are expected to be completed, based on the terms selected. This helps keep things consistent and reduces the chance of manual error.
- Admin Tools: Admin users can manage platform data, update user info, and view the full list of loan activity. Regular users only have access to their own information and actions.
- Testing: We made sure the backend was properly tested. This meant spinning up a temporary test database each time, so our real data stayed untouched. It also helped us catch bugs early and confirm that routes and logic were working properly.
What We Learned
One of the bigger challenges was managing the relationships between different parts of the system — like linking a deal to a loan request, and that loan request to a specific interest term. We had to make sure those connections stayed accurate and up to date.
We also had to think carefully about timing and state changes — for example, when a deal is created, it needs to update the borrower’s loan status, move funds, and record the transaction, all in the right order.
Along the way, we refined our code structure, improved how we handled errors, and made sure our logic could scale if the project kept growing.
Final Thoughts
SatoshiFund was a great learning experience and a chance to apply our skills to a real-world use case. We got to work on everything from backend logic to frontend components, and learned a lot about clean architecture, secure user flows, and building around financial rules.
You can check out the project on GitHub if you're curious.