Web AppQ4 2020Solo build
Techkart
A high-end storefront for tech products, front to back.

The build
The oldest thing on this site, and the only one with no backend at all.
Problem
Comparing phones and laptops means opening six product pages and holding the specs in your head. The comparison is the actual task, and no storefront is built around it — they're built around checkout.
Constraints
- No backend, no budget, no framework. This was built before I knew Node. Everything had to run in the browser from static files.
- No inventory, no payments. Without a supplier relationship there is no order to fulfil, so the product had to stop somewhere honest.
- Static hosting only. Netlify, pushed from git.
Approach
A product catalogue in a JavaScript array, rendered into a grid, with filtering and comparison done entirely client-side. The purchase itself hands off to Amazon — the site's job ends at "you've decided", which is the part it can actually do well.
// The whole data layer. No API, no database — the catalogue ships with the page.
const products = [
{ id: 1, name: "…", price: 15999, specs: { ram: "6GB", storage: "128GB" } },
// …
];
const visible = products
.filter(p => p.price <= maxPrice)
.sort((a, b) => a.price - b.price);Tradeoffs
- Catalogue in the bundle over a data source. Zero infrastructure and instant filtering, paid for with a rebuild for every price change and a page weight that grows with the catalogue.
- Affiliate handoff over real checkout. Honest about what the site could deliver, and it means the product stops one step before the thing that makes storefronts interesting.
- Bootstrap over custom CSS. Got a responsive grid working in an evening. It also means the site looks like 2020, which — given the date on it — is at least consistent.
Outcome
It shipped and it's still up, four years later, because static files on a CDN don't rot. Its real value now is as a baseline: it's the last thing I built before learning what a server was for, and the difference between it and everything above is the whole story of the two years after.
Decisions
- Vanilla JavaScript over a framework. Chosen because I didn't know one yet — but I'd defend it now for a page this size. Against it: the rendering code is hand-rolled DOM manipulation that a framework would have made shorter and safer.
- Static hosting over a server. Chosen because there was nothing to compute per-user. Against it: no analytics, no search, no personalisation — and no way to add them without rebuilding the foundation.
- Handing checkout to Amazon. Chosen because a fake cart would have been a lie in the demo. Against it: everything downstream of the click — the part with the money in it — is somebody else's product.
Stack
- HTML5
- CSS
- JavaScript
- Bootstrap
Related projects

Lecture Lense
Turns any recording into searchable, timestamp-cited notes.

Chitter
A mini social app that lets users sign up, log in and post whatever is on their mind.

Heckfree
Users get a public profile that showcases all of their links in one place.