Thank you for considering contributing to Soroban DevConsole! This project aims to make Soroban smart contract development more accessible through a comprehensive web-based toolkit.
- Node.js 18 or later
- npm 9 or later
- Git
- Basic understanding of TypeScript and React
-
Fork and clone the repository:
git clone https://github.com/your-username/soroban-dev-console.git cd soroban-dev-console -
Install dependencies:
npm install
-
Set up environment variables:
cp apps/api/.env.example apps/api/.env cp apps/web/.env.example apps/web/.env.local
-
Initialize the database:
cd apps/api npx prisma generate npx prisma db push npx prisma db seed cd ../..
-
Start development servers:
npm run dev -w web npm run dev -w api
-
Open http://localhost:3000 to view the application.
Use descriptive branch names following this pattern:
feat/short-description- New featuresfix/short-description- Bug fixesdocs/short-description- Documentation updatesrefactor/short-description- Code refactoringtest/short-description- Test additions/updates
Examples:
feat/workspace-exportfix/rpc-caching-bugdocs/update-readme
Write clear, descriptive commit messages following conventional commits:
type(scope): description
[optional body]
Types:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, semicolons, etc.)refactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks
Examples:
feat(workspaces): add export functionality
fix(rpc): correct cache key generation for batch requests
docs(readme): update setup instructions
This project uses:
- TypeScript strict mode
- Prettier for code formatting
- ESLint for code quality
- Shadcn/ui for UI components
Run linting and formatting before committing:
npm run lint
npm run formatWrite tests for new features and bug fixes:
# Run web tests
npm run test:run -w web
# Run API tests
npm run test -w api
# Run contract tests
cargo test --manifest-path contracts/Cargo.toml
# Run drift and integrity checks
node --experimental-strip-types scripts/check-runtime-drift.ts
node --experimental-strip-types scripts/check-dependency-integrity.tssoroban-dev-console/
├── apps/
│ ├── web/ # Next.js frontend (React, TypeScript)
│ └── api/ # NestJS backend (TypeScript, Prisma)
├── contracts/ # Soroban smart contract fixtures (Rust)
├── packages/ # Shared packages
│ ├── api-contracts/ # TypeScript type definitions
│ └── ui/ # Shared UI components
└── docs/ # Documentation
/app- Next.js App Router pages and layouts/components- Reusable React components/lib- Utility functions and API clients/store- Zustand state stores with schema versioning
/src/modules- Feature modules (workspaces, rpc, shares, etc.)/src/lib- Shared utilities and services/src/auth- Authentication guards/prisma- Database schema, migrations, and seeds
-
Create a branch from
main:git checkout -b feat/my-feature
-
Make your changes following the code style guidelines
-
Run tests and linting:
npm run test:run -w web npm run test -w api npm run lint npm run typecheck -
Commit your changes with a descriptive message
-
Push to your fork:
git push origin feat/my-feature
-
Open a Pull Request against the
mainbranch:- Reference any related issues (e.g., "Fixes #123")
- Include a clear description of changes
- Add screenshots for UI changes
- Note any breaking changes
Direct pushes to main may be blocked by branch protection. If that happens,
push your branch and open a PR instead of trying to bypass the protection.
- Address review feedback promptly
- UI/UX improvements
- React component development
- State management optimizations
- Accessibility improvements
- API endpoint enhancements
- Database optimizations
- Security improvements
- Performance tuning
- Soroban contract development
- Test fixture creation
- Contract interaction patterns
- Tutorials and guides
- API documentation
- Code comments
- Architecture docs
- Unit tests
- Integration tests
- End-to-end tests
- Migration verification tests
When reviewing PRs, check for:
- Code follows project style guidelines
- Tests are included and passing
- No security vulnerabilities introduced
- Backward compatibility maintained (or breaking changes documented)
- Clear commit messages
- Documentation updated if needed
When reporting bugs or proposing changes, please use the provided Issue Templates:
- Audit Regression: For reporting functional regressions found during testing.
- Cleanup-only Work: For proposing non-functional refactoring or debt reduction.
- Backlog Gap / Follow-up: For tracking missing features or audit follow-ups.
Templates include sections for:
- Context: Background and Track ID (e.g., [FE-001]).
- Expected Outcome: Clear definition of "done".
- Implementation Notes: Technical approach or blockers.
- Acceptance Criteria: Verification checklist.
If a template doesn't fit, you can still open a regular issue with:
- Clear description of the issue
- Steps to reproduce
- Expected vs actual behavior
- Environment details (OS, Node version, browser)
- Screenshots if applicable
We are committed to providing a friendly, safe, and welcoming environment for all contributors. Please be respectful and inclusive in your interactions.
- Check existing Issues
- Start a Discussion
- Join the Stellar Discord
Happy coding! 🚀