|
2 | 2 |
|
3 | 3 | 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. |
4 | 4 |
|
5 | | -## Key Features |
| 5 | +## ✨ Key Features |
6 | 6 |
|
7 | 7 | - **Decentralized crowdfunding and grant management** on the Stellar blockchain |
8 | 8 | - **Milestone-based fund distribution** using escrow and smart contracts |
9 | 9 | - **Secure and transparent community voting and feedback systems** |
10 | 10 | - **Flexible user roles** including campaign creators, grant applicants, managers, and admins |
11 | 11 | - **Integrated authentication** with email, social login, and KYC verification |
| 12 | +- **Multi-wallet support** for Stellar ecosystem (Freighter, Albedo, Rabet, xBull, Lobstr, Hana, HOT Wallet) |
12 | 13 | - **Comprehensive backend support** with RESTful API endpoints and robust security measures |
13 | 14 | - **Automated contract deployment and upgrade processes** using CI/CD pipelines |
14 | 15 |
|
15 | | -## Technical Details |
| 16 | +## 🛠️ Technical Stack |
16 | 17 |
|
17 | 18 | - **Smart Contracts:** Rust (Soroban SDK) |
18 | | -- **Frontend:** TypeScript, Next.js, Tailwind CSS, Zustand |
| 19 | +- **Frontend:** TypeScript, Next.js 15, React 19, Tailwind CSS, Zustand |
19 | 20 | - **Backend:** Node.js, RESTful APIs, Prisma ORM, PostgreSQL |
20 | 21 | - **Blockchain Integration:** Stellar SDK, Soroban smart contracts |
| 22 | +- **Authentication:** NextAuth.js v5 with Google OAuth and credentials |
| 23 | +- **UI Components:** Radix UI primitives with custom styling |
| 24 | +- **Animations:** GSAP, Framer Motion |
21 | 25 | - **DevOps:** GitHub Actions, Vercel, Docker |
22 | 26 |
|
23 | | -## User Flow |
| 27 | +## 📁 Project Structure |
| 28 | + |
| 29 | +``` |
| 30 | +boundless/ |
| 31 | +├── app/ # Next.js App Router |
| 32 | +│ ├── (landing)/ # Landing page routes |
| 33 | +│ │ ├── about/ # About page components |
| 34 | +│ │ ├── blog/ # Blog functionality |
| 35 | +│ │ ├── code-of-conduct/ # Code of conduct page |
| 36 | +│ │ ├── contact/ # Contact page |
| 37 | +│ │ ├── disclaimer/ # Disclaimer page |
| 38 | +│ │ ├── grants/ # Grants information |
| 39 | +│ │ ├── hackathons/ # Hackathon pages |
| 40 | +│ │ ├── privacy/ # Privacy policy |
| 41 | +│ │ ├── projects/ # Projects page |
| 42 | +│ │ ├── terms/ # Terms of service |
| 43 | +│ │ ├── waitlist/ # Waitlist signup |
| 44 | +│ │ ├── layout.tsx # Landing layout |
| 45 | +│ │ └── page.tsx # Landing page |
| 46 | +│ ├── api/ # API routes |
| 47 | +│ │ ├── auth/ # Authentication endpoints |
| 48 | +│ │ └── waitlist/ # Waitlist API |
| 49 | +│ ├── auth/ # Authentication pages |
| 50 | +│ │ ├── email-verified/ # Email verification success |
| 51 | +│ │ ├── forgot-password/ # Password reset request |
| 52 | +│ │ ├── reset-password/ # Password reset form |
| 53 | +│ │ ├── signin/ # Sign in page |
| 54 | +│ │ ├── signup/ # Sign up page |
| 55 | +│ │ └── verify-email/ # Email verification |
| 56 | +│ ├── comment/ # Comment functionality |
| 57 | +│ ├── dashboard/ # User dashboard |
| 58 | +│ ├── preview/ # Preview functionality |
| 59 | +│ ├── test/ # Test pages |
| 60 | +│ ├── user/ # User-specific pages |
| 61 | +│ │ ├── campaigns/ # User campaigns |
| 62 | +│ │ ├── projects/ # User projects |
| 63 | +│ │ └── layout.tsx # User layout |
| 64 | +│ ├── error.tsx # Error page |
| 65 | +│ ├── favicon.ico # Site favicon |
| 66 | +│ ├── globals.css # Global styles |
| 67 | +│ ├── layout.tsx # Root layout |
| 68 | +│ ├── loading.tsx # Loading page |
| 69 | +│ ├── not-found.tsx # 404 page |
| 70 | +│ ├── providers.tsx # App providers |
| 71 | +│ ├── robots.ts # Robots.txt |
| 72 | +│ └── sitemap.ts # Sitemap generation |
| 73 | +├── components/ # React components |
| 74 | +│ ├── About-Mission/ # About mission components |
| 75 | +│ ├── auth/ # Authentication components |
| 76 | +│ ├── buttons/ # Button components |
| 77 | +│ ├── campaigns/ # Campaign-related components |
| 78 | +│ │ ├── back-project/ # Project backing flow |
| 79 | +│ │ ├── backing-history/ # Backing history |
| 80 | +│ │ ├── launch/ # Campaign launch |
| 81 | +│ │ └── LaunchCampaignFlow.tsx |
| 82 | +│ ├── comment/ # Comment components |
| 83 | +│ ├── comments/ # Comments system |
| 84 | +│ ├── connect-wallet/ # Wallet connection UI |
| 85 | +│ ├── landing-page/ # Landing page components |
| 86 | +│ ├── layout/ # Layout components |
| 87 | +│ ├── loading/ # Loading components |
| 88 | +│ ├── overview/ # Overview components |
| 89 | +│ ├── project/ # Project components |
| 90 | +│ ├── providers/ # Provider components |
| 91 | +│ ├── sheet/ # Sheet components |
| 92 | +│ ├── skeleton/ # Skeleton components |
| 93 | +│ ├── stepper/ # Stepper components |
| 94 | +│ ├── testimonials/ # Testimonial components |
| 95 | +│ ├── ui/ # Reusable UI components (48 components) |
| 96 | +│ ├── wallet/ # Wallet-related components |
| 97 | +│ └── waitlist/ # Waitlist components |
| 98 | +├── hooks/ # Custom React hooks |
| 99 | +│ ├── use-account.ts # Account management hook |
| 100 | +│ ├── use-auth.ts # Authentication hook |
| 101 | +│ ├── use-fadegradient.ts # Fade gradient hook |
| 102 | +│ ├── use-local-storage-draft.ts # Local storage draft hook |
| 103 | +│ ├── use-mobile.ts # Mobile detection hook |
| 104 | +│ ├── use-notifications.ts # Notifications hook |
| 105 | +│ ├── use-wallet-protection.ts # Wallet protection hook |
| 106 | +│ └── use-wallet.ts # Wallet management hook |
| 107 | +├── lib/ # Utility libraries |
| 108 | +│ ├── api/ # API client and types |
| 109 | +│ ├── auth/ # Authentication utilities |
| 110 | +│ ├── data/ # Data utilities |
| 111 | +│ ├── stores/ # Zustand stores |
| 112 | +│ ├── wallet-utils.ts # Wallet utilities |
| 113 | +│ ├── utils.ts # General utilities |
| 114 | +│ ├── config.ts # Configuration |
| 115 | +│ ├── logger.ts # Logging utilities |
| 116 | +│ ├── metadata.ts # Metadata utilities |
| 117 | +│ ├── mock.ts # Mock data |
| 118 | +│ ├── motion.ts # Motion utilities |
| 119 | +│ └── structured-data.ts # Structured data |
| 120 | +├── types/ # TypeScript type definitions |
| 121 | +│ ├── project.ts # Project types |
| 122 | +│ ├── backing-history.ts # Backing history types |
| 123 | +│ └── logger.types.ts # Logger types |
| 124 | +├── public/ # Static assets |
| 125 | +│ ├── wallets/ # Wallet icons |
| 126 | +│ ├── landing/ # Landing page assets |
| 127 | +│ ├── auth/ # Authentication assets |
| 128 | +│ ├── empty/ # Empty state assets |
| 129 | +│ └── team/ # Team assets |
| 130 | +├── scripts/ # Build and deployment scripts |
| 131 | +│ └── setup-branch-protection.sh |
| 132 | +├── constants/ # Application constants |
| 133 | +├── auth.ts # NextAuth configuration |
| 134 | +├── middleware.ts # Next.js middleware |
| 135 | +├── next.config.ts # Next.js configuration |
| 136 | +├── tsconfig.json # TypeScript configuration |
| 137 | +├── eslint.config.mjs # ESLint configuration |
| 138 | +├── postcss.config.mjs # PostCSS configuration |
| 139 | +├── components.json # UI components configuration |
| 140 | +├── vercel.json # Vercel deployment configuration |
| 141 | +├── package.json # Dependencies and scripts |
| 142 | +├── package-lock.json # Package lock file |
| 143 | +├── CONTRIBUTING.md # Contribution guidelines |
| 144 | +├── DEVELOPMENT.md # Development workflow |
| 145 | +└── LICENSE # MIT License |
| 146 | +``` |
| 147 | + |
| 148 | +## 🚀 Getting Started |
| 149 | + |
| 150 | +### Prerequisites |
| 151 | + |
| 152 | +Before you begin, ensure you have the following installed: |
| 153 | + |
| 154 | +- **Node.js** (v18 or higher) - [Download here](https://nodejs.org/) |
| 155 | +- **npm** or **yarn** - Package manager |
| 156 | +- **Git** - Version control |
| 157 | +- **Docker** (optional) - For local blockchain and database services |
| 158 | + |
| 159 | +### Installation |
| 160 | + |
| 161 | +1. **Fork the repository:** |
| 162 | + - Go to [boundless-frontend](https://github.com/boundlessfi/boundless-frontend) |
| 163 | + - Click the "Fork" button in the top-right corner |
| 164 | + - This creates a copy of the repository in your GitHub account |
| 165 | + |
| 166 | +2. **Clone your fork:** |
| 167 | + ```bash |
| 168 | + git clone https://github.com/YOUR_USERNAME/boundless-frontend.git |
| 169 | + cd boundless-frontend |
| 170 | + ``` |
| 171 | + |
| 172 | +3. **Add upstream remote:** |
| 173 | + ```bash |
| 174 | + git remote add upstream https://github.com/boundlessfi/boundless-frontend.git |
| 175 | + ``` |
| 176 | + |
| 177 | +4. **Install dependencies:** |
| 178 | + ```bash |
| 179 | + npm install |
| 180 | + # or |
| 181 | + yarn install |
| 182 | + ``` |
| 183 | + |
| 184 | +5. **Configure environment variables:** |
| 185 | + Create a `.env.local` file in the root directory: |
| 186 | + ```bash |
| 187 | + touch .env.local |
| 188 | + ``` |
| 189 | + |
| 190 | + Fill in the required environment variables in `.env.local`: |
| 191 | + ```env |
| 192 | + # NextAuth Configuration |
| 193 | + NEXTAUTH_SECRET=your-secret-key |
| 194 | + NEXTAUTH_URL=http://localhost:3000 |
| 195 | + |
| 196 | + # Google OAuth (optional) |
| 197 | + GOOGLE_CLIENT_ID=your-google-client-id |
| 198 | + GOOGLE_CLIENT_SECRET=your-google-client-secret |
| 199 | + |
| 200 | + # API Configuration |
| 201 | + NEXT_PUBLIC_API_URL=http://localhost:8000/api |
| 202 | + |
| 203 | + # Stellar Configuration |
| 204 | + NEXT_PUBLIC_STELLAR_NETWORK=testnet |
| 205 | + NEXT_PUBLIC_APP_URL=http://localhost:3000 |
| 206 | + ``` |
| 207 | + |
| 208 | +6. **Run the development server:** |
| 209 | + ```bash |
| 210 | + npm run dev |
| 211 | + # or |
| 212 | + yarn dev |
| 213 | + ``` |
| 214 | + |
| 215 | +7. **Open your browser:** |
| 216 | + Navigate to [http://localhost:3000](http://localhost:3000) to see the application. |
| 217 | + |
| 218 | +### Available Scripts |
| 219 | + |
| 220 | +```bash |
| 221 | +# Development |
| 222 | +npm run dev # Start development server |
| 223 | +npm run build # Build for production |
| 224 | +npm run start # Start production server |
| 225 | + |
| 226 | +# Code Quality |
| 227 | +npm run lint # Run ESLint |
| 228 | +npm run lint:fix # Run ESLint with auto-fix |
| 229 | +npm run type-check # Run TypeScript type checking |
| 230 | +npm run format # Format code with Prettier |
| 231 | +npm run format:check # Check formatting without changing files |
| 232 | + |
| 233 | +# Testing |
| 234 | +npm run test # Run tests |
| 235 | +npm run test:watch # Run tests in watch mode |
| 236 | +npm run test:coverage # Run tests with coverage |
| 237 | + |
| 238 | +# Git Hooks |
| 239 | +npm run prepare # Install Husky hooks |
| 240 | +``` |
| 241 | + |
| 242 | +## 🔄 User Flow |
24 | 243 |
|
25 | 244 | ```mermaid |
26 | 245 | flowchart TD |
@@ -82,65 +301,42 @@ flowchart TD |
82 | 301 | H7 --> H8["Disburse Prizes via Soroban"] |
83 | 302 | ``` |
84 | 303 |
|
85 | | -## Getting Started |
| 304 | +## 🤝 Contributing |
86 | 305 |
|
87 | | -### Prerequisites |
88 | | - |
89 | | -- Node.js (v18+) |
90 | | -- npm or yarn |
91 | | -- Docker (for local blockchain and database) |
92 | | - |
93 | | -### Installation |
94 | | - |
95 | | -1. **Clone the repository:** |
96 | | - ```bash |
97 | | - git clone https://github.com/boundlessfi/boundless-frontend.git |
98 | | - cd boundless-frontend |
99 | | - ``` |
100 | | -2. **Install dependencies:** |
101 | | - ```bash |
102 | | - npm install |
103 | | - # or |
104 | | - yarn install |
105 | | - ``` |
106 | | -3. **Configure environment variables:** |
107 | | - - Copy `.env.example` to `.env` and fill in required values. |
| 306 | +We welcome contributions from the community! Please follow these steps: |
108 | 307 |
|
109 | | -4. **Run local development server:** |
| 308 | +1. **Fork the repository** and create your branch from `main` |
| 309 | +2. **Clone your fork** and set up the project locally |
| 310 | +3. **Create a descriptive branch name** (e.g., `feature/add-auth`, `fix/typo-in-readme`) |
| 311 | +4. **Make your changes** with clear, concise commits following [Conventional Commits](https://www.conventionalcommits.org/) |
| 312 | +5. **Write tests** for new features or bug fixes |
| 313 | +6. **Ensure all tests pass** and code quality checks pass |
| 314 | +7. **Open a pull request** with a clear description of your changes |
110 | 315 |
|
111 | | - ```bash |
112 | | - npm run dev |
113 | | - # or |
114 | | - yarn dev |
115 | | - ``` |
| 316 | +For detailed contribution guidelines, see [CONTRIBUTING.md](CONTRIBUTING.md). |
116 | 317 |
|
117 | | -5. **Run tests:** |
| 318 | +For development workflow and best practices, see [DEVELOPMENT.md](DEVELOPMENT.md). |
118 | 319 |
|
119 | | - ```bash |
120 | | - npm test |
121 | | - # or |
122 | | - yarn test |
123 | | - ``` |
| 320 | +## 📄 License |
124 | 321 |
|
125 | | -6. **Build for production:** |
126 | | - ```bash |
127 | | - npm run build |
128 | | - # or |
129 | | - yarn build |
130 | | - ``` |
| 322 | +This project is licensed under the MIT License. See [LICENSE](LICENSE) for details. |
131 | 323 |
|
132 | | -## Contributing |
| 324 | +## 🙏 Acknowledgements |
133 | 325 |
|
134 | | -Contributions are welcome! Please open issues and submit pull requests for new features, bug fixes, or improvements. See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines. |
| 326 | +- [Stellar Development Foundation](https://stellar.org/) |
| 327 | +- [Soroban SDK](https://soroban.stellar.org/) |
| 328 | +- [Next.js](https://nextjs.org/), [Tailwind CSS](https://tailwindcss.com/), [Zustand](https://zustand-demo.pmnd.rs/) |
| 329 | +- [Radix UI](https://www.radix-ui.com/) for accessible components |
| 330 | +- [GSAP](https://greensock.com/gsap/) for animations |
| 331 | +- [Docker](https://www.docker.com/), [Vercel](https://vercel.com/), [GitHub Actions](https://github.com/features/actions) |
135 | 332 |
|
136 | | -## License |
| 333 | +## 📞 Support |
137 | 334 |
|
138 | | -This project is licensed under the MIT License. See [LICENSE](LICENSE) for details. |
| 335 | +- **Documentation:** [GitHub Wiki](https://github.com/boundlessfi/boundless-frontend/wiki) |
| 336 | +- **Issues:** [GitHub Issues](https://github.com/boundlessfi/boundless-frontend/issues) |
| 337 | +- **Discussions:** [GitHub Discussions](https://github.com/boundlessfi/boundless-frontend/discussions) |
| 338 | +- **Email:** hello@boundlessfi.xyz |
139 | 339 |
|
140 | | -## Acknowledgements |
| 340 | +--- |
141 | 341 |
|
142 | | -- Stellar Development Foundation |
143 | | -- Soroban SDK |
144 | | -- Next.js, Tailwind CSS, Zustand |
145 | | -- MongoDB |
146 | | -- Docker, Vercel, GitHub Actions |
| 342 | +**Made with ❤️ by the Boundless team** |
0 commit comments