Architecture of Open Procurement System
The basic OpenProcurement toolkit comprises storing data and conducting auctions.
The toolkit includes two backend components:
- a Business Process Management (BPM) Engine with Central Database (CDB) and an API
- an Auction module.
Frontend platforms (eMalls, marketplaces, private markets, etc) interact with the BPM Engine via OpenProcurement API and provide suppliers with temporary credentials to access the Auction module for participation in the auction.
Web platforms and BPM Engine interact through the API - web interface based on the JSON notation.
The central unit data structure is based on Open Contracting Data Standards and follows the open data principle, publishing all data that can be published according to the law.
The toolkit implementing the OpenProcurement API has been developed using powerful open source web technologies such as Python, Pyramid, AngularJS, Bootstrap, Flask, CouchDB, and PouchDB.
Procurement Business Processes logic is implemented in Python. Non-relational database CouchDB was used to store records of auctions, bids, etc. Attachments (binary files such as pdf, xls, etc.) are stored on the AWS S3-compatible object storage.
Originally OpenProcurement was developed for ProZorro procurement system. But this toolkit is flexible enough to handle all shapes and sizes of government and private sector procurements with minimum changes.