JavaScript/TypeScript SDK for building web applications that run within the Logos App, with full access to Logos Core modules (blockchain, storage, messaging).
A browser variant with limited functionality may exist for onboarding newcomers with minimal friction.
FURPS+
Functionality
- Full access to all Logos Core backend modules (wallet, chat, messaging, storage)
- Connect to Logos blockchain nodes for Logos Wallet actions
- Upload and download data to/from Logos Storage
- Publish and subscribe to messages via Logos Messaging
- Support account management and key handling
- Enable interaction with smart contracts
Usability
- Provide intuitive API with comprehensive documentation
- Include TypeScript type definitions for IDE support
- Offer example code and starter templates
- Simple async/await API for calling backend modules
- Event-driven architecture with
EventEmitterpattern
Supportability
- Maintain backward compatibility across versions
- Provide clear migration guides for breaking changes
- Support modern bundlers (Webpack, Vite, Rollup)
- Cross-platform support (Windows, macOS, Linux, Android, iOS)
+ (Privacy, Anonymity, Censorship-Resistance)
- Anonymous retrieval of modules, including frontend, via Package Manager
- Censorship-resistant retrieval of modules, including frontend, via Package Manager
Demand Validation
Potential Users: Web developers building mini apps for Logos App
Use Cases:
- Activity Hub with full Logos Storage integration
- Private chat applications with message persistence
- DeFi applications with full wallet integration
- Content management tools leveraging Logos Storage
- Developer dashboards accessing all Logos modules
Possible Implementation
- Core Library: TypeScript wrapper around Logos Core FFI
- Qt WebChannel Bridge: Communication between WebView and Qt backend
- Module Access: Reflective API for all loaded Logos modules (
logos.wallet.*,logos.chat.*) - Event System: Subscribe to module events (
logos.chat.onChatMessage()) - Storage Client: Full read/write access to Logos Storage
- Messaging Client: Full pub/sub access to Logos Messaging
Example API
const logos = new LogosAPI()
// Full storage access
await logos.storage.upload(data)
const content = await logos.storage.download(cid)
// Full messaging access with history
await logos.chat.joinChannel("general")
const history = await logos.chat.retrieveHistory("general")
// Wallet operations
const balance = await logos.wallet.ethBalance("0x...")Technical Validation
Risks & Challenges:
- Maintaining API stability as backend modules evolve
- Qt WebChannel communication overhead
- TypeScript bindings generation from C++ modules
- Debugging WebView-embedded applications
- Documenting all available module methods
Dependencies:
- Logos Core with module system
- QtWebView with Qt WebChannel support
- liblogos for module APIs
- Logos App runtime environment
Integration Points:
- Logos Core modules (wallet, chat, waku, storage)
- QtWebView for rendering web applications
- Qt WebChannel for JavaScript-to-C++ bridge
- Development Journey for developers
- Logos JS SDK (Browser) for onboarding experiences