The client is a company bringing the latest advancements in technology to the real estate industry. Their main product is a web-application featuring an implementation of their blockchain protocol. The web-application is a system for recording real estate rights on a decentralized, open blockchain network.
The client needed to develop an Ethereum prototype for storing data on real estate/land plots (geo-coordinates, name, owner, value, photographs, and documents) and managing this data (for example, transferring property when paying with Ether). This was necessary to test if such a project is viable, and also to check the cost of such transactions on Ethereum.
They hired us to do both design and development, including technical architecture and deployment.
To work with smart contracts, we chose to use Truffle and ZeppelinOS since they greatly simplify the work with contract deployment and migrations on Ethereum. For the frontend of the app, we used React — it’s simple and powerful — while for the backend, we used Express, a Node.js application framework.
Smart contracts were upload to the Ropsten test network, while for storing files like documents and photos, we used IPFS.
IPFS is a peer-to-peer network for storing and sharing data. We chose to use it because the technology has great potential and allows you to store data in a distributed way. The estimated time for the functionality that the customer wanted was about 3-4 months, so the development of the project was carried out in two-week sprints.
At the end of each sprint, we communicated with the client through a conference call, set goals for the next sprint, and presented demos of the new features.
Altogether, we developed the following features:
At that time, there were no similar projects of this scale on the market. We managed to create a full stack prototype for a large-scale, distributed app that works stably and reliably.
Frontend: React
Backend: Express
Smart contracts: Truffle, ZeppelinOS, Ethereum
Database: PostgreSQL
Deployment: AWS
The client received a working prototype on time. In addition, all the change requests of the client were taken into account during development. The prototype enabled the client to fulfill their goals, including finding out the transaction costs for such a project.