Changelog
All notable changes to the esimtida API boilerplate are documented here. esimtida follows Semantic Versioning.
KYC Integration & Stripe Identity
- Added full KYC verification flow powered by Stripe Identity.
- New
kyc_statusenum on the User model:PENDING,PROCESSING,VERIFIED,FAILED. - New middleware
RequireKycto gate routes behind verified identity status. - Webhook handler for
identity.verification_session.verifiedevents.
Context Switching & Team Scoping
- New
ContextController— allows users to switch active Team or Project mid-session. - Global Eloquent scope now dynamically resolves from session context instead of a fixed FK.
- Improved
SwitchTeamRequestwith UUID validation and ownership checks. - Fixed a race condition where switching context too quickly could leak queries across tenants.
Security Patch
- Patched CORS configuration to correctly block Secret Key requests from browser origins.
- Rate limiter now uses token identity when a Bearer token is present, falling back to IP.
- Stricter UUID enforcement on all resource routes — non-UUID segments now return
404instead of500.
API Key Management & Sandbox Mode
- Projects now auto-provision both
pk_live_andpk_test_key pairs on creation. - New
SandboxMiddleware— requests authenticated with a test key are automatically isolated to sandbox data. - API responses now include an
X-esimtida-Mode: live|testheader.
Initial Release
- Laravel 11 + PHP 8.2 foundation with full Sanctum Bearer token authentication.
- Multi-tenancy via Team & Project isolation with Global Eloquent Scopes.
- Glassmorphism UI built with Geist font, Vanilla CSS variables, and Alpine.js.
- Vite bundler with instant HMR and production asset optimization.
- Pre-wired error handler returning JSON for all API exceptions.