GNU/Linux, Open Source, Cloud Computing, DevOps and more...

Web application for live onsite and online car auctions

2 comments

This was a very interesting project related to the automotive business in which I led a technical team of 4 people in the design and development of a complete software intended for conducting live car auctions both onsite and online in a large industrial building especially conditioned for this kind of events. Unfortunately, despite the beauty of the project and being a startup with great potential and highly talented team of almost 20 people, the application could not finally be used in a real scenario because the company wound up before it could actually start due to various commercial and management issues.

However, at the technical level the application was implemented and deployed completely, fulfilling very satisfactorily the requirements and objectives initially set out. Our application was mainly inspired by the BCA and Autorola car auction softwares, and also others like CarsOnTheWeb, ManheimEurocarBidSubastacarSubasto mi Coche, etc. I humbly believe that we managed to improve them in several ways.

BCA bidding

Full management of real-time auctions

Our main technological challenge was to achieve an auction management system that allowed simultaneous acceptance of bids from potential buyers located in any geographic location through the Internet, as well as from the auction event attendees who bid on-site.

15-FRONTEND-online-car-auction

Online car auction control panel

To accomplish this, a real-time auction engine was developed using websockets and a great optimization effort was made not only on the websockets module but also the entire technological stack involved, from the operating system and network communications to the database and runtime environment. All this to get initial response times lower than 100 ms since a user pressed the Bid now button until that bid was collected by the system and updated the current price and other counters and data of interest corresponding to the car in auction at that time. In addition, all this had to be done with hundreds of users bidding simultaneously, so it was necessary to implement a sophisticated queueing and bidding system able to resolve conflicts between them.


Error: Your Requested widget " ai_widget-6" is not in the widget list.
  • [do_widget_area above-nav-left]
    • [do_widget_area above-nav-right]
      • [do_widget_area footer-1]
        • [do_widget id="wpp-4"]
      • [do_widget_area footer-2]
        • [do_widget id="recent-posts-4"]
      • [do_widget_area footer-3]
        • [do_widget id="recent-comments-3"]
      • [do_widget_area footer-4]
        • [do_widget id="archives-4"]
      • [do_widget_area logo-bar]
        • [do_widget id="oxywidgetwpml-3"]
      • [do_widget_area menu-bar]
        • [do_widget id="search-3"]
      • [do_widget_area sidebar]
        • [do_widget id="search-4"]
        • [do_widget id="ai_widget-2"]
        • [do_widget id="categories-5"]
        • [do_widget id="ai_widget-3"]
        • [do_widget id="ai_widget-4"]
        • [do_widget id="ai_widget-5"]
      • [do_widget_area sub-footer-1]
        • [do_widget id="text-4"]
      • [do_widget_area sub-footer-2]
        • [do_widget_area sub-footer-3]
          • [do_widget_area sub-footer-4]
            • [do_widget_area upper-footer-1]
              • [do_widget id="search-2"]
              • [do_widget id="recent-posts-2"]
              • [do_widget id="recent-comments-2"]
              • [do_widget id="archives-2"]
              • [do_widget id="categories-2"]
              • [do_widget id="meta-2"]
            • [do_widget_area upper-footer-2]
              • [do_widget_area upper-footer-3]
                • [do_widget_area upper-footer-4]
                  • [do_widget_area widgets_for_shortcodes]
                    • [do_widget id="search-5"]
                    • [do_widget id="ai_widget-6"]
                  • [do_widget_area wp_inactive_widgets]
                    • [do_widget id="wpp-2"]
                    • [do_widget id="text-1"]
                    • [do_widget id="recent-posts-3"]
                    • [do_widget id="categories-3"]
                    • [do_widget id="archives-3"]
                    • [do_widget id="icl_lang_sel_widget-3"]

                  Although those initial response times were fast enough, the system was prepared to further enhance responsiveness when it was deployed in production environment, since the testing and certification phase was done with the bid server located in the eu-west-1 area of Amazon Web Services. In other words, the server was located in Ireland and the bids were made mostly from Madrid and other parts of Spain, which introduced an unnecessary network latency of 50-60 ms which was planned to minimize placing the bids subsystem close to Madrid. Other improvements were planned to achieve the 30 ms response time goal that I planned for the application in production environment.

                  Multitier architecture

                  Another project design main goal was to achieve a decoupled architecture that would allow the presentation, business logic and data layers to be completely and effectively separated, so that the same database of cars, auctions, manufacturers, clients, suppliers, etc. could be used both by our auction software and by various corporate and third-party applications such as CRM and sales force, valuation tools, internal management of vehicle entrances, maintenance and exits, mobile apps, different microservices and connected electronic devices (Raspberry Pi) with different missions, etc.


                  Error: Your Requested widget " ai_widget-6" is not in the widget list.
                  • [do_widget_area above-nav-left]
                    • [do_widget_area above-nav-right]
                      • [do_widget_area footer-1]
                        • [do_widget id="wpp-4"]
                      • [do_widget_area footer-2]
                        • [do_widget id="recent-posts-4"]
                      • [do_widget_area footer-3]
                        • [do_widget id="recent-comments-3"]
                      • [do_widget_area footer-4]
                        • [do_widget id="archives-4"]
                      • [do_widget_area logo-bar]
                        • [do_widget id="oxywidgetwpml-3"]
                      • [do_widget_area menu-bar]
                        • [do_widget id="search-3"]
                      • [do_widget_area sidebar]
                        • [do_widget id="search-4"]
                        • [do_widget id="ai_widget-2"]
                        • [do_widget id="categories-5"]
                        • [do_widget id="ai_widget-3"]
                        • [do_widget id="ai_widget-4"]
                        • [do_widget id="ai_widget-5"]
                      • [do_widget_area sub-footer-1]
                        • [do_widget id="text-4"]
                      • [do_widget_area sub-footer-2]
                        • [do_widget_area sub-footer-3]
                          • [do_widget_area sub-footer-4]
                            • [do_widget_area upper-footer-1]
                              • [do_widget id="search-2"]
                              • [do_widget id="recent-posts-2"]
                              • [do_widget id="recent-comments-2"]
                              • [do_widget id="archives-2"]
                              • [do_widget id="categories-2"]
                              • [do_widget id="meta-2"]
                            • [do_widget_area upper-footer-2]
                              • [do_widget_area upper-footer-3]
                                • [do_widget_area upper-footer-4]
                                  • [do_widget_area widgets_for_shortcodes]
                                    • [do_widget id="search-5"]
                                    • [do_widget id="ai_widget-6"]
                                  • [do_widget_area wp_inactive_widgets]
                                    • [do_widget id="wpp-2"]
                                    • [do_widget id="text-1"]
                                    • [do_widget id="recent-posts-3"]
                                    • [do_widget id="categories-3"]
                                    • [do_widget id="archives-3"]
                                    • [do_widget id="icl_lang_sel_widget-3"]

                                  In order to do this, I opted to implement the architecture shown below based on a REST API and the aforementioned websockets to act as an interface between the presentation and business logic layers:

                                  Arquitectura conceptual 3-tier basada en API RESTTechnology base

                                  These are the technologies used to support all requirements stated above:

                                  Technology used
                                  Auction and bid servers EC2 Instances in Amazon Web Services (AWS)
                                  Operating System Linux (Ubuntu 14.04 LTS)
                                  Backend/runtime PHP (ReactPHP & Symfony 2.6)
                                  API REST Symfony 2.6 + FOSRestBundle
                                  Database MySQL 5.6
                                  Web front-end AngularJS 1.3 + Restangular

                                  Auctioneer and scorer posts and room screens

                                  From the beginning it was considered as an indispensable requirement that application’s user interface was fully responsive so that it could be used from any type of mobile device or tablet, as well as in the different equipment used on-site for the auctioneer and scorer posts, and also to display auction information on screens of different sizes distributed all over the venue from which in progress auctions could be followed in real time.

                                  08-BACKOFFICE-auctioneer-screen

                                  Auctioneer screen

                                  09-BACKOFFICE-annotator-screen

                                  Annotator screen

                                  10-BACKOFFICE-room-screen-hd-1920x1080

                                  Room screen

                                  Internal Administration and Control Panel

                                  In order to manage everything happening behind the scenes during the auction event’s day, but also in the days before and after to prepair the session and to manage the sales made, a complete administration panel was made:

                                  01-BACKOFFICE-my-desktop

                                  Home - My Desktop

                                  02-BACKOFFICE-list-of-vehicles

                                  List of vehicles

                                  07-BACKOFFICE-vehicle-edit-form

                                  Vehicle edit form

                                  03-BACKOFFICE-account-creation-form

                                  Customer account creation form

                                  05-BACKOFFICE-account-detail-view-tablet

                                  Client account detail view (tablet)

                                  06-BACKOFFICE-list-of-accounts-mobile

                                  List of customer accounts (mobile)

                                  Public website

                                  As I said at the beginning, in addition to dealing with live on-site auctions, also external bidders should be given access so that they could register for the various auctions available, select and bookmark the cars that were most interesting for them, bid on those vehicles at the same time when they were auctioned on-site and could finally fullfill the complete purchase process of cars once they were awarded to them. For this, a complete public website had to be developed to allow users to perform all these operations:

                                  17-FRONTEND-auction-detail-view

                                  Auction detail view

                                  16-FRONTEND-auction-calendar

                                  Auction calendar

                                  15-FRONTEND-online-car-auction

                                  Online car auction control panel

                                  14-FRONTEND-user-sign-up-form-mobile

                                  User sign up form (mobile)

                                  13-FRONTEND-account-detail-view

                                  Account detail view

                                  12-FRONTEND-user-registration

                                  User registration form

                                   

                                  About the author

                                  Daniel López Azaña
                                  Freelance AWS Cloud Solution Architect & Linux Sysadmin

                                  Entrepreneur, a generator of ideas and restless mind. Passionate about new technologies, especially Linux systems and Open Source Software. I also like to write about Technology News, Cloud Computing, AWS, DevOps, DevSecOps, System Security, Web Development and Programming, SEO, Science, Innovation, Entrepreneurship, etc.

                                  DanielWeb application for live onsite and online car auctions

                                  Related Posts

                                  2 comments

                                  Join the conversation
                                  • Romelito - 27/07/2019 reply

                                    I am looking for a web designer to create a live Auction website and give access to the public

                                  • r3c4ll - 05/06/2021 reply

                                    Do you know something similar open sourced?

                                  Leave a Reply

                                  Your email address will not be published.