The product I'm building - useSoroban.app - will provide an accessible environment for anyone with a web development background to experiment with Soroban. With an in-browser host environment, users will be able to instantly see their contract call outcomes, see ledger changes, compose and execute complex transactions involving multiple accounts and contracts, among other things.
Smart contract platform onboarding is tricky, especially when you want to reach web developers - the biggest developer demographic. The time it takes for a curious web dev to interact with their first contract is a point of churn. Web devs are used to amazing, zero-setup tools that work in the browser, and by reducing the time-to-interaction to essentially zero - we keep them engaged. Moreover, once you click that button to "compile" a contract and you start interacting with it, you've created something - you have left your mark on the blockchain. This could provide extra incentive to stick around.
The product is composed of 4 services and packages. A compiler service that uses Rust and Cargo to configure and compile Soroban contracts into executables. I'm using Node to indirectly interface with Cargo, without interacting with the Soroban CLI. A custom WebAssembly disassembler/reassembler to inspect and optimize contract executables written in JavaScript. I also want to instrument contract executables to further enhance the playground experience. Web app that is the primary point of contact with useSoroban.app, written in JavaScript + React. I'm leveraging the JavaScript interface for WebAssembly to simulate a host environment for contracts within the browser. A custom JavaScript SDK for Soroban. It's something I started building for sorobandev.com and abstracted into its own public package. This SDK is required to enable simplified contract-based transactions using minimal syntax. The SDK will also be used when users export their playground projects to continue work locally.