Tiến Minh Download CV
← All work
DAYORA home page: a family picnic under a tree with a sample kit for four

DAYORA

A shop for day trips: a picnic, an afternoon date, a day at the beach. Say where you are going, how many people and the budget, and the Kit Builder packs what the group needs. Or type one sentence and let the AI fill it in.

A course project at UEH for a team of eight. I coordinated the build: planned the tasks, handed them to Claude and Codex agents, reviewed every result and shipped it. The server prices every order, only VNPay's signed callback marks it paid, and stock is held for 15 minutes. 310 API tests and CI on every push.

React 19 · NestJS · Prisma · PostgreSQL · VNPay · Gemini

Payments run on the VNPay sandbox. The API sleeps on Render's free plan, so the first load can take about a minute.

DAYORA, a short review

One minute on the live site: the intro film and home page, the catalog, a product, the AI Kit Builder at work, then the brand story.

HomeIntro film, then the trip story, product shelf and delivery fees.
Catalog26 products in 6 groups. Filters live in the URL, so a link shares the view.
ProductPick a color or size and the price and stock follow. Reviews only from paid, delivered orders.
Kit BuilderA versioned rule engine picks every item for the trip and head count. Each order keeps the rule version it used.
AI kitGemini only reads the sentence. The server checks its answer and the rule engine builds the kit. Follow-ups like "add one person" edit it.
CheckoutVouchers, a confirm step when a price changed, VNPay. A late or repeated callback never takes stock twice.
AdminRevenue dashboard, orders on a fixed state machine, stock per SKU, vouchers, kit rules.
SecurityLogin in an httpOnly cookie, rate-limited sign-in, Google and Facebook through Supabase Auth.