Integration

Time series data API

Split a time-series platform into a hardened TypeScript gateway and Java service.

Client
Public API architecture project
Role
Backend and API engineer
Period
Sep 2025 – Nov 2025

Outcomes

gateway + service Runtime split
OAuth2, rate limits Edge controls
OpenAPI Contract

The problem

A public data API should not mix every concern into one service. Traffic control, authentication, HTTPS, domain logic, persistence, and documentation all matter, but they do not belong in the same layer.

Architecture split

LayerResponsibilityStack
GatewayHTTPS, rate limits, OAuth2 validation, proxyingExpress, TypeScript
ServiceDomain API, persistence, OpenAPI contractJava 21, Spring Boot
DataTime-series persistencePostgreSQL
OpsLocal stack and repeatable setupDocker, Makefile, env templates

Approach

The repository uses a production-style split: the gateway is the public boundary and the service is the domain boundary.

  • Gateway at the edge. It validates access tokens, limits abusive traffic, terminates HTTPS in local development, and forwards clean requests.
  • Service for the domain. The Java service exposes the time-series API, persists data, and publishes OpenAPI docs.
  • Operational clarity. Docker, environment templates, Postman assets, and documentation make the system understandable to run.

Outcome

This is a compact but serious backend architecture project. It shows API thinking beyond endpoints: trust boundaries, deployable structure, local operations, and contracts that another engineer can inspect.

Repository

The public project lives at timeseries-api.

Built with

TypeScriptExpressJava 21Spring BootPostgreSQLOAuth2DockerOpenAPI