Can I build my own messaging application on top of status?

Can I use status.im to build my own messaging application where I will not use public status.im network, but I will deploy and manage the private network/blockchain/mailservers?
Where I can get integration guide or apis guide?
Can I integrate external video audio calling using status?

2 Likes

@gaurav, I can probably answer your questions even though I’m not a core contributor. You can do whatever you want with Status, as it’s open source… and reconfiguring and running history nodes isn’t difficult. I don’t believe that the peer to peer network depends on any closed source software nor Status-specific infrastructure, other than matterbridge (probably because of an API key). I’m also unfamiliar with how history node discovery occurs at genesis; that may require core contributor input.

If you bootstrap your own Ethereum blockchain, you could perform a find and replace across the code for endpoints that the clients talk to in places like this. You’ll also need to replace Infura with a call to your blockchain for fresh wallet data. API methods are here.

It shouldn’t be too difficult to integrate a cloud API to add links to a chat for a new Google Meet call or something… but if you want to place calls directly between two clients without exposing them to other clients, Status hasn’t yet implemented any kind of private audio or video calling integration for peer to peer data streams… so you’ll have to find a way to integrate one of the many open source conferencing libraries with Waku, or create one yourself. That sounds like quite a challenge.

I’m curious as to why you’d choose to create a private network using Status code, as that seems like a rather specific use case.

Thank you @Chris, for providing a this much details quickly.
We are planning to use status.im for building enterprise application.

@Chris Is there some one from core team help me on this from status.im?

If you wish to run a private blockchain and history nodes, I’d suggest setting up three nodes for each. If you run in to errors or issues, you can then post the details here so that the core contributors working on those specific parts of the code can address the specific difficulties that you run in to. The log output on the nodes should help address your issues as you attempt this.

Web searches can help you set up an Ethereum test network. Before modifying code for the history nodes, I’d try building a history node that works with existing Status peers to familiarize yourself with the process… then learn how to configure it. The basics of running a history node on Ubuntu 20.04 LTS are as follows. I did this in a terminal as root, but you can use sudo before each command if needed.

  • If go is not installed, and if go version is not 1.13 or later, add Go 1.15+ to package sources
    • apt-get -y install software-properties-common
    • add-apt-repository ppa:longsleep/golang-backports
    • apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F6BC817356A3D45E
  • Update all software, then install dependencies… your environment might already have these:
    • apt-get update
    • apt-get -y dist-upgrade
    • apt-get -y install curl git golang-go make jq qrencode
  • Download the latest status-go release
    • git clone https://github.com/status-im/status-go
  • Build a history node
    • cd status-go
    • make run-mailserver-systemd
  • Configure the Status app to use your history node
    • _assets/scripts/get_enode.sh --qr
    • Scan the QR code with the Status app
      • In the Status app, navigate to Profile > Sync settings > Mailserver > +
      • Tap the icon at the end of the Mailserver address field
      • Scan the QR code with your device’s camera
2 Likes

@Chris Thank you for providing these details I will look into this.

1 Like