Selected work / 01

CartCheck

Full-stack grocery shopping and list management.

StatusCompleted & deployed

Official CartCheck wordmark
Official project identity

01 / Context

The problem and the people

A private grocery checklist for planning a shop, tracking what has been bought, and keeping a record of completed trips. Prices and budgets stay optional throughout the workflow.

A shopping checklist should work even when prices are unknown. CartCheck keeps everyday list actions simple while preserving a useful, editable history of each trip.

Intended users
Individual shoppers, including students and family members, managing their own grocery lists.

02 / Contribution

My role in the work

Solo project owner & lead developer

  • I developed CartCheck independently as its sole student project owner, setting the goals, approving scope and design decisions, and guiding the application through deployment.
  • Codex assisted substantially with planning, UI design, implementation, tests, reviews and documentation. I use AI as a development assistant while remaining responsible for the project’s decisions and verification.

Built and documented

What the system does

  1. Independent shopping lists

    Create and name multiple lists, search a reusable grocery catalog, add custom items, edit quantities and mark items bought. Finishing one list leaves the others intact.

  2. Optional money, explicit uncertainty

    Estimated and actual item totals are separate. Missing amounts remain incomplete instead of becoming zero. Optional budgets use PHP, USD or EUR; trips retain their own currency.

  3. History that preserves context

    Finish a selected list as a named dated trip. Review and correct its item snapshots later without changing its original finish date.

System map / 03

How the pieces connect

  1. Browser

    React / Vite · lists, catalog and trip history

  2. Application

    Render / Express · sessions, validation and ownership

  3. Persistence

    Supabase PostgreSQL · private records and snapshots

Implementation

Technology used

  • React
  • Vite
  • JavaScript
  • Express
  • PostgreSQL
  • Supabase PostgreSQL
  • Render

Engineering judgment

Decisions and trade-offs

  1. One origin, one API boundary

    Express serves the Vite build and /api from one Render service. Supabase supplies PostgreSQL; authentication and all shopper data access stay behind Express rather than a browser database client.

  2. Transactions protect the trip lifecycle

    Finish and correction operations lock the owned trip and check its revision. Repeated finishing returns the existing trip, while stale edits are rejected. Snapshots protect history from later catalog changes.

  3. Fast feedback without stale private state

    An account-session cache deduplicates reads, aborts requests on disposal and guards against stale responses. Safe optimistic mutations reconcile with the API or roll back after failure.

Documented results

Results

  • Completed and deployed at cartcheck.merzbuilds.dev. The repository documents the delivered multiple-list workflow and the October 2026 release.
  • The development record reports client/server tests, isolated PostgreSQL integration tests and scoped production walkthroughs. These are historical project checks, not tests rerun by this portfolio.

Project boundaries

Limitations

  • CartCheck prioritizes checklists and trip records. It does not provide unit-price comparison, automatic price suggestions or cross-currency conversion.
  • The repository’s security checklist tracks ongoing dependency, backup/restore, privacy and delivery verification work. Completion and scoped testing are not a guarantee of security or real inbox delivery.

Evidence trail

Project references