I am new to smart contract development. I would like to create a mobile app that can connect to solidity, but I am not sure how.
There is a lot of documentation on how to connect to web applications but not on the mobile app. So I am guessing there must be some server-side application in the middle? Because it needs to connect to Metamask and the browser.
How do I properly connect smart contracts, a client-mobile app, and a server-side app that is able to connect to Metamask?
You most of the time want to directly interact with the smart contract from the mobile device after s/he has connected the app with metamask(or other wallet application) especially to create a new transaction on the blockchain. Most of the time there is only a server-side middleware for processing a lot of blockchain data for performance gain.
So from the device app you would - get blockchain data + create new tx + call a smart contract that changes the state of the smart contract
From backend you would generally only get data that requires intensive processing and/or required to cache the data on db for performance gain.
So depending on which platform you are developing your mobile app, you would look for a web3 library to connect to the wallet and interact with deployed smart contract. Easiest would be if you use a JS-based platform (like React Native) cause web3 js is one of the matured ones among all the web3
libraries.