Skip to content

boundlessfi/boundless

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Boundless

Boundless is a decentralized crowdfunding and grants platform built on the Stellar blockchain that empowers creators, innovators, and communities to launch and fund projects in a transparent and secure manner. Leveraging Soroban smart contracts, the platform facilitates milestone-based fund releases with built-in escrow mechanisms, ensuring that funds are only released when specific project milestones are met and independently verified. This approach minimizes risks for backers and provides creators with the financial support they need to drive innovation forward.

✨ Key Features

  • Decentralized crowdfunding and grant management on the Stellar blockchain
  • Milestone-based fund distribution using escrow and smart contracts
  • Secure and transparent community voting and feedback systems
  • Flexible user roles including campaign creators, grant applicants, managers, and admins
  • Integrated authentication with email, social login, and KYC verification
  • Multi-wallet support for Stellar ecosystem (Freighter, Albedo, Rabet, xBull, Lobstr, Hana, HOT Wallet)
  • Comprehensive backend support with RESTful API endpoints and robust security measures
  • Automated contract deployment and upgrade processes using CI/CD pipelines

πŸ› οΈ Technical Stack

  • Smart Contracts: Rust (Soroban SDK)
  • Frontend: TypeScript, Next.js 15, React 19, Tailwind CSS, Zustand
  • Backend: Node.js, RESTful APIs, Prisma ORM, PostgreSQL
  • Blockchain Integration: Stellar SDK, Soroban smart contracts
  • Authentication: NextAuth.js v5 with Google OAuth and credentials
  • UI Components: Radix UI primitives with custom styling
  • Animations: GSAP, Framer Motion
  • DevOps: GitHub Actions, Vercel, Docker

πŸ“ Project Structure

boundless/
β”œβ”€β”€ app/                          # Next.js App Router
β”‚   β”œβ”€β”€ (landing)/               # Landing page routes
β”‚   β”‚   β”œβ”€β”€ about/               # About page components
β”‚   β”‚   β”œβ”€β”€ blog/                # Blog functionality
β”‚   β”‚   β”œβ”€β”€ code-of-conduct/     # Code of conduct page
β”‚   β”‚   β”œβ”€β”€ contact/             # Contact page
β”‚   β”‚   β”œβ”€β”€ disclaimer/          # Disclaimer page
β”‚   β”‚   β”œβ”€β”€ grants/              # Grants information
β”‚   β”‚   β”œβ”€β”€ hackathons/          # Hackathon pages
β”‚   β”‚   β”œβ”€β”€ privacy/             # Privacy policy
β”‚   β”‚   β”œβ”€β”€ projects/            # Projects page
β”‚   β”‚   β”œβ”€β”€ terms/               # Terms of service
β”‚   β”‚   β”œβ”€β”€ waitlist/            # Waitlist signup
β”‚   β”‚   β”œβ”€β”€ layout.tsx           # Landing layout
β”‚   β”‚   └── page.tsx             # Landing page
β”‚   β”œβ”€β”€ api/                     # API routes
β”‚   β”‚   β”œβ”€β”€ auth/                # Authentication endpoints
β”‚   β”‚   └── waitlist/            # Waitlist API
β”‚   β”œβ”€β”€ auth/                    # Authentication pages
β”‚   β”‚   β”œβ”€β”€ email-verified/      # Email verification success
β”‚   β”‚   β”œβ”€β”€ forgot-password/     # Password reset request
β”‚   β”‚   β”œβ”€β”€ reset-password/      # Password reset form
β”‚   β”‚   β”œβ”€β”€ signin/              # Sign in page
β”‚   β”‚   β”œβ”€β”€ signup/              # Sign up page
β”‚   β”‚   └── verify-email/        # Email verification
β”‚   β”œβ”€β”€ comment/                 # Comment functionality
β”‚   β”œβ”€β”€ dashboard/               # User dashboard
β”‚   β”œβ”€β”€ preview/                 # Preview functionality
β”‚   β”œβ”€β”€ test/                    # Test pages
β”‚   β”œβ”€β”€ user/                   # User-specific pages
β”‚   β”‚   β”œβ”€β”€ campaigns/          # User campaigns
β”‚   β”‚   β”œβ”€β”€ projects/           # User projects
β”‚   β”‚   └── layout.tsx          # User layout
β”‚   β”œβ”€β”€ error.tsx               # Error page
β”‚   β”œβ”€β”€ favicon.ico             # Site favicon
β”‚   β”œβ”€β”€ globals.css             # Global styles
β”‚   β”œβ”€β”€ layout.tsx              # Root layout
β”‚   β”œβ”€β”€ loading.tsx             # Loading page
β”‚   β”œβ”€β”€ not-found.tsx           # 404 page
β”‚   β”œβ”€β”€ providers.tsx           # App providers
β”‚   β”œβ”€β”€ robots.ts               # Robots.txt
β”‚   └── sitemap.ts              # Sitemap generation
β”œβ”€β”€ components/                 # React components
β”‚   β”œβ”€β”€ About-Mission/         # About mission components
β”‚   β”œβ”€β”€ auth/                  # Authentication components
β”‚   β”œβ”€β”€ buttons/               # Button components
β”‚   β”œβ”€β”€ campaigns/             # Campaign-related components
β”‚   β”‚   β”œβ”€β”€ back-project/      # Project backing flow
β”‚   β”‚   β”œβ”€β”€ backing-history/   # Backing history
β”‚   β”‚   β”œβ”€β”€ launch/            # Campaign launch
β”‚   β”‚   └── LaunchCampaignFlow.tsx
β”‚   β”œβ”€β”€ comment/               # Comment components
β”‚   β”œβ”€β”€ comments/              # Comments system
β”‚   β”œβ”€β”€ connect-wallet/        # Wallet connection UI
β”‚   β”œβ”€β”€ landing-page/          # Landing page components
β”‚   β”œβ”€β”€ layout/                # Layout components
β”‚   β”œβ”€β”€ loading/               # Loading components
β”‚   β”œβ”€β”€ overview/              # Overview components
β”‚   β”œβ”€β”€ project/               # Project components
β”‚   β”œβ”€β”€ providers/             # Provider components
β”‚   β”œβ”€β”€ sheet/                 # Sheet components
β”‚   β”œβ”€β”€ skeleton/              # Skeleton components
β”‚   β”œβ”€β”€ stepper/               # Stepper components
β”‚   β”œβ”€β”€ testimonials/          # Testimonial components
β”‚   β”œβ”€β”€ ui/                    # Reusable UI components (48 components)
β”‚   β”œβ”€β”€ wallet/                # Wallet-related components
β”‚   └── waitlist/              # Waitlist components
β”œβ”€β”€ hooks/                     # Custom React hooks
β”‚   β”œβ”€β”€ use-account.ts         # Account management hook
β”‚   β”œβ”€β”€ use-auth.ts            # Authentication hook
β”‚   β”œβ”€β”€ use-fadegradient.ts   # Fade gradient hook
β”‚   β”œβ”€β”€ use-local-storage-draft.ts # Local storage draft hook
β”‚   β”œβ”€β”€ use-mobile.ts          # Mobile detection hook
β”‚   β”œβ”€β”€ use-notifications.ts   # Notifications hook
β”‚   β”œβ”€β”€ use-wallet-protection.ts # Wallet protection hook
β”‚   └── use-wallet.ts          # Wallet management hook
β”œβ”€β”€ lib/                       # Utility libraries
β”‚   β”œβ”€β”€ api/                   # API client and types
β”‚   β”œβ”€β”€ auth/                  # Authentication utilities
β”‚   β”œβ”€β”€ data/                  # Data utilities
β”‚   β”œβ”€β”€ stores/                # Zustand stores
β”‚   β”œβ”€β”€ wallet-utils.ts        # Wallet utilities
β”‚   β”œβ”€β”€ utils.ts               # General utilities
β”‚   β”œβ”€β”€ config.ts              # Configuration
β”‚   β”œβ”€β”€ logger.ts              # Logging utilities
β”‚   β”œβ”€β”€ metadata.ts            # Metadata utilities
β”‚   β”œβ”€β”€ mock.ts                # Mock data
β”‚   β”œβ”€β”€ motion.ts              # Motion utilities
β”‚   └── structured-data.ts     # Structured data
β”œβ”€β”€ types/                     # TypeScript type definitions
β”‚   β”œβ”€β”€ project.ts             # Project types
β”‚   β”œβ”€β”€ backing-history.ts     # Backing history types
β”‚   └── logger.types.ts        # Logger types
β”œβ”€β”€ public/                    # Static assets
β”‚   β”œβ”€β”€ wallets/               # Wallet icons
β”‚   β”œβ”€β”€ landing/               # Landing page assets
β”‚   β”œβ”€β”€ auth/                  # Authentication assets
β”‚   β”œβ”€β”€ empty/                 # Empty state assets
β”‚   └── team/                  # Team assets
β”œβ”€β”€ scripts/                   # Build and deployment scripts
β”‚   └── setup-branch-protection.sh
β”œβ”€β”€ constants/                 # Application constants
β”œβ”€β”€ auth.ts                    # NextAuth configuration
β”œβ”€β”€ middleware.ts              # Next.js middleware
β”œβ”€β”€ next.config.ts             # Next.js configuration
β”œβ”€β”€ tsconfig.json              # TypeScript configuration
β”œβ”€β”€ eslint.config.mjs          # ESLint configuration
β”œβ”€β”€ postcss.config.mjs         # PostCSS configuration
β”œβ”€β”€ components.json            # UI components configuration
β”œβ”€β”€ vercel.json                # Vercel deployment configuration
β”œβ”€β”€ package.json               # Dependencies and scripts
β”œβ”€β”€ package-lock.json          # Package lock file
β”œβ”€β”€ CONTRIBUTING.md            # Contribution guidelines
β”œβ”€β”€ DEVELOPMENT.md             # Development workflow
└── LICENSE                    # MIT License

πŸš€ Getting Started

Prerequisites

Before you begin, ensure you have the following installed:

  • Node.js (v18 or higher) - Download here
  • npm or yarn - Package manager
  • Git - Version control
  • Docker (optional) - For local blockchain and database services

Installation

  1. Fork the repository:

    • Go to boundless-frontend
    • Click the "Fork" button in the top-right corner
    • This creates a copy of the repository in your GitHub account
  2. Clone your fork:

    git clone https://github.com/YOUR_USERNAME/boundless-frontend.git
    cd boundless-frontend
  3. Add upstream remote:

    git remote add upstream https://github.com/boundlessfi/boundless-frontend.git
  4. Install dependencies:

    npm install
    # or
    yarn install
  5. Configure environment variables: Create a .env.local file in the root directory:

    touch .env.local

    Fill in the required environment variables in .env.local:

    # NextAuth Configuration
    NEXTAUTH_SECRET=your-secret-key
    NEXTAUTH_URL=http://localhost:3000
    
    # Google OAuth (optional)
    GOOGLE_CLIENT_ID=your-google-client-id
    GOOGLE_CLIENT_SECRET=your-google-client-secret
    
    # API Configuration
    NEXT_PUBLIC_API_URL=http://localhost:8000/api
    
    # Stellar Configuration
    NEXT_PUBLIC_STELLAR_NETWORK=testnet
    NEXT_PUBLIC_APP_URL=http://localhost:3000
    
    # Trustless Work Configuration (optional)
    # Get your API key from: https://docs.trustlesswork.com
    NEXT_PUBLIC_TRUSTLESS_WORK_API_KEY=your-trustless-work-api-key
  6. Run the development server:

    npm run dev
    # or
    yarn dev
  7. Open your browser: Navigate to http://localhost:3000 to see the application.

Available Scripts

# Development
npm run dev          # Start development server
npm run build        # Build for production
npm run start        # Start production server

# Code Quality
npm run lint         # Run ESLint
npm run lint:fix     # Run ESLint with auto-fix
npm run type-check   # Run TypeScript type checking
npm run format       # Format code with Prettier
npm run format:check # Check formatting without changing files

# Testing
npm run test         # Run tests
npm run test:watch   # Run tests in watch mode
npm run test:coverage # Run tests with coverage

# Git Hooks
npm run prepare      # Install Husky hooks

πŸ”„ User Flow

flowchart TD
    A["Step 1 - Visit Boundless Platform"] --> B1["Step 2 - Sign Up and KYC Verification"]
    B1 --> B2["Step 3 - Choose Role: Crowdfund Creator, Grant Applicant, Grant Creator or Admin"]
    B2 -- Crowdfund Creator --> CF1["Submit Project Idea for Validation"]
    CF1 --> CF2["Public Feedback and Voting"]
    CF2 --> CF3{"Does Idea Meet Threshold?"}
    CF3 -- No --> CFX["Rejected – Back to Editing or Archive"]
    CF3 -- Yes --> CF4["Create Campaign with Milestones and Funding Goal"]
    CF4 --> CF5["Campaign Goes Live with Deadline"]
    CF5 --> CF6["Users Back Project – Funds Held in Escrow"]
    CF6 --> CF7{"Goal Met by Deadline?"}
    CF7 -- No --> CF8["Refund All Backers"]
    CF7 -- Yes --> CF9["Project Execution Starts"]
    CF9 --> CF10["Submit Milestone Proof"]
    CF10 --> CF11["Admin or DAO Reviews Milestone"]
    CF11 --> CF12{"Was Milestone Approved?"}
    CF12 -- No --> CF13["Send Back for Revision or Cancel Project"]
    CF12 -- Yes --> CF14["Release Funds for Milestone"]
    CF14 --> CF9 & Z["Project Completed"]
    B2 -- Grant Applicant --> G1["Submit Proposal for Grant"]
    G1 --> G2["Community and Admin Review"]
    G2 --> G3{"Approved for Grant?"}
    G3 -- No --> GX["Rejected – Back to Edit or Archive"]
    G3 -- Yes --> G4["Grant Creator Reviews and Edits Milestones"]
    G4 --> G5["Final Approval and Escrow Lock"]
    G5 --> G6["Project Execution Starts"]
    G6 --> G7["Submit Milestone Proof"]
    G7 --> G8["Admin or DAO Reviews"]
    G8 --> G9{"Milestone Approved?"}
    G9 -- No --> G10["Revise or Pause Grant"]
    G9 -- Yes --> G11["Release Funds for Milestone"]
    G11 --> G6 & Z
    B2 -- Grant Creator --> GR1["Create Grant Program"]
    GR1 --> GR2["Define Rules and Milestones"]
    GR2 --> GR3["Launch Grant for Applications"]
    GR3 --> GR4["Review Submitted Proposals"]
    GR4 --> GR5{"Approve Any?"}
    GR5 -- No --> GRX["Close Grant or Extend Deadline"]
    GR5 -- Yes --> GR6["Approve and Escrow Funds"]
    GR6 --> GR7["Monitor Progress"]
    GR7 --> GR8["Approve or Reject Milestones"]
    B2 -- Admin --> AD1["Admin Dashboard Access"]
    AD1 --> AD2["Manage KYC Submissions"] & AD3["Oversee Campaigns and Grants"]
    AD3 --> AD4["Review Flagged Projects or Milestones"]
    AD4 --> AD5{"Valid Issue Found?"}
    AD5 -- Yes --> AD6["Pause or Cancel Project, Initiate Refund"]
    AD5 -- No --> AD7["Approve and Allow Continuation"]
    GR8 --> Z
    AD6 --> Z
    AD7 --> Z
    H1["Organizer Creates Hackathon Grant"] --> H2["Set Deadline, Rules, Prize Pool"]
    H2 --> H3["Hackathon Goes Live"]
    H3 --> H4["Participants Apply or Join"]
    H4 --> H5["Build + Submit Final Project"]
    H5 --> H6["Judging Panel + Public Voting"]
    H6 --> H7["Select Winners"]
    H7 --> H8["Disburse Prizes via Soroban"]
Loading

🀝 Contributing

We welcome contributions from the community! Please follow these steps:

  1. Fork the repository and create your branch from main
  2. Clone your fork and set up the project locally
  3. Create a descriptive branch name (e.g., feature/add-auth, fix/typo-in-readme)
  4. Make your changes with clear, concise commits following Conventional Commits
  5. Write tests for new features or bug fixes
  6. Ensure all tests pass and code quality checks pass
  7. Open a pull request with a clear description of your changes

For detailed contribution guidelines, see CONTRIBUTING.md.

For development workflow and best practices, see DEVELOPMENT.md.

πŸ“„ License

This project is licensed under the MIT License. See LICENSE for details.

πŸ™ Acknowledgements

πŸ“ž Support


Made with ❀️ by the Boundless team

About

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 70

Languages