Last Updated: April 29, 2026
This document provides a comprehensive overview of all features, implementations, and improvements that have been completed for the SoroTask decentralized automation marketplace.
- Project Overview
- Core Components
- Completed Features
- Infrastructure & Operations
- Testing & Quality
- Documentation
- Architecture & Design
SoroTask is a decentralized automation marketplace built on Soroban (Stellar's smart contract platform). It enables users to:
- Schedule recurring tasks (e.g., yield harvesting, DeFi automation)
- Create task dependencies and complex workflows
- Set conditional execution via resolver contracts
- Incentivize a network of Keepers to execute tasks reliably
- 3 Main Components: Smart Contract (Rust), Keeper Bot (Node.js), Frontend Dashboard (Next.js)
- 6 Major Features: Calendar UX, Task Dependencies, Gas Forecasting, Polling Engine, Dead-Letter Queue, Security
- 35+ Components: React components, utilities, and hooks
- 50+ Utility Functions: Date handling, timezone conversion, calendar helpers
- Comprehensive Documentation: 10+ technical documents
- Production-Ready: Docker support, environment configuration, health checks
Location: /contract
- Task Registration:
register(TaskConfig)- Create new scheduled tasks - Task Execution:
execute(keeper_address, task_id)- Execute due tasks - Task Retrieval:
get_task(task_id)- Query task configuration - Event Emission: Task execution events for off-chain monitoring
pub struct TaskConfig {
pub creator: Address, // Task creator
pub target: Address, // Target contract to execute
pub function: Symbol, // Function name to call
pub args: Vec<Val>, // Function arguments
pub resolver: Option<Address>, // Optional condition contract
pub interval: u64, // Execution interval (seconds)
pub last_run: u64, // Timestamp of last execution
pub gas_balance: i128, // Available gas budget
pub whitelist: Vec<Address>, // Whitelisted keepers (empty = public)
pub blocked_by: Vec<u64>, // Task IDs this task depends on
}- XDR Encoding/Decoding: Full support for Soroban contract data serialization
- Error Handling: 11 distinct error types with proper error codes
- Fuzz Testing:
cargo-fuzzintegration for property-based testing - Gas Optimization: View calls for read operations (no fee consumption)
- Invalid interval (0 seconds)
- Missing whitelist authorization
- Execution not yet due
- Task not found
- Self-dependency error
- Circular dependency detection
- Blocking dependencies not satisfied
- Cargo Tests: Unit tests for all core functions
- Fuzz Targets: Property-based testing for register() and execute()
- Test Snapshots: Expected outputs for regression testing
- Coverage: All critical paths tested
Location: /keeper
- Schedule Evaluation: Determines due tasks using
last_run + interval <= current_timestamp - Concurrent Polling: Configurable parallel task reads (default: 10)
- Gas Balance Checking: Skips tasks with insufficient gas
- Concurrency Management: Two-level control (read and execution limits)
- Error Resilience: Graceful degradation on network/parsing errors
Core Logic:
// Task is due when:
last_run + interval <= current_ledger_timestamp
// Example:
// last_run: 1000, interval: 3600, current: 5000
// next_run: 1000 + 3600 = 4600
// 4600 <= 5000 → TASK IS DUE- Rolling History: Tracks up to 100 execution cost samples per task
- Statistical Analysis: Calculates mean, median, std dev, p95, p99, min, max
- Individual Forecasts: Per-task gas predictions with confidence levels
- Aggregate Forecasting: Groups forecasts by time windows
- Risk Assessment: Detects underfunded conditions
- Confidence Levels: Distinguishes high-confidence (≥5 samples) vs low-confidence forecasts
File: keeper/src/gasForecaster.js (387 lines)
- Failure Tracking: Monitors repeated failures within configurable windows
- Auto-Quarantine: Isolates problematic tasks to prevent resource waste
- Configurable Thresholds: Default 5 failures within 1 hour triggers quarantine
- Diagnostic Data: Stores failure reasons and task state for debugging
Configuration Options:
DLQ_MAX_FAILURES=5 # Failures before quarantine
DLQ_FAILURE_WINDOW_MS=3600000 # Time window (1 hour)
DLQ_AUTO_QUARANTINE=true # Enable auto-quarantine
DLQ_MAX_RECORDS=1000 # Max DLQ records stored- HTTP Health Endpoint:
GET /healthreturns service status - Metrics Endpoint:
GET /metricsexposes Prometheus-compatible metrics - Graceful Shutdown: SIGTERM/SIGINT handlers for clean termination
- Startup Validation: Verifies required configuration before starting
- Prometheus Metrics:
keeper_tasks_polled- Total tasks checkedkeeper_tasks_executed- Successful executionskeeper_tasks_failed- Failed executionskeeper_forecast_underfunded_tasks- Tasks with insufficient gaskeeper_forecast_high_confidence- High-confidence forecastskeeper_forecast_low_confidence- Low-confidence forecastskeeper_forecast_risk_level- Current risk level (0-2)
- Multi-Stage Build: Optimized container image (Alpine-based)
- Volume Mounts: Persistent data storage for execution locks
- Health Checks: Docker health monitoring built-in
- Auto-Restart: Configurable restart policy
- Port Exposure: Health and metrics on port 3001
Docker Compose Example:
keeper:
build: ./keeper
ports:
- "3001:3001"
volumes:
- ./keeper/data:/app/data
environment:
- SOROBAN_RPC_URL=${SOROBAN_RPC_URL}
- CONTRACT_ID=${CONTRACT_ID}
- KEEPER_SECRET=${KEEPER_SECRET}Comprehensive environment variable support:
| Variable | Default | Description |
|---|---|---|
SOROBAN_RPC_URL |
Required | Soroban RPC endpoint |
KEEPER_SECRET |
Required | Keeper account private key |
CONTRACT_ID |
Required | Deployed SoroTask contract address |
POLLING_INTERVAL_MS |
10000 | Polling frequency (ms) |
MAX_CONCURRENT_READS |
10 | Parallel task reads |
MAX_CONCURRENT_EXECUTIONS |
3 | Parallel executions |
MAX_TASK_ID |
100 | Task ID range to check |
WAIT_FOR_CONFIRMATION |
true | Wait for tx confirmation |
LOG_LEVEL |
info | Minimum log severity |
LOG_FORMAT |
JSON | Log output format (JSON or pretty) |
- Lock Mechanism: Prevents duplicate submissions during network delays
- Persistent State: Execution locks stored in
data/execution_locks.json - Automatic Cleanup: Lock expiration after 2 minutes (configurable)
- Completed Markers: 30-second markers prevent immediate retries
Location: /frontend
A comprehensive month-view calendar for task deadline visualization and management.
Components:
Calendar.tsx- Main orchestrator (month view, navigation, grouping)CalendarDay.tsx- Individual day cell renderer with task indicatorsDenseTaskPopover.tsx- Popover for dates with 3+ tasksTaskDetail.tsx- Full task information panel
Calendar Features:
- ✅ Month-view grid (42 cells for 6-week display)
- ✅ Task grouping by deadline
- ✅ Status-based color coding (5 statuses)
- ✅ Today highlighting (blue ring)
- ✅ Dense date handling (popover for 3+ tasks)
- ✅ Date navigation (prev/next month, today button)
- ✅ Countdown indicators (X days remaining / overdue)
- ✅ Timezone support (14+ IANA timezones)
Utility Modules (50+ Functions):
dateUtils.ts- Date manipulation (20+ functions)timezoneUtils.ts- Timezone handling (14+ functions)calendarHelpers.ts- Calendar calculations (16+ functions)
Timezone Support:
- Auto-detection of user timezone
- 29+ configured timezones across 6 regions:
- North America: 5 zones
- South America: 4 zones
- Europe: 5 zones
- Africa: 4 zones
- Asia: 7 zones
- Pacific/Oceania: 4 zones
Responsive Design:
- Mobile-friendly (compact mode)
- Tablet-optimized grid
- Desktop full-width support
- Touch-friendly interactive elements
- Proper overflow and popover positioning
Accessibility:
- ARIA labels on all buttons
- Semantic HTML (buttons, labels, sections)
- Keyboard navigation support
- High contrast color indicators
- Screen reader friendly
TaskCard.tsx- Summary card with blocked status indicatorTaskDetailModal.tsx- Full task details with integrated dependency managerTaskDependencyManager.tsx- Dependency list with add/remove functionality
- Displays dependencies with status badges
- Add dependency via dropdown
- Remove dependencies with confirmation
- Visual feedback for blocked tasks
- Error handling and validation
Calendar.tsx- Month-view calendarCalendarDay.tsx- Day cellDenseTaskPopover.tsx- Popover for dense datesTaskDetail.tsx- Task details panelTaskCard.tsx- Task summaryDialog.tsx- Modal dialogsCommandPalette.tsx- Command searchSearchFilterPanel.tsx- Advanced filteringShareModal.tsx- Share/permission UILocaleSwitcher.tsx- Language selection- And 15+ additional UI components
- Tailwind CSS: Utility-first styling
- PostCSS: CSS processing pipeline
- Design Tokens: Consistent color/spacing system
- TypeScript: Full type safety
- ESLint: Code quality enforcement
- 35+ Unit Tests: Comprehensive coverage for utilities and components
- Jest Configuration: Testing framework setup
- Mock Data: Full mock task data for testing
- Responsive Tests: Mobile/tablet/desktop viewport testing
- Next.js Configuration: Optimized build setup
- Playwright: E2E testing support
- pnpm: Fast package management
- TypeScript: Strict type checking
Status: Complete (April 27, 2026) Duration: 2 days
- Production-ready calendar component ecosystem
- 4 React components with full TypeScript support
- 50+ utility functions for date/timezone handling
- 35+ unit test cases
- Full internationalization support
- Responsive design (mobile/tablet/desktop)
- ✅ Users can view tasks on a calendar (month-view)
- ✅ Dense dates remain readable (3+ tasks → popover)
- ✅ Clicking calendar entries opens task context
- ✅ Date rendering consistent with app locale (29+ timezones)
- Color-coded by task status (5 statuses)
- Today highlighted in blue
- Past deadlines in red
- Future tasks in green
- Countdown indicators (days remaining/overdue)
- Timezone-aware display
- Keyboard navigation
Files: frontend/components/Calendar.tsx, CalendarDay.tsx, DenseTaskPopover.tsx, TaskDetail.tsx
Status: Complete (April 27, 2026)
Contract Layer (Rust):
- 5 new functions:
add_dependency,remove_dependency,get_dependencies,is_task_blocked,would_create_cycle - Error types:
SelfDependency,DependencyNotFound,CircularDependency,DependencyBlocked - DFS-based circular dependency detection
- Dependency check in execute() function
- Comprehensive test suite
Frontend Layer (React/TypeScript):
TaskDependencyManager.tsx- Manage dependenciesTaskCard.tsx- Display blocked statusTaskDetailModal.tsx- Full task detailsapp/page.tsx- Dashboard with task cards
- Task blocked if any dependency has
last_run = 0 - Can add multiple dependencies
- Prevents self-dependencies
- Prevents circular chains
- Execute() fails with
DependencyBlockederror if dependencies not met
- ✅ Users can create and remove dependencies
- ✅ Blocked state visible in task views
- ✅ Invalid relationships prevented
- ✅ Feature integrates naturally into workflows
- ✅ Tests cover all edge cases
Files:
- Contract:
contract/src/lib.rs - Frontend:
frontend/components/TaskDependencyManager.tsx,TaskCard.tsx,TaskDetailModal.tsx - Docs:
docs/task-dependencies.md
Status: Complete (April 29, 2026)
Core Components:
-
Gas Forecaster Engine (
keeper/src/gasForecaster.js)- 387 lines of production code
- Rolling history of up to 100 execution samples per task
- Statistical measures: mean, median, std dev, min, max, p95, p99
- Individual task forecasts with confidence levels
- Aggregate forecasts by time windows
-
Gas Monitor Integration (
keeper/src/gasMonitor.js)recordExecution(taskId, feePaid)- Record costsgetForecast(taskId, gasBalance)- Single task forecastgetForecastMultiple(tasks)- Multi-task forecastsforecastByWindow(tasks, currentTime)- Aggregate by time windowgetForecasterState()- Diagnostics
-
Metrics & Monitoring (
keeper/src/metrics.js)- New endpoints:
GET /metrics/forecast, enhancedGET /metrics - Prometheus metrics for forecast tracking
- Underfunded task detection
- Confidence level metrics
- New endpoints:
-
Task Poller Enhancement (
keeper/src/poller.js)checkForecast()- Pre-execution forecast check
-
Main Loop Integration (
keeper/index.js)- Automatic cost recording after execution
- Graceful shutdown handling
-
Comprehensive Documentation (
keeper/GAS_FORECASTING.md)- 900+ lines of technical documentation
- Architecture overview
- API reference
- Configuration options
- Usage examples
- Troubleshooting guide
- High Confidence: ≥5 samples (reliable forecast)
- Low Confidence: <5 samples (limited data)
- Risk Levels: 0=low, 1=medium, 2=high based on forecasts
- Underfunded Detection: Identifies tasks running out of gas
keeper_forecast_underfunded_tasks- Count of underfunded taskskeeper_forecast_high_confidence- High-confidence forecastskeeper_forecast_low_confidence- Low-confidence forecastskeeper_forecast_risk_level- Current risk level (0-2)
Files: keeper/src/gasForecaster.js, gasMonitor.js, metrics.js, keeper/GAS_FORECASTING.md
Status: Complete (April 28, 2026)
Core Engine (keeper/src/poller.js):
- Contract querying with XDR decoding
- Schedule evaluation:
last_run + interval <= current_timestamp - Gas balance validation (skip if gas ≤ 0)
- Configurable concurrency control
- Error handling and statistics tracking
Enhanced Main Loop (keeper/index.js):
- Soroban connection initialization
- Flexible task registry (env vars or range-based)
- Real task executor implementation
- Transaction submission and optional confirmation
- Environment validation on startup
Configuration:
CONTRACT_ID=C... # Contract to monitor
POLLING_INTERVAL_MS=10000 # Check frequency
MAX_CONCURRENT_READS=10 # Parallel reads
MAX_CONCURRENT_EXECUTIONS=3 # Parallel executions
MAX_TASK_ID=100 # Task ID range
TASK_IDS=1,2,3,5,8 # Or specific IDs
WAIT_FOR_CONFIRMATION=true # Tx confirmationTesting:
- Unit tests for schedule logic
- Gas balance checking validation
- Error handling verification
- Statistics tracking tests
Files: keeper/src/poller.js, keeper/index.js, keeper/POLLING_ENGINE.md
Status: Complete
- Failure tracking with configurable time windows
- Auto-quarantine of repeatedly failing tasks
- Diagnostic information storage
- Resource waste prevention
- Operator visibility into problematic tasks
DLQ_MAX_FAILURES=5 # Failures before quarantine
DLQ_FAILURE_WINDOW_MS=3600000 # Time window (1 hour)
DLQ_AUTO_QUARANTINE=true # Enable auto-quarantine
DLQ_MAX_RECORDS=1000 # Max records stored- Prevents resource waste on failing tasks
- Provides diagnostic data for debugging
- Automatically isolates problematic tasks
- Configurable sensitivity
Documentation: keeper/DEAD_LETTER_IMPLEMENTATION.md
Multi-Stage Dockerfile (keeper/Dockerfile):
- Optimized container build process
- Alpine-based runtime (minimal size)
- Health checks included
- Volume mounts for persistent data
- Environment variable support
Docker Compose (docker-compose.yml):
services:
keeper:
build: ./keeper
ports:
- "3001:3001" # Health/metrics endpoint
volumes:
- ./keeper/data:/app/data # Persistent state
environment:
- SOROBAN_RPC_URL=...
- CONTRACT_ID=...
- KEEPER_SECRET=...
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3001/health"]
interval: 30s
timeout: 10sQuick Start:
# Configure environment
cp keeper/.env.example keeper/.env
# Edit keeper/.env with your settings
# Start the keeper
docker compose up -d
# View logs
docker compose logs -f keeper
# Health check
curl http://localhost:3001/healthMakefile (Makefile):
Comprehensive build automation with targets for:
make build- Build all componentsmake build-contract- Rust contract buildmake build-frontend- Next.js buildmake build-keeper- Keeper build infomake test- Run all testsmake test-contract- Cargo testsmake test-keeper- Jest testsmake test-frontend- Frontend testsmake lint- Lint all codemake lint-contract- Cargo clippymake lint-keeper- ESLintmake lint-frontend- Next.js ESLintmake clean- Clean all artifactsmake format- Format codemake check- Lint + test
Documentation: MAKEFILE.md
Comprehensive .env setup with:
- RPC endpoint configuration
- Network passphrase selection
- Keeper account credentials
- Contract address specification
- Polling parameters
- Concurrency limits
- Logging configuration
- DLQ settings
- Gas forecasting parameters
.env.example provided as template with all options documented.
Cargo Tests (contract/__tests__/):
- Unit tests for all core functions
- TaskConfig validation
- Execute function behavior
- Error handling verification
- Gas calculations
Fuzz Testing (contract/fuzz/):
- Property-based testing with libFuzzer
fuzz_register- Random interval and gas_balancefuzz_execute- Random execution paths- Crash reproduction support
Coverage: Critical paths fully tested
Jest Tests (keeper/__tests__/):
- Polling engine tests
- Gas forecaster tests
- Gas monitor tests
- Metrics server tests
- Error handling tests
- Concurrency tests
Test Files:
poller.test.js- Schedule logicgasForecaster.test.js- Forecasting enginegasMonitor.test.js- Gas monitoringprometheus.test.js- Metrics server
Jest Tests (frontend/__tests__/):
- 35+ unit test cases
- Calendar component tests
- Date utility tests
- Timezone utility tests
- Task dependency tests
- Responsive layout tests
Coverage: Utilities and components fully tested
Date: March 29, 2026 Status: ✅ All targets working
All 22 make targets tested and verified:
- Build targets: ✅ Pass
- Test targets: ✅ Pass
- Lint targets: ✅ Pass (contract has pre-existing issues)
- Clean targets: ✅ Pass
- Helper targets: ✅ Pass
-
README.md - Main project documentation
- Project overview
- Setup instructions
- Architecture overview
- Quick start guide
-
GLOSSARY.md - Domain-specific terminology
- Keeper definition and responsibilities
- TaskConfig explanation
- Resolver contract definition
- Execution semantics
-
SECURITY.md - Security policy
- Vulnerability disclosure process
- Scope definition
- Reporting guidelines
- Response timeline
-
CONTRIBUTING.md - Contribution guidelines
- Development setup
- Code standards
- PR process
- Testing requirements
-
keeper/README.md - Keeper bot documentation (450+ lines)
- Configuration guide
- Environment variables
- Docker deployment
- Troubleshooting
-
keeper/POLLING_ENGINE.md - Polling engine technical guide
- Architecture overview
- Scheduler logic explanation
- Configuration options
- Error handling
-
keeper/GAS_FORECASTING.md - Gas forecasting documentation (900+ lines)
- Model overview
- Statistical approach
- API endpoints
- Usage examples
- Troubleshooting guide
-
keeper/DEAD_LETTER_IMPLEMENTATION.md - DLQ documentation
- Feature overview
- Configuration options
- Quarantine behavior
- Recovery procedures
-
keeper/QUICKSTART.md - 5-minute setup guide
- Quick start with Docker
- Manual setup
- Configuration checklist
- Verification steps
-
keeper/DOCKER.md - Docker deployment guide
- Docker fundamentals
- Building keeper image
- Running containers
- Health checks
- Troubleshooting
-
keeper/ARCHITECTURE.md - System architecture
- Component overview
- Data flow diagrams
- Execution model
- Performance considerations
-
keeper/LOCKING.md - Execution idempotency
- Lock mechanism explanation
- Persistent state
- TTL configuration
- Stale lock recovery
-
contract/README.md - Contract developer guide
- Architecture overview
- Contract interface
- TaskConfig specification
- Execution semantics
- Resolver requirements
- Fuzz testing guide
-
frontend/IMPLEMENTATION_SUMMARY.md - Calendar feature summary
- Delivery details
- Acceptance criteria
- Technical achievements
- Component ecosystem
-
frontend/CALENDAR_FEATURE.md - Calendar feature guide
- Feature overview
- Component usage
- Styling system
- Accessibility
-
frontend/TIME_TRACKING_README.md - Time tracking features
- Feature overview
- Component documentation
- Usage examples
-
frontend/MENTIONS_README.md - Mentions feature
- Feature overview
- Implementation details
-
docs/task-dependencies.md - Task dependencies documentation
- Concept overview
- Contract functions
- Error codes
- Usage examples
-
docs/task-state-machine.md - Task state transitions
- State diagram
- Transition rules
- Error conditions
-
docs/event-indexing.md - Event indexing guide
- Event types
- Indexing strategy
- Query patterns
-
IMPLEMENTATION_VERIFICATION.md - Implementation verification checklist
- All features verified
- Component checklist
- Testing status
-
TASK_DEPENDENCIES_IMPLEMENTATION.md - Task dependencies implementation summary
- Branch information
- Contract layer changes
- Frontend layer changes
- Acceptance criteria status
-
MAKEFILE.md - Makefile documentation
- Target descriptions
- Usage examples
- Best practices
-
TESTING_RESULT.md - Makefile testing results
- Test environment details
- Target verification status
- Issues found (pre-existing)
-
PERFORMANCE.md - Performance considerations
- Optimization strategies
- Benchmarking results
- Scaling guidelines
-
CODECOV_SETUP.md - Code coverage setup
- Configuration instructions
- Integration details
-
SECRET_SCANNING.md - Secret management
- Best practices
- Configuration
- Prevention measures
-
CONTRIBUTING.md - Contribution guidelines
-
IMPLEMENTATION_SUMMARY.md - Project implementation summary
-
frontend/DEVELOPER_REFERENCE.md - Frontend developer guide
-
frontend/VISUAL_GUIDE.md - UI visual guide
-
frontend/FILE_MANIFEST.md - Frontend file organization
┌─────────────────────────────────────────────────────────────────┐
│ SoroTask Ecosystem │
└─────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ User Layer (Frontend) │
├─────────────────────────────────────────────────────────────────┤
│ • Calendar UI - View task deadlines (month-view, 29+ timezones) │
│ • Task Management - Create, edit, delete tasks │
│ • Dependency Management - Add/remove task dependencies │
│ • Dashboard - Task overview and status indicators │
│ • Responsive Design - Mobile, tablet, desktop support │
└─────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ Smart Contract Layer (Soroban/Rust) │
├─────────────────────────────────────────────────────────────────┤
│ • Task Registration - Store task configurations │
│ • Execution Enforcement - Check schedules and conditions │
│ • Dependency Management - Validate task dependencies │
│ • State Management - Maintain task state and history │
│ • Access Control - Whitelist authorization │
└─────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ Keeper Layer (Node.js Bot) │
├─────────────────────────────────────────────────────────────────┤
│ • Polling Engine - Detect due tasks (concurrent reads) │
│ • Execution Engine - Execute tasks (concurrent executions) │
│ • Gas Forecasting - Predict and track gas usage │
│ • Dead-Letter Queue - Quarantine failing tasks │
│ • Health Monitoring - Status and metrics endpoints │
│ • Error Recovery - Graceful handling of failures │
│ • Idempotency - Prevent duplicate submissions │
└─────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ Target Layer (User Contracts) │
├─────────────────────────────────────────────────────────────────┤
│ • User-Defined Functions - Arbitrary contract execution │
│ • Yield Harvesters - DeFi automation (example) │
│ • Custom Logic - Any Soroban-compatible contract │
└─────────────────────────────────────────────────────────────────┘
1. Task Creation Flow:
User → Dashboard → Smart Contract → Store TaskConfig
2. Execution Flow:
Keeper → Poll Due Tasks → Check Dependencies/Conditions
→ Execute Target Contract → Record Results → Update State
3. Forecasting Flow:
Execute Task → Record Gas Cost → Update Statistics
→ Generate Forecast → Detect Underfunded Tasks
4. Monitoring Flow:
Keeper → Emit Metrics → Prometheus → Grafana/Dashboards
→ Health Check → HTTP Endpoint → Health Monitoring
| Component | Technology | Version | Purpose |
|---|---|---|---|
| Smart Contract | Rust | 1.75+ | Core protocol logic |
| Smart Contract Framework | Soroban SDK | 20+ | Stellar integration |
| Contract Testing | Cargo + fuzz | Latest | Quality assurance |
| Keeper Bot | Node.js | 16+ | Task execution engine |
| Keeper Framework | Express.js | 4.x | HTTP endpoints |
| Task Scheduling | Custom Poller | - | Schedule evaluation |
| Metrics | Prometheus | - | Monitoring |
| Frontend | Next.js | 14+ | React framework |
| Styling | Tailwind CSS | 3.x | Utility CSS |
| Language | TypeScript | 5.x | Type safety |
| Testing | Jest | 29+ | Test framework |
| E2E Testing | Playwright | Latest | Browser automation |
| Package Manager | pnpm | 8+ | Frontend deps |
| Containers | Docker | 20+ | Deployment |
| Orchestration | Docker Compose | 2.x | Local development |
- Smart Contract: ~2,000 lines of Rust
- Keeper Bot: ~1,500 lines of Node.js (core + features)
- Frontend: ~4,000 lines of TypeScript/React
- Tests: ~1,500 lines of test code
- Documentation: 30+ technical documents, 10,000+ lines
- Frontend Components: 35+ React components
- Utility Modules: 50+ utility functions
- API Endpoints: 5+ (health, metrics, forecast, etc.)
- Error Types: 11 distinct error codes
- Supported Timezones: 29+ IANA timezones
- Contract Tests: 50+ test cases
- Keeper Tests: 30+ test cases
- Frontend Tests: 35+ test cases
- Total: 115+ test cases across all components
- Gas Forecasting: Based on historical data; not 100% accurate for newly deployed tasks
- Timezone Support: Limited to configured IANA timezones
- Resolver Contracts: Optional; complex conditions require custom resolver development
- Whitelist Mode: Must be manually configured per task
- Machine Learning Forecasting: Improve gas prediction accuracy
- Advanced Analytics: Task execution trends and patterns
- Automated Resolver Library: Pre-built condition contracts
- Governance: Community voting on keeper selection
- Sidecars: Health check and monitoring sidecars
- Advanced Logging: Structured logging with correlation IDs
- All Makefile Targets: Working (22/22 targets)
- Smart Contract: Compiles and tests pass
- Keeper Bot: Docker builds and runs
- Frontend Dashboard: Builds and tests pass
- Documentation: Complete and accurate
| Component | Tests | Status | Coverage |
|---|---|---|---|
| Contract | 50+ | ✅ Pass | Critical paths |
| Keeper | 30+ | ✅ Pass | Core features |
| Frontend | 35+ | ✅ Pass | Utilities + components |
| Build System | 22 | ✅ Pass | All targets |
# 1. Clone the repository
git clone <repository-url>
cd SoroTask
# 2. Configure environment
cp keeper/.env.example keeper/.env
# Edit keeper/.env with your settings
# 3. Start with Docker
docker compose up -d
# 4. Verify health
curl http://localhost:3001/health# Contract
cd contract
cargo build --target wasm32-unknown-unknown --release
# Keeper
cd keeper
npm install
node index.js
# Frontend
cd frontend
npm run dev# Run all tests
make test
# Run linting
make lint
# Build everything
make build
# Clean build artifacts
make clean
# Format code
make format- Documentation: See
/docsand component READMEs - Security: Report vulnerabilities to
security@sorolabs.org - Issues: GitHub Issues for bug reports and feature requests
- Discussions: GitHub Discussions for general questions
SoroTask is a comprehensive decentralized task automation platform with:
✅ Production-Ready Components: Contract, Keeper, Frontend ✅ Advanced Features: Calendar UX, Dependencies, Gas Forecasting, DLQ ✅ Operational Excellence: Docker deployment, health checks, metrics ✅ Quality Assurance: 115+ tests, comprehensive documentation, security policy ✅ Developer Experience: Build automation, quick start guide, detailed docs
The project is ready for deployment and further development!
Document Version: 1.0 Last Updated: April 29, 2026 Maintainer: SoroLabs Team