Top Level C and C View - pinocchio61/Architecture GitHub Wiki
Primary Presentation
Element Catalog
WebApp
The client-side WebApp provides a user interface to communicate with other system elements. This is achieved by communicating, via HTTP/HTTPS, from self-hosted servers to third-party services, such as a transcription provider. The WebApp is used by attendees to upload audio, edit transcriptions, and vote on transcriptions. It interacts directly with both blockchain and distributed file system via corresponding providers.
Backend Server
This is a self-hosted server that performs functions, for example, machine-transcription, event management and etc.
Transcription Provider
Potential providers can be cloud services or open source libraries. The audio service will periodically communicate with the transcription provider to retrieve transcribed results.
Search Service
This is a self-hosted service to provide search capability to end users. The service will periodically pull verified transcription updates from the distributed systems and then store them into the local file system (Verified Transcriptions). The Search Service indexes all of the verified transcriptions and enables web users to query these transcriptions.
Key Management
This client-side key management application manages end-user identities, such as private/public key pairs. The end users will use their keys to sign the message written to the blockchain. It also provides a Dapp browser to interact with the WebApp. The implementation could be MetaMask and Cipher Browser.
Blockchain Provider and Blockchain network
Rather than hosting a blockchain node on our own servers, a blockchain provider acts as a proxy between the mobile application and blockchain network. This provides easy-to-use APIs for blockchain interactions, such as voting for transcriptions, accessing voting results, and publishing voting contracts.
Storage Provider and Distributed File System
The distributed file system provides storage for transcription files. Different applications can retrieve a file by its corresponding hash.