AutoSwap is a final project to obtain my degree in Systems Engineer. My colleague and I are currently building a marketplace for buying and selling cars with differential validation services.
The marketplace provides buyers with information on the physical and registration status of vehicles. Following the PMBOK (Project Management Body of Knowledge) we are developing a project from start to finish.
Features
Some of the main requirements were:
As a seller who has published a car, you can choose a "verified publication" mode by making the online payment, and the system will assign you an appointment at a nearby validation point.
The mechanics of the checkpoints must be able to enter a control panel where they can manage the shifts made available to the platform, and upload through a wizard the "checklist" result of a particular technical verification.
The consumer interested in buying a vehicle must be able to explore the current offer of units through a filter system by brand, model, price range and see a detailed publication.
In the case of a verified unit, the consumer should be able to access the detailed technical report issued by the verification point.
The buyer must be able to reserve the vehicle by paying a percentage of the vehicle's value online.
Design
Although I am not a design specialist, I designed all the views and components and Figma. Then, it was developed in the frontend with React, Reach and Tailwind.
Backend and Frontend
On the backend, we planned and executed an hexagonal architecture. Firstly it is designed as a monolith application but divided into different modules so that in the future, if necessary, they can converted to micro-services. For the CQRS pattern we use RabbitMQ as message-broker.
In the frontend we use Next.js and the backend we use express, typescript and typeorm. The databases we selected were MySql, Redis for cache and ElasticSearch for full-text search.
With ElasticSearch we build the vehicle search engine with different filters.
CI/CD
We used Github Actions as platform to automate build, test, deployment and static code analysis.
On the local, we use docker to isolate the code from the hardware. In production, we applied Kubernetes to automating deployment, scaling, and orchestration of containers.
Third-party Implementation
Mercado Pago was the payment gateway service that we implemented to make payments on the platform, both for reservations and services.
In order for mechanics to be able to charge for their services, we implemented Mercado Pago's OAuth.
As a map service we use the Google Maps API and implement a top layer to customize the styles with leafmap.