Thank you for your interest in contributing to AutoPilot — AI-powered financial automation on the Stellar Network! We welcome contributions from everyone, whether it's a bug fix, a new feature, documentation improvement, or a Soroban contract enhancement.
Please read this guide carefully before you start.
- Code of Conduct
- Project Architecture
- Getting Started — Local Dev Setup
- Development Workflow
- Code Style
- Submitting a Pull Request
- Reporting Bugs
- Requesting Features
This project adheres to our Code of Conduct. By participating, you are expected to uphold it. Please report unacceptable behavior to the maintainers.
autopilot/
├── frontend/ # Next.js 14 app (Freighter wallet, Tailwind CSS)
├── backend/ # Fastify API + BullMQ engine + Stellar SDK
│ └── src/
│ ├── engine/ # Rule processor, Horizon stream, scheduler, queue
│ ├── stellar/ # Transaction builder, vault manager, keypair utils
│ ├── routes/ # REST API route handlers
│ ├── lib/ # DB client, engine helpers
│ └── middleware/
├── contracts/ # Soroban smart contract (Rust, soroban-sdk)
└── .github/ # CI workflows, issue & PR templates
Tech Stack:
- Frontend: Next.js 14, TypeScript, Tailwind CSS, Freighter Wallet API
- Backend: Fastify, TypeScript, PostgreSQL (via
postgresdriver), BullMQ + Redis, Groq AI - Blockchain: Stellar Network, Soroban Smart Contracts (Rust), Stellar SDK
- Infra: Docker, Render (backend), Vercel (frontend)
Make sure you have the following installed:
| Tool | Version | Notes |
|---|---|---|
| Node.js | >= 18 | node --version |
| pnpm / npm | Latest | npm install -g pnpm |
| Rust | Stable | rustup install stable |
| stellar-cli | Latest | cargo install --locked stellar-cli |
| Docker | Latest | For PostgreSQL + Redis |
git clone https://github.com/thisisouvik/autopilot.git
cd autopilot
# Install backend dependencies
cd backend && npm install
# Install frontend dependencies
cd ../frontend && npm installBackend — copy and fill in .env:
cd backend
cp .env.example .envKey variables to configure:
DATABASE_URL=postgresql://user:password@localhost:5432/autopilot
REDIS_URL=redis://localhost:6379
AUTOPILOT_SECRET_KEY=<your-testnet-engine-keypair-secret>
AUTOPILOT_PUBLIC_KEY=<your-testnet-engine-keypair-public>
VAULT_ENCRYPTION_KEY=<32-byte-hex-string>
GROQ_API_KEY=<your-groq-api-key>
STELLAR_NETWORK=testnetTip: Fund your testnet engine account for free via Stellar Friendbot.
Frontend — copy and fill in .env:
cd frontend
cp .env.example .env# Start PostgreSQL and Redis via Docker
docker compose up -d postgres redis
# Run DB migrations
cd backend
npm run migrate
npm run migrate:auth-challenge
# Start the development server
npm run devThe backend API will be available at http://localhost:3001.
cd frontend
npm run devThe frontend will be available at http://localhost:3000.
Note: Install the Freighter Wallet browser extension and switch it to Testnet mode.
# Build the contract to WASM
cd contracts
stellar contract build
# Run contract unit tests
cargo test
# Deploy to Stellar testnet
stellar contract deploy \
--wasm target/wasm32-unknown-unknown/release/contracts.wasm \
--source <your-secret-key> \
--network testnet-
Fork the repository and create your branch from
main:git checkout -b feat/your-feature-name # or git checkout -b fix/issue-number-short-description -
Make your changes — keep commits small and focused.
-
Test your changes locally before pushing.
-
Push your branch and open a Pull Request.
We use the following formatters — please run them before committing:
TypeScript (frontend & backend):
npm run lint # ESLint
npm run format # PrettierRust (contracts):
cargo fmt
cargo clippy -- -D warningsCommit Messages: Use Conventional Commits format:
feat: add USDC payment rule support
fix: resolve race condition in deduplication check
docs: update CONTRIBUTING.md with contract build steps
contract: add engine_execute function to AutopilotVault
- Ensure your branch is up to date with
main. - Fill out the PR template completely.
- Link the related issue (e.g.,
Closes #12). - Add screenshots or test output where relevant.
- Request a review from a maintainer.
PRs that fail CI checks (lint, build, contract tests) will not be merged.
Use the Bug Report template. Please include:
- A clear description of the bug
- Steps to reproduce
- Expected vs. actual behavior
- Your environment (OS, Node version, network: testnet/mainnet)
Use the Feature Request template. Please describe:
- The problem you're trying to solve
- Your proposed solution
- Any alternatives you've considered
Thank you for making AutoPilot better! 🌟