Charitap is a modern web application designed to revolutionize the way people donate to charity. By integrating seamless "round-up" logic into everyday transactions, Charitap allows users to contribute small amounts effortlessly, which accumulate to make a significant impact over time.
In today's fast-paced world, many individuals wish to support charitable causes but often face meaningful friction:
- Decision Fatigue: Choosing where and how much to donate can be overwhelming.
- Lack of Transparency: Donors often wonder if their money actually reaches the intended cause.
- Process Friction: Setting up recurring payments or making one-off donations takes time and effort.
Traditional donation models rely on users consciously deciding to part with a significant sum of money at a specific moment in time. This creates a psychological barrier. Furthermore, the lack of immutable records in charitable transactions can lead to trust issues between donors and organizations.
Charitap solves these problems by:
- Micro-Donations: Rounding up everyday purchases (e.g., a coffee for $4.50 becomes $5.00, with $0.50 going to charity).
- Automation: Once set up, the process is entirely hands-off.
- Transparency: Leveraging ResilientDB (blockchain) to create an immutable, verifiable ledger of every donation receipt.
- Flexibility: Users can choose between "Threshold" based payments (donate when roundups hit $5) or "Monthly" settlements.
Charitap links with your daily transactions. When you spend $12.40, the app calculates a $0.60 "round-up". These small amounts are tracked and accumulated until they reach your set threshold.
- Threshold Mode: Donations are processed immediately once your accumulated round-ups reach $5.00.
- Monthly Mode: Accumulated round-ups are processed once a month, regardless of the total (minimum $1.00).
Every donation is verified. A cryptographic hash of the transaction is stored on ResilientDB. Users can click "Verify" on any past donation to check its existence and integrity on the blockchain ledger.
Don't see your favorite charity? Users can nominate new charities directly through the app. Admins receive an email notification to review and approve new organizations.
- Impact Visualization: View your donation history through interactive charts.
- Charity Breakdown: See exactly where your money went, split by charity.
- Blockchain Stats: Real-time stats on how many of your transactions are secured on-chain.
Charitap employs a robust, microservices-inspired architecture to ensure scalability, security, and transparency.
- Framework: React.js (Create React App)
- Styling: Tailwind CSS for a modern, responsive design.
- Key Components:
Dashboard.js: Central hub for user activity.Settings.js: Configuration for payment preferences and account details.NominateCharity.js: User engagement feature to suggest new causes.
- Runtime: Node.js & Express.js
- Task Scheduling:
node-cronhandles background jobs to process accumulated round-ups daily at midnight. - Payments: Stripe Connect manages secure card charges/transfers. The platform acts as a platform, transferring funds from donors to connected charity accounts.
- MongoDB: Primary data store.
- Redis: Used for caching and performance.
- ResilientDB: Distributed ledger for immutable transaction records.
| Category | Technology | Usage |
|---|---|---|
| Frontend | React, Tailwind CSS | UI/UX , Responsive Design |
| Backend | Node.js, Express | RESTful API, Business Logic |
| Database | MongoDB, Mongoose | Persistent Data Storage |
| Blockchain | ResilientDB, Solidity | Immutable Donation Receipts |
| Payments | Stripe Connect | Payment Processing & Payouts |
| DevOps | Docker, Shell Scripts | Containerization & Deployment |
- Node.js (v16+)
- MongoDB (Local or Atlas)
- ResilientDB instance (Local or Remote)
- Stripe Account (Test mode keys)
-
Clone the repository
git clone <repository-url>
-
Install Frontend Dependencies
cd src npm install -
Install Backend Dependencies
cd backend npm install -
Environment Setup
- Create a
.envfile in thebackenddirectory. - Add necessary keys:
MONGODB_URI,STRIPE_SECRET_KEY,RESILIENTDB_URL, etc.
- Create a
-
Run the Application
- Backend:
cd backend && npm run dev - Frontend:
npm start(from root)
- Backend: