A comprehensive web-based developer toolkit for building, testing, and debugging Soroban smart contracts on Stellar.
Soroban DevConsole provides an intuitive web interface for Soroban smart contract development, bridging the gap between CLI-heavy workflows and visual debugging tools. It features workspace management, contract interaction, RPC proxying, and shareable state snapshots.
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Web Frontend │◄───────►│ API Backend │◄───────►│ Soroban RPC │
│ (Next.js 15) │ │ (NestJS) │ │ Endpoints │
└─────────────────┘ └──────────────────┘ └─────────────────┘
│ │
│ │
▼ ▼
┌─────────────────┐ ┌──────────────────┐
│ Browser Store │ │ SQLite DB │
│ (Zustand) │ │ (Prisma) │
└─────────────────┘ └──────────────────┘
- Workspace Management: Isolated development environments with contract collections
- RPC Proxy: Backend-mediated access to Soroban RPC with caching, failover, and rate limiting
- Share Links: Read-only snapshots of workspace state for collaboration
- Contract Explorer: Visual interface for contract interaction and state inspection
- Transaction Monitor: Real-time transaction tracking and debugging
- Framework: Next.js 15 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS, Shadcn/ui components
- State Management: Zustand with schema versioning
- Blockchain: Stellar SDK, Soroban SDK
- Framework: NestJS
- Language: TypeScript
- Database: SQLite with Prisma ORM
- Features: RPC proxy, workspace CRUD, share links, audit logging
- Language: Rust
- Framework: Soroban SDK
- Purpose: Test fixtures and examples
- Build System: Turborepo
- Package Manager: npm
- Code Quality: Prettier, ESLint
soroban-dev-console/
├── apps/
│ ├── web/ # Next.js frontend application
│ │ ├── app/ # Next.js App Router pages
│ │ ├── components/ # React components
│ │ ├── lib/ # Utilities and API clients
│ │ └── store/ # Zustand state stores
│ └── api/ # NestJS backend application
│ ├── src/
│ │ ├── modules/ # Feature modules (workspaces, rpc, shares)
│ │ ├── lib/ # Shared utilities
│ │ └── auth/ # Authentication guards
│ └── prisma/ # Database schema and migrations
├── contracts/ # Soroban smart contract fixtures
│ ├── counter-fixture/
│ ├── event-fixture/
│ └── ...
├── packages/ # Shared packages
│ ├── api-contracts/ # TypeScript API type definitions
│ └── ui/ # Shared UI components
├── docs/ # Documentation
└── scripts/ # Build and deployment scripts
- Node.js 18 or later
- npm 9 or later
- Git
-
Clone the repository:
git clone https://github.com/Ibinola/soroban-dev-console.git cd soroban-dev-console -
Install dependencies:
npm install
-
Set up environment variables:
For the API:
cp apps/api/.env.example apps/api/.env
For the Web app:
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
This starts both the API (port 4000) and web app (port 3000) concurrently.
-
Open the application: Navigate to http://localhost:3000
# Run all tests
npm test
# Run API tests only
npm run test --filter=api
# Run web tests only
npm run test --filter=web# Lint and format
npm run lint
npm run format
# Type checking
npm run type-checkcd apps/api
# Create a new migration
npx prisma migrate dev --name <description>
# Apply migrations
npx prisma migrate deploy
# Reset database (development only)
npx prisma migrate reset| Variable | Description | Default |
|---|---|---|
PORT |
API server port | 4000 |
WEB_ORIGIN |
Allowed CORS origin | http://localhost:3000 |
DATABASE_URL |
SQLite database path | file:./dev.db |
SOROBAN_RPC_TESTNET_URL |
Testnet RPC endpoint | (required) |
SOROBAN_RPC_MAINNET_URL |
Mainnet RPC endpoint | (optional) |
SOROBAN_RPC_FUTURENET_URL |
Futurenet RPC endpoint | (optional) |
SOROBAN_RPC_LOCAL_URL |
Local network RPC endpoint | (optional) |
| NEXT_PUBLIC_PASSPHRASE_* | Network passphrases | (see .env.example) |
DEVOPS-025: The project uses a centralized source of truth for all runtime ports and local URLs to prevent drift.
- Canonical Source: packages/api-contracts/src/runtime-defaults.ts
- Validation: Run
npm run check-driftto verify that all documentation and.env.examplefiles are aligned with these defaults. Runnpm run check-integrityto verify lockfile and workspace dependency consistency.
| Service | Default Port | Default Local URL |
|---|---|---|
| API Backend | 4000 |
http://localhost:4000 |
| Web App | 3000 |
http://localhost:3000 |
| Horizon | 8000 |
http://localhost:8000 |
- Create isolated development environments
- Import/export workspace state
- Version-controlled schema migrations
- Share workspaces via read-only links
- Backend-mediated RPC access with caching
- Automatic failover across multiple endpoints
- Rate limiting and method policies
- Correlation ID tracing for debugging
- Owner-key based authentication (bearer token)
- CORS protection with restrictive header policies
- Security headers (X-Content-Type-Options, X-Frame-Options, etc.)
- Input validation and sanitization
- Audit logging for all mutations
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
- Fork the repository
- Create a feature branch:
git checkout -b feature/my-feature - Make your changes
- Run tests:
npm test - Commit with descriptive messages
- Push and open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- GitHub: @Ibinola
- Project: Soroban DevConsole
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Discord: Join the Stellar Discord for real-time chat
⭐ Star this repo if you're excited about making Soroban development more accessible!