Skip to content

A crowding funding platform that is made for Sierra Leoneans, that use mobile money payment and more

License

Notifications You must be signed in to change notification settings

walonCode/fundwave

Β 
Β 

Repository files navigation

FundwaveSL

FundWaveSL is Sierra Leone’s first dedicated crowdfunding platform, built to help individuals, communities, and organizations raise funds easily and securely. With local mobile money integration, zero platform fees, and bank-level security, FundWaveSL makes it simple to launch campaigns, receive donations, and withdraw funds. Trusted by thousands of users and supporting both local and international payments, the platform is tailored to Sierra Leone’s unique needsβ€”empowering people to turn ideas and causes into real impact.

License: MIT Node.js Version Nextjs TailwindCSS Supabase


πŸ‘©β€πŸ’»Currently in active development. We welcome contributions and feedback from the community!


Features

  • Easy Campaign Creation – Launch fundraising campaigns quickly with images, descriptions, and funding goals.
  • Local & International Payments – Accept donations via mobile money, bank transfers, and international channels.
  • Secure & Transparent – Bank-level security, KYC verification, and real-time tracking of donations.
  • Multi-Channel Notifications – Stay updated via SMS, email, or WhatsApp(comming soon...).
  • Inclusive & Localized – Designed for Sierra Leone, supporting local languages and payment infrastructure.
  • Campaign Management – Edit campaigns, track progress, and withdraw funds safely.

Tech Stack

Client (Frontend)

  • Next.js – React framework for server-side rendering and static site generation.
  • React – UI library for building interactive interfaces.
  • TailwindCSS: Utility-first CSS framework with custom design system
  • Shadcn/ui: Modern UI component.
  • Typescripts - Ui component library.

Backend

  • PostgreSQL: Robust relational database for data persistence
  • Node.js: Server-side JavaScript runtime environment
  • Drizzle – ORM for database modeling and queries.

External Tools & Integrations

  • Monime – Payment processing.
  • Vercel – Hosting, CDN, and deployment.

Quality Assurance

  • Prettier: Code formatting for consistent style
  • ESLint: Code linting for quality assurance
  • GitHub Actions: Continuous integration and deployment

Project structure

fundwave/
    β”œβ”€β”€ .gitignore
    β”œβ”€β”€ LICENSE
    β”œβ”€β”€ README.md
    β”œβ”€β”€ app
    |  β”œβ”€β”€ about
    |  |  β”œβ”€β”€ page.tsx
    |  β”œβ”€β”€ api
    |  |  β”œβ”€β”€ campaigns
    |  |  |  β”œβ”€β”€ [id]
    |  |  |  |  β”œβ”€β”€ cash-out
    |  |  |  |  |  β”œβ”€β”€ route.ts
    |  |  |  |  β”œβ”€β”€ comments
    |  |  |  |  |  β”œβ”€β”€ [commentId]
    |  |  |  |  |  |  β”œβ”€β”€ route.ts
    |  |  |  |  |  β”œβ”€β”€ route.ts
    |  |  |  |  β”œβ”€β”€ payments
    |  |  |  |  |  β”œβ”€β”€ route.ts
    |  |  |  |  β”œβ”€β”€ report
    |  |  |  |  |  β”œβ”€β”€ route.ts
    |  |  |  |  β”œβ”€β”€ route.ts
    |  |  |  β”œβ”€β”€ user-created
    |  |  |  |  β”œβ”€β”€ route.ts
    |  |  |  β”œβ”€β”€ user-deleted
    |  |  β”œβ”€β”€ page.tsx
    |  β”œβ”€β”€ dashboard
    |  |  β”œβ”€β”€ page.tsx
    |  β”œβ”€β”€ error.tsx
    |  β”œβ”€β”€ favicon.ico
    |  β”œβ”€β”€ globals.css
    |  β”œβ”€β”€ help
    β”œβ”€β”€ assets
    |  β”œβ”€β”€ assets.ts
    |  β”œβ”€β”€ logo.png
    |  β”œβ”€β”€ nema.jpg
    |  β”œβ”€β”€ swaray.jpg
    |  β”œβ”€β”€ tjalloh.jpg
    |  β”œβ”€β”€ walon.jpg
    β”œβ”€β”€ components
    |  β”œβ”€β”€ ClientLayoutWrapper.tsx
    |  β”œβ”€β”€ campaign-card.tsx
    |  β”œβ”€β”€ cashout-modal.tsx
    |  β”œβ”€β”€ ui
    |  |  β”œβ”€β”€ accordion.tsx
    |  |  β”œβ”€β”€ alert-dialog.tsx
    |  |  β”œβ”€β”€ alert.tsx
    |  |  β”œβ”€β”€ aspect-ratio.tsx
    |  |  β”œβ”€β”€ avatar.tsx
    |  |  β”œβ”€β”€ badge.tsx
    |  |  β”œβ”€β”€ breadcrumb.tsx
    |  |  β”œβ”€β”€ button.tsx
    |  |  β”œβ”€β”€ calendar.tsx
    |  |  β”œβ”€β”€ card.tsx
    |  |  β”œβ”€β”€ carousel.tsx
    |  |  β”œβ”€β”€ checkbox.tsx
    |  |  β”œβ”€β”€ collapsible.tsx
    |  |  β”œβ”€β”€ command.tsx
    |  |  β”œβ”€β”€ context-menu.tsx
    |  |  β”œβ”€β”€ dialog.tsx
    |  |  β”œβ”€β”€ drawer.tsx
    |  |  β”œβ”€β”€ dropdown-menu.tsx
    |  |  β”œβ”€β”€ form.tsx
    |  |  β”œβ”€β”€ hover-card.tsx
    β”œβ”€β”€ components.json
    β”œβ”€β”€ db
    |  β”œβ”€β”€ drizzle
    |  |  β”œβ”€β”€ 0000_heavy_mother_askani.sql
    |  |  |  β”œβ”€β”€ 0005_snapshot.json
    |  β”œβ”€β”€ drizzle.ts
    |  β”œβ”€β”€ schema.ts
    β”œβ”€β”€ drizzle.config.ts
    β”œβ”€β”€ eslint.config.mjs
    β”œβ”€β”€ lib
    |  β”œβ”€β”€ ai.ts
    |  β”œβ”€β”€ api
    |  |  β”œβ”€β”€ api.ts
    |  β”œβ”€β”€ logger.ts
    |  β”œβ”€β”€ monime.ts
    |  β”œβ”€β”€ nodeMailer.ts
    |  β”œβ”€β”€ notification.ts
    |  β”œβ”€β”€ supabase.ts
    |  β”œβ”€β”€ utils.ts
    β”œβ”€β”€ middleware.ts
    β”œβ”€β”€ next-env.d.ts
    β”œβ”€β”€ next.config.ts
    β”œβ”€β”€ package.json
    β”œβ”€β”€ pnpm-lock.yaml
    β”œβ”€β”€ postcss.config.mjs
    β”œβ”€β”€ public
    |  β”œβ”€β”€ robots.txt
    β”œβ”€β”€ styles
    |  β”œβ”€β”€ globals.css
    β”œβ”€β”€ tailwind.config.ts
    β”œβ”€β”€ tsconfig.json
    β”œβ”€β”€ types
    |  β”œβ”€β”€ api.ts
    |  β”œβ”€β”€ monimeTypes.ts
    β”œβ”€β”€ validations
    |  β”œβ”€β”€ campaign.ts
    |  β”œβ”€β”€ comment.ts
    |  β”œβ”€β”€ payment.ts
    |  β”œβ”€β”€ update.ts
    |  β”œβ”€β”€ user.ts
    |  β”œβ”€β”€ withdrawal.ts

πŸš€ Quick Start

Prerequisites

Ensure you have the following installed on your development machine:

  • Node.js (v20.12.0 or higher) - Download
  • npm (comes with Node.js) or yarn as package manager
  • Git for version control
  • Vercel CLI (optional, for deployment) - Install Guide

Installation

  1. Clone the Repository

    git clone https://github.com/Walon-Foundation/fundwave.git
    cd fundwave
  2. Install Dependencies

    npm install
  3. Environment Configuration

    cp .env.example .env

    Then configure your .env file with the following variables:

    # Supabase Configuration
    SUPABASE_URL=your_supabase_project_url
    SUPABASE_ANON_KEY=your_supabase_anon_key
    
    # clerk Configuration
    CLERK_SECRET_KEY=*******
    NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=*****
    WEBHOOK_SECRET=**********
    
    # Database Configuration
    DATABASE_BASE_URL=***************
    
    # Monime Configuration
    MONIME_SPACE_ID=************
    MONIME_ACCESS_TOKEN=**********
    MONIME_MAIN_ACCOUNT_ID_PROD=******************
    
    # SMTP Configuration
    GOOGLE_SMTP_EMAIL=***********
    GOOGLE_SMTP_PASSWORD=*****************
    
    NODE_ENV=********************
  4. Start Development Server

    npm run dev

    Your application will be available at http://localhost:3000

Development Commands

# Development server with hot reload
npm run dev

# Production build
npm run build

# Preview production build
npm run start

# Lint
npm run lint

Lessons Learned

What did you learn while building this project? What challenges did you face and how did you overcome them?

Contributing

We welcome contributions from developers, designers, and DPG enthusiasts! Here's how you can get involved:

Getting Started

  1. Fork the repository on GitHub
  2. Clone your fork locally
  3. Create a feature branch from main
  4. Make your changes following our coding conventions
  5. Test your changes thoroughly
  6. Submit a pull request with a clear description

Development Guidelines

  • Follow the existing code style and conventions
  • Write meaningful commit messages
  • Include tests for new features
  • Update documentation when necessary
  • Keep PRs focused and manageable in size

For detailed contribution guidelines, see CONTRIBUTING.md.

Code of Conduct

We are committed to providing a welcoming and inclusive environment for all contributors. Please read and follow our Code of Conduct.

🌍 Community & Support

Get Help

  • Issues: Report bugs and request features on GitHub Issues
  • Discussions: Join community discussions on GitHub Discussions
  • Documentation: Comprehensive guides in the /docs directory

Stay Updated

  • Watch the repository for updates
  • Star the project if you find it useful
  • Follow @Walon-Foundation for announcements

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgements

  • Walon-Foundation for project sponsorship and support
  • Open Source Community for the amazing tools and libraries that make this project possible
  • Contributors who help improve and maintain this platform

About

A crowding funding platform that is made for Sierra Leoneans, that use mobile money payment and more

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Languages

  • TypeScript 98.7%
  • CSS 1.2%
  • JavaScript 0.1%