What's new

Recent development milestones and platform updates.

Published Python SDK to PyPI

Released the official Python SDK (smplkit-sdk on PyPI) with automated OpenAPI client generation. Each product service now generates and commits its OpenAPI specification, triggers SDK regeneration via GitHub Actions dispatch, and publishes type-safe Python clients with full Pydantic v2 model support.

Deployed Config, Flags, and Logging product services

Shipped dedicated microservice infrastructure for Smpl Config, Smpl Flags, and Smpl Logging. Each service runs on its own ECS Fargate cluster with independent Pulumi stacks, CI/CD pipelines, and branded landing pages at config.smplkit.com, flags.smplkit.com, and logging.smplkit.com. Added health probe endpoints across all services for operational visibility.

Launched admin console and added DDoS protection

Deployed the internal admin console at admin.smplkit.com for platform operations. Added AWS WAF protection and rate limiting to CloudFront across all services.

Fixed API reference example rendering

Resolved an issue where Scalar's API reference displayed "attributes": null for all resource examples. Added explicit two-level OpenAPI examples — on both domain entity schemas and their JSON:API resource wrappers — so the interactive documentation accurately reflects real response shapes.

Migrated developer console to Vite and React Router

Replaced the Next.js static export with Vite and React Router v7 for the developer console at app.smplkit.com. Eliminated CloudFront per-route workarounds, restored proper client-side navigation without full-page reloads, and simplified the build pipeline to a single index.html entry point with a route-agnostic CloudFront Function.

Switched console URLs to human-readable keys and published first blog post

Updated all developer console routes to use human-readable keys instead of UUIDs — for example, /environments/production rather than /environments/aba17dd6-305e-.... Also launched the engineering blog with "Choosing AWS Amplify for a Developer Platform Marketing Site," the first in a series exploring the architectural decisions behind building smplkit.

Consolidated API schemas and revised authentication model

Eliminated separate create and update schema variants from the OpenAPI specification — each domain entity is now a single Pydantic class with field-level metadata (readOnly, x-immutable, writeOnly). Also distinguished API keys (account-scoped, management access) from SDK keys (environment-scoped, runtime access), each with its own prefix, scoping rules, and console placement.

Implemented sleep/wake workflows for dev environments

Added GitHub Actions workflows that automatically discover and scale down ECS services, stop RDS instances, and halt bastion hosts to reduce infrastructure costs during off-hours.

Published API design standards

Adopted JSON:API as the response format for all public APIs. Established the error robustness invariant: client input must never produce a 500, and every error response returns a JSON:API body.

Deployed interactive API reference

Launched the Scalar-powered API reference at docs.smplkit.com with live OpenAPI spec rendering, dark theme, and built-in request execution.

Established internal and external API isolation

Separated internal service-to-service APIs from public-facing endpoints using dual load balancers per service. Internal APIs are unreachable from outside the VPC by network design.

Completed OIDC authentication migration

Replaced AWS Cognito with direct OIDC integration for Google and Microsoft identity providers, reducing external dependencies and improving multi-cloud portability.

Launched developer console

Shipped the initial developer console at app.smplkit.com with account management, environment configuration, and API key provisioning.

Deployed App Service database schema

Completed the nine-table App Service schema: account, user, account_user, environment, api_key, subscription, subscription_usage, service, and invitation.

Established database schema conventions

Standardized conventions across all services: singular table names, UUID primary keys, text over varchar, standard column sets, and JSONB data columns for extensibility.

Project initialized

First code committed. Repository structure, CI/CD pipeline, and AWS infrastructure provisioned via Pulumi.