1-2.lu aka "Landrush"

In 2020, the Restena Foundation enabled the registration of a .lu domain names with 1 or 2 characters to each interested company and individual. In the first stage of registration, the domain names are offered to trademark holders to allow them to obtain their corresponding domain name. In the next stage all the remaining domain names were made available for a general public — this is known as landrush period. This web application worked as an auction platform where anyone could register and compete to acquire available domain names.

Functionality

DNS-LU Landrush dashboard

To be able to participate in the auctions, one must have undergone a registration process by filling out all the necessary data and awaiting their validation (e.g. the VAT numbers were checked using external VIES API). After the initial user registration, the user was able to browse all auctions — one per available domain name. There were nearly 2800 domain names available so the filters and search functionality came in handy to narrow down the results.

After looking up the desired auction, users would be able to consult the auction detail page, where the bidding history was shown and new bids could be placed. Bidding on an auction was possible based on the state of the auction and the time of the last bid. Bidding on closed or already won auctions was equally not possible. All bids placed on the purchase/sale platform were anonymous. Each user could only see anonymous bidding history, the auction amount, and its closing date. Neither the number of concurrent bidders, nor their identity were revealed to the users.

A notification system was set up to inform users of the progress of every auction which they were involved in. This included a notification at each new bid, at the closure of the auction, or if an auction is reactivated. Similarly, the systemd timers and jobs were put in place to handle the time related events like changing the auction state at the specific time. Systemd was chosen since it offers much more granular options than traditional cron-jobs would have permitted.

Once an auction was won, the required PDF documents, e.g. invoice and contract documents pre-filled with user and invoice-data obtained from the Restena's API, were generated on the server and sent to the winner. The final part of domain registration was handled by Restena Foundation.

Development

The application was developped using the Vue.js framework with the Vuetify UI components library. As always, we've chosen our favorite TypeScript language which helps to reduce and prevent problems during the development process and also can make the source code more understandable.

All the information on auctions, bids, and users was stored in a remote MariaDB database, which is a community-developed fork of the MySQL relational database system. Other than this being a customer requirement, using SQL-based database simplified creation of more complicated queries especially when it comes to filtering and searching for auctions and domains.

Support

Priority support and on-call availability even outside the working hours were offered during the production runtime to the client to ensure that any potentially undiscovered issues were solved as quickly as possible.

Technologies used in building this application

Vue.js

Vue.js is progressive JavaScript framework for building user interfaces. Vue is a capable web application framework that is able to power advanced single-page applications (+)

Vuetify.js

Vuetify.js is a reusable semantic component framework for Vue.js. It aims to provide clean, semantic and reusable components. (+)

TypeScript

TypeScript is an open-source programming language developed and maintained by Microsoft. It is a strict syntactical superset of JavaScript, and adds optional static typing to the language. (+)

Node.js

Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. (+)

MariaDB

MariaDB is a community-developed, commercially supported fork of the MySQL relational database management system under the GNU General Public License. (+)

Koa.js

Koa is a new web framework designed by the team behind Express, which aims to be a smaller, more expressive, and more robust foundation for web applications and APIs. (+)