

Chanachur Carnival
Coding Crunchiness

Tools
HTML
CSS
JavaScript
JSON and AJAX
Visual Studio Code (as IDE)
Microsoft Excel (for issue tracking)
Vision
Develop an interface that allows user to customize their Chanachur (Bangladeshi trail mix) freely and order seamlessly
Values
Objectives
Maximize user freedom and convenience
Uphold Bangladeshi cultural values
Help users make informed purchase decisions
Target Audience
Non-Resident Bangladeshis living in the US
Fans of Trail Mixes or spicy snacks
Success Metrics
Task Completion Rate
Time taken to complete a successful order
No. of Orders Placed
Development Process

Style Guide

User Journey Mapping

Initial Prototypes

Prototype 1 set up the basic structure of the ordering page

Prototype 2 added stylings and incorporated the Happy Hour mechanic

Prototype 3 added the Bangla localization and language toggle
Features
You can watch a video walkthrough of the website here

Happy Hour
Users get 20% off during 4 PM - 5 PM and see a live timer

English and Bangla Localization
The website can be experienced end-to-end in both English and Bangla languages

Collapsible Accordions
Users can skip sections of the menu by collapsing accordions. The accordions have smooth animation.

Persistent Cart Modal
As users add items, the cart updates dynamically and stays in the fold persistently regardless of scroll position

Inputs with Auto Formatting and Validation
Input fields such as Phone Number, E-mail or Credit Card Number have validation logics and format automatically

Google Maps Address AutoComplete
The address fields uses Google Maps’ AutoComplete API to allow users to select their address from Google Maps

Success Screen
After placing an order, users get a Success Screen with confetti animation, a randomly generated order number and how much they saved by ordering during happy hour!
Programming Concepts Applied

API Integration
Integrates Google Maps API for Address Autocomplete

Events
Interactive elements such as buttons and forms all use events

JSON and AJAX
Ingredients are stored in a separate JSON file and the webpage pulls information using AJAX to populate items in the menu

Document Object Model
Uses GetElementById to populate the in-line validation error texts

Decisions and Loops
Checks current time to see if Happy Hour is ongoing or not and applies discount accordingly

Functions
The Checkout form validation logic is based on many functions running simultaneously

Concatenation
Uses Concatenation to display "$" sign before total price/cost

Arithmetic Operators
Uses Arithmetic Operators to calculate prices, amounts, calories and also to convert between g and oz

Arrays
Ingredients are stored as Arrays under each respective category

Variables and Constants
User inputs are stored in Constants. Confetti animation attributes make use of Variables

Object and Properties
Each ingredient is declared as an Object and their relevant information (e.g. Price, Amount, Calories, Image URL, etc.) have been set as properties
Accessibility Considerations
High Contrast Ratio for Perceivability
In-Line Validation Error Messages for Operability
Bangla localization for Understandability
Issues Faced

Ingredients Cluttering Code
Including ingredient list within HTML/JavaScript was becoming messy. So a separate JSON file was introduced to store ingredients

JSON not working locally
JSON file was not loading locally due to a security issue. Installed "Live Server" extension in VSCode to bypass the security issue

Calculations not working in Bangla language
Bangla fonts are in Unicode whereas for calculations to work, the digits should be in ANSI. Thus, a parsing logic was set which translated all Unicode Bangla digits to English ANSI digits to ensure calculations remain functional

Google Maps API Not Working
Referred to Console Log error messages to identify that Google recently migrated from their Legacy Maps API to a new Places API. After updating the API endpoints to the new Places API, the feature became functional

Google Maps Autocomplete Modal not visible
The z-index of the Google Maps API modal was behind the Checkout modal. The z-index was updated to be in front to solve the issue

Retrospective
What I Learned
Coding is not as scary as it looks!
Once I understood the basics of what HTML, CSS and JS are and how they intertwine, coding started to feel a lot more intuitive
Version Controlling and Bug Database
Maintaining version controlling and bug databases help keep track of progress and issues
Coding Skills are no longer a barrier
As someone with no prior coding or web development knowledge, I was initially concerned how I would achieve the vision I wanted. However, Gemini helped me a lot with figuring out the specifics of coding which gave me more bandwidth to focus on design and features
What I Would Do Differently Now
Incorporate Mobile Responsive UI
Provide additional payment methods such as PayPal, Apple Pay, etc.
Add an order tracking flow after completing orders
4+ Years in PRODUCT DESIGN
HCIM STUDENT @ UMD