Case Study: Tasie Meals Order Platform — Real‑Time Menu, Cart & Checkout
A complete meal ordering platform built with React (UI), Redux (global state), and Firebase Firestore (data).
Dynamic menu from Firestore, cart with optimistic updates, and a checkout flow with batched writes + retries. Redux slices isolate cart/menu logic; memoized selectors keep renders snappy. CSS Modules + SASS keep styles scoped and predictable.
Lighthouse stays in the 90s thanks to code‑splitting and image optimization. If I rewrote it in Next.js now, I’d keep Redux for cart ergonomics and use Server Actions for checkout.
Published on 12th February 2025 - 14:20
Designing the Yum Hub Landing Page — Clean Layouts, Fast Loads
Yum Hub is a static landing page that tells the product story clearly: how it works, meal selections, testimonials, and pricing tiers.
Built with semantic HTML5 and Sass/SCSS, the page uses a small set of layout primitives (grid/flex) and spacing/color tokens to stay consistent. JavaScript was minimal and deferred to prioritize FCP.
Takeaway: simple structure, disciplined styling, and lightweight assets beat cleverness when the goal is clarity and speed.
Published on 10th December 2024 - 11:05
From Prototype to Portfolio: Lessons from Building My Personal Site
My portfolio started as a junior build — semantic HTML, SASS, vanilla JavaScript, AOS for motion, and Swiper for carousels — and I’ve refactored it as my standards evolved.
I trimmed animation durations, reduced image payloads, and tightened CSS architecture (BEM‑ish with tokens). Netlify Forms handles contact without a backend. If I migrated it now, I’d use Next.js App Router + MDX and centralize design tokens.
Main lesson: keep the surface delightful, but the internals boring and reliable.
Published on 8th October 2024 - 09:42
Human–Computer Interaction: How User Behavior Actually Shifted
Instead of ‘AI will change everything’, I looked at what actually changed in day‑to‑day behavior.
• People expect natural language everywhere: search, filters, even support. I saw this in onboarding analytics — when we added a plain‑English product search, zero‑result queries dropped noticeably.
• Tolerance for loading dropped: micro‑lags that were fine pre‑2022 now feel broken. I treat 200–400ms feedback as the new ‘polite’ range.
• Trust signals matter more: inline explanations (‘why this result?’) and visible privacy choices keep users from bouncing.
Lesson: HCI today is about expectation management — fast, explainable, and forgiving products win.
Published on 16th August 2024 - 13:22
Next.js in SaaS: Why App Router & Server Components Matter
I rebuilt a SaaS dashboard prototype in Next.js 14 and compared it with a previous Pages Router setup.
What changed:
• Server Components reduced client JS a lot (billing history table: ~90kb → ~20kb).
• Route Handlers replaced my ad‑hoc API folder — fewer moving parts, easier auth layering.
• Server Actions simplified form posts: no juggling mutations for simple CRUD.
Best fit: multi‑tenant dashboards where performance and data flow predictability matter. Caution: highly interactive UIs still need careful hydration strategy.
Net: Next.js lets SaaS teams spend more time on product logic and less on wiring.
Published on 12th June 2024 - 17:07
TypeScript 5 in Practice: The Few Features That Actually Changed My DX
I upgraded a medium‑sized React codebase to TypeScript 5 and kept track of what mattered beyond the release notes.
• Const type parameters: removed a bunch of overloads in utilities — generics finally read like plain English.
• satisfies: validate config objects at compile time without losing literal types — perfect for feature flags and API client maps.
• Faster project builds: not ‘50% faster’ everywhere, but cold builds and project references felt snappier on CI.
If you’re on TS 4.x and using heavy generics, TS5 pays for itself — mostly by letting you delete clever code.
Published on 18th April 2024 - 21:34
GPT‑4o in the Workflow: Where It Helps and Where I Draw the Line
I treat GPT‑4o like a fast pair programmer for the boring bits: test scaffolds, docstrings, fixture data, and quick refactor suggestions.
Guardrails I use: no secrets in prompts, never skip type checks, and no merges without tests. Architecture, naming, and UX stay human‑owned because that’s where context and taste matter.
Result: fewer low‑value minutes spent, more time on the shape and quality of the product.
Published on 15th February 2024 - 08:48
PIG Dice Game: Tiny UI, Clear State, Fun UX
This was a pure front‑end exercise: build the classic PIG dice game with semantic HTML, SASS, and vanilla JavaScript.
I focused on three things: (1) readable state transitions (idle → rolling → locked), (2) tight DOM updates to avoid layout thrash, and (3) tiny interactions that make it feel ‘alive’ (roll animation, subtle shake on busts). The game uses a simple state machine and ARIA live regions so screen readers announce score changes.
Why it matters: small projects are where you practice restraint. Clear state + clear DOM updates = predictable UI, which scales to larger apps.
Published on 10th December 2023 - 10:10