GCP E-Commerce Platform

An Express.js and TypeScript commerce application with secure payments, asynchronous processing and GCP deployment.

Node.jsTypeScriptExpress.jsReactPostgreSQLRedisGCPTerraformGitHub Actions

Problem / Goal

Build a cloud-ready e-commerce application with REST APIs, authentication and authorization, payments, relational persistence, caching, asynchronous processing, automated tests and cloud delivery.

Architecture

React, TypeScript, Vite, native Fetch and CSS form the frontend. Node.js, TypeScript and Express.js expose REST APIs through Controller → Service → Repository boundaries. PostgreSQL connection pooling keeps database access bounded; Redis / Memorystore supports caching. Cloud Run hosts Docker services, Cloud SQL supplies PostgreSQL and Google Cloud Storage stores objects.

Backend design

REST APIs use JWT, Keycloak OIDC and RBAC. Razorpay payments and webhooks include HMAC verification and idempotency to handle duplicate requests and events.

Data & caching

PostgreSQL owns durable commerce state. A transactional outbox records pending events with business changes. An outbox relay publishes to Google Pub/Sub, and a notification worker processes events asynchronously. Retries and idempotent processing address repeat delivery; Kafka and DLQ concepts are architectural learning topics rather than claims that Kafka is the deployed broker.

Reliability concerns

Idempotency, verified payment webhooks and transactional outbox processing address duplicate delivery and failures across service boundaries. These implementation patterns do not imply measured production reliability.

Testing & delivery

Unit, integration, API health and end-to-end cloud tests cover application and deployment boundaries. Terraform defines the GCP infrastructure. GitHub Actions uses GitHub OIDC and Workload Identity Federation for delivery without long-lived cloud keys. Artifact Registry, Secret Manager, VPC / Direct VPC Egress, scoped IAM and service accounts support deployment. Structured logs, Cloud Logging and Cloud Monitoring provide operational visibility.

Engineering decisions

Express.js provides the HTTP backend, with relational persistence, caching and background workers serving distinct responsibilities. Payment verification, idempotency and the transactional outbox make external and asynchronous boundaries explicit.

Technologies

Node.js · TypeScript · Express.js · React · Vite · PostgreSQL · Redis / Memorystore · REST APIs · JWT · OIDC · Keycloak · RBAC · Razorpay / webhooks · HMAC verification · idempotency · Google Pub/Sub · transactional outbox · background workers · Google Cloud Storage · Docker · Cloud Run · Cloud SQL · Artifact Registry · Secret Manager · VPC / Direct VPC Egress · IAM / service accounts · Terraform · GitHub Actions · Workload Identity Federation · Cloud Logging · Cloud Monitoring · automated tests

Lessons & next improvements

Keeping HTTP handling separate from business rules makes payment and persistence behavior easier to test. Future improvements should be driven by measured latency, retry behavior and recovery drills; no throughput or availability guarantees are claimed here.

Project screenshots

Real project screenshots will be published here when available.