Welcome to Stella! This checklist will help you get productive quickly. Follow these steps in order.
Before diving into the code, complete these setup steps:
npm install # Install all project dependenciescp .env.example .env # Create your local environment fileEdit .env and set at minimum:
STELLAR_NETWORK=testnet(for safe testing)API_KEYS=dev_key_1234567890(or generate your own)PORT=3000
npm run init-db # Set up local SQLite databasenpm run lint # Should complete without errors
npm test # Run test suite (should pass)
npm run keys:list # Verify API key management worksIf any command fails, check that:
- Node.js v18+ is installed:
node --version - Dependencies installed successfully
.envfile exists with required variables
- Read ARCHITECTURE.md - understand the 3-layer design (API → Service → Stellar)
- Explore
src/directory structure:routes/- API endpoints (your entry points)services/- Stellar blockchain logic (the core)middleware/- Auth, validation, rate limitingutils/- Helpers and validatorsconfig/- Network settings and constants
- Review Contributor Guide.txt - API workflow (Initialize → Sign → Submit)
- Understand we use Stellar Testnet for development (never real funds)
- Note: We follow stateless design - no private keys are stored
npm start # Start the API server (Ctrl+C to stop)
# In another terminal:
curl http://localhost:3000/health # Should return status with database check- Pick a "good first issue" from GitHub (look for
good-first-issuelabel) - Create a feature branch:
git checkout -b feat/your-feature-name - Common areas for contributions:
- Wallet APIs (
src/services/WalletService.js) - balance queries, key encryption - Donation APIs (
src/services/DonationService.js) - recurring donations, metadata - Middleware (
src/middleware/) - security, validation improvements
- Wallet APIs (
- Check existing tests in
tests/to understand expected behavior - Review related files in
src/services/for business logic patterns - Use Stellar Laboratory (https://laboratory.stellar.org) to test transactions manually
- Follow the data flow: Route → Controller → Service → Stellar SDK
- Never put Stellar SDK calls in controllers (keep them in services)
- Use environment variables from
.env(never hardcode secrets)
npm run lint # Fix any linting issues
npm test # Ensure all tests pass
npm run test:coverage # Check coverage (aim for >80%)- ARCHITECTURE.md - System design and data flow
- Contributing.txt - Setup and contribution guidelines
- Contributor Guide.txt - API technical specs
- API workrkflow.txt - Detailed API workflows (note: filename has typo)
- Stellar SDK Docs - Official SDK reference
- Stellar Laboratory - Test transactions visually
- Horizon API Docs - Blockchain query reference
npm run dev # Start with auto-reload
npm run keys:create # Generate new API key
npm run init-db # Initialize database
npm run validate:rbac # Check permission configs- Branch name follows convention:
feat/,fix/, ordocs/ - Code passes
npm run lint - Tests pass with
npm test - PR description links to issue: "Closes #42"
- Changes are focused (one feature/fix per PR)
- No secrets or private keys in code
- Stuck on Stellar errors? Check
src/utils/stellarErrorHandler.jsfor common error translations - Need test data? Use Friendbot to fund test accounts: https://laboratory.stellar.org/#account-creator
- Understanding middleware flow? Add console.logs in
src/middleware/logger.jstemporarily - Want to see live transactions? Check Stellar Expert: https://stellar.expert/explorer/testnet
Run this script to verify all onboarding instructions work:
bash scripts/validate-onboarding.shThis checks:
- All documentation files exist
- Directory structure is correct
- Key service files are present
- npm scripts are configured
- Dependencies are installed (if applicable)
- Questions? Open a GitHub Discussion or comment on your issue
- Found a bug? Check if it's already reported in Issues
- Security concern? Email the maintainers (see Contributing.txt)
Ready to contribute? Pick an issue, create a branch, and start coding! 🎉