R.RAFI BAKHTIAR
SOFTWARE ENGINEER
OPEN TO WORK CV ↗
← BACK TO PROJECTS

PROJECT 03 · ORDERING WEBSITE

D'Rolls
Pancake Roll.

FRESHLY MADE · SMALL BATCH
A little
something sweet.
PANCAKE ROLL / MENU ↗
PROJECT TYPETeam project (PKK), team of 4
ROLEWeb developer (team of 4)
STACKLaravel 11 · PHP · Tailwind CSS · Alpine.js

01 / CONTEXT

A simple store for a real seller.

A small food seller takes orders by chat. The site lets customers see the menu and prepare an order themselves, so the seller receives one clear message instead of piecing the order together.

02 / FEATURES

From the menu
to WhatsApp.

01

Menu page

Available items with image and price. Items marked unavailable are hidden and cannot be ordered.

02

Session cart

Add items, change quantities with plus and minus, remove one item, or clear the cart. The navbar shows the item count.

03

Selective checkout

Choose which cart items to order and see the total update immediately.

04

WhatsApp message

Checkout opens wa.me with the items, quantities, and total already written.

05

Responsive pages

Layouts for mobile and desktop, flash notifications, and a custom 404 page.

06

Feature tests

PHPUnit tests for the cart flow, validation, server-side prices, and the main pages.

SCREENSHOTS

How it looks.

D'Rolls home page
Home page.
D'Rolls cart with selected items and a live total
Cart: choose items and see the total update.
D'Rolls home page on a phone screen
The same site on a phone.

DESIGN DECISIONS

Choices I made, and why.

01

Prices always come from the server

The browser sends only a menu id and a quantity. Name and price are read from the server-side catalog, so a price edited with inspect element has no effect. A feature test covers this case.

02

Input is validated on the server

A quantity must be a whole number from 1 to 99 and the menu item must be available. Anything else is rejected with a clear message in Indonesian.

03

No database, on purpose

The menu lives in a config file and the cart in the session as menu id to quantity. For a small seller who takes orders by WhatsApp this is enough, and it is easy to deploy. The cost is that orders are not stored; saving them is the first item on my improvement list.

04

Checkout through WhatsApp

The seller already takes orders on WhatsApp, so checkout opens a chat with the order written out: items, quantities, and the total. This fits how the business works without building a payment system.

05

The seller number stays out of the repository

The WhatsApp number is read from the .env file instead of being written in the code, so a personal number is not published with the source.

03 / NEXT IMPROVEMENTS

What I would add next.

Save orders in a database and add an admin panel to manage the menu, so the seller no longer edits a config file. After that: online payment, and search and categories for a longer menu.

DISCUSS THIS PROJECT ↗ NEXT PROJECT: ATTENDA ↗