Mathis Le Bonniec

Paladium Games

The purpose of this project is to create a complex web infrastructure, including an authentication, account, e-commerce etc.

Paladium Games

Project description

This project involves the creation of multiple web platforms for Paladium Games (owner of Paladium).

Many websites (built with NuxtJS) and APIs (built with NestJS) have been set up. All these sites and services work together as micro-services.

  • SSO website and API
  • Account website
  • E-Commerce API
  • E-Commerce dashboard panel
  • Payment webpage
  • Mailer API

SSO website and API

The web client allow users to login and register. They can also confirm their emails or reset their passwords. Each service that needs to access user data must be registered as an application in the SSO API.

Account website

The account website is where all customers data from our different services are centralized. Users can visualize their personal informations, as well as their active subscriptions, order history etc. They can also download their invoices. Moreover, users can access to some developer settings to create some applications (with a limit of 5). Those applications will let them obtain API keys to execute request to access data in the Paladium public API. This one provides statistics about the game in general, and some personal informations about the player owning the API key.

E-Commerce API

The e-commerce API is without a doubt, the most complex one of this infrastructure. This service is responsible for all online sales of the company.

The idea is to have most of the functionalities present in existing e-commerce platforms, such as Shopify, Woocommerce, Prestashop etc. This includes managing categories, products, packages, coupons, carts, stocks and more.

All these resources are associated to one “instance”. This allows an unlimited number of stores from the same API. Each instance can therefore be configured individually, with its own payment, invoice and other identifiers.

E-Commerce dashboard panel

To manage all these resources, an administration panel has been set up. It allows multiple features.

  • Configuring the current instance, by updating the name, URL, setting up payment methods credentials…
  • Creating new resources
  • Updating existing resources
  • Visualizing pending and archived orders
  • Visualizing subscriptions, and related orders

Payment webpage

As part of the E-Commerce API, the payment website has been developed. Its only purpose is to collect information from customers in order to validate their shopping cart.

Once a payment request is initiated by a customer, the webpage will retrieve available payment methods for the current e-commerce instance, to display the corresponding payment modules. This webpage is responsible for getting all customers data.

Mailer API

As its name suggests, this API is designed to send e-mails. Templates must be configured for each use, so that the other APIs in the infrastructure can request that these mails be sent. All infrastructure services that need to send e-mails must use this API.

This API include a caching system to optimize the loading of mail templates.

Used technologies

NestJS

NestJS

NuxtJS

NuxtJS

TypeScript

TypeScript

MikroORM

MikroORM

RESTful

RESTful

MongoDB

MongoDB

PostgreSQL

PostgreSQL

OpenAPI

OpenAPI

Notion

Notion