---
title: "CartCheck"
kind: student-project
location: "Holy Angel University"
tags: [students, student-work, apsi]
summary: "A private grocery checklist with optional budgets and a history of past trips."
---

*A final project from Full-stack JavaScript, 2026 first semester. Part of [Fifteen full-stack apps from a semester I almost did not survive](/calendar/2026-s1-apsi-students).*

<figure data-lightbox-group style="max-width: 22rem; margin: 0 0 var(--space-6, 2rem)"><a class="gallery__link" data-lightbox href="/media/projects/2026-1st-sem/cartcheck/square.webp"><img src="/media/projects/2026-1st-sem/cartcheck/square.webp" width="1080" height="1080" alt="CartCheck, the project's square image" loading="eager" decoding="async" style="aspect-ratio:auto;height:auto;object-fit:contain"></a></figure>

## What it is

Plan a shop from a starter catalog or your own items, check things off in the aisle, and finish the trip without typing in a single price. Estimated totals, actual totals and a budget are there if you want them, and out of your way if you do not.

Built with React, Express and PostgreSQL.

## Why it is here

It lives on its own domain, with product, design and operations docs to match. That is someone treating a final project as a product, not a submission.

## Find it

- Project: [github.com/EJhayGit/CartCheck](https://github.com/EJhayGit/CartCheck)
- Live: [cartcheck.merzbuilds.dev](https://cartcheck.merzbuilds.dev)
- GitHub: [@EJhayGit](https://github.com/EJhayGit)

## Screenshots

<div class="gallery" data-lightbox-group style="--gallery-min: 14rem; align-items: start">
<figure class="gallery__item" style="grid-column: 1 / -1"><a class="gallery__link" data-lightbox href="/media/projects/2026-1st-sem/cartcheck/shot-2.webp"><img src="/media/projects/2026-1st-sem/cartcheck/shot-2.webp" width="1280" height="800" alt="CartCheck, the student's desktop wireframe of the cart" loading="lazy" decoding="async" style="aspect-ratio:auto;height:auto;object-fit:contain"></a></figure>
<figure class="gallery__item"><a class="gallery__link" data-lightbox href="/media/projects/2026-1st-sem/cartcheck/shot-3.webp"><img src="/media/projects/2026-1st-sem/cartcheck/shot-3.webp" width="1120" height="1140" alt="CartCheck, the student's mobile wireframes" loading="lazy" decoding="async" style="aspect-ratio:auto;height:auto;object-fit:contain"></a></figure>
<figure class="gallery__item"><a class="gallery__link" data-lightbox href="/media/projects/2026-1st-sem/cartcheck/shot-1.webp"><img src="/media/projects/2026-1st-sem/cartcheck/shot-1.webp" width="1280" height="800" alt="CartCheck, the landing page and sign-in" loading="lazy" decoding="async" style="aspect-ratio:auto;height:auto;object-fit:contain"></a></figure>
<figure class="gallery__item"><a class="gallery__link" data-lightbox href="/media/projects/2026-1st-sem/cartcheck/shot-4.webp"><img src="/media/projects/2026-1st-sem/cartcheck/shot-4.webp" width="390" height="844" alt="CartCheck, sign-in" loading="lazy" decoding="async" style="aspect-ratio:auto;height:auto;object-fit:contain"></a></figure>
</div>
