The Smarter Fundraising Platform — built for schools, sports teams, clubs, and nonprofits.
A full-stack fundraising app inspired by MoneyDolly, built with React + Node.js + MongoDB, ready to deploy on Railway.
- Campaign Management — Create and manage multiple fundraising campaigns
- Participant Pages — Each participant gets a unique shareable link
- Live Leaderboards — Real-time rankings by amount raised
- Donation Feed — Live stream of contributions
- Admin Dashboard — Full control over campaigns, participants, and donations
- Goal Tracking — Visual progress bars and percentage tracking
- Anonymous Donations — Donors can give privately
- Platform Stats — Total raised, campaigns, participants displayed on homepage
| Layer | Tech |
|---|---|
| Frontend | React 18, React Router v6 |
| Backend | Node.js, Express |
| Database | MongoDB (Mongoose) |
| Auth | JWT (jsonwebtoken + bcryptjs) |
| Deployment | Railway |
cashfunder/
├── server/
│ ├── index.js # Express entry point
│ ├── middleware/auth.js # JWT middleware
│ ├── models/ # Mongoose models
│ │ ├── Campaign.js
│ │ ├── Donation.js
│ │ ├── Participant.js
│ │ └── User.js
│ └── routes/ # API routes
│ ├── auth.js
│ ├── campaigns.js
│ ├── donations.js
│ ├── participants.js
│ └── stats.js
├── client/
│ ├── public/index.html
│ └── src/
│ ├── App.js
│ ├── index.js
│ ├── index.css
│ ├── context/AuthContext.js
│ ├── components/Navbar.js
│ └── pages/
│ ├── Home.js
│ ├── Login.js
│ ├── Register.js
│ ├── Dashboard.js
│ ├── NewCampaign.js
│ ├── CampaignPage.js
│ └── ParticipantPage.js
├── package.json
├── Procfile
├── railway.toml
└── .env.example
git init
git add .
git commit -m "Initial commit — Cash Funder"
git remote add origin https://github.com/YOUR_USERNAME/cashfunder.git
git push -u origin main- Go to railway.app and log in
- Click New Project → Deploy from GitHub repo
- Select your
cashfunderrepository - Railway will auto-detect Node.js and start deploying
- In your Railway project, click + New → Database → MongoDB
- Railway will auto-inject
MONGODB_URLinto your environment
In Railway → your service → Variables, add:
| Variable | Value |
|---|---|
MONGODB_URI |
(copy from the MongoDB service's MONGODB_URL) |
JWT_SECRET |
(any long random string, e.g. cashfunder_secret_2025_xyz) |
NODE_ENV |
production |
CLIENT_URL |
(your Railway app URL, e.g. https://cashfunder.up.railway.app) |
Railway builds and deploys automatically. Visit your app URL.
# 1. Clone the repo
git clone https://github.com/YOUR_USERNAME/cashfunder.git
cd cashfunder
# 2. Install server dependencies
npm install
# 3. Install client dependencies
cd client && npm install && cd ..
# 4. Set up environment
cp .env.example .env
# Edit .env with your MongoDB URI and JWT secret
# 5. Run both server + client
npm run devApp runs at:
- Frontend: http://localhost:3000
- Backend API: http://localhost:5000
| Method | Endpoint | Auth | Description |
|---|---|---|---|
| POST | /api/auth/register |
No | Create account |
| POST | /api/auth/login |
No | Login |
| GET | /api/auth/me |
Yes | Get current user |
| GET | /api/campaigns |
No | List campaigns |
| GET | /api/campaigns/slug/:slug |
No | Get campaign by slug |
| GET | /api/campaigns/mine |
Yes | My campaigns |
| POST | /api/campaigns |
Yes | Create campaign |
| GET | /api/participants/campaign/:id |
No | Campaign leaderboard |
| GET | /api/participants/link/:link |
No | Participant page data |
| POST | /api/participants |
Yes | Add participant |
| GET | /api/donations/campaign/:id |
No | Campaign donations |
| POST | /api/donations |
No | Submit donation |
| GET | /api/stats/platform |
No | Platform-wide stats |
- Colors:
#00C47C(green),#FFD700(gold),#0A0F0D(dark) - Fonts: Syne (display), DM Sans (body) via Google Fonts
- Theme: Dark, modern, energetic — built for youth sports & schools
- Stripe payment integration (replace simulated donations)
- Email notifications (SendGrid / Nodemailer)
- Product catalog (like MoneyDolly's 175+ products)
- Admin: add/remove participants from dashboard
- SMS sharing via Twilio
- Mobile app (React Native)
MIT — built by Cash Funder. Use freely.