Balebid.com is a global material trading platform for the recycling industry. Materials can be posted as biddable auctions or classified adverts. Buyers can directly connect with sellers to purchase available material. This was developed using Laravel 5.4 framework with Node.js, Socket.io and Redis for real-time bidding.
Sellers post their materials as auctions and classifieds on the platform. They can use images and descriptive text to make their posting unique and attractive. Images uploaded are optimized for uniformity across the application.
Auctions are open for sale for a week from the date of posting. At the end of this period, the highest bidder is selected as the winner and awarded the auctioned material. Classifieds are open for a month from the date of posting.
The revenue generation model for the system is based on: a) Connection fee which will be paid by auction buyers to get introduced to the auction seller; and b) Classified publishing fees.
Auction bidding: Real-time bidding has been set up for auctions. As the newly placed bid info are updated real-time, it acts as an impetus for other bidders to place their own bids, thereby increasing the overall bidding activity on the site.
My team: The team captain can invite new users to the company. On accepting the invite, the new user is added as a member of the company. The team captain can overview the activity of all members of the company. This aids multiple brokers to represent and work for a company.
My auctions: A complete listing of all auctions posted by the user can be viewed here. This page is automatically refreshed every 30 seconds. This has been implemented using AngularJS, to give the user the feeling of live data feed.
Invoicing: The payments in the application are currently being managed through manual invoicing and the admin can easily send invoice reminders to any user. An up to date payment gateway integration is currently underway.
Webticker: A webticker runs atop each page displaying important and updated statistics to assist users in decision-making. This has been implemented by integrating Google API and Redis.
The admin panel for the platform has been set up to manage and control activity on the site. New users signing up are checked against a blacklist of email domains and IP addresses.
Users found to be suspicious need to be approved manually by the webmaster before their accounts are activated. The admin can review the user details and then approve or reject the user.
When adding a new auction, sellers can add new type tags for their material if they are unable to find a suitable tag. The new tags need to be approved by the webmaster.
The webmaster can review and then approve or reject the tags. If approved, the auction is published live on the platform; if rejected, the seller is notified to update the tag.
The webmaster has also been provided with the feature to create voucher codes. The voucher codes can be added with limitations on total usage count, usage per user, and expiry dates. These voucher codes may be used for promotional campaigns, whereby users can publish classified adverts free of cost.
Live updates of the bidding activity on the site has been implemented by integrating the Node.Js Express framework, Socket.io and Redis technologies. Any new bidding activity is broadcasted to all users on the bidding page.
The logged-in user’s bidding status (highest bidder, outbid, won or lost), current highest bid amount, etc, are updated in real-time without needing a page reload.
Load balancing and autoscaling: As the site is expecting thousands of concurrent users at peak time, the ability of the server to grow its resources was a requirement from the outset. Our team of software architects with expertise in AWS Elastic Load Balancing set up an optimal architecture to support the required scalability.
The different aspects of the system were kept decoupled to support the scaling. Amazon EC2 cloud was used to deploy this application and enable autoscaling support.
Real-time data broadcasting: This is accomplished by integrating Node.js, Socket.io and Redis. To get this working with the decoupled architecture to allow for scaling was indeed a challenge. It required the team to delve deeper into the technologies that were involved and get it working together with Laravel.
Caching: As we are expecting thousands of users at peak time, we had to ensure that we made the best use of caching. We have made use of caching at multiple levels, including the CDN cache, browser cache and many more. Redundant fetches from the database were avoided by caching the results on Redis.
Responsive design: Zurb foundation for Sites 6 has been used for styling and designing the application. All pages are responsive and optimized for best user experience on all devices and orientations.
Our design architects in India worked hand in glove with the client’s UK based in-house designers to perfect the application design.
Content delivery network: Amazon CloudFront CDN was integrated into the application to provide improved availability and lesser periods of latency for the media and related content across the globe.
Database: To ensure data security and backup with minimal user intervention, we have used Multi-AZ enabled MySQL on the Amazon RDS service.
Coding standards: PSR-2 coding standards and project guidelines were implemented to guide the developers throughout the project. This helped in keeping the code readable and easily maintainable.
Standard practices of commenting to document the code has been followed to complement with this. A separate software developer documentation of all the features is maintained and shared with the client.
Agile methodology: This helped us deliver the application live in six months. We will continue working in subsequent sprints to further better the user experience and add more features based on user inputs.