The KindFi monorepo contains the following apps, services, and packages:
- apps/web: The Next.js web application
- apps/contract: Stellar/Soroban smart contracts (Rust)
- apps/indexer: SubQuery indexer for blockchain data indexing
- services/supabase: Supabase database migrations and configuration
- services/ai: AI service for face detection and analysis
- packages/lib: Shared TypeScript library with utilities, hooks, and services
- packages/drizzle: Drizzle ORM schema and migrations
Join our open-source contributor community on Telegram:
https://t.me/+CWeVHOZb5no1NmQx
We collaborate, debug, and build together β whether you're a beginner or advanced dev, you're welcome here.
We welcome contributions from the Stellar community and beyond! Before contributing, please read our guidelines to ensure your contributions align with our standards.
-
Read Our Code of Conduct: All contributors must follow our Code of Conduct. It outlines our community standards, values, and expectations for respectful collaboration.
-
Review Our Contribution Guide: Familiarize yourself with our comprehensive OSS Contribution Guide which covers:
- How to set up your development environment
- Our code style and conventions
- Git workflow and branch naming
- Pull request process
-
Study Our Code Standards: Review our Code Style and Conventions to understand:
- TypeScript best practices
- React/Next.js conventions
- File organization and naming
- Testing requirements
We recommend using React best practices in your coding agent (Cursor, Codex, Claude Code, Opencode, etc.) to help maintain code quality. These best practices are packaged as Agent Skills that can detect issues like cascading useEffect calls or heavy client-side imports and suggest fixes.
Install the agent skills globally:
npx add-skill vercel-labs/agent-skills
β οΈ Important: These agent skills should be installed globally on your development machine and should not be committed to the repository. They are personal development tools and should not be part of any OSS contributions or commits.
We recommend configuring Model Context Protocol (MCP) servers in your development environment to enhance your AI coding assistant's capabilities when working with KindFi. MCPs provide your AI assistant with direct access to documentation, APIs, and tools specific to our tech stack.
Configure MCPs in Cursor:
Add the following configuration to your ~/.cursor/mcp.json file:
{
"mcpServers": {
"supabase": {
"url": "https://mcp.supabase.com/mcp?project_ref=YOUR_PROJECT_REF",
"headers": {}
},
"OpenZeppelinStellarContracts": {
"type": "streamable-http",
"url": "https://mcp.openzeppelin.com/contracts/stellar/mcp"
},
"trustlesswork": {
"type": "streamable-http",
"url": "https://docs.trustlesswork.com/trustless-work/~gitbook/mcp"
}
}
}Available MCPs:
-
Supabase MCP - Provides direct access to your Supabase project:
- Database schema queries and migrations
- Edge function management
- Real-time subscriptions
- Authentication and storage operations
- Replace
YOUR_PROJECT_REFwith your actual Supabase project reference
-
OpenZeppelin Stellar Contracts MCP - Access to OpenZeppelin's Stellar contract library:
- Generate contract code for NFTs, tokens, and access control
- Access contract templates and best practices
- Helps with smart contract development in
apps/contract
-
Trustless Work MCP - Documentation and resources for Stellar development:
- React library documentation
- Wallet Kit integration guides
- Type definitions and API references
- Stellar ecosystem best practices
π‘ Note: MCP configurations are personal development tools and should not be committed to the repository. Each developer should configure their own MCP servers with their project-specific credentials.
-
Find an Issue: Browse our GitHub issues or join our Telegram community to find tasks that match your skills.
-
Create a Branch: Follow our branch naming convention:
- Features:
feat-123-feature-name - Fixes:
fix-456-bug-description - Always branch from
develop
- Features:
-
Write Quality Code:
- Follow our TypeScript and React conventions
- Write meaningful commit messages (lowercase, under 72 characters)
- Sign all commits for security
- Include tests and documentation
-
Submit a Pull Request:
- All PRs undergo automated review by CodeRabbitAI
- Human review follows from project maintainers
- Ensure your code passes all linting and tests
- β Signed Commits: All commits must be signed for authenticity
- β Code Quality: Follow our established code style guide
- β Documentation: Include JSDoc comments and update relevant docs
- β Testing: Ensure code coverage meets project standards
- β Respectful Communication: Engage constructively in reviews and discussions
- π Live Documentation
- π¬ Telegram Community - Get help and connect with contributors
- π Code of Conduct - Community standards and expectations
- ποΈ Architecture Documentation
If you have questions about contributing, feel free to:
- Ask in our Telegram community
- Open a GitHub discussion
- Review our contribution guide
Thank you for contributing to KindFi! π
- Bun >= 1.3.1 (see package.json for exact version)
- Node.js >= 20 (for some tooling)
- Rust (for smart contract development)
π Important: To make Biome work with auto-formatting, make sure to have
Biomeas the default code formatter. You can find the configuration with the commandCTRL + ,orCMD + ,for MacOS users and search forvscode://settings/editor.defaultFormatter. This will read the monorepo Biome configuration. Make sure to have the Biome extension installed in your IDE.
- Install all dependencies:
bun run init # Runs: bun install && bun husky:prepareBiome and pre-commit hooks should be installed by now. Ready to run!
- Run development servers:
The easiest way to run services is using the Taskfile commands:
# Run web app
task web:dev
# Run indexer in development mode
task indexer:dev
# Build indexer
task indexer:build
# Generate Supabase types
task supabase:genOr manually:
# Web app
cd apps/web && bun dev
# Indexer
cd apps/indexer && bun dev
# AI service
cd services/ai && bun devRun task or task --list to see all available commands. Key commands include:
task web:dev- Run web app development servertask web:build- Build web app for productiontask indexer:dev- Run indexer in development modetask indexer:build- Build the indexertask supabase:gen- Generate Supabase typestask lint- Format and lint the codebasetask lint:fix- Fix formatting and linting issues
You can see the full list of commands in each package.json file in the apps, services, and packages directories.