SCRL 0%CRSR 0,0
01 — WORK
GET IN TOUCH
← BACK TO WORK
02 · AUTOAUCTION

Inspected Korean cars, verifiable history, bought from anywhere.

A Korea-to-worldwide used-car export marketplace in four languages, with public VIN verification and a gamified community.

ROLE
Full-Stack Engineer
COMPANY
HM Group
TIMELINE
MAR — AUG 2026
SCOPE
Full-stack build · Admin panel · Deploy pipeline
STACK
ReactRedux ToolkitExpressTypeScriptMongoDBRailway
  • 4 LANGUAGES
  • PUBLIC VIN CHECK
  • KRW + LIVE USD
  • GAMIFIED COMMUNITY
01
CONTEXT

Overseas buyers need to trust a car they will never see before it ships.

AutoAuction helps buyers in Central Asia purchase inspected Korean vehicles — ready to drive or crashed-with-parts — from licensed Korean dealers. Buyers browse a filterable catalog, verify any car’s history through a public VIN checker backed by real sale records, and book consultations that admins track through a request pipeline.

Built solo: a Node.js + Express + TypeScript REST API with MongoDB, session-based auth and an EJS admin panel; a React 18 + TypeScript frontend with Redux Toolkit, MUI and react-i18next; Cloudinary media; deployed on Railway behind Cloudflare.

02
KEY FEATURES

Public VIN verification

Anyone — a customs officer, a bank, a second-hand buyer — can confirm a car was really sold through the platform, with buyer, price and date.

Export-shaped catalog

Search, brand filters, sorting and pagination split into “Ready to drive” and “Crashed”, the way export buyers actually shop.

Live USD estimates

Prices in KRW with a USD estimate from a currency service cached in memory for 6 hours.

Frictionless consultations

Guests inquire on any car without an account, via WhatsApp, Telegram, email or a call.

Gamified community

Points for signup, daily login, views, likes, comments and posts, with a public Top-Users leaderboard.

Four languages

English, Korean, Russian and Uzbek, modeled for translation from one source instead of duplicated per language.

03
ARCHITECTURE

One Express app, two clients, two auth strategies.

The backend is organized as MVC: controllers delegate to service classes, and Mongoose schemas own the data layer. The React SPA consumes a REST API with a JWT in an httpOnly cookie, while the admin panel is server-rendered with EJS under its own subdomain, using express-sessions persisted in MongoDB so admins stay logged in across deploys behind Railway’s proxy.

Car images upload through Multer straight to Cloudinary. Everything runs as a multi-stage, non-root Docker image on Railway with /health probes, and the SPA is deployed separately as a static build.

04
POINTS SYSTEM

Designed to bring back a buyer base that transacts rarely.

+50
Signup bonus
+10
Post
+5
Daily login
+5
Comment
+3
Like
+1
Car view (once)
05
ADMIN PANEL

A server-rendered control panel for listings, inventory and the end-to-end export workflow.

  • Catalog management

    Up to 10 Cloudinary images per car, rich specs, and single-price or range pricing.

  • Sale recording

    Marking a car SOLD with buyer, price and date is what powers public VIN verification.

  • Export pipeline

    Listing, inspection, payment and shipping status, so buyers abroad can track a vehicle after purchase.

  • Consultation triage

    Pending → In Progress → Resolved / Cancelled, with assignment and admin notes.

  • Community & members

    Publish news, moderate the community and manage member accounts.

USED TECHNOLOGIES
React 18
TypeScript
Redux Toolkit
MUI 7
Node.js + Express
MongoDB Atlas
EJS
JWT · sessions
Cloudinary
Docker
Railway
03NEXT PROJECT
VIVORA