17/04/23 • Backend

HieuAIO

HieuAIO originally started out as a singular module which supports only EB Games but was then developed into a fully functional software that allows users customisation. Currently, it supports EB Games and Zing which are major Australian retailer that specialises in the release of toys and collectibles. At the core of HieuAIO lies a deep connection to my personal identity where the name is established from my middle name "Hieu" in conjunction with the acronym of "all in one", embodying the essence of my unwavering commitment. In the near future, I intend to turn this software into a commercial product as I believe it yields potential in the Australian automation market.

Upon startup, users are greeted with a welcome page where a membership key is needed to be able to access the dashboard.

Calculator

I have chosen to use Whop as the dashboard system to purchase these keys as they have cutting edge features and excellent documentations to help set up. Using Whop's API, a POST request is made to validate the key that is inputted and users are redirected to the dashboard with their Discord username and tag, upon success.

                        
const response = await axios.post(
    `https://api.whop.com/api/v2/memberships/${keyResponse.keyInput}/validate_license`,
    {
        'metadata': {
            'HWID': 'hwid_here'
        }
    },
    {
        headers: {
            'Authorization': 'Bearer IW77RIdzG_IuOreWGSxcwHGDjru_cue7u096YHXkw88',
            'accept': 'application/json',
            'content-type': 'application/json'
        }
    }
);
                        
                    
Key Validation

Options on the dashboard is set out using a selector where arrow keys are used to hover on options and the enter key is used to select it.

Tasks will need to be created first in order to run the modules to the user's preference and let the software know what to do. To do so, users will manually add a "profile" which is details about their contact, shipping and billing information. After selecting "Create Tasks" option, users will be greeted with input prompts asking for which site they want to create tasks for, how many tasks on that site, the link of the product, and the profile they would like to use. A final selector of Dashboard or Exit will be shown after tasks have been created, which also is displayed when tasks are ran or webhooks are configured.

Create Tasks

Start all tasks gives users the ability to start all tasks that are stored in the database, which is truly helpful in attempting to purchase an item which is avaliable on multiple websites or if multiple items are releasing at the same time on different. After selecting "Start All Tasks", the browsers of the tasks will pop up and automate the entire checkout process. Checkpoints of the checkout process will be displayed for users to understand what the automation is currently doing.

Specific tasks could also be ran by the site, letting users start it in the case of only one site releasing that product.

HieuAIO also has the ability to send out an embedded message on Discord webhooks once an item has been successfully checked out. This is done through discord.js where a POST request is sent using their API, including all the crucial information to notify users of their checkout.

Webhook Example

Webhooks can be configured by either editing it or deleting the current webhook.

A dynamic exiting process is displayed with minimalism where dots increases and exits the application.

                        
function exitSequence() {
    let count = 0;
    const intervalId = setInterval(() => {
        count++;
        clear();
        console.log(`Exiting${'.'.repeat(count % 4)}`);
        if (count === 3) {
            clearInterval(intervalId);
            clear();
        }
    }, 500);
}
                        
                    
Exit Animation

Moving forward, features I want to implement to HieuAIO includes: ability to use rotating proxies on tasks to bypass IP address banning, search for product by keywords in cases of no early listings, and bundle into an .exe and allow beta testing.