← Ventures — GCStore Constellation

GCStore Shop — Level-2 Deep Dive

GCStore Shop is the company's own marketplace storefront: the public place a customer browses, configures and buys the refurbished and modified machines the LLC sells, paying directly rather than through a third-party marketplace. It is live with real products and has taken real payments end to end. Two audiences use it — anonymous shoppers (who never have to sign in to browse) and identified buyers (who authenticate to check out) — and one owner, who runs the local admin and previews listings before they go live.

GCStore Shop Level-2 internal architecture

Internal architecture

The storefront is two deployable services behind one edge. A Spring Boot API holds all the business logic and data, exposed as an OAuth2 resource server. A separate Angular SSR web service renders every page on the server so the catalog is fast and crawlable, then hydrates in the browser; it is also a full PWA (installable, offline shell, web push). The edge routes API and webhook traffic to the API and everything else to the SSR service, so the two scale and deploy independently.

Interfaces

Tech stack

API: Java 21, Spring Boot, Spring Security (OAuth2 resource server), Spring Data JPA, Liquibase migrations, MariaDB; web push via VAPID (BouncyCastle payload encryption); Anthropic Java SDK. Web: Angular with @angular/ssr (Node server-rendering service), signals, standalone components; PWA (manifest, service worker, installable, offline page, push). Deploy: two containers behind the shared TLS edge; MariaDB over the shared internal network; configuration by environment with fail-fast guards.

Status & roadmap

In production. The storefront is live, selling real machines, with the full path running end to end: configure → cart → checkout with live tax and fee pass-through → PayPal (real payments) and Zelle → order lifecycle → transactional email → the sales outbox back to the ERP → the integration audit. The catalog projection, the options/variants engine, the durable cart, watchlist transitions and the installable PWA with web push are all in service. The seller ships dark by default: with no key configured the widget still appears and invites the visitor to sign in, but it never reaches the model, and nothing else in the shop depends on it.

Next: in-window payment retry (a transient processor hiccup never costs the sale); faceted filters and pagination in the catalog grid; a buyer address book; templated, multi-language emails; PayPal dispute and delayed-payment events wired into the existing webhook; line-level returns; a shipping-label API with automatic tracking; consolidating the last local listings onto the ERP for a single catalog. For the seller: an enforced answer schema, an outcome per conversation computed backwards over the stored log, and letting a visitor converse before registering. Native mobile apps stay an option for later — the PWA already delivers an installable app on both platforms.