From b58e0e14282a37e8ded8da5cdcddf97a1813920c Mon Sep 17 00:00:00 2001 From: vibemarketerpromax Date: Wed, 4 Mar 2026 13:15:19 +0530 Subject: [PATCH 1/4] feat: Add 9 new technology pages (TypeScript, PostgreSQL, AWS, Docker, Go, MongoDB, Java, Kotlin, Swift) Each page includes: - SEO-optimized MDX content with 6 capabilities, 8 FAQs, process steps, engagement models, and philosophy sections - layout.tsx with full Metadata (title, description, OG, Twitter cards) - page.tsx with JSON-LD structured data - OG image (1200x630) - Hub page links updated in technologies-hub-data.ts All pages follow existing patterns from react/nodejs/angular/etc pages. Content targets primary "[tech] development services" keywords with SERP-researched H1s, meta titles under 60 chars, and AEO-ready FAQ answers. --- app/technologies/aws/layout.tsx | 52 ++++++++ app/technologies/aws/page.tsx | 33 +++++ app/technologies/docker/layout.tsx | 52 ++++++++ app/technologies/docker/page.tsx | 33 +++++ app/technologies/golang/layout.tsx | 52 ++++++++ app/technologies/golang/page.tsx | 33 +++++ app/technologies/java/layout.tsx | 52 ++++++++ app/technologies/java/page.tsx | 33 +++++ app/technologies/kotlin/layout.tsx | 52 ++++++++ app/technologies/kotlin/page.tsx | 33 +++++ app/technologies/mongodb/layout.tsx | 52 ++++++++ app/technologies/mongodb/page.tsx | 33 +++++ app/technologies/postgresql/layout.tsx | 52 ++++++++ app/technologies/postgresql/page.tsx | 33 +++++ app/technologies/swift/layout.tsx | 52 ++++++++ app/technologies/swift/page.tsx | 33 +++++ app/technologies/typescript/layout.tsx | 52 ++++++++ app/technologies/typescript/page.tsx | 33 +++++ content/technologies/aws.mdx | 113 +++++++++++++++++ content/technologies/docker.mdx | 112 +++++++++++++++++ content/technologies/golang.mdx | 114 +++++++++++++++++ content/technologies/java.mdx | 119 ++++++++++++++++++ content/technologies/kotlin.mdx | 118 +++++++++++++++++ content/technologies/mongodb.mdx | 113 +++++++++++++++++ content/technologies/postgresql.mdx | 111 ++++++++++++++++ content/technologies/swift.mdx | 118 +++++++++++++++++ content/technologies/typescript.mdx | 112 +++++++++++++++++ lib/technologies-hub-data.ts | 18 +-- .../assets/technologies/aws-development.png | Bin 0 -> 51301 bytes .../technologies/docker-development.png | Bin 0 -> 45612 bytes .../technologies/golang-development.png | Bin 0 -> 47880 bytes .../assets/technologies/java-development.png | Bin 0 -> 47646 bytes .../technologies/kotlin-development.png | Bin 0 -> 45573 bytes .../technologies/mongodb-development.png | Bin 0 -> 50909 bytes .../technologies/postgresql-development.png | Bin 0 -> 48676 bytes .../assets/technologies/swift-development.png | Bin 0 -> 45000 bytes .../technologies/typescript-development.png | Bin 0 -> 48896 bytes scripts/generate-og-images.mjs | 47 ++++++- 38 files changed, 1850 insertions(+), 10 deletions(-) create mode 100644 app/technologies/aws/layout.tsx create mode 100644 app/technologies/aws/page.tsx create mode 100644 app/technologies/docker/layout.tsx create mode 100644 app/technologies/docker/page.tsx create mode 100644 app/technologies/golang/layout.tsx create mode 100644 app/technologies/golang/page.tsx create mode 100644 app/technologies/java/layout.tsx create mode 100644 app/technologies/java/page.tsx create mode 100644 app/technologies/kotlin/layout.tsx create mode 100644 app/technologies/kotlin/page.tsx create mode 100644 app/technologies/mongodb/layout.tsx create mode 100644 app/technologies/mongodb/page.tsx create mode 100644 app/technologies/postgresql/layout.tsx create mode 100644 app/technologies/postgresql/page.tsx create mode 100644 app/technologies/swift/layout.tsx create mode 100644 app/technologies/swift/page.tsx create mode 100644 app/technologies/typescript/layout.tsx create mode 100644 app/technologies/typescript/page.tsx create mode 100644 content/technologies/aws.mdx create mode 100644 content/technologies/docker.mdx create mode 100644 content/technologies/golang.mdx create mode 100644 content/technologies/java.mdx create mode 100644 content/technologies/kotlin.mdx create mode 100644 content/technologies/mongodb.mdx create mode 100644 content/technologies/postgresql.mdx create mode 100644 content/technologies/swift.mdx create mode 100644 content/technologies/typescript.mdx create mode 100644 public/assets/technologies/aws-development.png create mode 100644 public/assets/technologies/docker-development.png create mode 100644 public/assets/technologies/golang-development.png create mode 100644 public/assets/technologies/java-development.png create mode 100644 public/assets/technologies/kotlin-development.png create mode 100644 public/assets/technologies/mongodb-development.png create mode 100644 public/assets/technologies/postgresql-development.png create mode 100644 public/assets/technologies/swift-development.png create mode 100644 public/assets/technologies/typescript-development.png diff --git a/app/technologies/aws/layout.tsx b/app/technologies/aws/layout.tsx new file mode 100644 index 0000000..a62bd46 --- /dev/null +++ b/app/technologies/aws/layout.tsx @@ -0,0 +1,52 @@ +import type { Metadata } from "next"; + +export const metadata: Metadata = { + title: + "AWS Development Services | Cloud-Native & Infrastructure", + description: + "AWS development services for cloud-native apps, migrations, serverless architecture, and DevOps. Senior cloud engineers, honest guidance. Talk to the team.", + alternates: { + canonical: "/technologies/aws", + }, + openGraph: { + title: + "AWS Development Services | Cloud-Native & Infrastructure", + description: + "AWS development services for cloud-native apps, migrations, serverless architecture, and DevOps. Senior cloud engineers, honest guidance. Talk to the team.", + type: "website", + url: "/technologies/aws", + images: [ + { + url: "/assets/technologies/aws-development.png", + width: 1200, + height: 630, + alt: "Procedure - AWS Development Services", + }, + ], + }, + twitter: { + card: "summary_large_image", + title: + "AWS Development Services | Cloud-Native & Infrastructure", + description: + "AWS development services for cloud-native apps, migrations, serverless architecture, and DevOps. Senior cloud engineers, honest guidance. Talk to the team.", + images: [ + { + url: "/assets/technologies/aws-development.png", + width: 1200, + height: 630, + alt: "Procedure - AWS Development Services", + }, + ], + site: "@procedurehq", + creator: "@procedurehq", + }, +}; + +export default function AWSLayout({ + children, +}: { + children: React.ReactNode; +}) { + return <>{children}; +} diff --git a/app/technologies/aws/page.tsx b/app/technologies/aws/page.tsx new file mode 100644 index 0000000..8f871a1 --- /dev/null +++ b/app/technologies/aws/page.tsx @@ -0,0 +1,33 @@ +import { notFound } from "next/navigation"; +import { + getTechnologyForListing, + getRelatedExpertiseForListing, +} from "@/lib/content"; +import { JsonLd } from "@/components/seo"; +import { getExpertiseStructuredData } from "@/lib/expertise-schema"; +import ExpertisePageClient from "@/app/services/[slug]/ExpertisePageClient"; +import { ExpertisePageHero } from "@/app/services/[slug]/ExpertisePageHero"; + +export default function AWSPage() { + const technology = getTechnologyForListing("aws"); + + if (!technology) { + notFound(); + } + + const relatedPages = getRelatedExpertiseForListing( + technology.relatedExpertise || [], + ); + + return ( + <> + + } + /> + + ); +} diff --git a/app/technologies/docker/layout.tsx b/app/technologies/docker/layout.tsx new file mode 100644 index 0000000..c4a258d --- /dev/null +++ b/app/technologies/docker/layout.tsx @@ -0,0 +1,52 @@ +import type { Metadata } from "next"; + +export const metadata: Metadata = { + title: + "Docker Consulting Services | Containerization & DevOps", + description: + "Docker consulting services for containerization, CI/CD pipelines, and production infrastructure. Senior DevOps engineers, honest guidance.", + alternates: { + canonical: "/technologies/docker", + }, + openGraph: { + title: + "Docker Consulting Services | Containerization & DevOps", + description: + "Docker consulting services for containerization, CI/CD pipelines, and production infrastructure. Senior DevOps engineers, honest guidance.", + type: "website", + url: "/technologies/docker", + images: [ + { + url: "/assets/technologies/docker-development.png", + width: 1200, + height: 630, + alt: "Procedure - Docker Consulting Services", + }, + ], + }, + twitter: { + card: "summary_large_image", + title: + "Docker Consulting Services | Containerization & DevOps", + description: + "Docker consulting services for containerization, CI/CD pipelines, and production infrastructure. Senior DevOps engineers, honest guidance.", + images: [ + { + url: "/assets/technologies/docker-development.png", + width: 1200, + height: 630, + alt: "Procedure - Docker Consulting Services", + }, + ], + site: "@procedurehq", + creator: "@procedurehq", + }, +}; + +export default function DockerLayout({ + children, +}: { + children: React.ReactNode; +}) { + return <>{children}; +} diff --git a/app/technologies/docker/page.tsx b/app/technologies/docker/page.tsx new file mode 100644 index 0000000..f0fb407 --- /dev/null +++ b/app/technologies/docker/page.tsx @@ -0,0 +1,33 @@ +import { notFound } from "next/navigation"; +import { + getTechnologyForListing, + getRelatedExpertiseForListing, +} from "@/lib/content"; +import { JsonLd } from "@/components/seo"; +import { getExpertiseStructuredData } from "@/lib/expertise-schema"; +import ExpertisePageClient from "@/app/services/[slug]/ExpertisePageClient"; +import { ExpertisePageHero } from "@/app/services/[slug]/ExpertisePageHero"; + +export default function DockerPage() { + const technology = getTechnologyForListing("docker"); + + if (!technology) { + notFound(); + } + + const relatedPages = getRelatedExpertiseForListing( + technology.relatedExpertise || [], + ); + + return ( + <> + + } + /> + + ); +} diff --git a/app/technologies/golang/layout.tsx b/app/technologies/golang/layout.tsx new file mode 100644 index 0000000..0405596 --- /dev/null +++ b/app/technologies/golang/layout.tsx @@ -0,0 +1,52 @@ +import type { Metadata } from "next"; + +export const metadata: Metadata = { + title: + "Go Development Services | Microservices & Cloud-Native APIs", + description: + "Go development services for microservices, cloud-native APIs, and high-performance systems. Senior Go engineers, honest guidance. Talk to the team.", + alternates: { + canonical: "/technologies/golang", + }, + openGraph: { + title: + "Go Development Services | Microservices & Cloud-Native APIs", + description: + "Go development services for microservices, cloud-native APIs, and high-performance systems. Senior Go engineers, honest guidance. Talk to the team.", + type: "website", + url: "/technologies/golang", + images: [ + { + url: "/assets/technologies/golang-development.png", + width: 1200, + height: 630, + alt: "Procedure - Go Development Services", + }, + ], + }, + twitter: { + card: "summary_large_image", + title: + "Go Development Services | Microservices & Cloud-Native APIs", + description: + "Go development services for microservices, cloud-native APIs, and high-performance systems. Senior Go engineers, honest guidance. Talk to the team.", + images: [ + { + url: "/assets/technologies/golang-development.png", + width: 1200, + height: 630, + alt: "Procedure - Go Development Services", + }, + ], + site: "@procedurehq", + creator: "@procedurehq", + }, +}; + +export default function GoLayout({ + children, +}: { + children: React.ReactNode; +}) { + return <>{children}; +} diff --git a/app/technologies/golang/page.tsx b/app/technologies/golang/page.tsx new file mode 100644 index 0000000..a15f6ec --- /dev/null +++ b/app/technologies/golang/page.tsx @@ -0,0 +1,33 @@ +import { notFound } from "next/navigation"; +import { + getTechnologyForListing, + getRelatedExpertiseForListing, +} from "@/lib/content"; +import { JsonLd } from "@/components/seo"; +import { getExpertiseStructuredData } from "@/lib/expertise-schema"; +import ExpertisePageClient from "@/app/services/[slug]/ExpertisePageClient"; +import { ExpertisePageHero } from "@/app/services/[slug]/ExpertisePageHero"; + +export default function GolangPage() { + const technology = getTechnologyForListing("golang"); + + if (!technology) { + notFound(); + } + + const relatedPages = getRelatedExpertiseForListing( + technology.relatedExpertise || [], + ); + + return ( + <> + + } + /> + + ); +} diff --git a/app/technologies/java/layout.tsx b/app/technologies/java/layout.tsx new file mode 100644 index 0000000..b16a85d --- /dev/null +++ b/app/technologies/java/layout.tsx @@ -0,0 +1,52 @@ +import type { Metadata } from "next"; + +export const metadata: Metadata = { + title: + "Java Development Services | Enterprise & Spring Boot Apps", + description: + "Enterprise Java development services with Spring Boot 3, microservices, and legacy modernization. Senior engineers, production-grade systems. Talk to the team.", + alternates: { + canonical: "/technologies/java", + }, + openGraph: { + title: + "Java Development Services | Enterprise & Spring Boot Apps", + description: + "Enterprise Java development services with Spring Boot 3, microservices, and legacy modernization. Senior engineers, production-grade systems. Talk to the team.", + type: "website", + url: "/technologies/java", + images: [ + { + url: "/assets/technologies/java-development.png", + width: 1200, + height: 630, + alt: "Procedure - Java Development Services", + }, + ], + }, + twitter: { + card: "summary_large_image", + title: + "Java Development Services | Enterprise & Spring Boot Apps", + description: + "Enterprise Java development services with Spring Boot 3, microservices, and legacy modernization. Senior engineers, production-grade systems. Talk to the team.", + images: [ + { + url: "/assets/technologies/java-development.png", + width: 1200, + height: 630, + alt: "Procedure - Java Development Services", + }, + ], + site: "@procedurehq", + creator: "@procedurehq", + }, +}; + +export default function JavaLayout({ + children, +}: { + children: React.ReactNode; +}) { + return <>{children}; +} diff --git a/app/technologies/java/page.tsx b/app/technologies/java/page.tsx new file mode 100644 index 0000000..bfec363 --- /dev/null +++ b/app/technologies/java/page.tsx @@ -0,0 +1,33 @@ +import { notFound } from "next/navigation"; +import { + getTechnologyForListing, + getRelatedExpertiseForListing, +} from "@/lib/content"; +import { JsonLd } from "@/components/seo"; +import { getExpertiseStructuredData } from "@/lib/expertise-schema"; +import ExpertisePageClient from "@/app/services/[slug]/ExpertisePageClient"; +import { ExpertisePageHero } from "@/app/services/[slug]/ExpertisePageHero"; + +export default function JavaPage() { + const technology = getTechnologyForListing("java"); + + if (!technology) { + notFound(); + } + + const relatedPages = getRelatedExpertiseForListing( + technology.relatedExpertise || [], + ); + + return ( + <> + + } + /> + + ); +} diff --git a/app/technologies/kotlin/layout.tsx b/app/technologies/kotlin/layout.tsx new file mode 100644 index 0000000..0d43d8f --- /dev/null +++ b/app/technologies/kotlin/layout.tsx @@ -0,0 +1,52 @@ +import type { Metadata } from "next"; + +export const metadata: Metadata = { + title: + "Kotlin Development Services | Android & Multiplatform", + description: + "Kotlin development services for native Android apps, Jetpack Compose UI, and Kotlin Multiplatform. Senior engineers, production-grade mobile. Talk to the team.", + alternates: { + canonical: "/technologies/kotlin", + }, + openGraph: { + title: + "Kotlin Development Services | Android & Multiplatform", + description: + "Kotlin development services for native Android apps, Jetpack Compose UI, and Kotlin Multiplatform. Senior engineers, production-grade mobile. Talk to the team.", + type: "website", + url: "/technologies/kotlin", + images: [ + { + url: "/assets/technologies/kotlin-development.png", + width: 1200, + height: 630, + alt: "Procedure - Kotlin Development Services", + }, + ], + }, + twitter: { + card: "summary_large_image", + title: + "Kotlin Development Services | Android & Multiplatform", + description: + "Kotlin development services for native Android apps, Jetpack Compose UI, and Kotlin Multiplatform. Senior engineers, production-grade mobile. Talk to the team.", + images: [ + { + url: "/assets/technologies/kotlin-development.png", + width: 1200, + height: 630, + alt: "Procedure - Kotlin Development Services", + }, + ], + site: "@procedurehq", + creator: "@procedurehq", + }, +}; + +export default function KotlinLayout({ + children, +}: { + children: React.ReactNode; +}) { + return <>{children}; +} diff --git a/app/technologies/kotlin/page.tsx b/app/technologies/kotlin/page.tsx new file mode 100644 index 0000000..031bebb --- /dev/null +++ b/app/technologies/kotlin/page.tsx @@ -0,0 +1,33 @@ +import { notFound } from "next/navigation"; +import { + getTechnologyForListing, + getRelatedExpertiseForListing, +} from "@/lib/content"; +import { JsonLd } from "@/components/seo"; +import { getExpertiseStructuredData } from "@/lib/expertise-schema"; +import ExpertisePageClient from "@/app/services/[slug]/ExpertisePageClient"; +import { ExpertisePageHero } from "@/app/services/[slug]/ExpertisePageHero"; + +export default function KotlinPage() { + const technology = getTechnologyForListing("kotlin"); + + if (!technology) { + notFound(); + } + + const relatedPages = getRelatedExpertiseForListing( + technology.relatedExpertise || [], + ); + + return ( + <> + + } + /> + + ); +} diff --git a/app/technologies/mongodb/layout.tsx b/app/technologies/mongodb/layout.tsx new file mode 100644 index 0000000..f7b03f0 --- /dev/null +++ b/app/technologies/mongodb/layout.tsx @@ -0,0 +1,52 @@ +import type { Metadata } from "next"; + +export const metadata: Metadata = { + title: + "MongoDB Development Services | NoSQL Database Engineering", + description: + "MongoDB development services for schema design, performance optimization, and Atlas management. Senior engineers, honest guidance. Talk to the team.", + alternates: { + canonical: "/technologies/mongodb", + }, + openGraph: { + title: + "MongoDB Development Services | NoSQL Database Engineering", + description: + "MongoDB development services for schema design, performance optimization, and Atlas management. Senior engineers, honest guidance. Talk to the team.", + type: "website", + url: "/technologies/mongodb", + images: [ + { + url: "/assets/technologies/mongodb-development.png", + width: 1200, + height: 630, + alt: "Procedure - MongoDB Development Services", + }, + ], + }, + twitter: { + card: "summary_large_image", + title: + "MongoDB Development Services | NoSQL Database Engineering", + description: + "MongoDB development services for schema design, performance optimization, and Atlas management. Senior engineers, honest guidance. Talk to the team.", + images: [ + { + url: "/assets/technologies/mongodb-development.png", + width: 1200, + height: 630, + alt: "Procedure - MongoDB Development Services", + }, + ], + site: "@procedurehq", + creator: "@procedurehq", + }, +}; + +export default function MongoDBLayout({ + children, +}: { + children: React.ReactNode; +}) { + return <>{children}; +} diff --git a/app/technologies/mongodb/page.tsx b/app/technologies/mongodb/page.tsx new file mode 100644 index 0000000..a452c1b --- /dev/null +++ b/app/technologies/mongodb/page.tsx @@ -0,0 +1,33 @@ +import { notFound } from "next/navigation"; +import { + getTechnologyForListing, + getRelatedExpertiseForListing, +} from "@/lib/content"; +import { JsonLd } from "@/components/seo"; +import { getExpertiseStructuredData } from "@/lib/expertise-schema"; +import ExpertisePageClient from "@/app/services/[slug]/ExpertisePageClient"; +import { ExpertisePageHero } from "@/app/services/[slug]/ExpertisePageHero"; + +export default function MongoDBPage() { + const technology = getTechnologyForListing("mongodb"); + + if (!technology) { + notFound(); + } + + const relatedPages = getRelatedExpertiseForListing( + technology.relatedExpertise || [], + ); + + return ( + <> + + } + /> + + ); +} diff --git a/app/technologies/postgresql/layout.tsx b/app/technologies/postgresql/layout.tsx new file mode 100644 index 0000000..c25277d --- /dev/null +++ b/app/technologies/postgresql/layout.tsx @@ -0,0 +1,52 @@ +import type { Metadata } from "next"; + +export const metadata: Metadata = { + title: + "PostgreSQL Development Services | Design & Optimization", + description: + "PostgreSQL development services for schema design, performance optimization, cloud deployment, and migrations. Senior database engineers. Talk to the team.", + alternates: { + canonical: "/technologies/postgresql", + }, + openGraph: { + title: + "PostgreSQL Development Services | Design & Optimization", + description: + "PostgreSQL development services for schema design, performance optimization, cloud deployment, and migrations. Senior database engineers. Talk to the team.", + type: "website", + url: "/technologies/postgresql", + images: [ + { + url: "/assets/technologies/postgresql-development.png", + width: 1200, + height: 630, + alt: "Procedure - PostgreSQL Development Services", + }, + ], + }, + twitter: { + card: "summary_large_image", + title: + "PostgreSQL Development Services | Design & Optimization", + description: + "PostgreSQL development services for schema design, performance optimization, cloud deployment, and migrations. Senior database engineers. Talk to the team.", + images: [ + { + url: "/assets/technologies/postgresql-development.png", + width: 1200, + height: 630, + alt: "Procedure - PostgreSQL Development Services", + }, + ], + site: "@procedurehq", + creator: "@procedurehq", + }, +}; + +export default function PostgreSQLLayout({ + children, +}: { + children: React.ReactNode; +}) { + return <>{children}; +} diff --git a/app/technologies/postgresql/page.tsx b/app/technologies/postgresql/page.tsx new file mode 100644 index 0000000..e0d2004 --- /dev/null +++ b/app/technologies/postgresql/page.tsx @@ -0,0 +1,33 @@ +import { notFound } from "next/navigation"; +import { + getTechnologyForListing, + getRelatedExpertiseForListing, +} from "@/lib/content"; +import { JsonLd } from "@/components/seo"; +import { getExpertiseStructuredData } from "@/lib/expertise-schema"; +import ExpertisePageClient from "@/app/services/[slug]/ExpertisePageClient"; +import { ExpertisePageHero } from "@/app/services/[slug]/ExpertisePageHero"; + +export default function PostgreSQLPage() { + const technology = getTechnologyForListing("postgresql"); + + if (!technology) { + notFound(); + } + + const relatedPages = getRelatedExpertiseForListing( + technology.relatedExpertise || [], + ); + + return ( + <> + + } + /> + + ); +} diff --git a/app/technologies/swift/layout.tsx b/app/technologies/swift/layout.tsx new file mode 100644 index 0000000..c636718 --- /dev/null +++ b/app/technologies/swift/layout.tsx @@ -0,0 +1,52 @@ +import type { Metadata } from "next"; + +export const metadata: Metadata = { + title: + "Swift Development Services | iOS & Apple Platform Apps", + description: + "Native iOS app development with Swift 6 and SwiftUI. Senior engineers for iPhone, iPad, Apple Watch, and Apple TV apps. Talk to the team.", + alternates: { + canonical: "/technologies/swift", + }, + openGraph: { + title: + "Swift Development Services | iOS & Apple Platform Apps", + description: + "Native iOS app development with Swift 6 and SwiftUI. Senior engineers for iPhone, iPad, Apple Watch, and Apple TV apps. Talk to the team.", + type: "website", + url: "/technologies/swift", + images: [ + { + url: "/assets/technologies/swift-development.png", + width: 1200, + height: 630, + alt: "Procedure - Swift Development Services", + }, + ], + }, + twitter: { + card: "summary_large_image", + title: + "Swift Development Services | iOS & Apple Platform Apps", + description: + "Native iOS app development with Swift 6 and SwiftUI. Senior engineers for iPhone, iPad, Apple Watch, and Apple TV apps. Talk to the team.", + images: [ + { + url: "/assets/technologies/swift-development.png", + width: 1200, + height: 630, + alt: "Procedure - Swift Development Services", + }, + ], + site: "@procedurehq", + creator: "@procedurehq", + }, +}; + +export default function SwiftLayout({ + children, +}: { + children: React.ReactNode; +}) { + return <>{children}; +} diff --git a/app/technologies/swift/page.tsx b/app/technologies/swift/page.tsx new file mode 100644 index 0000000..5a3f4eb --- /dev/null +++ b/app/technologies/swift/page.tsx @@ -0,0 +1,33 @@ +import { notFound } from "next/navigation"; +import { + getTechnologyForListing, + getRelatedExpertiseForListing, +} from "@/lib/content"; +import { JsonLd } from "@/components/seo"; +import { getExpertiseStructuredData } from "@/lib/expertise-schema"; +import ExpertisePageClient from "@/app/services/[slug]/ExpertisePageClient"; +import { ExpertisePageHero } from "@/app/services/[slug]/ExpertisePageHero"; + +export default function SwiftPage() { + const technology = getTechnologyForListing("swift"); + + if (!technology) { + notFound(); + } + + const relatedPages = getRelatedExpertiseForListing( + technology.relatedExpertise || [], + ); + + return ( + <> + + } + /> + + ); +} diff --git a/app/technologies/typescript/layout.tsx b/app/technologies/typescript/layout.tsx new file mode 100644 index 0000000..3c7cd4e --- /dev/null +++ b/app/technologies/typescript/layout.tsx @@ -0,0 +1,52 @@ +import type { Metadata } from "next"; + +export const metadata: Metadata = { + title: + "TypeScript Development Services | Type-Safe Engineering", + description: + "TypeScript development services for migrations, full-stack apps, and enterprise platforms. Strict mode, end-to-end type safety. Talk to senior engineers.", + alternates: { + canonical: "/technologies/typescript", + }, + openGraph: { + title: + "TypeScript Development Services | Type-Safe Engineering", + description: + "TypeScript development services for migrations, full-stack apps, and enterprise platforms. Strict mode, end-to-end type safety. Talk to senior engineers.", + type: "website", + url: "/technologies/typescript", + images: [ + { + url: "/assets/technologies/typescript-development.png", + width: 1200, + height: 630, + alt: "Procedure - TypeScript Development Services", + }, + ], + }, + twitter: { + card: "summary_large_image", + title: + "TypeScript Development Services | Type-Safe Engineering", + description: + "TypeScript development services for migrations, full-stack apps, and enterprise platforms. Strict mode, end-to-end type safety. Talk to senior engineers.", + images: [ + { + url: "/assets/technologies/typescript-development.png", + width: 1200, + height: 630, + alt: "Procedure - TypeScript Development Services", + }, + ], + site: "@procedurehq", + creator: "@procedurehq", + }, +}; + +export default function TypeScriptLayout({ + children, +}: { + children: React.ReactNode; +}) { + return <>{children}; +} diff --git a/app/technologies/typescript/page.tsx b/app/technologies/typescript/page.tsx new file mode 100644 index 0000000..57e186a --- /dev/null +++ b/app/technologies/typescript/page.tsx @@ -0,0 +1,33 @@ +import { notFound } from "next/navigation"; +import { + getTechnologyForListing, + getRelatedExpertiseForListing, +} from "@/lib/content"; +import { JsonLd } from "@/components/seo"; +import { getExpertiseStructuredData } from "@/lib/expertise-schema"; +import ExpertisePageClient from "@/app/services/[slug]/ExpertisePageClient"; +import { ExpertisePageHero } from "@/app/services/[slug]/ExpertisePageHero"; + +export default function TypeScriptPage() { + const technology = getTechnologyForListing("typescript"); + + if (!technology) { + notFound(); + } + + const relatedPages = getRelatedExpertiseForListing( + technology.relatedExpertise || [], + ); + + return ( + <> + + } + /> + + ); +} diff --git a/content/technologies/aws.mdx b/content/technologies/aws.mdx new file mode 100644 index 0000000..f25848a --- /dev/null +++ b/content/technologies/aws.mdx @@ -0,0 +1,113 @@ +--- +title: "AWS Development Services" +headline: "AWS Development Services" +headlineAccent: "Cloud-Native Apps, Infrastructure & DevOps" +description: "AWS infrastructure, cloud-native applications, and DevOps pipelines built by senior engineers who've shipped for Setu, ESPN, and Pine Labs." +capabilities: + - title: "Cloud-Native Application Development" + description: "Applications designed for AWS from the ground up. ECS Fargate for containerized workloads, Lambda for event-driven processing, API Gateway for managed endpoints, and DynamoDB or Aurora for data. Not lift-and-shift. We build applications that use AWS services as building blocks, so you pay for what you use and scale without re-architecture." + icon: "globe" + - title: "AWS Migration and Modernization" + description: "Moving on-premise or legacy cloud workloads to AWS. We assess your current architecture, design the target state, and execute the migration with minimal downtime. Monolith-to-microservices refactoring, database migration (RDS, Aurora), and containerization of legacy applications. Parallel running during cutover so rollback is always an option." + icon: "workflow" + - title: "Serverless Architecture" + description: "Event-driven systems built on Lambda, Step Functions, EventBridge, SQS, and API Gateway. Functions that execute in milliseconds and cost nothing when idle. We design serverless architectures that handle bursty workloads without cold-start problems. Not everything should be serverless, and we will tell you when containers or EC2 are the better choice." + icon: "bolt" + - title: "Infrastructure as Code (CDK and Terraform)" + description: "Every AWS resource defined in code, versioned in Git, and deployed through CI/CD. We use AWS CDK (TypeScript) for AWS-only environments and Terraform for multi-cloud or hybrid setups. No manual console clicks in production. Infrastructure changes go through the same code review and deployment pipeline as application code." + icon: "layers" + - title: "DevOps and CI/CD on AWS" + description: "Automated build, test, and deployment pipelines using CodePipeline, CodeBuild, or GitHub Actions with AWS deployment targets. Blue-green deployments on ECS, canary releases on Lambda, and automated rollback on failure. Your team ships to production multiple times a day with confidence, not anxiety." + icon: "chart" + - title: "Cost Optimization and FinOps" + description: "AWS bills analyzed, waste identified, and costs reduced. Right-sizing EC2 instances, converting to Savings Plans or Reserved Instances, eliminating unused resources, and architecting for cost efficiency. We have reduced AWS bills by 30-50% for clients running over-provisioned infrastructure. Cost optimization is an ongoing practice, not a one-time audit." + icon: "document" +technologies: + - AWS Lambda + - ECS / EKS + - RDS / Aurora + - S3 + - CloudFront + - API Gateway + - CDK (TypeScript) + - Terraform + - CodePipeline + - CloudWatch + - EventBridge + - Step Functions + - SQS / SNS + - DynamoDB +relatedExpertise: + - nodejs + - python + - react +process: + - number: 1 + title: "Cloud Assessment and Architecture (1-2 weeks)" + description: "We audit your current infrastructure (or requirements for greenfield), map workloads to AWS services, and design the target architecture. You get a technical proposal covering service selection, networking (VPC design), security (IAM policies, encryption), cost projections, and migration strategy. No implementation until the architecture is validated." + - number: 2 + title: "Infrastructure Foundation (1-3 weeks)" + description: "VPC, subnets, security groups, IAM roles, and core services provisioned via CDK or Terraform. CI/CD pipeline configured. Monitoring and alerting set up with CloudWatch and alarms. The infrastructure foundation is production-grade from the start, not a prototype that needs hardening later." + - number: 3 + title: "Application Migration or Development (4-16 weeks)" + description: "For migrations: workloads moved service by service with parallel running and validation at each step. For new builds: application services deployed iteratively with working environments available from week one. Your team sees real progress in staging, not architecture diagrams." + - number: 4 + title: "Security, Performance, and Cost Review (1-2 weeks)" + description: "AWS Well-Architected Review against all six pillars: operational excellence, security, reliability, performance efficiency, cost optimization, and sustainability. Security audit with IAM policy review, encryption verification, and network access validation. Load testing under production-like conditions." + - number: 5 + title: "Handoff and Support" + description: "Complete documentation covering architecture decisions, IaC repositories, deployment runbooks, and operational procedures. Your team manages the AWS environment independently. Optional support retainer for ongoing optimization and incident response, but no lock-in." +engagementModels: + title: "Hire AWS Engineers" + subtitle: "Senior cloud engineers who build production AWS infrastructure from week one." + models: + - title: "Dedicated Engineer" + description: "Engineers with 5+ years building production systems on AWS. Deep experience across compute (Lambda, ECS, EKS), data (RDS, DynamoDB, S3), and networking (VPC, CloudFront, Route 53). Not developers who passed a certification exam. Engineers who have operated production AWS environments." + bestFor: "Ongoing cloud engineering or DevOps work, 3-month minimum engagement" + - title: "Cloud Pod (2-4 Engineers + Lead)" + description: "A team covering application development, infrastructure, and DevOps. Full ownership of AWS architecture, deployment pipelines, monitoring, and cost management. Mixed team of cloud architects and backend engineers." + bestFor: "Full cloud migrations or platform builds, 6-month minimum engagement" + - title: "Project-Based Delivery" + description: "Fixed-scope engagement for specific AWS projects: migrations, cost optimization audits, or infrastructure modernization. Clear deliverables, timeline, and transparent pricing." + bestFor: "Defined scope like a migration or cost audit, scope-dependent" +faqs: + - question: "How much do AWS development services cost?" + answer: "AWS development costs depend on scope. A cloud migration for a small-to-medium workload (5-15 services) typically runs $30,000 to $80,000. A cloud-native application built on serverless and containers costs $50,000 to $150,000. Enterprise platform builds with multi-account architecture, advanced networking, and compliance requirements can run $150,000 to $400,000+. Procedure offers a free architecture consultation to scope your specific project. AWS infrastructure costs are separate and billed directly by AWS." + - question: "AWS vs Azure vs GCP - which should I choose?" + answer: "AWS has the broadest service catalog and the largest market share (31% of cloud infrastructure). It is the default choice when you need the widest range of managed services or when your team already has AWS experience. Azure is strongest for organizations already invested in Microsoft (Active Directory, Office 365, .NET). GCP excels at data analytics (BigQuery) and machine learning (Vertex AI). For most applications, the choice comes down to existing team expertise and organizational tooling. Procedure builds on all three and recommends based on your specific situation." + - question: "How long does an AWS migration take?" + answer: "An AWS migration timeline depends on workload complexity. A straightforward lift-and-shift of 5-10 services takes 4-8 weeks. A re-architecture from monolith to microservices on AWS takes 12-24 weeks. Enterprise migrations with compliance requirements, data sovereignty constraints, and legacy system dependencies can take 6-12 months. Procedure migrates incrementally, moving one workload at a time with parallel running and validation at each step." + - question: "Serverless vs containers - which should I use on AWS?" + answer: "Serverless (Lambda) works best for event-driven workloads, bursty traffic patterns, and functions that complete in under 15 minutes. You pay per invocation and nothing when idle. Containers (ECS Fargate or EKS) work best for long-running services, workloads with consistent traffic, and applications that need more than 10GB of memory or custom runtimes. Many production systems use both: Lambda for event processing and API endpoints, containers for background workers and stateful services. Procedure designs the architecture based on your workload characteristics." + - question: "How do you optimize AWS costs?" + answer: "AWS cost optimization starts with visibility. Procedure enables Cost Explorer, sets up budgets and alerts, and analyzes spending by service, tag, and account. Common savings include right-sizing over-provisioned EC2 instances (typical 20-40% reduction), converting on-demand to Savings Plans (up to 72% savings), eliminating idle resources, and re-architecting for serverless where appropriate. We have reduced monthly AWS bills by 30-50% for clients spending $10,000-$100,000+ per month. Cost optimization is an ongoing practice built into our operational reviews." + - question: "How do you handle AWS security?" + answer: "Procedure follows AWS Well-Architected Framework security best practices. That means least-privilege IAM policies (no wildcard permissions), encryption at rest and in transit for all data, VPC network isolation with security groups and NACLs, AWS Config rules for compliance monitoring, and CloudTrail for audit logging. For regulated industries, we implement additional controls for SOC 2, HIPAA, or PCI DSS compliance. Security is part of the infrastructure code, not a post-deployment checklist." + - question: "Should we use managed services or self-managed on AWS?" + answer: "Managed services (RDS, Aurora, ECS Fargate, Lambda) reduce operational burden significantly. Your team focuses on application logic instead of patching databases and managing Kubernetes clusters. The tradeoff is slightly higher cost and less configuration flexibility. Procedure recommends managed services as the default for most teams. Self-managed infrastructure (EC2 with custom Postgres, self-hosted Kubernetes) makes sense only when you need specific configurations that managed services cannot provide and your team has dedicated operations capacity." + - question: "Do your engineers have AWS certifications?" + answer: "Procedure's engineers have hands-on production AWS experience spanning Lambda, ECS, RDS, Aurora, CloudFront, CDK, and Terraform. Certifications validate knowledge, but production experience building and operating AWS systems for clients like Setu and Pine Labs is the stronger signal. We prioritize engineers who have debugged production incidents at 2 AM over engineers who passed a multiple-choice exam." +philosophy: + title: "Our Approach to AWS Development" + subtitle: "Cloud done right means infrastructure you can understand, operate, and afford." + blocks: + - title: "Infrastructure as Code, Always" + description: "Every resource in CDK or Terraform. Every change through a pull request. Every deployment automated. If someone needs to click through the AWS console to make a production change, the infrastructure is not properly codified." + - title: "Cost-Aware Architecture" + description: "We design for cost efficiency from the start, not as an afterthought when the bill arrives. Service selection, instance sizing, and scaling policies all factor in cost alongside performance. Your monthly AWS bill should never be a surprise." + - title: "Security as Default, Not Add-On" + description: "Least-privilege IAM, encryption everywhere, network isolation, and audit logging are part of the initial infrastructure template. Security is not a sprint we run before a compliance audit. It is how the infrastructure is built." + - title: "Right-Sized Complexity" + description: "Multi-account organizations, service mesh, and Kubernetes are powerful tools. They are also expensive to operate. We match architectural complexity to your team's operational capacity. A simpler architecture your team can manage beats a sophisticated one that requires dedicated platform engineering." + - title: "Vendor-Aware, Not Vendor-Locked" + description: "We use AWS-native services where they provide clear advantages (Lambda, Aurora, CloudFront) but keep application code portable. Business logic stays in your code, not in AWS-specific constructs. If you ever move to another cloud, the migration path is clear." +cta: + title: "Ready to Discuss Your AWS Project?" + description: "Talk directly with engineers, not sales. We will assess fit and give honest next steps." + buttonText: "Talk to an AWS Engineer" + buttonLink: "/contact-us" + supportingNote: "No obligation. No pressure. Clear technical direction." +seo: + title: "AWS Development Services | Cloud-Native & Infrastructure" + description: "AWS development services for cloud-native apps, migrations, serverless architecture, and DevOps. Senior cloud engineers, honest guidance. Talk to the team." +--- diff --git a/content/technologies/docker.mdx b/content/technologies/docker.mdx new file mode 100644 index 0000000..0c5171c --- /dev/null +++ b/content/technologies/docker.mdx @@ -0,0 +1,112 @@ +--- +title: "Docker Consulting Services" +headline: "Docker Consulting Services" +headlineAccent: "Production-Grade Containerization" +description: "Container strategy, migration, and DevOps infrastructure built by the team that ships containerized systems for companies like Setu, Pine Labs, and Last9." +capabilities: + - title: "Containerization Strategy & Architecture" + description: "We assess your applications, define container boundaries, and design a containerization roadmap that matches your team's operational maturity. Not every service needs its own container. We identify what to containerize first, what to defer, and how to structure images for fast builds and small footprints." + icon: "globe" + - title: "Docker Compose & Multi-Service Orchestration" + description: "Local development environments that mirror production. We build Docker Compose configurations for multi-service stacks with proper networking, volume management, health checks, and dependency ordering. Your team gets a one-command setup that works on every machine, every time." + icon: "workflow" + - title: "CI/CD Pipeline Containerization" + description: "Docker-native build pipelines with multi-stage builds, layer caching, and automated image publishing. We integrate with GitHub Actions, GitLab CI, or your existing pipeline tooling. Build times drop from 15 minutes to under 3 when caching is done right." + icon: "bolt" + - title: "Docker Security & Image Optimization" + description: "Security scanning with Trivy and Snyk, Dockerfile linting with Hadolint, and image hardening following CIS benchmarks. We build minimal images using distroless or Alpine bases, run as non-root by default, and strip unnecessary packages. Typical image size reduction: 60-80% from unoptimized builds." + icon: "layers" + - title: "Migration to Containers" + description: "Incremental migration of VM-based or bare-metal applications to Docker. We run old and new deployment models in parallel, validate behavior parity, and cut over service by service. No big-bang migrations. Your application stays live throughout." + icon: "document" + - title: "Container Monitoring & Logging" + description: "Centralized logging with structured output, container health monitoring, and resource usage tracking. We configure log drivers, set up alerting for container restarts and OOM kills, and build dashboards that show what matters. Debugging a containerized system should be easier than debugging a VM, not harder." + icon: "chart" +technologies: + - Docker + - Docker Compose + - Docker Buildx + - Kubernetes + - Helm + - GitHub Actions + - GitLab CI + - AWS ECS + - AWS ECR + - Trivy + - Hadolint + - Prometheus + - Grafana +relatedExpertise: + - nodejs + - aws + - golang +process: + - number: 1 + title: "Assessment & Container Strategy (1-2 weeks)" + description: "We audit your current infrastructure, application architecture, and deployment workflow. You get a containerization roadmap covering which services to containerize, image structure, registry setup, and CI/CD integration. No code until the strategy is clear." + - number: 2 + title: "Dockerfile Design & Image Optimization (1-2 weeks)" + description: "Multi-stage Dockerfiles optimized for build speed, image size, and security. Base image selection, layer ordering for cache efficiency, and build argument management. Every image passes security scanning before it enters your registry." + - number: 3 + title: "Pipeline Integration & Environment Setup (2-4 weeks)" + description: "Docker integrated into your CI/CD pipeline with automated builds, tests, and deployments. Local development environments configured with Docker Compose. Staging and production environments aligned so what works locally works everywhere." + - number: 4 + title: "Migration & Rollout (2-8 weeks)" + description: "Services migrated to containers incrementally. Old and new deployments run in parallel until behavior parity is confirmed. Traffic shifted gradually. Rollback procedures tested and documented before each cutover." + - number: 5 + title: "Handoff & Operational Readiness" + description: "Complete documentation covering image builds, deployment procedures, troubleshooting guides, and security scanning setup. Your team owns the entire container infrastructure. Optional support retainer available, but no lock-in." +engagementModels: + title: "Hire Docker Consultants" + subtitle: "Senior DevOps engineers who containerize your systems and upskill your team." + models: + - title: "Dedicated DevOps Engineer" + description: "Engineers with 4+ years of production Docker experience across containerization, CI/CD, and cloud infrastructure. Full DevOps capability spanning image optimization, pipeline design, and orchestration." + bestFor: "Ongoing infrastructure work, 3-month minimum engagement" + - title: "Team Pod (2-4 Engineers + Lead)" + description: "A self-contained DevOps team that owns your containerization and deployment infrastructure end to end. Architecture, implementation, migration, and monitoring covered." + bestFor: "Large-scale container migrations, 6-month minimum engagement" + - title: "Project-Based Delivery" + description: "Fixed-scope engagement with clear deliverables, timeline, and budget. Defined container strategy, agreed milestones, and transparent pricing." + bestFor: "Container migration projects or CI/CD overhauls, scope-dependent" +faqs: + - question: "How much do Docker consulting services cost?" + answer: "Docker consulting costs depend on scope. A containerization assessment and strategy for a 5-10 service application typically runs $10,000 to $25,000. Full container migration for a mid-size platform with CI/CD integration sits in the $30,000 to $80,000 range. Enterprise-scale migrations with Kubernetes orchestration, security hardening, and multi-environment setup can run $80,000 to $200,000 or more. Our initial assessment call is free." + - question: "Docker vs Kubernetes: which do I need?" + answer: "Docker handles containerization, packaging your application into portable, reproducible units. Kubernetes handles orchestration, managing where and how those containers run at scale. If you run fewer than 10 services, Docker Compose on a single host or AWS ECS may be sufficient. Once you need auto-scaling, rolling deployments across multiple nodes, or self-healing infrastructure, Kubernetes becomes necessary. Many teams start with Docker and graduate to Kubernetes as scale demands it. We help you decide based on your actual traffic and team size, not industry hype." + - question: "What are the benefits of containerizing our application?" + answer: "Containerization with Docker provides four concrete benefits. First, environment consistency: the same image runs in development, staging, and production, eliminating 'works on my machine' issues. Second, faster deployments: container images deploy in seconds versus minutes for VM-based deployments. Third, resource efficiency: containers share the host OS kernel and use 50-80% less memory than equivalent VMs. Fourth, developer productivity: new team members run the full application stack with a single command instead of spending days on environment setup." + - question: "How do you handle Docker security in production?" + answer: "Procedure follows a defense-in-depth approach to Docker security. We scan images with Trivy on every build, lint Dockerfiles with Hadolint, and enforce non-root container execution. Images use minimal base layers (distroless or Alpine) to reduce attack surface. We configure Docker daemon security options, enable content trust for image signing, and implement network policies to isolate container communication. Registry access uses role-based permissions with short-lived tokens." + - question: "How long does it take to migrate to Docker?" + answer: "A typical containerization migration takes 4-12 weeks depending on application complexity. Simple web applications with a single database: 2-4 weeks. Multi-service architectures with 5-10 services: 6-10 weeks. Enterprise systems with complex dependencies, legacy integrations, and compliance requirements: 10-16 weeks. These timelines include assessment, Dockerfile creation, CI/CD integration, testing, and staged rollout." + - question: "What are multi-stage Docker builds and why do they matter?" + answer: "Multi-stage builds use multiple FROM statements in a single Dockerfile to separate build dependencies from runtime dependencies. Your build stage includes compilers, package managers, and development tools. Your final stage contains only the compiled application and its runtime requirements. This typically reduces image size by 60-80%. A Node.js application that produces a 1.2 GB image with a naive Dockerfile drops to 150-250 MB with multi-stage builds. Smaller images mean faster pulls, faster deployments, and a smaller attack surface." + - question: "Can Docker handle production workloads reliably?" + answer: "Yes. Docker containers run production workloads at companies including Google, Netflix, Spotify, and Shopify. Docker itself is stable and battle-tested. Production reliability comes down to proper configuration: health checks, restart policies, resource limits, logging, and monitoring. Common production issues like container crashes from OOM kills or network misconfiguration are preventable with proper setup. We configure all of these as standard practice." + - question: "How do you monitor Docker containers in production?" + answer: "We set up container monitoring across three layers. Infrastructure monitoring with Prometheus and Grafana tracks CPU, memory, network, and disk usage per container. Application monitoring with structured logging and log aggregation (ELK or Loki) provides visibility into application behavior. Alerting configured for container restarts, OOM kills, high CPU usage, and health check failures. The goal is knowing about problems before your users do." +philosophy: + title: "Our Approach to Docker Consulting" + subtitle: "Containers are infrastructure, not magic. We treat them accordingly." + blocks: + - title: "Containerize for the Right Reasons" + description: "Not every application benefits from containerization. We assess whether Docker solves a real problem for your team, whether that is environment consistency, deployment speed, or scaling. If VMs or serverless functions are a better fit, we will tell you." + - title: "Images as Artifacts" + description: "Docker images are immutable deployment artifacts, not development environments. We build images that are small, secure, and reproducible. The same image that passes CI is the same image that runs in production. No rebuilding, no drift." + - title: "Developer Experience Matters" + description: "If your Docker setup makes local development slower or more painful, adoption will fail. We optimize Docker Compose configurations for fast rebuilds, hot reloading, and minimal resource consumption on developer machines." + - title: "Security Is Not Optional" + description: "Every image is scanned, every container runs as non-root, every registry has access controls. Security scanning is part of the build pipeline, not a quarterly audit. Vulnerabilities are caught before they reach production." + - title: "Exit-Ready Infrastructure" + description: "Every container setup we build can be maintained by your team or a different vendor. Standard Dockerfiles, documented compose configurations, and no proprietary tooling. You own everything, always." +cta: + title: "Ready to Discuss Your Docker Project?" + description: "Talk directly with engineers, not sales. We will assess fit and give honest next steps." + buttonText: "Talk to a DevOps Engineer" + buttonLink: "/contact-us" + supportingNote: "No obligation. No pressure. Clear technical direction." +seo: + title: "Docker Consulting Services | Containerization & DevOps" + description: "Docker consulting services for containerization, CI/CD pipelines, and production infrastructure. Senior DevOps engineers, honest guidance." +--- diff --git a/content/technologies/golang.mdx b/content/technologies/golang.mdx new file mode 100644 index 0000000..35958b8 --- /dev/null +++ b/content/technologies/golang.mdx @@ -0,0 +1,114 @@ +--- +title: "Go Development Services" +headline: "Go Development Services" +headlineAccent: "High-Performance Microservices & Cloud-Native APIs" +description: "Microservices, CLI tools, and cloud-native systems built by senior engineers who've shipped Go in production for companies like Setu and Last9." +capabilities: + - title: "API & Microservices Development" + description: "REST and gRPC APIs built with Gin, Echo, or the standard library. We choose the framework based on your requirements: Gin for rapid API development, Echo for middleware-heavy services, or net/http when you want zero dependencies. Every service ships with structured logging, health checks, and graceful shutdown handling." + icon: "globe" + - title: "CLI Tools & Developer Tooling" + description: "Production CLI tools built with Cobra and Viper. Single-binary distribution, cross-platform compilation, and proper signal handling. We build internal developer tools, deployment automation, and infrastructure utilities that your team actually uses because they work reliably and start instantly." + icon: "document" + - title: "Cloud-Native Go Services" + description: "Go services designed for Kubernetes, Docker, and serverless environments. Tiny container images (10-20 MB), sub-second startup times, and minimal memory footprints. Go's static compilation means no runtime dependencies, no version conflicts, and no 'works on my machine' issues." + icon: "layers" + - title: "High-Performance Systems" + description: "Systems where latency and throughput matter. Go's goroutine model handles tens of thousands of concurrent connections on modest hardware. We build real-time data processors, high-throughput API gateways, and streaming services where every millisecond counts. When Node.js or Python hit their ceiling, Go is typically the next step." + icon: "bolt" + - title: "Concurrent Data Processing" + description: "ETL pipelines, event stream processors, and batch jobs that leverage Go's concurrency primitives. Goroutines and channels make concurrent processing straightforward without the callback complexity of Node.js or the GIL limitations of Python. We design processing pipelines that scale linearly with available cores." + icon: "chart" + - title: "Go Migration & Modernization" + description: "Migrating performance-critical services from Python, Ruby, or Node.js to Go. We identify the services that benefit most from Go's performance characteristics, rewrite them incrementally, and run old and new implementations in parallel until parity is confirmed. Not everything needs to be rewritten. We are honest about which services justify the migration cost." + icon: "workflow" +technologies: + - Go 1.23 + - Gin + - Echo + - gRPC + - Protocol Buffers + - sqlc + - GORM + - Cobra + - Viper + - Docker + - Kubernetes + - GitHub Actions + - PostgreSQL + - Redis + - NATS +relatedExpertise: + - nodejs + - docker + - aws +process: + - number: 1 + title: "Architecture & Discovery (1-2 weeks)" + description: "We map your system requirements, performance targets, and integration points. You get a technical proposal covering service boundaries, database selection, API design (REST vs gRPC), deployment strategy, and concurrency model. No code written until the architecture is clear." + - number: 2 + title: "API Design & Data Modeling (1-2 weeks)" + description: "API contracts defined in OpenAPI or Protocol Buffers before implementation begins. Database schema designed with sqlc or GORM based on query patterns. If migrating from another language, we map existing API contracts to Go implementations." + - number: 3 + title: "Development & Iteration (6-14 weeks)" + description: "Sprint-based delivery with working services shipped every two weeks. Table-driven tests written alongside features. Your team gets access to staging environments from week one. Go's fast compilation means CI runs complete in minutes, not hours." + - number: 4 + title: "Load Testing & Performance Tuning (1-2 weeks)" + description: "We benchmark under realistic traffic patterns using pprof, benchmark tests, and load generators. Goroutine leak detection, memory allocation profiling, and connection pool tuning. Go makes performance profiling straightforward, and we use that to find and fix bottlenecks before they reach production." + - number: 5 + title: "Handoff & Support" + description: "Complete documentation, architecture decision records, and runbooks for every service. Go's simplicity means onboarding new engineers is faster than most languages. Your team owns the system. Optional support retainer available, but no lock-in." +engagementModels: + title: "Hire Go Developers" + subtitle: "Senior Go engineers who write clean, concurrent, production-ready code." + models: + - title: "Dedicated Developer" + description: "Engineers with 3+ years building production Go systems. Full backend capability spanning API design, concurrency patterns, database integration, and cloud infrastructure. Experience with gRPC, microservices, and Kubernetes deployments." + bestFor: "Ongoing backend development, 3-month minimum engagement" + - title: "Team Pod (2-4 Engineers + Lead)" + description: "A self-contained team that owns full service delivery. Architecture, implementation, testing, and deployment covered. The lead handles architecture decisions while engineers focus on building." + bestFor: "Full service or platform ownership, 6-month minimum engagement" + - title: "Project-Based Delivery" + description: "Fixed-scope engagement with clear deliverables, timeline, and budget. Defined API contracts, agreed milestones, and transparent pricing." + bestFor: "Defined scope with clear deliverables, scope-dependent" +faqs: + - question: "How much does Go development cost?" + answer: "Go development costs depend on scope. A microservice API with 10-15 endpoints typically runs $15,000 to $35,000. A microservices platform with 5-8 services, inter-service communication, and orchestration sits in the $50,000 to $150,000 range. High-performance systems with custom concurrency patterns, real-time processing, and extensive load testing can run $100,000 to $250,000 or more. Our architecture consultation is free and scopes your specific project." + - question: "Go vs Node.js for backend development?" + answer: "Go excels at CPU-bound work, high-concurrency services, and systems where low latency matters. Node.js excels at I/O-bound workloads, rapid API prototyping, and teams with JavaScript expertise. In benchmarks, Go typically handles 5-10x more concurrent requests than Node.js with lower memory usage. However, Node.js has a larger ecosystem of libraries and a lower barrier to entry for teams already using JavaScript. Many production systems use both: Go for performance-critical services and Node.js for API gateways and BFF layers." + - question: "Go vs Rust for systems programming?" + answer: "Go prioritizes simplicity, fast compilation, and developer productivity. Rust prioritizes memory safety without garbage collection and zero-cost abstractions. For most backend services, APIs, and cloud-native applications, Go is the practical choice. It compiles in seconds, has a gentler learning curve, and its garbage collector handles 99% of memory management needs. Rust makes sense for systems where garbage collection pauses are unacceptable: game engines, embedded systems, or ultra-low-latency trading systems. We recommend Go unless your latency requirements are measured in microseconds." + - question: "When should I choose Go for my project?" + answer: "Go is the right choice when you need high concurrency (thousands of simultaneous connections), low memory footprint (containerized microservices), fast startup times (serverless or auto-scaling environments), or strong performance with simple code. Common Go use cases include API gateways, microservices, CLI tools, data pipelines, and DevOps tooling. Go is not ideal for UI-heavy applications, data science workloads, or rapid prototyping where Python or Node.js would be faster to develop with." + - question: "Is Go good for microservices?" + answer: "Go is one of the best languages for microservices. Its static compilation produces single-binary deployments with no runtime dependencies. Container images are typically 10-20 MB versus 200+ MB for Node.js or Python. Startup time is measured in milliseconds, which matters for auto-scaling and serverless. The standard library includes production-grade HTTP, JSON, and concurrency primitives. Docker, Kubernetes, Terraform, and most cloud-native tooling are written in Go for these exact reasons." + - question: "How steep is Go's learning curve?" + answer: "Go is intentionally simple. The language specification fits in a short document. Most experienced developers become productive in Go within 2-4 weeks. The learning curve is not the syntax, which is minimal, but adopting Go's conventions: error handling with explicit returns instead of exceptions, composition over inheritance, and goroutine-based concurrency. Teams coming from Java or C# adapt fastest. Teams from Python or JavaScript need more adjustment to Go's type system and explicit error handling." + - question: "Can Go be used for web applications?" + answer: "Go handles web backends and APIs well. For server-rendered HTML, Go's template library works for simple cases, but it is not comparable to Rails, Django, or Next.js for content-heavy web applications. Go is best used as the API and backend layer, paired with a frontend framework like React or Next.js for the user interface. If you need a full-stack framework with ORM, admin panels, and auth built in, Django or Rails will get you there faster. Go's strength is the service layer behind the frontend." + - question: "How does Go handle concurrency?" + answer: "Go uses goroutines and channels as its core concurrency model. Goroutines are lightweight threads managed by the Go runtime, each using only 2-8 KB of memory versus 1 MB for OS threads. A single Go process can run millions of goroutines. Channels provide safe communication between goroutines without shared memory or locks. This model makes concurrent programming straightforward compared to callback-based (Node.js) or thread-pool (Java) approaches. The race detector built into the Go toolchain catches concurrency bugs during development." +philosophy: + title: "Our Approach to Go Development" + subtitle: "Go rewards simplicity. We write code that reflects that." + blocks: + - title: "Simplicity Is a Feature" + description: "Go's greatest strength is what it leaves out. We write Go that looks like Go: explicit error handling, minimal abstractions, and clear control flow. If a junior engineer cannot read the code and understand what it does, we rewrite it." + - title: "Standard Library First" + description: "Go's standard library is production-grade. We reach for third-party packages only when the standard library genuinely falls short, not out of habit. Fewer dependencies mean fewer security vulnerabilities, fewer version conflicts, and faster builds." + - title: "Concurrency by Design" + description: "We design services around Go's concurrency model from the start, not as an optimization pass later. Goroutines and channels are used where they simplify the code, not as a performance trick. The right concurrency pattern depends on the workload, and we pick accordingly." + - title: "Interfaces Over Inheritance" + description: "Go uses composition and interfaces, not class hierarchies. We design service boundaries around small, focused interfaces that make testing straightforward and coupling low. If an interface has more than 3-4 methods, it is probably doing too much." + - title: "Exit-Ready Architecture" + description: "Every system we build can be maintained by your team or a different vendor. Clean service boundaries, documented decisions, and zero proprietary dependencies. You own everything, always." +cta: + title: "Ready to Discuss Your Go Project?" + description: "Talk directly with engineers, not sales. We will assess fit and give honest next steps." + buttonText: "Talk to a Go Engineer" + buttonLink: "/contact-us" + supportingNote: "No obligation. No pressure. Clear technical direction." +seo: + title: "Go Development Services | Microservices & Cloud-Native APIs" + description: "Go development services for microservices, cloud-native APIs, and high-performance systems. Senior Go engineers, honest guidance. Talk to the team." +--- diff --git a/content/technologies/java.mdx b/content/technologies/java.mdx new file mode 100644 index 0000000..411e928 --- /dev/null +++ b/content/technologies/java.mdx @@ -0,0 +1,119 @@ +--- +title: "Java Development Services" +headline: "Java Development Services" +headlineAccent: "Enterprise Systems That Scale" +description: "Enterprise Java applications, Spring Boot microservices, and payment systems built by senior engineers who've shipped for companies like Pine Labs and KredX." +capabilities: + - title: "Enterprise Application Development" + description: "Large-scale Java applications built on Spring Boot 3, designed for complex business logic and long-term maintainability. Domain-driven design, strict layering, and comprehensive test coverage. Systems that handle millions of transactions and stay stable under regulatory scrutiny." + icon: "globe" + - title: "API & Microservices (Spring Boot)" + description: "High-throughput REST and gRPC APIs using Spring Boot 3 and Spring Cloud. Service discovery, circuit breakers, distributed tracing, and centralized configuration. We design service boundaries around business domains, not technical convenience." + icon: "layers" + - title: "Legacy Java Modernization" + description: "Migrate from Java 8/11, Struts, or EJB-based systems to modern Java 21 with Spring Boot 3. Incremental strategies using strangler fig patterns so your system stays live during the transition. No big-bang rewrites." + icon: "workflow" + - title: "Cloud-Native Java (GraalVM & Quarkus)" + description: "Java applications optimized for containers and serverless. GraalVM native images for sub-second startup times and 50-70% lower memory footprint. Quarkus for Kubernetes-native Java when Spring Boot's footprint is too heavy for your infrastructure budget." + icon: "bolt" + - title: "Payment & Fintech Systems" + description: "Transaction processing, payment gateway integrations, and financial reconciliation systems. PCI-DSS compliant architecture with audit logging, idempotency, and fault tolerance. Built with the same rigor we bring to [fintech clients](/industries/financial-services) like Pine Labs." + icon: "chart" + - title: "Java Backend for Mobile Apps" + description: "Robust API backends for iOS and Android applications. Spring Boot APIs with proper versioning, push notification services, OAuth 2.1 authentication, and WebSocket support for real-time features. Designed to serve [mobile frontends](/services/mobile-development) at scale." + icon: "document" +technologies: + - Java 21 LTS + - Spring Boot 3 + - Spring Cloud + - Hibernate + - Gradle + - Maven + - JUnit 5 + - Testcontainers + - Docker + - Kubernetes + - AWS + - GraalVM + - Quarkus + - PostgreSQL + - Redis + - Kafka + - RabbitMQ + - OpenTelemetry + - Flyway + - GitHub Actions +relatedExpertise: + - dotnet + - nodejs + - postgresql +process: + - number: 1 + title: "Architecture & Discovery (1-2 weeks)" + description: "Map your system requirements, integration points, and scalability targets. Choose between Spring Boot, Quarkus, or a hybrid approach based on actual workload characteristics. Deliverable: architecture decision records, service diagrams, and a technical proposal." + - number: 2 + title: "API Design & Data Modeling (1-2 weeks)" + description: "API contracts documented in OpenAPI before code is written. Database schema designed with Hibernate mappings, migration scripts in Flyway, and proper indexing strategy. Your frontend team can build against mocked endpoints immediately." + - number: 3 + title: "Development & Iteration (6-20 weeks)" + description: "Sprint-based delivery with working services shipped every two weeks. JUnit 5 and Testcontainers for reliable automated testing. Staging environments from week one. You review real code, not slide decks." + - number: 4 + title: "Load Testing & Hardening (1-2 weeks)" + description: "Simulate production traffic patterns using Gatling or k6. Connection pool tuning, query optimization, JVM profiling with async-profiler, and caching layer validation. Nothing ships until it handles your expected load with headroom." + - number: 5 + title: "Handoff & Support" + description: "Architecture decision records, Javadoc-generated API documentation, runbooks, and deployment guides. Your team owns the system entirely. Optional support retainer available, but no lock-in." +engagementModels: + title: "Hire Java Developers" + subtitle: "Senior Java engineers who integrate with your team and deliver from week one." + models: + - title: "Dedicated Developer" + description: "Engineers with 5+ years building production Java systems in Spring Boot, Hibernate, and cloud-native environments. Full backend capability spanning API design, database optimization, and infrastructure." + bestFor: "Ongoing enterprise development, 3-month minimum engagement" + - title: "Team Pod (2-4 Engineers + Lead)" + description: "A self-contained team that owns full service delivery. Architecture, implementation, testing, and deployment covered. The lead handles technical decisions and stakeholder communication." + bestFor: "Full platform ownership, 6-month minimum engagement" + - title: "Project-Based Delivery" + description: "Fixed-scope engagement with clear deliverables, timeline, and budget. Defined service contracts, agreed milestones, and transparent pricing." + bestFor: "Defined scope with clear deliverables, scope-dependent" +faqs: + - question: "What is the typical cost of Java development services?" + answer: "Java development services typically range based on project complexity. API backends with 10-20 endpoints run $20,000 to $50,000. Microservices platforms with 5-10 services sit in the $60,000 to $200,000 range. Full enterprise applications with complex integrations, compliance requirements, and transaction processing can run $150,000 to $500,000+. Dedicated Java developer hiring starts at $4,000/month. We provide detailed estimates after a free architecture consultation." + - question: "Java vs Node.js for backend development?" + answer: "Java excels at CPU-intensive workloads, complex domain logic, and systems where type safety and compile-time guarantees reduce production incidents. Node.js excels at I/O-heavy concurrent workloads like real-time APIs and event-driven microservices. Java's JVM offers better throughput for computation-heavy services, while Node.js handles concurrent connections more efficiently for lightweight API gateways. Many modern platforms use both: Java for core business services and Node.js for the API gateway layer." + - question: "Java vs .NET for enterprise applications?" + answer: "Both are strong enterprise choices. Java offers broader ecosystem diversity (Spring, Quarkus, Micronaut), runs on any OS without vendor dependency, and has the largest enterprise developer talent pool globally. .NET provides tighter Microsoft ecosystem integration (Azure, Active Directory, SQL Server) and a faster development pace for teams already in the Microsoft stack. Choose Java when vendor independence, cross-platform deployment, or a larger hiring pool matters. Choose .NET when Microsoft ecosystem integration is a priority." + - question: "Spring Boot vs Jakarta EE for new projects?" + answer: "Spring Boot 3 is the standard choice for most new Java projects in 2026. It offers faster development velocity, a massive ecosystem of starters and integrations, and strong community support. Jakarta EE (formerly Java EE) still makes sense for organizations with existing Jakarta investments or those needing vendor-portable enterprise specs. Spring Boot's opinionated defaults get you to production faster, while Jakarta EE gives you specification-level portability." + - question: "How do you approach legacy Java modernization?" + answer: "Legacy Java modernization follows an incremental strategy. We start by assessing the existing codebase: identifying tightly coupled components, missing test coverage, and outdated dependencies. Then we apply strangler fig patterns to migrate services piece by piece while keeping the system live. Typical modernization from Java 8 to Java 21 with Spring Boot 3 takes 3-8 months depending on system size. We write tests first to create a safety net, then migrate module by module." + - question: "Is Java still a good choice for startups?" + answer: "Java with Spring Boot 3 is a strong startup choice when the product involves complex business logic, financial transactions, or enterprise customers who expect robust, scalable systems. The JVM's mature tooling, extensive library ecosystem, and large talent pool reduce technical risk. Startups building simpler web APIs or consumer apps may iterate faster with Node.js or Python initially. We help startups choose the right stack based on their specific product requirements, not language popularity." + - question: "How does Java performance compare in 2026?" + answer: "Modern Java 21 with virtual threads (Project Loom) handles millions of concurrent connections with dramatically simpler code than traditional thread pool models. GraalVM native images achieve sub-second cold starts and 50-70% lower memory usage, making Java competitive with Go and Rust for containerized workloads. The ZGC garbage collector delivers sub-millisecond pause times even with large heaps. Java is no longer the memory-hungry, slow-starting runtime it was a decade ago." + - question: "How do you handle Java developer hiring and team scaling?" + answer: "Procedure provides senior Java engineers who integrate directly with your team, using your repositories, tools, and sprint cadence. Engineers have 5+ years of production Java experience and are proficient in Spring Boot 3, cloud infrastructure, and modern Java features (records, sealed classes, virtual threads). Teams can start within 2-5 business days and scale up or down based on project needs. No long-term contracts required to begin." +philosophy: + title: "Our Approach to Java Development" + subtitle: "Enterprise Java that earns its complexity through production demands, not habit." + blocks: + - title: "Modern Java, Not Legacy Patterns" + description: "Java 21 records, sealed classes, pattern matching, and virtual threads are not optional extras. We use modern Java features to write cleaner, more maintainable code. If your codebase still looks like Java 8, something is wrong." + - title: "Right-Sized Architecture" + description: "Not every system needs 50 microservices. Not every application belongs in a monolith. We size services based on team boundaries, deployment frequency, and scaling requirements. Architecture follows organizational reality, not conference talks." + - title: "Test Coverage as Confidence" + description: "JUnit 5 and Testcontainers are part of every project from day one. We write tests that verify business behavior, not implementation details. Test coverage exists to give teams confidence to change code, not to hit a number." + - title: "Observable by Default" + description: "Structured logging with SLF4J, distributed tracing with OpenTelemetry, and health checks are baked into the initial scaffold. When something breaks in production, the first question should be 'what happened,' not 'how do we find out.'" + - title: "Ownership Transfer Built In" + description: "Every Java system we build can be maintained by your team independently. Clean architecture, documented decisions, and zero proprietary dependencies. We build for your future, not our recurring revenue." +cta: + title: "Ready to Discuss Your Java Project?" + description: "Talk directly with engineers, not sales. We will assess fit and give honest next steps." + buttonText: "Talk to a Java Engineer" + buttonLink: "/contact-us" + supportingNote: "No obligation. No pressure. Clear technical direction." +seo: + title: "Java Development Services | Enterprise & Spring Boot Apps" + description: "Enterprise Java development services with Spring Boot 3, microservices, and legacy modernization. Senior engineers, production-grade systems. Talk to the team." +--- diff --git a/content/technologies/kotlin.mdx b/content/technologies/kotlin.mdx new file mode 100644 index 0000000..eadd20a --- /dev/null +++ b/content/technologies/kotlin.mdx @@ -0,0 +1,118 @@ +--- +title: "Kotlin Development Services" +headline: "Kotlin Development Services" +headlineAccent: "Native Android & Multiplatform" +description: "Native Android apps, Kotlin Multiplatform projects, and server-side Kotlin built by senior engineers who ship production mobile and backend systems." +capabilities: + - title: "Native Android App Development" + description: "Production Android applications built with Kotlin, Jetpack Compose, and modern Android architecture (MVVM, MVI). Material 3 design, adaptive layouts for phones, tablets, and foldables. Apps that follow Google's current best practices, not patterns from five years ago." + icon: "globe" + - title: "Kotlin Multiplatform (KMP)" + description: "Share business logic across Android, iOS, web, and desktop without rewriting it per platform. KMP lets you write networking, data models, validation, and caching once in Kotlin, then use native UI on each platform. Google officially recommends KMP for cross-platform business logic as of 2024." + icon: "layers" + - title: "Server-Side Kotlin" + description: "Backend services in Kotlin using Ktor or Spring Boot. Coroutines for efficient concurrent request handling without callback complexity. Kotlin's null safety and expressive syntax reduce production bugs compared to Java backends. Ideal when your Android team also owns backend services." + icon: "chart" + - title: "Android App Modernization (Java to Kotlin)" + description: "Migrate existing Android apps from Java to Kotlin incrementally. Kotlin is 100% interoperable with Java, so migration happens file by file without breaking the build. We prioritize high-change areas first to maximize the return on migration effort. Most apps complete migration in 8-16 weeks." + icon: "workflow" + - title: "Jetpack Compose UI" + description: "Declarative UI for Android that replaces XML layouts with composable Kotlin functions. Less boilerplate, better state management, built-in animation APIs, and Material 3 support. Compose is Google's recommended approach for all new Android UI and powers apps like Google Maps and Play Store." + icon: "bolt" + - title: "SDK & Library Development" + description: "Custom Android SDKs, payment integrations, and shared libraries for distribution via Maven Central or private repositories. Proper API design, backward compatibility, semantic versioning, and documentation. Built for other developers to consume without frustration." + icon: "document" +technologies: + - Kotlin 2.1 + - Jetpack Compose + - Kotlin Multiplatform + - Ktor + - Coroutines + - Room + - Hilt + - Gradle + - Firebase + - Android Studio + - Material 3 + - Compose Navigation + - DataStore + - WorkManager + - Koin + - SQLDelight + - Detekt + - JUnit 5 + - Espresso +relatedExpertise: + - react-native + - flutter + - java +process: + - number: 1 + title: "Discovery & Architecture (1-2 weeks)" + description: "Define screens, user flows, and technical approach. Choose between Jetpack Compose (Android-only) and KMP (multiplatform). If you have an existing Java Android app, we audit it and plan the migration path. Deliverable: technical spec, architecture diagram, and Figma wireframes." + - number: 2 + title: "Design System & Component Library (1-2 weeks)" + description: "Build a custom Compose component library implementing your brand's design language. Material 3 theming, dynamic color support, and adaptive layouts for different screen sizes. Components tested in isolation with Compose Preview and screenshot tests." + - number: 3 + title: "Development & Iteration (6-16 weeks)" + description: "Sprint-based development with internal builds distributed via Firebase App Distribution for real-device testing. Weekly demos. Kotlin's concise syntax and Compose's declarative model mean faster iteration than traditional Android development." + - number: 4 + title: "QA, Performance & Launch (1-2 weeks)" + description: "Testing across phones, tablets, and foldables. Compose UI tests, integration tests, and performance profiling with Android Studio's Layout Inspector and baseline profiles. Play Store submission with proper listing optimization." + - number: 5 + title: "Post-Launch & Maintenance" + description: "Bug fixes, Android OS compatibility updates (Android 16 targeted), feature development, and Play Store policy compliance. Ongoing performance monitoring with Firebase Crashlytics and Performance Monitoring." +engagementModels: + title: "Hire Kotlin Developers" + subtitle: "Senior Kotlin engineers with production Android and multiplatform experience." + models: + - title: "Dedicated Developer" + description: "Full-time on your project, integrated into your team. Engineers proficient in Kotlin 2.1, Jetpack Compose, KMP, and modern Android architecture patterns." + bestFor: "Ongoing Android development, 3-month minimum engagement" + - title: "Team Pod (2-4 Engineers + Lead)" + description: "Android + backend + QA for a complete mobile team. Architecture, implementation, testing, and Play Store deployment covered." + bestFor: "Full product ownership, 6-month minimum engagement" + - title: "Project-Based Delivery" + description: "Fixed scope, milestone-based delivery. Defined specs, agreed milestones, and transparent pricing." + bestFor: "Defined scope with clear deliverables, scope-dependent" +faqs: + - question: "How much does Kotlin Android app development cost?" + answer: "Kotlin app development costs vary by complexity. Simple apps with standard UI run $15,000 to $40,000. Mid-complexity apps (e-commerce, social, data-heavy) range from $40,000 to $120,000. Enterprise Android apps with offline support, SSO, and compliance features run $120,000 to $300,000+. Dedicated Kotlin developer hiring starts at $3,500/month. KMP projects that share logic across iOS and Android typically cost 20-30% less than building separate native apps." + - question: "Kotlin vs Java for Android development?" + answer: "Kotlin is Google's recommended language for Android development. All new Android APIs, Jetpack libraries, and documentation prioritize Kotlin. Kotlin offers null safety (eliminating the most common crash category), coroutines for async work (simpler than Java's thread management), and 30-40% less boilerplate code. Java still works on Android, but new Android features ship Kotlin-first. If you're starting a new Android project in 2026, Kotlin is the clear choice." + - question: "Kotlin Multiplatform vs React Native for cross-platform?" + answer: "Kotlin Multiplatform (KMP) shares business logic while keeping native UI on each platform. React Native shares both logic and UI through a JavaScript bridge. KMP produces genuinely native apps with no runtime abstraction layer, resulting in better performance and full access to platform APIs. React Native offers faster UI development through a single shared component layer. Choose KMP when performance, native feel, and platform API access matter most. Choose React Native when development speed and a shared UI are priorities." + - question: "How long does Java to Kotlin migration take for an Android app?" + answer: "Migration timeline depends on app size and test coverage. A small app (20-50 files) typically takes 4-8 weeks. Medium apps (50-150 files) take 8-16 weeks. Large enterprise apps (150+ files) take 3-6 months. Kotlin is 100% interoperable with Java, so migration happens incrementally, file by file, without breaking the build. We prioritize high-change areas first so your team benefits from Kotlin's advantages where they write the most code." + - question: "Is Kotlin suitable for backend/server-side development?" + answer: "Kotlin is a strong choice for server-side development, especially when your team already uses Kotlin for Android. Ktor provides a lightweight, coroutine-native framework for building APIs. Spring Boot has full Kotlin support with dedicated extensions. Kotlin's coroutines handle concurrent requests efficiently without the complexity of reactive frameworks. Companies like Square, Trello, and Atlassian use Kotlin on the server. It makes particular sense when your Android and backend teams share code through KMP." + - question: "What is Jetpack Compose and should we adopt it?" + answer: "Jetpack Compose is Android's modern declarative UI toolkit that replaces XML layouts with Kotlin functions. Google recommends Compose for all new Android UI development. It offers less boilerplate (50-70% less UI code than XML), built-in animation APIs, better state management, and Material 3 support out of the box. Google Maps, Play Store, and most new Google apps use Compose. If you're building a new Android app or planning a UI refresh, Compose is the right choice." + - question: "Can you train our existing team on Kotlin?" + answer: "We offer structured knowledge transfer as part of every engagement. Engineers pair-program with your team, conduct code reviews, and document architectural patterns. For formal training, we run hands-on workshops covering Kotlin fundamentals, Jetpack Compose, coroutines, and KMP. Most Java Android developers become productive in Kotlin within 2-4 weeks given the language similarities and strong IDE support in Android Studio." + - question: "Which Android versions do you support?" + answer: "We typically target Android 8.0 (API 26) as the minimum, which covers 95%+ of active Android devices. The app targets the latest Android 16 SDK as required by Play Store policies. We test on a range of devices including budget phones, mid-range devices, tablets, and foldables. Adaptive layouts using Compose's WindowSizeClass ensure proper display across all screen sizes." +philosophy: + title: "Our Approach to Kotlin Development" + subtitle: "Modern Android engineering, not legacy patterns wrapped in a new language." + blocks: + - title: "Kotlin-First, Not Kotlin-Translated" + description: "Writing Java patterns in Kotlin syntax misses the point. We use Kotlin idioms: sealed classes for state modeling, coroutines for async work, extension functions for clean APIs, and data classes for immutable models. The code should feel like Kotlin, not Java wearing a Kotlin costume." + - title: "Compose as the UI Standard" + description: "Jetpack Compose is not optional for new projects. XML layouts, Fragments, and the View system are legacy patterns. We build with Compose from day one: composable functions, unidirectional data flow, and declarative state management. The result is less code, fewer bugs, and faster development." + - title: "Shared Logic, Native Experience" + description: "When using KMP, business logic lives in shared Kotlin modules. UI stays native to each platform. We resist the temptation to share UI across platforms because users notice when an app does not feel native. Shared logic, native UX." + - title: "Testing That Catches Real Bugs" + description: "Compose UI tests, integration tests with real dependencies, and screenshot tests for visual regression. We test user behavior, not implementation details. A test suite should give your team confidence to ship changes, not slow them down with false positives." + - title: "Team Ownership from Day One" + description: "Every Kotlin project is built so your team can maintain it independently. Clean architecture, documented decisions, automated CI/CD, and zero proprietary tooling. We build for your engineers, not our retention." +cta: + title: "Ready to Discuss Your Kotlin Project?" + description: "Talk directly with engineers, not sales. We will assess fit and give honest next steps." + buttonText: "Talk to a Kotlin Engineer" + buttonLink: "/contact-us" + supportingNote: "No obligation. No pressure. Clear technical direction." +seo: + title: "Kotlin Development Services | Android & Multiplatform" + description: "Kotlin development services for native Android apps, Jetpack Compose, and Kotlin Multiplatform. Senior engineers, production mobile. Talk to the team." +--- diff --git a/content/technologies/mongodb.mdx b/content/technologies/mongodb.mdx new file mode 100644 index 0000000..2c6f25e --- /dev/null +++ b/content/technologies/mongodb.mdx @@ -0,0 +1,113 @@ +--- +title: "MongoDB Development Services" +headline: "MongoDB Development Services" +headlineAccent: "Scalable NoSQL Database Engineering" +description: "Schema design, performance optimization, and MongoDB infrastructure built by senior engineers who've shipped for companies like Setu, ESPN, and KredX." +capabilities: + - title: "Schema Design & Data Modeling" + description: "Document schema design that balances read performance, write efficiency, and storage costs. We model your data around actual query patterns, not relational instincts. Embedding vs referencing, denormalization strategies, and polymorphic patterns designed for how your application actually accesses data, not how an ER diagram looks on a whiteboard." + icon: "layers" + - title: "Performance Optimization & Indexing" + description: "Slow queries found and fixed. We analyze query plans with explain(), design compound indexes that cover your most frequent operations, and eliminate collection scans. Index strategy is not just adding indexes to every field. We balance read speed against write overhead and storage impact. Typical result: 10-50x improvement on poorly indexed collections." + icon: "chart" + - title: "MongoDB Atlas Management" + description: "Full Atlas lifecycle management: cluster sizing, tier selection, backup configuration, network security, and cost optimization. We configure auto-scaling rules that match your traffic patterns, set up monitoring alerts, and implement access controls with database-level RBAC. If you are overpaying for your Atlas tier, we will find it." + icon: "globe" + - title: "Aggregation Pipelines & Analytics" + description: "Complex data transformations, reporting queries, and analytics built with MongoDB's aggregation framework. We design pipelines that handle grouping, lookups, windowing, and statistical operations without requiring a separate analytics database. For full-text and vector search, we integrate Atlas Search and Atlas Vector Search directly into your query layer." + icon: "document" + - title: "Migration to MongoDB" + description: "Incremental migration from relational databases (PostgreSQL, MySQL, SQL Server) to MongoDB. We map relational schemas to document models, build data migration scripts with validation, and run dual-write patterns during transition. No big-bang cutovers. Your application stays live throughout. Typical migration: 4-12 weeks depending on data volume and complexity." + icon: "workflow" + - title: "Real-Time Data & Change Streams" + description: "Event-driven architectures using MongoDB Change Streams. We build real-time notification systems, cache invalidation pipelines, and cross-service data synchronization triggered by database changes. Change Streams provide at-least-once delivery with resume tokens for fault tolerance, no separate message broker required for many use cases." + icon: "bolt" +technologies: + - MongoDB 8.0 + - MongoDB Atlas + - Mongoose + - Prisma + - MongoDB Compass + - Atlas Search + - Atlas Vector Search + - Change Streams + - AWS DocumentDB + - Node.js + - Python + - Go + - Redis + - Docker +relatedExpertise: + - nodejs + - python + - react +process: + - number: 1 + title: "Data Modeling & Discovery (1-2 weeks)" + description: "We analyze your data access patterns, query frequency, and growth projections. You get a schema design document covering collection structure, indexing strategy, embedding vs referencing decisions, and sharding considerations. No implementation until the data model is validated against your actual workloads." + - number: 2 + title: "Schema Design & Index Planning (1-2 weeks)" + description: "Document schemas designed and validated with sample data. Compound indexes planned based on query patterns identified in discovery. Migration strategy defined if moving from a relational database. Atlas cluster configuration specified for your traffic and storage requirements." + - number: 3 + title: "Development & Integration (6-14 weeks)" + description: "Sprint-based delivery with working endpoints and database operations shipped every two weeks. Data access layer built with Mongoose or Prisma based on your stack. Aggregation pipelines developed and performance-tested against realistic data volumes. Your team gets staging access from week one." + - number: 4 + title: "Performance Testing & Optimization (1-2 weeks)" + description: "We load test with production-scale data volumes, analyze slow query logs, and tune indexes and aggregation pipelines. Connection pool sizing, read preference configuration, and write concern tuning based on your consistency requirements. Nothing ships until queries meet your latency targets." + - number: 5 + title: "Handoff & Support" + description: "Complete documentation covering schema decisions, indexing rationale, operational runbooks, and monitoring setup. Your team owns the database architecture. Optional support retainer for ongoing optimization, but no lock-in." +engagementModels: + title: "Hire MongoDB Developers" + subtitle: "Senior engineers who design schemas that scale and queries that perform." + models: + - title: "Dedicated Developer" + description: "Engineers with 3+ years building production MongoDB systems. Full database capability spanning schema design, query optimization, aggregation pipelines, and Atlas management. Backend development experience in Node.js, Python, or Go included." + bestFor: "Ongoing development with MongoDB backend, 3-month minimum engagement" + - title: "Team Pod (2-4 Engineers + Lead)" + description: "A self-contained team that owns your MongoDB-backed application end to end. Schema design, API development, performance optimization, and deployment covered." + bestFor: "Full application ownership with MongoDB, 6-month minimum engagement" + - title: "Project-Based Delivery" + description: "Fixed-scope engagement with clear deliverables, timeline, and budget. Defined schema design, agreed milestones, and transparent pricing." + bestFor: "Database migration or optimization projects, scope-dependent" +faqs: + - question: "How much do MongoDB development services cost?" + answer: "MongoDB development costs depend on scope. Schema design and optimization for an existing application typically runs $10,000 to $30,000. A full application backend with MongoDB, including API layer and data modeling, sits in the $40,000 to $120,000 range. Enterprise platforms with sharding, Atlas Search integration, and complex aggregation pipelines can run $100,000 to $250,000 or more. Our initial architecture consultation is free." + - question: "MongoDB vs PostgreSQL: which should I use?" + answer: "MongoDB excels when your data is hierarchical, semi-structured, or varies between records. Product catalogs with different attributes per category, user activity logs, content management systems, and IoT data are strong fits. PostgreSQL excels when your data is highly relational, you need complex joins across many tables, or you require strict ACID transactions across multiple entities. Many production systems use both: MongoDB for flexible document storage and PostgreSQL for relational data with foreign key constraints. We help you choose based on your data shape and query patterns." + - question: "When should I use MongoDB?" + answer: "MongoDB is the right choice when your data model is document-oriented (nested objects, arrays, varying fields), when you need horizontal scaling across large datasets, when schema flexibility matters (rapidly evolving data structures), or when read-heavy workloads dominate. Common MongoDB use cases include content management, product catalogs, user profiles, real-time analytics, and IoT data ingestion. MongoDB is not ideal for heavily relational data with many cross-entity joins or systems requiring multi-document ACID transactions across different collections." + - question: "How does MongoDB scale?" + answer: "MongoDB scales vertically (larger instances) and horizontally (sharding). Atlas auto-scaling adjusts compute and storage based on demand. For horizontal scaling, MongoDB distributes data across shards using a shard key you define. Choosing the right shard key is critical. A poor choice leads to hot spots where one shard handles most traffic. We design shard keys based on your actual query and write patterns, not default recommendations. Most applications under 500 GB of data do not need sharding. Vertical scaling and proper indexing handle the load at lower operational complexity." + - question: "MongoDB Atlas vs self-hosted: which is better?" + answer: "Atlas is the right choice for most teams. It handles backups, patching, monitoring, scaling, and security updates automatically. The operational burden of self-hosted MongoDB is significant: replica set management, backup verification, security patches, and version upgrades. Atlas costs more per GB than self-hosted, but the total cost of ownership is typically lower when you account for DevOps time. Self-hosted makes sense when you have strict data residency requirements, need to run on specific infrastructure, or have an experienced DBA team already managing databases. We deploy on both and recommend based on your team and compliance needs." + - question: "How do you approach MongoDB schema design?" + answer: "Procedure designs MongoDB schemas around query patterns, not entity relationships. We start by listing every query your application will execute, then design document structures that serve those queries efficiently. This often means embedding related data in a single document rather than normalizing across collections. We apply patterns like the bucket pattern for time-series data, the outlier pattern for documents with variable-size arrays, and the computed pattern for pre-aggregated analytics. Every schema decision is documented with the reasoning behind it." + - question: "How do you handle MongoDB security?" + answer: "We implement security at every layer. Network level: VPC peering, IP access lists, and private endpoints for Atlas clusters. Authentication: SCRAM-SHA-256 or x.509 certificates with database-level role-based access control. Encryption: TLS for data in transit and encryption at rest enabled by default on Atlas. Application level: input validation, parameterized queries to prevent injection, and field-level encryption for sensitive data. Audit logging enabled for compliance requirements." + - question: "What version of MongoDB should I use?" + answer: "MongoDB 8.0 for all new projects. It includes queryable encryption, improved aggregation performance, and better time-series collection support. For existing applications, we help teams upgrade incrementally from older versions, addressing deprecated features and driver compatibility along the way. MongoDB 7.0 and 6.0 are still supported but reaching end-of-life. If you are on MongoDB 4.x or earlier, upgrading should be a priority for security and performance reasons." +philosophy: + title: "Our Approach to MongoDB Development" + subtitle: "Document databases reward different thinking. We design for it." + blocks: + - title: "Query-Driven Schema Design" + description: "Relational thinking produces bad MongoDB schemas. We design documents around how your application reads and writes data, not how entities relate on a whiteboard. The schema serves the queries, not the other way around." + - title: "Indexing Is Architecture" + description: "Indexes are not an afterthought. We plan indexing strategy during schema design because the two are inseparable. A well-indexed collection with the right schema serves queries in under a millisecond. A poorly indexed one scans millions of documents." + - title: "Right-Sized Documents" + description: "Not everything belongs in one document. We balance embedding for read performance against referencing for write efficiency. Documents that grow without bound (unbounded arrays, unlimited nested objects) cause performance degradation. We design schemas with growth patterns in mind." + - title: "Operational Simplicity" + description: "Sharding adds complexity. Replica set topologies add complexity. We start with the simplest architecture that meets your requirements and add complexity only when data volume or traffic demands it. Most applications under 500 GB perform well on a properly indexed single replica set." + - title: "Exit-Ready Data Architecture" + description: "Every MongoDB system we design can be maintained by your team or a different vendor. Documented schema decisions, migration scripts, and operational runbooks. You own everything, always." +cta: + title: "Ready to Discuss Your MongoDB Project?" + description: "Talk directly with engineers, not sales. We will assess fit and give honest next steps." + buttonText: "Talk to a Database Engineer" + buttonLink: "/contact-us" + supportingNote: "No obligation. No pressure. Clear technical direction." +seo: + title: "MongoDB Development Services | NoSQL Database Engineering" + description: "MongoDB development services for schema design, performance optimization, and Atlas management. Senior engineers, honest guidance. Talk to the team." +--- diff --git a/content/technologies/postgresql.mdx b/content/technologies/postgresql.mdx new file mode 100644 index 0000000..11d0121 --- /dev/null +++ b/content/technologies/postgresql.mdx @@ -0,0 +1,111 @@ +--- +title: "PostgreSQL Development Services" +headline: "PostgreSQL Development Services" +headlineAccent: "Database Design, Optimization & Cloud Infrastructure" +description: "PostgreSQL databases designed, optimized, and operated by senior engineers who've built data systems for Setu, Pine Labs, and KredX." +capabilities: + - title: "Database Design and Modeling" + description: "Schema design that survives your next ten features, not just the current sprint. Normalized tables where consistency matters, denormalized views where read performance matters. Proper use of PostgreSQL-specific types: JSONB for flexible data, arrays for tags, range types for scheduling, and composite types for structured fields. We design schemas that make your queries simple and your migrations painless." + icon: "layers" + - title: "Performance Optimization" + description: "Slow queries diagnosed and fixed. We use EXPLAIN ANALYZE, pg_stat_statements, and auto_explain to find exactly where time is spent. Index strategy designed around your actual query patterns, not textbook rules. Partitioning for tables with millions of rows. Connection pooling with pgBouncer configured for your concurrency profile. We have taken query response times from 12 seconds to under 50 milliseconds on production systems." + icon: "bolt" + - title: "PostgreSQL Migration Services" + description: "Migrating from Oracle, SQL Server, MySQL, or MongoDB to PostgreSQL. Schema translation, stored procedure conversion, data migration with validation, and application-layer query rewrites. We run source and target databases in parallel during cutover so rollback is always an option. Zero-downtime migrations using logical replication for systems that cannot afford maintenance windows." + icon: "workflow" + - title: "PostgreSQL on Cloud (RDS, Aurora, Cloud SQL)" + description: "PostgreSQL deployed and configured on AWS RDS, Aurora PostgreSQL, or Google Cloud SQL. Instance sizing based on workload analysis, not guesswork. Automated backups, point-in-time recovery, read replicas for scaling reads, and parameter group tuning for your specific access patterns. We configure the managed service so you get the reliability without the operational overhead." + icon: "globe" + - title: "High Availability and Replication" + description: "Streaming replication, logical replication, and failover configuration for systems that need 99.99% uptime. Hot standby replicas for read scaling, synchronous replication for zero data loss, and automated failover with Patroni or cloud-native solutions. We design the replication topology around your RPO and RTO requirements, not a one-size-fits-all template." + icon: "chart" + - title: "Data Pipeline Integration" + description: "PostgreSQL as the source or destination in your data pipeline. Change data capture with Debezium, real-time sync to Elasticsearch or data warehouses, and ETL/ELT pipelines feeding analytics. pgvector for AI embedding storage and similarity search, enabling vector queries alongside your relational data without a separate vector database." + icon: "document" +technologies: + - PostgreSQL 17 + - pgvector + - PostGIS + - TimescaleDB + - pgBouncer + - AWS RDS + - Aurora PostgreSQL + - Prisma + - TypeORM + - Drizzle + - pg-promise + - Debezium +relatedExpertise: + - nodejs + - python + - dotnet +process: + - number: 1 + title: "Data Architecture and Discovery (1-2 weeks)" + description: "We analyze your data requirements, access patterns, and growth projections. You get a technical proposal covering schema design, indexing strategy, hosting recommendation (self-managed vs. RDS vs. Aurora), replication topology, and backup policy. No implementation until the data model is right." + - number: 2 + title: "Schema Design and Migration Planning (1-2 weeks)" + description: "Entity-relationship diagrams, table definitions with constraints, index strategy documented, and migration scripts written. For database migrations, we map source-to-target schema differences and build the data validation suite. Your development team can start building against the schema immediately." + - number: 3 + title: "Implementation and Optimization (4-12 weeks)" + description: "Database provisioned, schemas deployed, application integration built. Performance testing with production-like data volumes from the start. Query optimization happens during development, not after launch. We benchmark every critical query path against your SLA targets." + - number: 4 + title: "Load Testing and Hardening (1-2 weeks)" + description: "Simulated production load with realistic data volumes and concurrency. Connection pool sizing verified. Vacuum and autovacuum tuned. Monitoring configured with pg_stat_statements, CloudWatch or Datadog. Nothing goes live until the database handles your peak load with headroom." + - number: 5 + title: "Handoff and Support" + description: "Complete documentation covering schema decisions, index rationale, replication setup, and operational runbooks. Your team or DBA owns the database entirely. Optional support retainer for ongoing optimization, but no lock-in." +engagementModels: + title: "Hire PostgreSQL Developers" + subtitle: "Senior database engineers who design schemas that scale from day one." + models: + - title: "Dedicated Developer" + description: "Engineers with 5+ years of production PostgreSQL experience spanning schema design, query optimization, replication, and cloud deployment. Not application developers who write SQL on the side." + bestFor: "Ongoing database work or optimization projects, 3-month minimum engagement" + - title: "Team Pod (2-3 Engineers + Lead)" + description: "A team covering database architecture, application integration, and DevOps. Full ownership of data layer design, implementation, migration, and production operations." + bestFor: "Large-scale migrations or data platform builds, 6-month minimum engagement" + - title: "Project-Based Delivery" + description: "Fixed-scope engagement for specific database projects: migrations, performance audits, or schema redesigns. Clear deliverables, timeline, and transparent pricing." + bestFor: "Defined scope like a migration or performance overhaul, scope-dependent" +faqs: + - question: "How much do PostgreSQL development services cost?" + answer: "PostgreSQL development costs vary by scope. A performance audit and optimization for an existing database typically runs $8,000 to $25,000. A greenfield database design with application integration costs $30,000 to $80,000. A full database migration from Oracle or SQL Server to PostgreSQL ranges from $50,000 to $200,000+ depending on schema complexity, stored procedure conversion, and data volume. Procedure offers a free architecture consultation to scope your project." + - question: "PostgreSQL vs MySQL - which should I choose?" + answer: "PostgreSQL supports advanced data types (JSONB, arrays, ranges, custom types), full ACID compliance, and sophisticated query planning. MySQL is simpler to set up and performs well for read-heavy web applications with straightforward schemas. For applications requiring complex queries, geospatial data (PostGIS), full-text search, or AI vector operations (pgvector), PostgreSQL is the stronger choice. For simple CRUD applications where operational simplicity is the priority, MySQL works well. Procedure builds with both and recommends based on your actual requirements." + - question: "When should I use PostgreSQL?" + answer: "PostgreSQL is the right choice when your application needs complex queries with joins across many tables, JSONB for semi-structured data alongside relational data, geospatial queries (PostGIS), time-series data (TimescaleDB), vector similarity search for AI applications (pgvector), or strict data integrity with advanced constraints. It is also the best open-source option for teams migrating away from Oracle or SQL Server. PostgreSQL handles workloads from small applications to multi-terabyte databases with billions of rows." + - question: "How do you handle PostgreSQL scaling?" + answer: "PostgreSQL scales through multiple strategies. Vertical scaling with larger instances handles most applications up to the mid-millions of rows. Read replicas distribute query load for read-heavy workloads. Table partitioning manages tables with hundreds of millions of rows. Connection pooling with pgBouncer supports thousands of concurrent application connections. For write-heavy workloads at extreme scale, Citus (distributed PostgreSQL) shards data across multiple nodes. Procedure selects the scaling strategy based on your actual data volume and access patterns." + - question: "Can you migrate our database from Oracle or SQL Server to PostgreSQL?" + answer: "Yes. Procedure has migrated production databases from Oracle, SQL Server, and MySQL to PostgreSQL. The process includes schema translation (data types, constraints, indexes), stored procedure and function conversion, data migration with row-level validation, and application query rewrites. We use logical replication to run both databases in parallel during cutover, so rollback is always available. Typical migrations for mid-size databases (50-500GB) take 8-16 weeks." + - question: "Is PostgreSQL secure enough for enterprise use?" + answer: "PostgreSQL has a strong security track record with over 25 years of active development. It supports row-level security policies, column-level encryption, SSL/TLS for connections, and role-based access control with fine-grained permissions. On AWS RDS and Aurora, encryption at rest is enabled by default. Procedure configures security following CIS benchmarks: least-privilege roles, audit logging, connection restrictions, and automated vulnerability scanning." + - question: "What version of PostgreSQL do you use?" + answer: "Procedure uses PostgreSQL 17 (latest stable) for all new projects. Key improvements include incremental backup support, improved JSON query syntax (JSON_TABLE), faster vacuum operations, and enhanced logical replication with failover capabilities. For existing databases, we help teams upgrade from older PostgreSQL versions with thorough testing and minimal downtime using pg_upgrade or logical replication." + - question: "Can PostgreSQL handle AI and vector workloads?" + answer: "Yes. pgvector extends PostgreSQL with vector data types and similarity search operators (cosine distance, inner product, L2 distance). This means you can store AI embeddings alongside your relational data and query both in a single SQL statement. For many applications, pgvector eliminates the need for a separate vector database like Pinecone or Weaviate. Procedure has implemented pgvector for semantic search, recommendation engines, and RAG (retrieval-augmented generation) systems." +philosophy: + title: "Our Approach to PostgreSQL Development" + subtitle: "Your database outlives your application code. We design it that way." + blocks: + - title: "Schema Design Is System Design" + description: "The database schema is the most durable part of your system. Application code gets rewritten, but table structures persist for years. We invest time in getting the data model right because fixing a schema mistake in production costs 10x more than getting it right upfront." + - title: "Measure Before Optimizing" + description: "We do not add indexes based on intuition. EXPLAIN ANALYZE, pg_stat_statements, and workload analysis tell us exactly where time is spent. Every optimization is measurable, and we show you the before and after numbers." + - title: "Managed Services When Possible" + description: "Running PostgreSQL on bare metal is rarely worth the operational cost. AWS RDS or Aurora handles backups, patching, failover, and monitoring. We configure the managed service correctly so your team focuses on application logic, not database operations." + - title: "Data Integrity Over Convenience" + description: "Foreign keys, check constraints, unique indexes, and NOT NULL where appropriate. The database should reject bad data, not leave validation to the application layer alone. Constraints are documentation that the database enforces automatically." + - title: "Exit-Ready Data Architecture" + description: "No proprietary extensions, no vendor lock-in patterns, no undocumented schema decisions. Your team or any qualified DBA can take over operations. Complete documentation covering every schema choice and its rationale." +cta: + title: "Ready to Discuss Your PostgreSQL Project?" + description: "Talk directly with engineers, not sales. We will assess fit and give honest next steps." + buttonText: "Talk to a Database Engineer" + buttonLink: "/contact-us" + supportingNote: "No obligation. No pressure. Clear technical direction." +seo: + title: "PostgreSQL Development Services | Design & Optimization" + description: "PostgreSQL development services for schema design, performance optimization, cloud deployment, and migrations. Senior database engineers. Talk to the team." +--- diff --git a/content/technologies/swift.mdx b/content/technologies/swift.mdx new file mode 100644 index 0000000..30a5ce8 --- /dev/null +++ b/content/technologies/swift.mdx @@ -0,0 +1,118 @@ +--- +title: "Swift Development Services" +headline: "Swift Development Services" +headlineAccent: "Native iOS & Apple Platform Apps" +description: "Native iOS, watchOS, and tvOS applications built by senior engineers who understand Apple's platform deeply, not just its syntax." +capabilities: + - title: "Native iOS App Development" + description: "Production iOS applications built with Swift 6, SwiftUI, and modern Apple frameworks. MVVM architecture, async/await concurrency, and accessibility built in from the start. Apps that pass App Store review on the first submission and perform well on both current and older iPhones." + icon: "globe" + - title: "SwiftUI & UIKit Development" + description: "SwiftUI for new features and screens. UIKit when you need fine-grained control or are working within an existing codebase. We know when each is the right choice and how to combine them in the same project. SwiftUI's declarative model speeds development by 30-40% for standard UI patterns." + icon: "layers" + - title: "watchOS & tvOS Apps" + description: "Companion apps for Apple Watch and Apple TV that extend your iOS app's value. WatchKit and SwiftUI for watchOS, TVUIKit and focus-based navigation for tvOS. Shared business logic with your iOS app through Swift packages to avoid duplicating code across platforms." + icon: "bolt" + - title: "iOS App Modernization" + description: "Migrate Objective-C codebases to Swift incrementally. Refactor UIKit apps to SwiftUI. Update architectures from MVC to MVVM with Combine or async/await. Swift and Objective-C interoperate fully, so migration happens screen by screen without breaking the build. Most modernization projects complete in 3-6 months." + icon: "workflow" + - title: "Swift Backend (Vapor)" + description: "Server-side Swift using Vapor for teams that want a unified language across iOS and backend. REST APIs, WebSocket services, and database integrations. Best suited for teams where iOS engineers also own backend services and want to share models and validation logic between client and server." + icon: "chart" + - title: "App Clip & Widget Development" + description: "App Clips for lightweight, instant experiences without a full install. WidgetKit for home screen and Lock Screen widgets that keep your app present in users' daily routine. Live Activities for real-time updates on the Lock Screen and Dynamic Island. These features increase engagement without requiring users to open the full app." + icon: "document" +technologies: + - Swift 6 + - SwiftUI + - UIKit + - Combine + - Swift Concurrency + - Core Data + - SwiftData + - CloudKit + - Vapor + - Xcode 16 + - TestFlight + - XCTest + - Swift Testing + - WidgetKit + - App Intents + - StoreKit 2 + - Push Notifications (APNs) + - Core ML + - SPM +relatedExpertise: + - react-native + - flutter + - kotlin +process: + - number: 1 + title: "Discovery & Architecture (1-2 weeks)" + description: "Define screens, user flows, and technical approach. Choose between SwiftUI-first or UIKit-based architecture. If you have an existing app, we audit the codebase and identify modernization priorities. Deliverable: technical spec, architecture diagram, and Figma wireframes." + - number: 2 + title: "Design System & Component Library (1-2 weeks)" + description: "Build a custom SwiftUI component library that implements your brand's design language. SF Symbols integration, Dynamic Type support, and dark mode from the start. Components tested in isolation with SwiftUI Previews and snapshot tests." + - number: 3 + title: "Development & Iteration (6-16 weeks)" + description: "Sprint-based development with TestFlight builds for real-device testing throughout. Weekly demos. SwiftUI Previews and hot reload keep feedback loops tight. Internal builds distributed via TestFlight to stakeholders for continuous validation." + - number: 4 + title: "QA, Performance & Launch (1-2 weeks)" + description: "Testing across iPhone, iPad, and target Apple platforms. UI tests, performance profiling with Instruments (Time Profiler, Memory Graph), and accessibility audits. App Store submission with optimized metadata, screenshots, and App Store Connect configuration." + - number: 5 + title: "Post-Launch & Maintenance" + description: "Bug fixes, iOS/watchOS compatibility updates, feature development, and App Store policy compliance. Ongoing monitoring with crash analytics. App Store review management for updates." +engagementModels: + title: "Hire Swift Developers" + subtitle: "Senior iOS engineers with deep Apple platform expertise and production experience." + models: + - title: "Dedicated Developer" + description: "Full-time on your project, integrated into your team. Engineers proficient in Swift 6, SwiftUI, UIKit, and modern Apple platform APIs. Deep understanding of App Store guidelines and review processes." + bestFor: "Ongoing iOS development, 3-month minimum engagement" + - title: "Team Pod (2-4 Engineers + Lead)" + description: "iOS + backend + QA for a complete mobile team. Architecture, implementation, testing, and App Store deployment covered." + bestFor: "Full product ownership, 6-month minimum engagement" + - title: "Project-Based Delivery" + description: "Fixed scope, milestone-based delivery. Defined specs, agreed milestones, and transparent pricing." + bestFor: "Defined scope with clear deliverables, scope-dependent" +faqs: + - question: "How much does iOS app development with Swift cost?" + answer: "Swift iOS app development costs vary by complexity. Simple apps with standard UI run $15,000 to $40,000. Mid-complexity apps (e-commerce, social, data-heavy) range from $40,000 to $120,000. Enterprise iOS apps with offline support, SSO, compliance features, and Apple Watch companion apps run $120,000 to $350,000+. Dedicated Swift developer hiring starts at $3,500/month. Final cost depends on features, integrations, and Apple platform targets." + - question: "Swift vs React Native for iOS app development?" + answer: "Swift produces genuinely native iOS apps with full access to every Apple API, best-in-class performance, and day-one support for new iOS features. React Native trades some of that for cross-platform reach, shipping to both iOS and Android from one JavaScript codebase. Choose Swift when your app targets only Apple platforms, needs deep hardware integration (HealthKit, ARKit, CarPlay), or when performance and native feel are non-negotiable. Choose React Native when you need both iOS and Android and can accept minor platform compromises." + - question: "SwiftUI vs UIKit for new iOS projects?" + answer: "SwiftUI is the right default for most new iOS projects in 2026. It offers faster development (30-40% less code than UIKit for standard UI), built-in accessibility, dark mode, and Dynamic Type support, plus native integration with Apple's latest frameworks. UIKit is still the better choice when you need pixel-perfect control over animations, complex collection view layouts, or when integrating with large existing UIKit codebases. Many production apps use both: SwiftUI for new screens and UIKit where fine-grained control is needed." + - question: "How long does it take to build an iOS app?" + answer: "MVP/simple apps: 8-12 weeks. Mid-complexity apps: 12-20 weeks. Enterprise apps with multiple Apple platform targets: 16-28 weeks. These timelines include design, development, testing, and App Store submission. SwiftUI's declarative approach and Previews accelerate development compared to traditional UIKit. Add 2-4 weeks if the project includes watchOS or widget development." + - question: "What does Swift 6 strict concurrency mean for my app?" + answer: "Swift 6 enables strict concurrency checking by default, catching data races at compile time rather than in production crashes. This means your app's concurrent code (networking, background processing, UI updates) is verified safe before it ships. For existing apps, migration to strict concurrency can be done incrementally, module by module. The result is fewer crashes, fewer threading bugs, and more predictable behavior under load. It is the most significant Swift language change since async/await in Swift 5.5." + - question: "What is the App Store review process and how do you handle it?" + answer: "App Store review typically takes 24-48 hours for new submissions. Apple reviews for functionality, design quality, privacy compliance, and guideline adherence. Common rejection reasons include incomplete functionality, privacy description mismatches, and in-app purchase policy violations. We handle all of these proactively: privacy manifests configured correctly, App Tracking Transparency implemented where needed, and StoreKit 2 for subscriptions. Our apps pass review on the first submission in the vast majority of cases." + - question: "What does ongoing iOS app maintenance involve?" + answer: "iOS apps require regular maintenance for iOS version compatibility (Apple releases a new major version annually), SDK deprecations, App Store policy changes, and security updates. Typical maintenance includes updating to new iOS APIs, fixing issues on new iPhone hardware, maintaining App Store listing compliance, and monitoring crash rates via Xcode Organizer. Budget 15-20% of initial development cost annually for maintenance. Neglected apps eventually break or get removed from the App Store." + - question: "Should we build native iOS or go cross-platform?" + answer: "Build native Swift when you target only Apple platforms, need deep integration with Apple ecosystem features (HealthKit, ARKit, Siri Shortcuts, CarPlay, Apple Watch), or when your users expect a premium iOS experience. Go cross-platform (React Native or Flutter) when you need both iOS and Android and budget does not support two separate native teams. Cross-platform frameworks have matured significantly, but native Swift still provides the best performance, smallest app size, and earliest access to new Apple features." +philosophy: + title: "Our Approach to Swift Development" + subtitle: "We build iOS apps that leverage the Apple ecosystem, not fight against it." + blocks: + - title: "Platform-Native, Not Platform-Agnostic" + description: "Apple designs its platforms as integrated systems. We build apps that take advantage of that: Handoff between iPhone and Mac, Siri Shortcuts for voice access, WidgetKit for home screen presence, and SharePlay for collaborative features. These integrations turn a good app into one users rely on daily." + - title: "SwiftUI Where It Fits" + description: "SwiftUI is the future of Apple UI development. We adopt it aggressively for new projects and new screens in existing apps. But we are pragmatic: some patterns still work better in UIKit, and forcing SwiftUI into every corner creates worse outcomes. We choose the right tool per screen." + - title: "Swift Concurrency Done Right" + description: "Swift 6's strict concurrency model eliminates entire categories of bugs. We adopt actors, sendable types, and structured concurrency from day one. The code compiles with strict concurrency checking enabled, not just in permissive mode. This catches threading issues at build time instead of 3 AM production crashes." + - title: "Accessibility as Default" + description: "VoiceOver, Dynamic Type, and high-contrast support are not afterthoughts. SwiftUI makes many accessibility features automatic, but proper implementation still requires intentional design: meaningful labels, logical navigation order, and appropriate semantic groupings." + - title: "Built for Your Team to Own" + description: "Every iOS project ships with clean architecture, documented decisions, CI/CD pipelines (Xcode Cloud or GitHub Actions), and fastlane scripts. Your team takes full ownership. No proprietary tools, no hidden dependencies, no lock-in." +cta: + title: "Ready to Discuss Your Swift Project?" + description: "Talk directly with engineers, not sales. We will assess fit and give honest next steps." + buttonText: "Talk to a Swift Engineer" + buttonLink: "/contact-us" + supportingNote: "No obligation. No pressure. Clear technical direction." +seo: + title: "Swift Development Services | iOS & Apple Platform Apps" + description: "Native iOS app development with Swift 6 and SwiftUI. Senior engineers for iPhone, iPad, Apple Watch, and Apple TV apps. Talk to the team." +--- diff --git a/content/technologies/typescript.mdx b/content/technologies/typescript.mdx new file mode 100644 index 0000000..1695915 --- /dev/null +++ b/content/technologies/typescript.mdx @@ -0,0 +1,112 @@ +--- +title: "TypeScript Development Services" +headline: "TypeScript Development Services" +headlineAccent: "Type-Safe Web, API & Full-Stack Engineering" +description: "TypeScript applications, migrations, and full-stack systems built by the team behind procedure.tech, Setu, KredX, and Last9." +capabilities: + - title: "TypeScript Migration" + description: "Moving JavaScript codebases to TypeScript, incrementally. We start with strict: false, add types to critical paths first, then tighten the compiler until the codebase is fully strict. Your app stays live throughout. No productivity freeze, no big-bang rewrite. We have migrated codebases with 200K+ lines of JavaScript to strict TypeScript without a single day of downtime." + icon: "workflow" + - title: "Enterprise Application Development" + description: "Large-scale TypeScript applications with NestJS, React 19, and Next.js 16. Monorepos with Turborepo, shared type packages, and strict compiler settings across every workspace. The type system becomes your documentation and your safety net. Runtime errors caught at build time, not by your users." + icon: "globe" + - title: "Type-Safe API Integration" + description: "End-to-end type safety from database to UI. Prisma generates types from your schema, tRPC or GraphQL Codegen carries them through your API layer, and Zod validates runtime inputs at every boundary. A change to your database schema surfaces type errors in your React components instantly. No more silent contract mismatches between frontend and backend." + icon: "layers" + - title: "Full-Stack TypeScript" + description: "One language across your entire stack. React 19 or Next.js 16 on the frontend, NestJS or Fastify on the backend, Prisma or Drizzle for data access, all in TypeScript. Your team shares types, utilities, and domain logic across every layer. Fewer context switches, faster debugging, simpler hiring." + icon: "chart" + - title: "Library and SDK Development" + description: "TypeScript libraries and SDKs with proper declaration files, generics, and discriminated unions. Published to npm with semantic versioning, automated changelogs, and dual ESM/CJS output. We build packages that feel native to TypeScript, not JavaScript wrappers with .d.ts files bolted on." + icon: "document" + - title: "Code Quality and Tooling" + description: "ESLint with typescript-eslint, Vitest for unit and integration tests, Playwright for end-to-end coverage. Strict compiler options enforced via CI. We configure tsconfig.json properly once so your team never debates compiler settings again. Every PR gets type-checked, linted, and tested before merge." + icon: "bolt" +technologies: + - TypeScript 5.7 + - React 19 + - Next.js 16 + - Node.js 22 + - NestJS + - Prisma + - Zod + - tRPC + - Vitest + - ESLint + - Playwright + - Turborepo +relatedExpertise: + - react + - nextjs + - nodejs + - angular +process: + - number: 1 + title: "Codebase Audit and Architecture (1-2 weeks)" + description: "We assess your existing codebase, identify type coverage gaps, and define the migration or build strategy. You get a technical proposal covering compiler configuration, module boundaries, shared type packages, and CI/CD integration. For greenfield projects, we establish the TypeScript architecture before writing application code." + - number: 2 + title: "Type Foundation and Tooling (1-2 weeks)" + description: "tsconfig.json configured for your project's needs. ESLint rules set. Shared type packages created if using a monorepo. For migrations, we establish the incremental adoption path and convert critical modules first. For new builds, the type system and toolchain are locked before feature development begins." + - number: 3 + title: "Development and Iteration (6-16 weeks)" + description: "Sprint-based delivery with strict type checking on every pull request. Your team sees working features shipped continuously. For migrations, we convert module by module while the application stays live. Type coverage tracked and reported weekly." + - number: 4 + title: "Validation and Hardening (1-2 weeks)" + description: "Full strict mode enabled and verified. No any types in production code. Vitest and Playwright test suites passing. Bundle analysis completed to confirm TypeScript compilation produces optimized output. Performance benchmarks met." + - number: 5 + title: "Handoff and Support" + description: "Complete documentation covering TypeScript conventions, compiler configuration decisions, and type architecture. Your team owns the codebase and can extend it without us. Optional support retainer available, but no lock-in." +engagementModels: + title: "Hire TypeScript Developers" + subtitle: "Senior TypeScript engineers who ship type-safe code from week one." + models: + - title: "Dedicated Developer" + description: "Engineers with 4+ years of production TypeScript experience across React, Node.js, and full-stack applications. Deep understanding of generics, conditional types, and compiler internals. Not developers who learned TypeScript last month." + bestFor: "Ongoing development or migration work, 3-month minimum engagement" + - title: "Team Pod (2-4 Engineers + Lead)" + description: "A self-contained team that owns full feature delivery in TypeScript. Architecture, implementation, testing, and deployment covered. Mixed team of leads and senior engineers staffed based on project needs." + bestFor: "Full application builds or large-scale migrations, 6-month minimum engagement" + - title: "Project-Based Delivery" + description: "Fixed-scope engagement with clear deliverables, timeline, and budget. Defined type contracts, agreed milestones, and transparent pricing." + bestFor: "Defined scope with clear deliverables, scope-dependent" +faqs: + - question: "How much does TypeScript development cost?" + answer: "TypeScript development costs depend on project scope. A JavaScript-to-TypeScript migration for a medium codebase (50K-100K lines) typically runs $20,000 to $60,000. A full-stack TypeScript application with 15-25 screens costs $40,000 to $120,000. Enterprise platforms with monorepo architecture, shared type packages, and multiple teams can run $120,000 to $350,000+. Procedure offers a free architecture consultation to scope your specific project." + - question: "TypeScript vs JavaScript - which should I use?" + answer: "TypeScript is JavaScript with a type system. For any project with more than one developer or expected to live longer than six months, TypeScript pays for itself. The compiler catches bugs that would otherwise reach production, refactoring becomes safe instead of risky, and IDE support (autocomplete, go-to-definition, inline errors) dramatically improves developer velocity. The initial setup cost is small compared to the debugging time TypeScript eliminates over a project's lifetime." + - question: "How long does a TypeScript migration take?" + answer: "A TypeScript migration timeline depends on codebase size and test coverage. A 20K-line JavaScript project with good tests can be fully migrated in 4-6 weeks. A 100K-line codebase takes 8-16 weeks. Enterprise codebases with 500K+ lines are typically 3-6 months with incremental adoption. Procedure migrates incrementally, starting with strict: false and tightening the compiler as coverage expands. The application stays live throughout the entire process." + - question: "Should I use strict mode in TypeScript?" + answer: "Yes. Strict mode enables strictNullChecks, noImplicitAny, and other compiler flags that catch the most common runtime errors at build time. Every new TypeScript project should start with strict: true. For existing projects, Procedure enables strict mode incrementally, module by module, so your team is not blocked by thousands of new errors on day one." + - question: "Is TypeScript good for backend development?" + answer: "TypeScript is excellent for backend development. NestJS provides enterprise-grade patterns (dependency injection, decorators, modules) with full TypeScript support. Fastify offers the highest throughput for HTTP services. Prisma and Drizzle generate typed database clients from your schema. The same type definitions can be shared between frontend and backend, eliminating an entire class of integration bugs. Companies like Stripe, Shopify, and Airbnb run backend services in TypeScript." + - question: "Can you train our team on TypeScript?" + answer: "Yes. Procedure provides TypeScript training as part of migration engagements. This includes hands-on workshops covering generics, utility types, discriminated unions, and advanced patterns. Training is tailored to your codebase, not generic exercises. Your team works with the types and patterns they will actually use in production." + - question: "What version of TypeScript do you use?" + answer: "Procedure uses TypeScript 5.7 (latest stable) for all new projects. Key features include using declarations for explicit resource management, improved control flow narrowing, and faster type checking. For existing projects, we help teams upgrade from older TypeScript versions and adopt new features incrementally." + - question: "Do you work with US-based teams from India?" + answer: "Yes. Procedure's engineering team is based in Mumbai with working hours overlapping US EST and PST. The team has delivered TypeScript projects for US clients across fintech, SaaS, and enterprise platforms. Communication happens over Slack, daily standups, and weekly demos. Same tools, same cadence, different timezone." +philosophy: + title: "Our Approach to TypeScript Development" + subtitle: "Types are architecture decisions, not annotations you add later." + blocks: + - title: "Strict From Day One" + description: "Every new TypeScript project starts with strict: true. No any types in production code. The compiler is your first line of defense against runtime errors, and we configure it to catch everything it can." + - title: "Types as Documentation" + description: "Well-designed TypeScript types communicate intent better than comments. When a function accepts a discriminated union instead of a string, the type system tells every developer what values are valid without reading a wiki page." + - title: "End-to-End Type Safety" + description: "Types that stop at the API boundary are half the value. We use Prisma, tRPC, and Zod to carry type safety from the database through the API to the UI. A schema change surfaces errors everywhere it matters, instantly." + - title: "Incremental Adoption Over Perfection" + description: "For migrations, we prioritize progress over perfection. Start with loose types on legacy code, strict types on new code, and tighten gradually. Your team ships features while the migration happens in the background." + - title: "Tooling That Enforces Standards" + description: "We do not rely on code review to catch type issues. CI pipelines run the TypeScript compiler, ESLint with typescript-eslint, and test suites on every pull request. Standards are automated, not aspirational." +cta: + title: "Ready to Discuss Your TypeScript Project?" + description: "Talk directly with engineers, not sales. We will assess fit and give honest next steps." + buttonText: "Talk to a TypeScript Engineer" + buttonLink: "/contact-us" + supportingNote: "No obligation. No pressure. Clear technical direction." +seo: + title: "TypeScript Development Services | Type-Safe Engineering" + description: "TypeScript development services for migrations, full-stack apps, and enterprise platforms. Strict mode, end-to-end type safety. Talk to senior engineers." +--- diff --git a/lib/technologies-hub-data.ts b/lib/technologies-hub-data.ts index d25218a..45aa462 100644 --- a/lib/technologies-hub-data.ts +++ b/lib/technologies-hub-data.ts @@ -131,7 +131,7 @@ export const technologies: TechnologyItem[] = [ category: "frontend", description: "Typed superset of JavaScript for large-scale applications", logoPath: "/technologies/typescript-logo.svg", - href: null, + href: "/technologies/typescript", }, // Backend & Server-Side @@ -165,7 +165,7 @@ export const technologies: TechnologyItem[] = [ category: "backend", description: "Battle-tested platform for enterprise and distributed systems", logoPath: "/technologies/java-logo.svg", - href: null, + href: "/technologies/java", }, { name: "Go", @@ -173,7 +173,7 @@ export const technologies: TechnologyItem[] = [ category: "backend", description: "High-performance compiled language for cloud-native services", logoPath: "/technologies/golang-logo.svg", - href: null, + href: "/technologies/golang", }, { name: "Rust", @@ -207,7 +207,7 @@ export const technologies: TechnologyItem[] = [ category: "mobile", description: "Native iOS and macOS application development", logoPath: "/technologies/swift-logo.svg", - href: null, + href: "/technologies/swift", }, { name: "Kotlin", @@ -215,7 +215,7 @@ export const technologies: TechnologyItem[] = [ category: "mobile", description: "Modern language for native Android development", logoPath: "/technologies/kotlin-logo.svg", - href: null, + href: "/technologies/kotlin", }, // Cloud Platforms @@ -225,7 +225,7 @@ export const technologies: TechnologyItem[] = [ category: "cloud", description: "Comprehensive cloud platform for compute, storage, and AI services", logoPath: "/technologies/aws-logo.svg", - href: null, + href: "/technologies/aws", }, { name: "Microsoft Azure", @@ -259,7 +259,7 @@ export const technologies: TechnologyItem[] = [ category: "devops", description: "Containerization platform for consistent deployment environments", logoPath: "/technologies/docker-logo.svg", - href: null, + href: "/technologies/docker", }, { name: "Terraform", @@ -301,7 +301,7 @@ export const technologies: TechnologyItem[] = [ category: "databases", description: "Advanced open-source relational database for complex workloads", logoPath: "/technologies/postgresql-logo.svg", - href: null, + href: "/technologies/postgresql", }, { name: "MongoDB", @@ -309,7 +309,7 @@ export const technologies: TechnologyItem[] = [ category: "databases", description: "Document database for flexible, schema-less data models", logoPath: "/technologies/mongodb-logo.svg", - href: null, + href: "/technologies/mongodb", }, { name: "Redis", diff --git a/public/assets/technologies/aws-development.png b/public/assets/technologies/aws-development.png new file mode 100644 index 0000000000000000000000000000000000000000..70c9ceaa1f5ac27c920826077573868cd5fe11b4 GIT binary patch literal 51301 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 JGtKb=@GljL?S23N literal 0 HcmV?d00001 diff --git a/public/assets/technologies/docker-development.png b/public/assets/technologies/docker-development.png new file mode 100644 index 0000000000000000000000000000000000000000..d83f2c0132ca8d84f13c0fd824c7c139adf0aeed GIT binary patch literal 45612 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

9Eh3cZ5CIzH$7RMh($r|u4H-vL}1G9hW71S>hR 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 R*N1;gURvdArKD-l{{TJ8uVDZH literal 0 HcmV?d00001 diff --git a/public/assets/technologies/golang-development.png b/public/assets/technologies/golang-development.png new file mode 100644 index 0000000000000000000000000000000000000000..807f62d7f4a8ee7850b138d090fcc0bab4be4218 GIT binary patch literal 47880 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

Ft!_$3=MhOpgef2 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 XF(1cywf;(t@OG&ve3Gw{g@pVc*?ej? literal 0 HcmV?d00001 diff --git a/public/assets/technologies/java-development.png b/public/assets/technologies/java-development.png new file mode 100644 index 0000000000000000000000000000000000000000..f45b8e17439b5b22aea4b581765d5cec84e55b1b GIT binary patch literal 47646 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 KelF{r5}E+5hEv}F literal 0 HcmV?d00001 diff --git a/public/assets/technologies/postgresql-development.png b/public/assets/technologies/postgresql-development.png new file mode 100644 index 0000000000000000000000000000000000000000..21a45d9d98d0bcd104d403d9ab3aeacd380cf44e GIT binary patch literal 48676 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 literal 0 HcmV?d00001 diff --git a/public/assets/technologies/swift-development.png b/public/assets/technologies/swift-development.png new file mode 100644 index 0000000000000000000000000000000000000000..30a2543d70a272b726e6ecf0b02e41a210a66029 GIT binary patch literal 45000 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 z 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 literal 0 HcmV?d00001 diff --git a/public/assets/technologies/typescript-development.png b/public/assets/technologies/typescript-development.png new file mode 100644 index 0000000000000000000000000000000000000000..5b347d2270c28e55ed9f5564483bb4342aa88a5d GIT binary patch literal 48896 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�}6 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 Date: Wed, 4 Mar 2026 14:42:09 +0530 Subject: [PATCH 2/4] Keyword-optimize 8 tech pages, remove Docker page, expand interlinking - Keyword-optimized section headings across all 8 new technology pages (TypeScript, PostgreSQL, AWS, Go, MongoDB, Java, Kotlin, Swift) - Increased keyword density in capability/process descriptions - Expanded relatedExpertise from 3-4 to 5-6 items per page - Removed Docker technology page (low standalone search demand) - Reverted Docker hub data href to null - Removed Docker OG image entry from generation script --- app/technologies/docker/layout.tsx | 52 -------- app/technologies/docker/page.tsx | 33 ------ content/technologies/aws.mdx | 21 ++-- content/technologies/docker.mdx | 112 ------------------ content/technologies/golang.mdx | 27 +++-- content/technologies/java.mdx | 19 +-- content/technologies/kotlin.mdx | 21 ++-- content/technologies/mongodb.mdx | 23 ++-- content/technologies/postgresql.mdx | 21 ++-- content/technologies/swift.mdx | 23 ++-- content/technologies/typescript.mdx | 20 ++-- lib/technologies-hub-data.ts | 2 +- .../technologies/docker-development.png | Bin 45612 -> 0 bytes scripts/generate-og-images.mjs | 7 +- 14 files changed, 101 insertions(+), 280 deletions(-) delete mode 100644 app/technologies/docker/layout.tsx delete mode 100644 app/technologies/docker/page.tsx delete mode 100644 content/technologies/docker.mdx delete mode 100644 public/assets/technologies/docker-development.png diff --git a/app/technologies/docker/layout.tsx b/app/technologies/docker/layout.tsx deleted file mode 100644 index c4a258d..0000000 --- a/app/technologies/docker/layout.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import type { Metadata } from "next"; - -export const metadata: Metadata = { - title: - "Docker Consulting Services | Containerization & DevOps", - description: - "Docker consulting services for containerization, CI/CD pipelines, and production infrastructure. Senior DevOps engineers, honest guidance.", - alternates: { - canonical: "/technologies/docker", - }, - openGraph: { - title: - "Docker Consulting Services | Containerization & DevOps", - description: - "Docker consulting services for containerization, CI/CD pipelines, and production infrastructure. Senior DevOps engineers, honest guidance.", - type: "website", - url: "/technologies/docker", - images: [ - { - url: "/assets/technologies/docker-development.png", - width: 1200, - height: 630, - alt: "Procedure - Docker Consulting Services", - }, - ], - }, - twitter: { - card: "summary_large_image", - title: - "Docker Consulting Services | Containerization & DevOps", - description: - "Docker consulting services for containerization, CI/CD pipelines, and production infrastructure. Senior DevOps engineers, honest guidance.", - images: [ - { - url: "/assets/technologies/docker-development.png", - width: 1200, - height: 630, - alt: "Procedure - Docker Consulting Services", - }, - ], - site: "@procedurehq", - creator: "@procedurehq", - }, -}; - -export default function DockerLayout({ - children, -}: { - children: React.ReactNode; -}) { - return <>{children}; -} diff --git a/app/technologies/docker/page.tsx b/app/technologies/docker/page.tsx deleted file mode 100644 index f0fb407..0000000 --- a/app/technologies/docker/page.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import { notFound } from "next/navigation"; -import { - getTechnologyForListing, - getRelatedExpertiseForListing, -} from "@/lib/content"; -import { JsonLd } from "@/components/seo"; -import { getExpertiseStructuredData } from "@/lib/expertise-schema"; -import ExpertisePageClient from "@/app/services/[slug]/ExpertisePageClient"; -import { ExpertisePageHero } from "@/app/services/[slug]/ExpertisePageHero"; - -export default function DockerPage() { - const technology = getTechnologyForListing("docker"); - - if (!technology) { - notFound(); - } - - const relatedPages = getRelatedExpertiseForListing( - technology.relatedExpertise || [], - ); - - return ( - <> - - } - /> - - ); -} diff --git a/content/technologies/aws.mdx b/content/technologies/aws.mdx index f25848a..5afacfe 100644 --- a/content/technologies/aws.mdx +++ b/content/technologies/aws.mdx @@ -4,22 +4,22 @@ headline: "AWS Development Services" headlineAccent: "Cloud-Native Apps, Infrastructure & DevOps" description: "AWS infrastructure, cloud-native applications, and DevOps pipelines built by senior engineers who've shipped for Setu, ESPN, and Pine Labs." capabilities: - - title: "Cloud-Native Application Development" - description: "Applications designed for AWS from the ground up. ECS Fargate for containerized workloads, Lambda for event-driven processing, API Gateway for managed endpoints, and DynamoDB or Aurora for data. Not lift-and-shift. We build applications that use AWS services as building blocks, so you pay for what you use and scale without re-architecture." + - title: "Cloud-Native AWS Application Development" + description: "Applications designed for AWS from the ground up. ECS Fargate for containerized workloads, Lambda for event-driven processing, API Gateway for managed endpoints, and DynamoDB or Aurora for data. Not lift-and-shift to AWS. We build applications that use AWS services as building blocks, so you pay for what you use and scale without re-architecture." icon: "globe" - title: "AWS Migration and Modernization" description: "Moving on-premise or legacy cloud workloads to AWS. We assess your current architecture, design the target state, and execute the migration with minimal downtime. Monolith-to-microservices refactoring, database migration (RDS, Aurora), and containerization of legacy applications. Parallel running during cutover so rollback is always an option." icon: "workflow" - - title: "Serverless Architecture" + - title: "AWS Serverless (Lambda, Step Functions, EventBridge)" description: "Event-driven systems built on Lambda, Step Functions, EventBridge, SQS, and API Gateway. Functions that execute in milliseconds and cost nothing when idle. We design serverless architectures that handle bursty workloads without cold-start problems. Not everything should be serverless, and we will tell you when containers or EC2 are the better choice." icon: "bolt" - title: "Infrastructure as Code (CDK and Terraform)" description: "Every AWS resource defined in code, versioned in Git, and deployed through CI/CD. We use AWS CDK (TypeScript) for AWS-only environments and Terraform for multi-cloud or hybrid setups. No manual console clicks in production. Infrastructure changes go through the same code review and deployment pipeline as application code." icon: "layers" - - title: "DevOps and CI/CD on AWS" + - title: "AWS DevOps & CI/CD Pipelines" description: "Automated build, test, and deployment pipelines using CodePipeline, CodeBuild, or GitHub Actions with AWS deployment targets. Blue-green deployments on ECS, canary releases on Lambda, and automated rollback on failure. Your team ships to production multiple times a day with confidence, not anxiety." icon: "chart" - - title: "Cost Optimization and FinOps" + - title: "AWS Cost Optimization & FinOps" description: "AWS bills analyzed, waste identified, and costs reduced. Right-sizing EC2 instances, converting to Savings Plans or Reserved Instances, eliminating unused resources, and architecting for cost efficiency. We have reduced AWS bills by 30-50% for clients running over-provisioned infrastructure. Cost optimization is an ongoing practice, not a one-time audit." icon: "document" technologies: @@ -40,6 +40,9 @@ technologies: relatedExpertise: - nodejs - python + - typescript + - java + - golang - react process: - number: 1 @@ -47,15 +50,15 @@ process: description: "We audit your current infrastructure (or requirements for greenfield), map workloads to AWS services, and design the target architecture. You get a technical proposal covering service selection, networking (VPC design), security (IAM policies, encryption), cost projections, and migration strategy. No implementation until the architecture is validated." - number: 2 title: "Infrastructure Foundation (1-3 weeks)" - description: "VPC, subnets, security groups, IAM roles, and core services provisioned via CDK or Terraform. CI/CD pipeline configured. Monitoring and alerting set up with CloudWatch and alarms. The infrastructure foundation is production-grade from the start, not a prototype that needs hardening later." + description: "AWS VPC, subnets, security groups, IAM roles, and core services provisioned via CDK or Terraform. CI/CD pipeline configured. Monitoring and alerting set up with CloudWatch and alarms. The infrastructure foundation is production-grade from the start, not a prototype that needs hardening later." - number: 3 - title: "Application Migration or Development (4-16 weeks)" + title: "AWS Application Migration & Development (4-16 weeks)" description: "For migrations: workloads moved service by service with parallel running and validation at each step. For new builds: application services deployed iteratively with working environments available from week one. Your team sees real progress in staging, not architecture diagrams." - number: 4 title: "Security, Performance, and Cost Review (1-2 weeks)" description: "AWS Well-Architected Review against all six pillars: operational excellence, security, reliability, performance efficiency, cost optimization, and sustainability. Security audit with IAM policy review, encryption verification, and network access validation. Load testing under production-like conditions." - number: 5 - title: "Handoff and Support" + title: "Handoff & AWS Operations Transfer" description: "Complete documentation covering architecture decisions, IaC repositories, deployment runbooks, and operational procedures. Your team manages the AWS environment independently. Optional support retainer for ongoing optimization and incident response, but no lock-in." engagementModels: title: "Hire AWS Engineers" @@ -93,7 +96,7 @@ philosophy: blocks: - title: "Infrastructure as Code, Always" description: "Every resource in CDK or Terraform. Every change through a pull request. Every deployment automated. If someone needs to click through the AWS console to make a production change, the infrastructure is not properly codified." - - title: "Cost-Aware Architecture" + - title: "Cost-Aware AWS Architecture" description: "We design for cost efficiency from the start, not as an afterthought when the bill arrives. Service selection, instance sizing, and scaling policies all factor in cost alongside performance. Your monthly AWS bill should never be a surprise." - title: "Security as Default, Not Add-On" description: "Least-privilege IAM, encryption everywhere, network isolation, and audit logging are part of the initial infrastructure template. Security is not a sprint we run before a compliance audit. It is how the infrastructure is built." diff --git a/content/technologies/docker.mdx b/content/technologies/docker.mdx deleted file mode 100644 index 0c5171c..0000000 --- a/content/technologies/docker.mdx +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: "Docker Consulting Services" -headline: "Docker Consulting Services" -headlineAccent: "Production-Grade Containerization" -description: "Container strategy, migration, and DevOps infrastructure built by the team that ships containerized systems for companies like Setu, Pine Labs, and Last9." -capabilities: - - title: "Containerization Strategy & Architecture" - description: "We assess your applications, define container boundaries, and design a containerization roadmap that matches your team's operational maturity. Not every service needs its own container. We identify what to containerize first, what to defer, and how to structure images for fast builds and small footprints." - icon: "globe" - - title: "Docker Compose & Multi-Service Orchestration" - description: "Local development environments that mirror production. We build Docker Compose configurations for multi-service stacks with proper networking, volume management, health checks, and dependency ordering. Your team gets a one-command setup that works on every machine, every time." - icon: "workflow" - - title: "CI/CD Pipeline Containerization" - description: "Docker-native build pipelines with multi-stage builds, layer caching, and automated image publishing. We integrate with GitHub Actions, GitLab CI, or your existing pipeline tooling. Build times drop from 15 minutes to under 3 when caching is done right." - icon: "bolt" - - title: "Docker Security & Image Optimization" - description: "Security scanning with Trivy and Snyk, Dockerfile linting with Hadolint, and image hardening following CIS benchmarks. We build minimal images using distroless or Alpine bases, run as non-root by default, and strip unnecessary packages. Typical image size reduction: 60-80% from unoptimized builds." - icon: "layers" - - title: "Migration to Containers" - description: "Incremental migration of VM-based or bare-metal applications to Docker. We run old and new deployment models in parallel, validate behavior parity, and cut over service by service. No big-bang migrations. Your application stays live throughout." - icon: "document" - - title: "Container Monitoring & Logging" - description: "Centralized logging with structured output, container health monitoring, and resource usage tracking. We configure log drivers, set up alerting for container restarts and OOM kills, and build dashboards that show what matters. Debugging a containerized system should be easier than debugging a VM, not harder." - icon: "chart" -technologies: - - Docker - - Docker Compose - - Docker Buildx - - Kubernetes - - Helm - - GitHub Actions - - GitLab CI - - AWS ECS - - AWS ECR - - Trivy - - Hadolint - - Prometheus - - Grafana -relatedExpertise: - - nodejs - - aws - - golang -process: - - number: 1 - title: "Assessment & Container Strategy (1-2 weeks)" - description: "We audit your current infrastructure, application architecture, and deployment workflow. You get a containerization roadmap covering which services to containerize, image structure, registry setup, and CI/CD integration. No code until the strategy is clear." - - number: 2 - title: "Dockerfile Design & Image Optimization (1-2 weeks)" - description: "Multi-stage Dockerfiles optimized for build speed, image size, and security. Base image selection, layer ordering for cache efficiency, and build argument management. Every image passes security scanning before it enters your registry." - - number: 3 - title: "Pipeline Integration & Environment Setup (2-4 weeks)" - description: "Docker integrated into your CI/CD pipeline with automated builds, tests, and deployments. Local development environments configured with Docker Compose. Staging and production environments aligned so what works locally works everywhere." - - number: 4 - title: "Migration & Rollout (2-8 weeks)" - description: "Services migrated to containers incrementally. Old and new deployments run in parallel until behavior parity is confirmed. Traffic shifted gradually. Rollback procedures tested and documented before each cutover." - - number: 5 - title: "Handoff & Operational Readiness" - description: "Complete documentation covering image builds, deployment procedures, troubleshooting guides, and security scanning setup. Your team owns the entire container infrastructure. Optional support retainer available, but no lock-in." -engagementModels: - title: "Hire Docker Consultants" - subtitle: "Senior DevOps engineers who containerize your systems and upskill your team." - models: - - title: "Dedicated DevOps Engineer" - description: "Engineers with 4+ years of production Docker experience across containerization, CI/CD, and cloud infrastructure. Full DevOps capability spanning image optimization, pipeline design, and orchestration." - bestFor: "Ongoing infrastructure work, 3-month minimum engagement" - - title: "Team Pod (2-4 Engineers + Lead)" - description: "A self-contained DevOps team that owns your containerization and deployment infrastructure end to end. Architecture, implementation, migration, and monitoring covered." - bestFor: "Large-scale container migrations, 6-month minimum engagement" - - title: "Project-Based Delivery" - description: "Fixed-scope engagement with clear deliverables, timeline, and budget. Defined container strategy, agreed milestones, and transparent pricing." - bestFor: "Container migration projects or CI/CD overhauls, scope-dependent" -faqs: - - question: "How much do Docker consulting services cost?" - answer: "Docker consulting costs depend on scope. A containerization assessment and strategy for a 5-10 service application typically runs $10,000 to $25,000. Full container migration for a mid-size platform with CI/CD integration sits in the $30,000 to $80,000 range. Enterprise-scale migrations with Kubernetes orchestration, security hardening, and multi-environment setup can run $80,000 to $200,000 or more. Our initial assessment call is free." - - question: "Docker vs Kubernetes: which do I need?" - answer: "Docker handles containerization, packaging your application into portable, reproducible units. Kubernetes handles orchestration, managing where and how those containers run at scale. If you run fewer than 10 services, Docker Compose on a single host or AWS ECS may be sufficient. Once you need auto-scaling, rolling deployments across multiple nodes, or self-healing infrastructure, Kubernetes becomes necessary. Many teams start with Docker and graduate to Kubernetes as scale demands it. We help you decide based on your actual traffic and team size, not industry hype." - - question: "What are the benefits of containerizing our application?" - answer: "Containerization with Docker provides four concrete benefits. First, environment consistency: the same image runs in development, staging, and production, eliminating 'works on my machine' issues. Second, faster deployments: container images deploy in seconds versus minutes for VM-based deployments. Third, resource efficiency: containers share the host OS kernel and use 50-80% less memory than equivalent VMs. Fourth, developer productivity: new team members run the full application stack with a single command instead of spending days on environment setup." - - question: "How do you handle Docker security in production?" - answer: "Procedure follows a defense-in-depth approach to Docker security. We scan images with Trivy on every build, lint Dockerfiles with Hadolint, and enforce non-root container execution. Images use minimal base layers (distroless or Alpine) to reduce attack surface. We configure Docker daemon security options, enable content trust for image signing, and implement network policies to isolate container communication. Registry access uses role-based permissions with short-lived tokens." - - question: "How long does it take to migrate to Docker?" - answer: "A typical containerization migration takes 4-12 weeks depending on application complexity. Simple web applications with a single database: 2-4 weeks. Multi-service architectures with 5-10 services: 6-10 weeks. Enterprise systems with complex dependencies, legacy integrations, and compliance requirements: 10-16 weeks. These timelines include assessment, Dockerfile creation, CI/CD integration, testing, and staged rollout." - - question: "What are multi-stage Docker builds and why do they matter?" - answer: "Multi-stage builds use multiple FROM statements in a single Dockerfile to separate build dependencies from runtime dependencies. Your build stage includes compilers, package managers, and development tools. Your final stage contains only the compiled application and its runtime requirements. This typically reduces image size by 60-80%. A Node.js application that produces a 1.2 GB image with a naive Dockerfile drops to 150-250 MB with multi-stage builds. Smaller images mean faster pulls, faster deployments, and a smaller attack surface." - - question: "Can Docker handle production workloads reliably?" - answer: "Yes. Docker containers run production workloads at companies including Google, Netflix, Spotify, and Shopify. Docker itself is stable and battle-tested. Production reliability comes down to proper configuration: health checks, restart policies, resource limits, logging, and monitoring. Common production issues like container crashes from OOM kills or network misconfiguration are preventable with proper setup. We configure all of these as standard practice." - - question: "How do you monitor Docker containers in production?" - answer: "We set up container monitoring across three layers. Infrastructure monitoring with Prometheus and Grafana tracks CPU, memory, network, and disk usage per container. Application monitoring with structured logging and log aggregation (ELK or Loki) provides visibility into application behavior. Alerting configured for container restarts, OOM kills, high CPU usage, and health check failures. The goal is knowing about problems before your users do." -philosophy: - title: "Our Approach to Docker Consulting" - subtitle: "Containers are infrastructure, not magic. We treat them accordingly." - blocks: - - title: "Containerize for the Right Reasons" - description: "Not every application benefits from containerization. We assess whether Docker solves a real problem for your team, whether that is environment consistency, deployment speed, or scaling. If VMs or serverless functions are a better fit, we will tell you." - - title: "Images as Artifacts" - description: "Docker images are immutable deployment artifacts, not development environments. We build images that are small, secure, and reproducible. The same image that passes CI is the same image that runs in production. No rebuilding, no drift." - - title: "Developer Experience Matters" - description: "If your Docker setup makes local development slower or more painful, adoption will fail. We optimize Docker Compose configurations for fast rebuilds, hot reloading, and minimal resource consumption on developer machines." - - title: "Security Is Not Optional" - description: "Every image is scanned, every container runs as non-root, every registry has access controls. Security scanning is part of the build pipeline, not a quarterly audit. Vulnerabilities are caught before they reach production." - - title: "Exit-Ready Infrastructure" - description: "Every container setup we build can be maintained by your team or a different vendor. Standard Dockerfiles, documented compose configurations, and no proprietary tooling. You own everything, always." -cta: - title: "Ready to Discuss Your Docker Project?" - description: "Talk directly with engineers, not sales. We will assess fit and give honest next steps." - buttonText: "Talk to a DevOps Engineer" - buttonLink: "/contact-us" - supportingNote: "No obligation. No pressure. Clear technical direction." -seo: - title: "Docker Consulting Services | Containerization & DevOps" - description: "Docker consulting services for containerization, CI/CD pipelines, and production infrastructure. Senior DevOps engineers, honest guidance." ---- diff --git a/content/technologies/golang.mdx b/content/technologies/golang.mdx index 35958b8..fa308fa 100644 --- a/content/technologies/golang.mdx +++ b/content/technologies/golang.mdx @@ -4,19 +4,19 @@ headline: "Go Development Services" headlineAccent: "High-Performance Microservices & Cloud-Native APIs" description: "Microservices, CLI tools, and cloud-native systems built by senior engineers who've shipped Go in production for companies like Setu and Last9." capabilities: - - title: "API & Microservices Development" - description: "REST and gRPC APIs built with Gin, Echo, or the standard library. We choose the framework based on your requirements: Gin for rapid API development, Echo for middleware-heavy services, or net/http when you want zero dependencies. Every service ships with structured logging, health checks, and graceful shutdown handling." + - title: "Go API & Microservices (Gin, Echo, gRPC)" + description: "Go REST and gRPC APIs built with Gin, Echo, or the standard library. We choose the framework based on your requirements: Gin for rapid API development, Echo for middleware-heavy services, or net/http when you want zero dependencies. Every service ships with structured logging, health checks, and graceful shutdown handling." icon: "globe" - - title: "CLI Tools & Developer Tooling" + - title: "Go CLI Tools & Developer Tooling" description: "Production CLI tools built with Cobra and Viper. Single-binary distribution, cross-platform compilation, and proper signal handling. We build internal developer tools, deployment automation, and infrastructure utilities that your team actually uses because they work reliably and start instantly." icon: "document" - title: "Cloud-Native Go Services" description: "Go services designed for Kubernetes, Docker, and serverless environments. Tiny container images (10-20 MB), sub-second startup times, and minimal memory footprints. Go's static compilation means no runtime dependencies, no version conflicts, and no 'works on my machine' issues." icon: "layers" - - title: "High-Performance Systems" - description: "Systems where latency and throughput matter. Go's goroutine model handles tens of thousands of concurrent connections on modest hardware. We build real-time data processors, high-throughput API gateways, and streaming services where every millisecond counts. When Node.js or Python hit their ceiling, Go is typically the next step." + - title: "High-Performance Go Systems" + description: "Go systems where latency and throughput matter. Go's goroutine model handles tens of thousands of concurrent connections on modest hardware. We build real-time data processors, high-throughput API gateways, and streaming services where every millisecond counts. When Node.js or Python hit their ceiling, Go is typically the next step." icon: "bolt" - - title: "Concurrent Data Processing" + - title: "Go Concurrent Data Processing" description: "ETL pipelines, event stream processors, and batch jobs that leverage Go's concurrency primitives. Goroutines and channels make concurrent processing straightforward without the callback complexity of Node.js or the GIL limitations of Python. We design processing pipelines that scale linearly with available cores." icon: "chart" - title: "Go Migration & Modernization" @@ -40,8 +40,11 @@ technologies: - NATS relatedExpertise: - nodejs - - docker - aws + - postgresql + - typescript + - java + - mongodb process: - number: 1 title: "Architecture & Discovery (1-2 weeks)" @@ -50,13 +53,13 @@ process: title: "API Design & Data Modeling (1-2 weeks)" description: "API contracts defined in OpenAPI or Protocol Buffers before implementation begins. Database schema designed with sqlc or GORM based on query patterns. If migrating from another language, we map existing API contracts to Go implementations." - number: 3 - title: "Development & Iteration (6-14 weeks)" - description: "Sprint-based delivery with working services shipped every two weeks. Table-driven tests written alongside features. Your team gets access to staging environments from week one. Go's fast compilation means CI runs complete in minutes, not hours." + title: "Go Development & Iteration (6-14 weeks)" + description: "Sprint-based Go development with working services shipped every two weeks. Table-driven tests written alongside features. Your team gets access to staging environments from week one. Go's fast compilation means CI runs complete in minutes, not hours." - number: 4 title: "Load Testing & Performance Tuning (1-2 weeks)" description: "We benchmark under realistic traffic patterns using pprof, benchmark tests, and load generators. Goroutine leak detection, memory allocation profiling, and connection pool tuning. Go makes performance profiling straightforward, and we use that to find and fix bottlenecks before they reach production." - number: 5 - title: "Handoff & Support" + title: "Handoff & Go Team Enablement" description: "Complete documentation, architecture decision records, and runbooks for every service. Go's simplicity means onboarding new engineers is faster than most languages. Your team owns the system. Optional support retainer available, but no lock-in." engagementModels: title: "Hire Go Developers" @@ -92,13 +95,13 @@ philosophy: title: "Our Approach to Go Development" subtitle: "Go rewards simplicity. We write code that reflects that." blocks: - - title: "Simplicity Is a Feature" + - title: "Go's Simplicity Is a Feature" description: "Go's greatest strength is what it leaves out. We write Go that looks like Go: explicit error handling, minimal abstractions, and clear control flow. If a junior engineer cannot read the code and understand what it does, we rewrite it." - title: "Standard Library First" description: "Go's standard library is production-grade. We reach for third-party packages only when the standard library genuinely falls short, not out of habit. Fewer dependencies mean fewer security vulnerabilities, fewer version conflicts, and faster builds." - title: "Concurrency by Design" description: "We design services around Go's concurrency model from the start, not as an optimization pass later. Goroutines and channels are used where they simplify the code, not as a performance trick. The right concurrency pattern depends on the workload, and we pick accordingly." - - title: "Interfaces Over Inheritance" + - title: "Go Interfaces Over Inheritance" description: "Go uses composition and interfaces, not class hierarchies. We design service boundaries around small, focused interfaces that make testing straightforward and coupling low. If an interface has more than 3-4 methods, it is probably doing too much." - title: "Exit-Ready Architecture" description: "Every system we build can be maintained by your team or a different vendor. Clean service boundaries, documented decisions, and zero proprietary dependencies. You own everything, always." diff --git a/content/technologies/java.mdx b/content/technologies/java.mdx index 411e928..fcdc96b 100644 --- a/content/technologies/java.mdx +++ b/content/technologies/java.mdx @@ -4,8 +4,8 @@ headline: "Java Development Services" headlineAccent: "Enterprise Systems That Scale" description: "Enterprise Java applications, Spring Boot microservices, and payment systems built by senior engineers who've shipped for companies like Pine Labs and KredX." capabilities: - - title: "Enterprise Application Development" - description: "Large-scale Java applications built on Spring Boot 3, designed for complex business logic and long-term maintainability. Domain-driven design, strict layering, and comprehensive test coverage. Systems that handle millions of transactions and stay stable under regulatory scrutiny." + - title: "Enterprise Java Application Development" + description: "Large-scale Java applications built on Spring Boot 3, designed for complex business logic and long-term maintainability. Java domain-driven design, strict layering, and comprehensive test coverage. Systems that handle millions of transactions and stay stable under regulatory scrutiny." icon: "globe" - title: "API & Microservices (Spring Boot)" description: "High-throughput REST and gRPC APIs using Spring Boot 3 and Spring Cloud. Service discovery, circuit breakers, distributed tracing, and centralized configuration. We design service boundaries around business domains, not technical convenience." @@ -16,7 +16,7 @@ capabilities: - title: "Cloud-Native Java (GraalVM & Quarkus)" description: "Java applications optimized for containers and serverless. GraalVM native images for sub-second startup times and 50-70% lower memory footprint. Quarkus for Kubernetes-native Java when Spring Boot's footprint is too heavy for your infrastructure budget." icon: "bolt" - - title: "Payment & Fintech Systems" + - title: "Java Payment & Fintech Systems" description: "Transaction processing, payment gateway integrations, and financial reconciliation systems. PCI-DSS compliant architecture with audit logging, idempotency, and fault tolerance. Built with the same rigor we bring to [fintech clients](/industries/financial-services) like Pine Labs." icon: "chart" - title: "Java Backend for Mobile Apps" @@ -47,6 +47,9 @@ relatedExpertise: - dotnet - nodejs - postgresql + - aws + - kotlin + - golang process: - number: 1 title: "Architecture & Discovery (1-2 weeks)" @@ -55,13 +58,13 @@ process: title: "API Design & Data Modeling (1-2 weeks)" description: "API contracts documented in OpenAPI before code is written. Database schema designed with Hibernate mappings, migration scripts in Flyway, and proper indexing strategy. Your frontend team can build against mocked endpoints immediately." - number: 3 - title: "Development & Iteration (6-20 weeks)" - description: "Sprint-based delivery with working services shipped every two weeks. JUnit 5 and Testcontainers for reliable automated testing. Staging environments from week one. You review real code, not slide decks." + title: "Java Development & Iteration (6-20 weeks)" + description: "Sprint-based Java development with working services shipped every two weeks. JUnit 5 and Testcontainers for reliable automated testing. Staging environments from week one. You review real code, not slide decks." - number: 4 title: "Load Testing & Hardening (1-2 weeks)" description: "Simulate production traffic patterns using Gatling or k6. Connection pool tuning, query optimization, JVM profiling with async-profiler, and caching layer validation. Nothing ships until it handles your expected load with headroom." - number: 5 - title: "Handoff & Support" + title: "Handoff & Java Team Enablement" description: "Architecture decision records, Javadoc-generated API documentation, runbooks, and deployment guides. Your team owns the system entirely. Optional support retainer available, but no lock-in." engagementModels: title: "Hire Java Developers" @@ -99,11 +102,11 @@ philosophy: blocks: - title: "Modern Java, Not Legacy Patterns" description: "Java 21 records, sealed classes, pattern matching, and virtual threads are not optional extras. We use modern Java features to write cleaner, more maintainable code. If your codebase still looks like Java 8, something is wrong." - - title: "Right-Sized Architecture" + - title: "Right-Sized Java Architecture" description: "Not every system needs 50 microservices. Not every application belongs in a monolith. We size services based on team boundaries, deployment frequency, and scaling requirements. Architecture follows organizational reality, not conference talks." - title: "Test Coverage as Confidence" description: "JUnit 5 and Testcontainers are part of every project from day one. We write tests that verify business behavior, not implementation details. Test coverage exists to give teams confidence to change code, not to hit a number." - - title: "Observable by Default" + - title: "Observable Java Services by Default" description: "Structured logging with SLF4J, distributed tracing with OpenTelemetry, and health checks are baked into the initial scaffold. When something breaks in production, the first question should be 'what happened,' not 'how do we find out.'" - title: "Ownership Transfer Built In" description: "Every Java system we build can be maintained by your team independently. Clean architecture, documented decisions, and zero proprietary dependencies. We build for your future, not our recurring revenue." diff --git a/content/technologies/kotlin.mdx b/content/technologies/kotlin.mdx index eadd20a..0b18183 100644 --- a/content/technologies/kotlin.mdx +++ b/content/technologies/kotlin.mdx @@ -4,22 +4,22 @@ headline: "Kotlin Development Services" headlineAccent: "Native Android & Multiplatform" description: "Native Android apps, Kotlin Multiplatform projects, and server-side Kotlin built by senior engineers who ship production mobile and backend systems." capabilities: - - title: "Native Android App Development" + - title: "Native Android Development with Kotlin" description: "Production Android applications built with Kotlin, Jetpack Compose, and modern Android architecture (MVVM, MVI). Material 3 design, adaptive layouts for phones, tablets, and foldables. Apps that follow Google's current best practices, not patterns from five years ago." icon: "globe" - title: "Kotlin Multiplatform (KMP)" description: "Share business logic across Android, iOS, web, and desktop without rewriting it per platform. KMP lets you write networking, data models, validation, and caching once in Kotlin, then use native UI on each platform. Google officially recommends KMP for cross-platform business logic as of 2024." icon: "layers" - - title: "Server-Side Kotlin" + - title: "Server-Side Kotlin (Ktor, Spring Boot)" description: "Backend services in Kotlin using Ktor or Spring Boot. Coroutines for efficient concurrent request handling without callback complexity. Kotlin's null safety and expressive syntax reduce production bugs compared to Java backends. Ideal when your Android team also owns backend services." icon: "chart" - title: "Android App Modernization (Java to Kotlin)" description: "Migrate existing Android apps from Java to Kotlin incrementally. Kotlin is 100% interoperable with Java, so migration happens file by file without breaking the build. We prioritize high-change areas first to maximize the return on migration effort. Most apps complete migration in 8-16 weeks." icon: "workflow" - title: "Jetpack Compose UI" - description: "Declarative UI for Android that replaces XML layouts with composable Kotlin functions. Less boilerplate, better state management, built-in animation APIs, and Material 3 support. Compose is Google's recommended approach for all new Android UI and powers apps like Google Maps and Play Store." + description: "Kotlin declarative UI for Android that replaces XML layouts with composable Kotlin functions. Less boilerplate, better state management, built-in animation APIs, and Material 3 support. Compose is Google's recommended approach for all new Android UI and powers apps like Google Maps and Play Store." icon: "bolt" - - title: "SDK & Library Development" + - title: "Kotlin SDK & Library Development" description: "Custom Android SDKs, payment integrations, and shared libraries for distribution via Maven Central or private repositories. Proper API design, backward compatibility, semantic versioning, and documentation. Built for other developers to consume without frustration." icon: "document" technologies: @@ -46,6 +46,9 @@ relatedExpertise: - react-native - flutter - java + - swift + - nodejs + - typescript process: - number: 1 title: "Discovery & Architecture (1-2 weeks)" @@ -54,13 +57,13 @@ process: title: "Design System & Component Library (1-2 weeks)" description: "Build a custom Compose component library implementing your brand's design language. Material 3 theming, dynamic color support, and adaptive layouts for different screen sizes. Components tested in isolation with Compose Preview and screenshot tests." - number: 3 - title: "Development & Iteration (6-16 weeks)" - description: "Sprint-based development with internal builds distributed via Firebase App Distribution for real-device testing. Weekly demos. Kotlin's concise syntax and Compose's declarative model mean faster iteration than traditional Android development." + title: "Kotlin Development & Iteration (6-16 weeks)" + description: "Sprint-based Kotlin development with internal builds distributed via Firebase App Distribution for real-device testing. Weekly demos. Kotlin's concise syntax and Compose's declarative model mean faster iteration than traditional Android development." - number: 4 title: "QA, Performance & Launch (1-2 weeks)" description: "Testing across phones, tablets, and foldables. Compose UI tests, integration tests, and performance profiling with Android Studio's Layout Inspector and baseline profiles. Play Store submission with proper listing optimization." - number: 5 - title: "Post-Launch & Maintenance" + title: "Post-Launch & Kotlin App Maintenance" description: "Bug fixes, Android OS compatibility updates (Android 16 targeted), feature development, and Play Store policy compliance. Ongoing performance monitoring with Firebase Crashlytics and Performance Monitoring." engagementModels: title: "Hire Kotlin Developers" @@ -100,11 +103,11 @@ philosophy: description: "Writing Java patterns in Kotlin syntax misses the point. We use Kotlin idioms: sealed classes for state modeling, coroutines for async work, extension functions for clean APIs, and data classes for immutable models. The code should feel like Kotlin, not Java wearing a Kotlin costume." - title: "Compose as the UI Standard" description: "Jetpack Compose is not optional for new projects. XML layouts, Fragments, and the View system are legacy patterns. We build with Compose from day one: composable functions, unidirectional data flow, and declarative state management. The result is less code, fewer bugs, and faster development." - - title: "Shared Logic, Native Experience" + - title: "Kotlin Shared Logic, Native Experience" description: "When using KMP, business logic lives in shared Kotlin modules. UI stays native to each platform. We resist the temptation to share UI across platforms because users notice when an app does not feel native. Shared logic, native UX." - title: "Testing That Catches Real Bugs" description: "Compose UI tests, integration tests with real dependencies, and screenshot tests for visual regression. We test user behavior, not implementation details. A test suite should give your team confidence to ship changes, not slow them down with false positives." - - title: "Team Ownership from Day One" + - title: "Kotlin Team Ownership from Day One" description: "Every Kotlin project is built so your team can maintain it independently. Clean architecture, documented decisions, automated CI/CD, and zero proprietary tooling. We build for your engineers, not our retention." cta: title: "Ready to Discuss Your Kotlin Project?" diff --git a/content/technologies/mongodb.mdx b/content/technologies/mongodb.mdx index 2c6f25e..8db731f 100644 --- a/content/technologies/mongodb.mdx +++ b/content/technologies/mongodb.mdx @@ -4,22 +4,22 @@ headline: "MongoDB Development Services" headlineAccent: "Scalable NoSQL Database Engineering" description: "Schema design, performance optimization, and MongoDB infrastructure built by senior engineers who've shipped for companies like Setu, ESPN, and KredX." capabilities: - - title: "Schema Design & Data Modeling" + - title: "MongoDB Schema Design & Document Modeling" description: "Document schema design that balances read performance, write efficiency, and storage costs. We model your data around actual query patterns, not relational instincts. Embedding vs referencing, denormalization strategies, and polymorphic patterns designed for how your application actually accesses data, not how an ER diagram looks on a whiteboard." icon: "layers" - - title: "Performance Optimization & Indexing" - description: "Slow queries found and fixed. We analyze query plans with explain(), design compound indexes that cover your most frequent operations, and eliminate collection scans. Index strategy is not just adding indexes to every field. We balance read speed against write overhead and storage impact. Typical result: 10-50x improvement on poorly indexed collections." + - title: "MongoDB Performance Optimization & Indexing" + description: "Slow MongoDB queries found and fixed. We analyze query plans with explain(), design compound indexes that cover your most frequent operations, and eliminate collection scans. Index strategy is not just adding indexes to every field. We balance read speed against write overhead and storage impact. Typical result: 10-50x improvement on poorly indexed collections." icon: "chart" - title: "MongoDB Atlas Management" description: "Full Atlas lifecycle management: cluster sizing, tier selection, backup configuration, network security, and cost optimization. We configure auto-scaling rules that match your traffic patterns, set up monitoring alerts, and implement access controls with database-level RBAC. If you are overpaying for your Atlas tier, we will find it." icon: "globe" - - title: "Aggregation Pipelines & Analytics" + - title: "MongoDB Aggregation Pipelines & Analytics" description: "Complex data transformations, reporting queries, and analytics built with MongoDB's aggregation framework. We design pipelines that handle grouping, lookups, windowing, and statistical operations without requiring a separate analytics database. For full-text and vector search, we integrate Atlas Search and Atlas Vector Search directly into your query layer." icon: "document" - title: "Migration to MongoDB" description: "Incremental migration from relational databases (PostgreSQL, MySQL, SQL Server) to MongoDB. We map relational schemas to document models, build data migration scripts with validation, and run dual-write patterns during transition. No big-bang cutovers. Your application stays live throughout. Typical migration: 4-12 weeks depending on data volume and complexity." icon: "workflow" - - title: "Real-Time Data & Change Streams" + - title: "MongoDB Change Streams & Real-Time Data" description: "Event-driven architectures using MongoDB Change Streams. We build real-time notification systems, cache invalidation pipelines, and cross-service data synchronization triggered by database changes. Change Streams provide at-least-once delivery with resume tokens for fault tolerance, no separate message broker required for many use cases." icon: "bolt" technologies: @@ -40,7 +40,10 @@ technologies: relatedExpertise: - nodejs - python + - typescript + - aws - react + - golang process: - number: 1 title: "Data Modeling & Discovery (1-2 weeks)" @@ -49,13 +52,13 @@ process: title: "Schema Design & Index Planning (1-2 weeks)" description: "Document schemas designed and validated with sample data. Compound indexes planned based on query patterns identified in discovery. Migration strategy defined if moving from a relational database. Atlas cluster configuration specified for your traffic and storage requirements." - number: 3 - title: "Development & Integration (6-14 weeks)" - description: "Sprint-based delivery with working endpoints and database operations shipped every two weeks. Data access layer built with Mongoose or Prisma based on your stack. Aggregation pipelines developed and performance-tested against realistic data volumes. Your team gets staging access from week one." + title: "MongoDB Development & Integration (6-14 weeks)" + description: "Sprint-based MongoDB development with working endpoints and database operations shipped every two weeks. Data access layer built with Mongoose or Prisma based on your stack. Aggregation pipelines developed and performance-tested against realistic data volumes. Your team gets staging access from week one." - number: 4 title: "Performance Testing & Optimization (1-2 weeks)" description: "We load test with production-scale data volumes, analyze slow query logs, and tune indexes and aggregation pipelines. Connection pool sizing, read preference configuration, and write concern tuning based on your consistency requirements. Nothing ships until queries meet your latency targets." - number: 5 - title: "Handoff & Support" + title: "Handoff & MongoDB Operations Transfer" description: "Complete documentation covering schema decisions, indexing rationale, operational runbooks, and monitoring setup. Your team owns the database architecture. Optional support retainer for ongoing optimization, but no lock-in." engagementModels: title: "Hire MongoDB Developers" @@ -93,11 +96,11 @@ philosophy: blocks: - title: "Query-Driven Schema Design" description: "Relational thinking produces bad MongoDB schemas. We design documents around how your application reads and writes data, not how entities relate on a whiteboard. The schema serves the queries, not the other way around." - - title: "Indexing Is Architecture" + - title: "MongoDB Indexing Is Architecture" description: "Indexes are not an afterthought. We plan indexing strategy during schema design because the two are inseparable. A well-indexed collection with the right schema serves queries in under a millisecond. A poorly indexed one scans millions of documents." - title: "Right-Sized Documents" description: "Not everything belongs in one document. We balance embedding for read performance against referencing for write efficiency. Documents that grow without bound (unbounded arrays, unlimited nested objects) cause performance degradation. We design schemas with growth patterns in mind." - - title: "Operational Simplicity" + - title: "MongoDB Operational Simplicity" description: "Sharding adds complexity. Replica set topologies add complexity. We start with the simplest architecture that meets your requirements and add complexity only when data volume or traffic demands it. Most applications under 500 GB perform well on a properly indexed single replica set." - title: "Exit-Ready Data Architecture" description: "Every MongoDB system we design can be maintained by your team or a different vendor. Documented schema decisions, migration scripts, and operational runbooks. You own everything, always." diff --git a/content/technologies/postgresql.mdx b/content/technologies/postgresql.mdx index 11d0121..5a86a2c 100644 --- a/content/technologies/postgresql.mdx +++ b/content/technologies/postgresql.mdx @@ -4,11 +4,11 @@ headline: "PostgreSQL Development Services" headlineAccent: "Database Design, Optimization & Cloud Infrastructure" description: "PostgreSQL databases designed, optimized, and operated by senior engineers who've built data systems for Setu, Pine Labs, and KredX." capabilities: - - title: "Database Design and Modeling" - description: "Schema design that survives your next ten features, not just the current sprint. Normalized tables where consistency matters, denormalized views where read performance matters. Proper use of PostgreSQL-specific types: JSONB for flexible data, arrays for tags, range types for scheduling, and composite types for structured fields. We design schemas that make your queries simple and your migrations painless." + - title: "PostgreSQL Schema Design & Data Modeling" + description: "PostgreSQL schema design that survives your next ten features, not just the current sprint. Normalized tables where consistency matters, denormalized views where read performance matters. Proper use of PostgreSQL-specific types: JSONB for flexible data, arrays for tags, range types for scheduling, and composite types for structured fields. We design schemas that make your queries simple and your migrations painless." icon: "layers" - - title: "Performance Optimization" - description: "Slow queries diagnosed and fixed. We use EXPLAIN ANALYZE, pg_stat_statements, and auto_explain to find exactly where time is spent. Index strategy designed around your actual query patterns, not textbook rules. Partitioning for tables with millions of rows. Connection pooling with pgBouncer configured for your concurrency profile. We have taken query response times from 12 seconds to under 50 milliseconds on production systems." + - title: "PostgreSQL Performance Optimization" + description: "Slow PostgreSQL queries diagnosed and fixed. We use EXPLAIN ANALYZE, pg_stat_statements, and auto_explain to find exactly where time is spent. Index strategy designed around your actual query patterns, not textbook rules. Partitioning for tables with millions of rows. Connection pooling with pgBouncer configured for your concurrency profile. We have taken query response times from 12 seconds to under 50 milliseconds on production systems." icon: "bolt" - title: "PostgreSQL Migration Services" description: "Migrating from Oracle, SQL Server, MySQL, or MongoDB to PostgreSQL. Schema translation, stored procedure conversion, data migration with validation, and application-layer query rewrites. We run source and target databases in parallel during cutover so rollback is always an option. Zero-downtime migrations using logical replication for systems that cannot afford maintenance windows." @@ -16,10 +16,10 @@ capabilities: - title: "PostgreSQL on Cloud (RDS, Aurora, Cloud SQL)" description: "PostgreSQL deployed and configured on AWS RDS, Aurora PostgreSQL, or Google Cloud SQL. Instance sizing based on workload analysis, not guesswork. Automated backups, point-in-time recovery, read replicas for scaling reads, and parameter group tuning for your specific access patterns. We configure the managed service so you get the reliability without the operational overhead." icon: "globe" - - title: "High Availability and Replication" + - title: "PostgreSQL High Availability & Replication" description: "Streaming replication, logical replication, and failover configuration for systems that need 99.99% uptime. Hot standby replicas for read scaling, synchronous replication for zero data loss, and automated failover with Patroni or cloud-native solutions. We design the replication topology around your RPO and RTO requirements, not a one-size-fits-all template." icon: "chart" - - title: "Data Pipeline Integration" + - title: "PostgreSQL Data Pipelines & ETL" description: "PostgreSQL as the source or destination in your data pipeline. Change data capture with Debezium, real-time sync to Elasticsearch or data warehouses, and ETL/ELT pipelines feeding analytics. pgvector for AI embedding storage and similarity search, enabling vector queries alongside your relational data without a separate vector database." icon: "document" technologies: @@ -38,6 +38,9 @@ technologies: relatedExpertise: - nodejs - python + - typescript + - golang + - java - dotnet process: - number: 1 @@ -47,13 +50,13 @@ process: title: "Schema Design and Migration Planning (1-2 weeks)" description: "Entity-relationship diagrams, table definitions with constraints, index strategy documented, and migration scripts written. For database migrations, we map source-to-target schema differences and build the data validation suite. Your development team can start building against the schema immediately." - number: 3 - title: "Implementation and Optimization (4-12 weeks)" + title: "PostgreSQL Implementation & Optimization (4-12 weeks)" description: "Database provisioned, schemas deployed, application integration built. Performance testing with production-like data volumes from the start. Query optimization happens during development, not after launch. We benchmark every critical query path against your SLA targets." - number: 4 title: "Load Testing and Hardening (1-2 weeks)" description: "Simulated production load with realistic data volumes and concurrency. Connection pool sizing verified. Vacuum and autovacuum tuned. Monitoring configured with pg_stat_statements, CloudWatch or Datadog. Nothing goes live until the database handles your peak load with headroom." - number: 5 - title: "Handoff and Support" + title: "Handoff & PostgreSQL Operations Transfer" description: "Complete documentation covering schema decisions, index rationale, replication setup, and operational runbooks. Your team or DBA owns the database entirely. Optional support retainer for ongoing optimization, but no lock-in." engagementModels: title: "Hire PostgreSQL Developers" @@ -91,7 +94,7 @@ philosophy: blocks: - title: "Schema Design Is System Design" description: "The database schema is the most durable part of your system. Application code gets rewritten, but table structures persist for years. We invest time in getting the data model right because fixing a schema mistake in production costs 10x more than getting it right upfront." - - title: "Measure Before Optimizing" + - title: "Measure Before Optimizing PostgreSQL" description: "We do not add indexes based on intuition. EXPLAIN ANALYZE, pg_stat_statements, and workload analysis tell us exactly where time is spent. Every optimization is measurable, and we show you the before and after numbers." - title: "Managed Services When Possible" description: "Running PostgreSQL on bare metal is rarely worth the operational cost. AWS RDS or Aurora handles backups, patching, failover, and monitoring. We configure the managed service correctly so your team focuses on application logic, not database operations." diff --git a/content/technologies/swift.mdx b/content/technologies/swift.mdx index 30a5ce8..6fb1400 100644 --- a/content/technologies/swift.mdx +++ b/content/technologies/swift.mdx @@ -4,22 +4,22 @@ headline: "Swift Development Services" headlineAccent: "Native iOS & Apple Platform Apps" description: "Native iOS, watchOS, and tvOS applications built by senior engineers who understand Apple's platform deeply, not just its syntax." capabilities: - - title: "Native iOS App Development" + - title: "Native iOS Development with Swift" description: "Production iOS applications built with Swift 6, SwiftUI, and modern Apple frameworks. MVVM architecture, async/await concurrency, and accessibility built in from the start. Apps that pass App Store review on the first submission and perform well on both current and older iPhones." icon: "globe" - title: "SwiftUI & UIKit Development" description: "SwiftUI for new features and screens. UIKit when you need fine-grained control or are working within an existing codebase. We know when each is the right choice and how to combine them in the same project. SwiftUI's declarative model speeds development by 30-40% for standard UI patterns." icon: "layers" - - title: "watchOS & tvOS Apps" - description: "Companion apps for Apple Watch and Apple TV that extend your iOS app's value. WatchKit and SwiftUI for watchOS, TVUIKit and focus-based navigation for tvOS. Shared business logic with your iOS app through Swift packages to avoid duplicating code across platforms." + - title: "Swift watchOS & tvOS Apps" + description: "Swift companion apps for Apple Watch and Apple TV that extend your iOS app's value. WatchKit and SwiftUI for watchOS, TVUIKit and focus-based navigation for tvOS. Shared business logic with your iOS app through Swift packages to avoid duplicating code across platforms." icon: "bolt" - - title: "iOS App Modernization" + - title: "iOS App Modernization (Objective-C to Swift)" description: "Migrate Objective-C codebases to Swift incrementally. Refactor UIKit apps to SwiftUI. Update architectures from MVC to MVVM with Combine or async/await. Swift and Objective-C interoperate fully, so migration happens screen by screen without breaking the build. Most modernization projects complete in 3-6 months." icon: "workflow" - title: "Swift Backend (Vapor)" description: "Server-side Swift using Vapor for teams that want a unified language across iOS and backend. REST APIs, WebSocket services, and database integrations. Best suited for teams where iOS engineers also own backend services and want to share models and validation logic between client and server." icon: "chart" - - title: "App Clip & Widget Development" + - title: "Swift App Clips & WidgetKit Development" description: "App Clips for lightweight, instant experiences without a full install. WidgetKit for home screen and Lock Screen widgets that keep your app present in users' daily routine. Live Activities for real-time updates on the Lock Screen and Dynamic Island. These features increase engagement without requiring users to open the full app." icon: "document" technologies: @@ -46,6 +46,9 @@ relatedExpertise: - react-native - flutter - kotlin + - java + - nodejs + - typescript process: - number: 1 title: "Discovery & Architecture (1-2 weeks)" @@ -54,13 +57,13 @@ process: title: "Design System & Component Library (1-2 weeks)" description: "Build a custom SwiftUI component library that implements your brand's design language. SF Symbols integration, Dynamic Type support, and dark mode from the start. Components tested in isolation with SwiftUI Previews and snapshot tests." - number: 3 - title: "Development & Iteration (6-16 weeks)" - description: "Sprint-based development with TestFlight builds for real-device testing throughout. Weekly demos. SwiftUI Previews and hot reload keep feedback loops tight. Internal builds distributed via TestFlight to stakeholders for continuous validation." + title: "Swift Development & Iteration (6-16 weeks)" + description: "Sprint-based Swift development with TestFlight builds for real-device testing throughout. Weekly demos. SwiftUI Previews and hot reload keep feedback loops tight. Internal builds distributed via TestFlight to stakeholders for continuous validation." - number: 4 title: "QA, Performance & Launch (1-2 weeks)" description: "Testing across iPhone, iPad, and target Apple platforms. UI tests, performance profiling with Instruments (Time Profiler, Memory Graph), and accessibility audits. App Store submission with optimized metadata, screenshots, and App Store Connect configuration." - number: 5 - title: "Post-Launch & Maintenance" + title: "Post-Launch & Swift App Maintenance" description: "Bug fixes, iOS/watchOS compatibility updates, feature development, and App Store policy compliance. Ongoing monitoring with crash analytics. App Store review management for updates." engagementModels: title: "Hire Swift Developers" @@ -102,9 +105,9 @@ philosophy: description: "SwiftUI is the future of Apple UI development. We adopt it aggressively for new projects and new screens in existing apps. But we are pragmatic: some patterns still work better in UIKit, and forcing SwiftUI into every corner creates worse outcomes. We choose the right tool per screen." - title: "Swift Concurrency Done Right" description: "Swift 6's strict concurrency model eliminates entire categories of bugs. We adopt actors, sendable types, and structured concurrency from day one. The code compiles with strict concurrency checking enabled, not just in permissive mode. This catches threading issues at build time instead of 3 AM production crashes." - - title: "Accessibility as Default" + - title: "Swift Accessibility as Default" description: "VoiceOver, Dynamic Type, and high-contrast support are not afterthoughts. SwiftUI makes many accessibility features automatic, but proper implementation still requires intentional design: meaningful labels, logical navigation order, and appropriate semantic groupings." - - title: "Built for Your Team to Own" + - title: "Swift Projects Built for Your Team to Own" description: "Every iOS project ships with clean architecture, documented decisions, CI/CD pipelines (Xcode Cloud or GitHub Actions), and fastlane scripts. Your team takes full ownership. No proprietary tools, no hidden dependencies, no lock-in." cta: title: "Ready to Discuss Your Swift Project?" diff --git a/content/technologies/typescript.mdx b/content/technologies/typescript.mdx index 1695915..43ad627 100644 --- a/content/technologies/typescript.mdx +++ b/content/technologies/typescript.mdx @@ -7,19 +7,19 @@ capabilities: - title: "TypeScript Migration" description: "Moving JavaScript codebases to TypeScript, incrementally. We start with strict: false, add types to critical paths first, then tighten the compiler until the codebase is fully strict. Your app stays live throughout. No productivity freeze, no big-bang rewrite. We have migrated codebases with 200K+ lines of JavaScript to strict TypeScript without a single day of downtime." icon: "workflow" - - title: "Enterprise Application Development" + - title: "Enterprise TypeScript Applications" description: "Large-scale TypeScript applications with NestJS, React 19, and Next.js 16. Monorepos with Turborepo, shared type packages, and strict compiler settings across every workspace. The type system becomes your documentation and your safety net. Runtime errors caught at build time, not by your users." icon: "globe" - - title: "Type-Safe API Integration" + - title: "Type-Safe APIs with tRPC, Prisma & Zod" description: "End-to-end type safety from database to UI. Prisma generates types from your schema, tRPC or GraphQL Codegen carries them through your API layer, and Zod validates runtime inputs at every boundary. A change to your database schema surfaces type errors in your React components instantly. No more silent contract mismatches between frontend and backend." icon: "layers" - - title: "Full-Stack TypeScript" + - title: "Full-Stack TypeScript (React, NestJS, Prisma)" description: "One language across your entire stack. React 19 or Next.js 16 on the frontend, NestJS or Fastify on the backend, Prisma or Drizzle for data access, all in TypeScript. Your team shares types, utilities, and domain logic across every layer. Fewer context switches, faster debugging, simpler hiring." icon: "chart" - title: "Library and SDK Development" description: "TypeScript libraries and SDKs with proper declaration files, generics, and discriminated unions. Published to npm with semantic versioning, automated changelogs, and dual ESM/CJS output. We build packages that feel native to TypeScript, not JavaScript wrappers with .d.ts files bolted on." icon: "document" - - title: "Code Quality and Tooling" + - title: "TypeScript Tooling & Code Quality" description: "ESLint with typescript-eslint, Vitest for unit and integration tests, Playwright for end-to-end coverage. Strict compiler options enforced via CI. We configure tsconfig.json properly once so your team never debates compiler settings again. Every PR gets type-checked, linted, and tested before merge." icon: "bolt" technologies: @@ -39,6 +39,8 @@ relatedExpertise: - react - nextjs - nodejs + - postgresql + - mongodb - angular process: - number: 1 @@ -48,13 +50,13 @@ process: title: "Type Foundation and Tooling (1-2 weeks)" description: "tsconfig.json configured for your project's needs. ESLint rules set. Shared type packages created if using a monorepo. For migrations, we establish the incremental adoption path and convert critical modules first. For new builds, the type system and toolchain are locked before feature development begins." - number: 3 - title: "Development and Iteration (6-16 weeks)" - description: "Sprint-based delivery with strict type checking on every pull request. Your team sees working features shipped continuously. For migrations, we convert module by module while the application stays live. Type coverage tracked and reported weekly." + title: "TypeScript Development & Iteration (6-16 weeks)" + description: "Sprint-based TypeScript development with strict type checking on every pull request. Your team sees working features shipped continuously. For migrations, we convert module by module while the application stays live. Type coverage tracked and reported weekly." - number: 4 title: "Validation and Hardening (1-2 weeks)" - description: "Full strict mode enabled and verified. No any types in production code. Vitest and Playwright test suites passing. Bundle analysis completed to confirm TypeScript compilation produces optimized output. Performance benchmarks met." + description: "Full TypeScript strict mode enabled and verified. No any types in production code. Vitest and Playwright test suites passing. Bundle analysis completed to confirm TypeScript compilation produces optimized output. Performance benchmarks met." - number: 5 - title: "Handoff and Support" + title: "Handoff & TypeScript Team Enablement" description: "Complete documentation covering TypeScript conventions, compiler configuration decisions, and type architecture. Your team owns the codebase and can extend it without us. Optional support retainer available, but no lock-in." engagementModels: title: "Hire TypeScript Developers" @@ -98,7 +100,7 @@ philosophy: description: "Types that stop at the API boundary are half the value. We use Prisma, tRPC, and Zod to carry type safety from the database through the API to the UI. A schema change surfaces errors everywhere it matters, instantly." - title: "Incremental Adoption Over Perfection" description: "For migrations, we prioritize progress over perfection. Start with loose types on legacy code, strict types on new code, and tighten gradually. Your team ships features while the migration happens in the background." - - title: "Tooling That Enforces Standards" + - title: "TypeScript Tooling That Enforces Standards" description: "We do not rely on code review to catch type issues. CI pipelines run the TypeScript compiler, ESLint with typescript-eslint, and test suites on every pull request. Standards are automated, not aspirational." cta: title: "Ready to Discuss Your TypeScript Project?" diff --git a/lib/technologies-hub-data.ts b/lib/technologies-hub-data.ts index 45aa462..103370f 100644 --- a/lib/technologies-hub-data.ts +++ b/lib/technologies-hub-data.ts @@ -259,7 +259,7 @@ export const technologies: TechnologyItem[] = [ category: "devops", description: "Containerization platform for consistent deployment environments", logoPath: "/technologies/docker-logo.svg", - href: "/technologies/docker", + href: null, }, { name: "Terraform", diff --git a/public/assets/technologies/docker-development.png b/public/assets/technologies/docker-development.png deleted file mode 100644 index d83f2c0132ca8d84f13c0fd824c7c139adf0aeed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45612 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

9Eh3cZ5CIzH$7RMh($r|u4H-vL}1G9hW71S>hR z`SWx$w~x41BB@7ggL02RE2Bvsw9JF;FfBVie&Il{a@d{K7uw`e$Hrb5s56-Gs1du$ z?@E+3`HY4+RO9GU11SevH0l|oEFWR|PU^SJ7S0v1h>AUrWcl}C`+z;6Rrwv7YKN2H zG2AO><%%fokM2WQ0!er&5wjwlYI=y-7Xi$23~N5nHZ`njoV~$YC?}9r1ufOHqGO1G zFrAopiOC{{HF7LWJ5$xHHphA!g4K({6;>Yg1!pj<{h(C|5I1n~w1i>EG@)jcfS$I2 zR{C+tmDq09`cX$SqJ<2rmJ|Ol{tH|S(8)+7<5sx9);(-SE}TN=Vd6f*-=ef19K#wb zhK<>Ym8lo@UL8K`Of*poqu$4z@5IRqxYZIDZzpgS+(LT!bq{D^)w4mX;tINfu+!;Q z3I)i;PZOiMBh?@;Vw|7OeUoNEGYVTGq3`@>cdqYbG4XZ ztwGA95sxi5V_2m01OQ;?3{Dye6p$x~pd!jeG3*3d#IS^D$;A^pD!3ZXLYU=*dAtXP zlJT_hi}KTGN>xX{$gd{~Kh=sTyVbdvuaXPAGRpp&$r^wsr8?iiO z%?F`f!PQ_Cm@r4h;y8wRJxa|sa*rA9kPV5Or|>|{J8+jSA5qW<3@e8z4_bj?@pS;V z0&tQ~B}n4yk6q;?>`CWGt1k4xV8_@~mQS z#Om^^mxn9VK5b*?010HUxAIL4Ydv!g9k=BIR|Zht#Y&*dpB~U7V^}lHpAJ4-PDw5+ zUn^fS97=!Oq5_=Up;Nv9)_r_O`3-}5tRB#iM9nobE{g81aAot?k5+?5ZET@HoSQS+ z^eT!h)in{`-yEw4SDsgyIpTq04PYzGpgOdY~4?&vkFdm0B; z$l(m8f`XO(@Tp)4SRV7eWsp_PrJbPwF6=2J#L{3=VDwt0vZ@x{LP+_psyj*V4gW9S z`fu4{^=f{}=a~^E*J0Q$?`tQk7*95Ag-NV}ZJ>i3OtqjSJ!m~kVaQxV!Yo*s9EV6A zuyY%yt@j|0_M6$2A1qBCVudX0MAZ4BK{h4URV@%M7*<%QnT*omaffMZeIu4vuU-(Y z7_p3EH4zJIG=vUr$grdtqM}WE`v)T^G=U{KU^zH-4pp3rjvkjXACV5}F)c_82%wdB ztKK7K9kKsKHo&kP4Sg5%;&29zdsmQRmSusWb@br4j&WL&iuBE~{+@aT*%r88xx=tn zz6jyY8yI>w+%G6w<}iy{kh7rdY%?Cj8_2n19_AFS6t$YGfq$NF^9+yWS6>id0BdF`bz6rDLLODheZHXMk zE@kJP4U)Ju*y6EE?h+W%C=vv+D2G~2G!_dORvO%(@T7ax zE7T}=ngF`8FV6Y?=2-WrSG$8Ns4oCnu#*apVKlmgJ%Ts-gLhFfhAZ5mUXDeM8w&JJ z7$Q!eY~cH~aK}4%eSa_%0PIt&Vye}AMCaChGtUnZN*7$LmM|>rG_>he2Qcy+3k9q| zwt!aEh^#lq>e(W9aCdk`+zJD*K+BSXrPjeR)kLX}&tq5tuc+M-T!9PZ0K%Owe8STq zE2cp1;L#LNh4V1d;dz+6Ewv+Zst{l5c$TPFI3k+5dW>edX`@Mf$H*(1O9!G$-yF+< z)l0)wtzb0tl)@QIRM3iPs|rxG`aH`~=ftidG*v0gZP;Oj`+#hm&4aBm*PbLv001BW zNklx3qHdv zN1sn^3`rO~S_xojB?OuMY1Ar0kM0PCQZ6&S#W5Oi_~uv%)#}=w;Of{;!%l+;!^^T9 zi8b-*j$mz406nyaT3Sj~GPQbN#yCYguzY+Q9=Kcn3O%wFFMJ zO0yS6g#rb4KS~GkG{9IL40d>PtiZ2chF(#GUZS`Y`{HU>k9#UsC9O7Y z86ZjpEgq?pbBx2kX?>8GTkbiA1gb@_43JX6y-|T5ZRo*72H+T022(G9S7Mg6p{}tP zIB~2SjF@S9fodVXIVf9XO^!vqhT2`Iy@rq}OSOqpro6j^4j{JkXlUF%9G5rS!{4`s z^3~jOkG3!XBH|Sb@m%TZfpgxVciA)-fPVS8=V;Q9T^e1U>*KWF{uuHVefk`O^2VL@ zF(4FPdhR{0XuSv*FMV3fyG^PJQmU)B#k`Is=!CqgOtOm9>&>y|!O%|Nsv3=JhA?AK zw|qcK0 zRP0>6qV*Fr=v@L#%UD(qwO~XO4{|y?w89778_<)FEsW!LWR8juj|KHLNs;9_7CL_8 zuMw&&3ci_a<{v;TZ(XFAS?uv^k#UjghH;dLg_`~= zVV5PBAvueMEr-Xa2F;4E0hZ%^pCP^xPRZTAP07ODLc}WQh@J%rXG$FeNsFs=f?b$~ zRGdQ1_BZ}Y+wbAe+Opn3Ja9X6nfPq7n|$U|$FjzHB~kHN#akDyfFrQ)*TAdBj+eK# zSL;@ZLR#Ph)3M}Es((#mnrK|KSG7(lW@UkJS~arj;WE^gBIXu4*}bGumc&^myeC-Y z(vaF_Ohpr$^mxp_VqK(|S?uxVl3O|Hs#c!{dcoWjS&dv3v!E$8K`FF5cQiEFmo-P1 zIPeOBIzm)Kl;xZFk90K3?Wne&F;&kJmPMoElYRAXWmqMZvc*|Z6tkNYOzL%pSu{RJ zv?~$cGsqfGb@+>RvwU^j&U|`ylB$qQ`OZOo&6UHV=jXRcb znPL%I0jPCz{8>_+6tT|s)|iAWw@&v7jS}V;o9#Y-{hOfTEP)m`d`o zUFVzsp!JYqUa2RT<%}_+6}kh_Pedte+-!9ZDk2tJ&6>ExiB;OT^f$0dj3Ed+4ADJI zx)waL!7WVguDareNEF#{3P9G!DF&q;$5Mu_!J~>>G&aZQJ({6oRcFu-hfezn$5S2t zn%yd29k(=>&#M0R?jZPmq{4?xeNw-|#x<8b)z4IJM9LRP7lA>#}V)&b8CM?>4Dac^wfe-W^}b%A1Lu_qY6 zp8~n6Z@OAmtC&<1sCWFQr%&8&O@2j#Mo@owt_fB?_cLdGVhkLGzZ}h#+}<3oj82`M zU$|7uqPm3J>p~q4t%(~d(zv0mP^%TTlv&j!OOOSUd&&2%)9mCN>+rX1iF`G$)U!JX z)iETkz0{aeKq?ZgN!{`)>Z(wst&UKM7**dFd|M7;wg?<85G;S=V?W_3xQO|4q(54D zx^<=O1YfY?k9djn*6qe)g^6=?R5T4N%w~lixBnpvU#15W^GZF*2&~|-YfaLQK*X+A zXEZUaRV*V4(H{(@Hg^g4XK5%_2+>OJZT3b;q8m;Caw%rDSy%P%@;W7p5Qqf~%Sl6xq3hkU>X^=j5tv<^*i(SsXd%_*Han{yfFH zl>ho~fpI*R-wc@5cr7$|)_HtXKJ=Y)`-CU!s!(f9QOg3c>K`w@TOOJzk|h(Zx^6;< zAU*tT#9A=#;Ji{#G)RDE9f65M$TB-tE{$>BdB~~#iP!rS z8*7=uRlezD5Cv(oOw9_9G}|c2xM@o$q!FY7N;Qy_MnO+Gg)%X8U4}SPqgWYajg|lK z7p!ornMgFR)RT-7@(IJTszN=4a!9O2Fy?u6kzJZm(zr?ib^i7vUR~PQviA8ei$A3| zE(r_GVp*tPom|HuQLg%|`qr#GR#4VJ13%WZnECwxss^Ng7o#&fh z(_T()&%Hu(1|g;oN+*@+_&|cyaqryzeLxkW)T$KgVy82I(Cu7eleeqGsM?_qr!3Zi zA1MEIS(dr8Fu^Yo)sbPTjD=YoCZgV5P?mxg1-$=N8O!$$&cmzY_Qu&6OueEMe27;W zq`;m>_=D{RRrj+)*em%IV_8XYqz5RIV54~CN;(N^ZP;qWkvg8`XjYC~vx6MkRS1ME z33!*WuAJRnR4kavJ{_Zj6Mw~oet$pLjDC+EL_qPqnC~5gK{r}gN`Xd2s{2+C5}j&m zS()2TwU!ZLu-lfF9uJ6osdw%ayM%TvB6RaQQIpQWo^yDLY5f9PbyCjgq;j|=mVuOf zoPxB^u$octs$iM7SQyq{498j&-9E3>6AiU1_5w@Y==BTMGQFKQnl+YAOVV;yY{Qwi zGF{2R(4?>>@YO!~CGif;@m!2qqfOtl3Hkj@EGr{gAzOn_Tul{<8Ge>=TjLreu3bVL zEarWN^bQ%5Ey)ZstbZXpRu3NLm3p>uv}h8b-UXy`iq#C7$fQF!x4}Ksj3+hl2C&2+ z%OOrZo(i>26qPZ8EMQwJp;h^vDesd~)`?@ZW_pG$E+#5jBS={$QkxkXUcEWRA`A;D zNFfcWMZKpD{P1t_tK&{AACQBiAsXR)P=is48Ps$56y~t=Mj;PJ?ej z02XOj|47Q@9z4t{w1M&9L8DlnopMi)k;0m+fs7D)EH6Y7~ z7WtS2hyLfzzDf&iYiU_0T6GL72wBlJj9y_xDK3E>g%XPuCoDwSU8*~Jg~J9LJ_wT- zRt@Wq$yiJH)vQ9#HhsJ_+Svl#p9xpNpuxEH-I=i+#UD?#kPN{;!zL2oWibPqK; zeWV@h5$!h1F-r;78AqH4sKQ=E|D4^r>%rmfAK3@P36){tbUK{xJDU+2Vi=TQ#gO;E zJ*uz+4YLaEfM6Xn@_jqz+)=nR5?kD@1s_m>hgg@Db;>*e3qoHW$K@dq6ts9PPLxM@ z1d48o2*1LotzMq~1R~rW;+-qL8BIH35q`2XLB_m{vS>gN!QHXt+FBtj|4Xze< zDLS6zm8_F(aNUH^RoHsiyxMRIE$2}Xu^=FeS9h%yI}Abz7O;}3ybk$UyeMQQ?v@htSbKmL%z|gOzHyELd&jYlMJV%u8 z8G}e`ciKGcaTlM!80Eysve2Aec$QWMPT~M{CDxur9IO0DpJB~EYMEx-Fr7H4un6zN zK9${Z&`!122P|(LRG3rd=|-d(14dmwqWa)x+e9LfWU!yr=ThLwzTl0W`~gRtR)ysP zs3=^tB`og-vae`oBRe5xh+#ozp~h)tP5$sA_UinqMyR`=B&b1NR;h(Bt{hGC8oYzdu~ zvML3eXrn-78b?RjDLFmCj)7Jbv=Y%h<7obKobRZg;V&fpsI)w7qCM*NVNR`+LoFw0 zW#L$WS^fIL16u>flEKe4OhHFObH-$dAWehaA+{aD-s_+pnX%%P5zAQz8|IXGw&@7K zMhun>%{k6@2(1#%9y4a;tu1IHcm`f|EvV_bJyp-0qD1s4xNYI^#@V6^X(wT=DsfFy zUY2}KD<2A8W-+X@4`}f5rD<3eRhJ%Mbvc%DDi~3SeS}_i@AVXl%nsr1Fp*AxtWx%G z@vAvyo^9nh$0-J#Hwc-q7Qq$$odaA}v8^REZC$j&#_YxLTA;_l0#|W_g&>as4HWkT zxXPx~;S3*z=OBu_)P-Ms=uSme$FBs((DadWq6J1jCKZErKC0K)P`Qd zDrP~bdosl;5Hb+teLO?ms&Nhh2wnuRytT1mPMIg0JneBgM=S6K`vgl5LLG`S;3}E4yK^x7#1dNuLs7T~@G~lCU0NQN+%hFQH3>tiVg6_S8a>c|QTz9HGlG(7B80bw|<` z?vE?r!`(+qlKT<$a$#Aa+B7=|aoJ7#r8*V`V-+Y$CZ-_pvZx6309CgVLEd2OZ*Z(O zILs;YT(bv1u5lM3RtgQen}jQ?aqi_g3$B)UgAX)Bnx+S5Mc{{vr9d^wd?GGIZj>Pw zF}mo{cK;#B0vIujB?ZjFyldx){=yiR1@)$1Q_KU%IhOPoY0NwH6v8W+L$M68s^|`A zrGp9~XIA+Y8~J^3Lp@cQZ{iqY;kc`cnT?$F(3*3P$^{LKY%Ygrg=KPQoS}V8V_cwMktme zSJ;le;0c0B(@0YG3>{)&&vH_4{J6qKIF?|R#*)G;1<42<`CH{G%iCwu6=F<-{LTR2 zuw#2+e#L;5`-3zRVu68rTH~7=<+8|8rek+Ql(n!KKt+v_Xi8|dZDNH>=09cR2GSNsjrac3a-n6Y5~D2K@Sl8 z-cqsljaXzIY?xE#>1L0Z=g0xvqPN!!$iiBPeb*TtVG7a5f)yi70$UC=rl6>W8IG-} zFzqN$S;`QosOgnn$@x>PB5{ki1q_pq6BrC&rEmq`Um(e;S^mEH1?wFgOdu)umcTq%4~{P1XuXX zu|_O1-(Q_#lHaGDglik($aGoaRRT+q&nRYiFmb?#xW*!qKa)@-fhU-$vPv$q9FK?37#U1tx8b7nFOvpItAs`h!wCW>?hRZ z$dD!3jn9!mI1*MWm}SxKFHEu8&@iLO24>G!*mHf@_`+HQRrabRMK!B&TA>-O&W|*J zjH!aaG>98H+^TDB0+w^2d|QPbIJY7fqmu11=$iORrL3lwMFKq0!sJfrUxciajf8H6 zyYpaZ49xPQbhw5QOigqZ;?%0xSqMXPEci;AMLHT963t)~d`hwQidf4#2#>omdh#r` zgPeH_Y$3a9dW5BFI{=F5+^iVz3H*KU@?$1gEC&yvspjd~!*{ky_dmWj^E&-G%|& zNY4sb<)G3&!%@2+bTNT)x>j=g0>YgfTmf38{e>7S>XibIV@b_yMZAkwC;<*av0%Q! zG}aw-cVJi+>VOj0O8^#I8y992*~SE}j7?jHJ{~~00J7pwt%I&RkknPH;tw$whcHo= zJH8yDA-xJ{kjE>;g#ZS|%uN0E>`M0&!*XQ+=^TvlC1#+Sc5YIqAclq#dL@pbKST_( zZ9sk*ACyJjpzAH1&W^?6s{=F3m5i?8B*jwjg82wB42x9vlwuuTw1aR)k&O)S3g8O% zQLUH(SM)aI+}$DKDwz`X(F)c~4U0Oy$R+aR1dxDni15k*27wMjU}lOd5w1MLBJLEI zi4EFz#KR;aEC^Y;HM?n0=FHg{%z}Dl3O&{veV=)n9x7&QP@&f8QE%7YLL5^#M6Ofb zhFo#C^nE-@A?jEeLhRa_s4!h(D^qyF$E*8*SK$k660b0<1Cg_uIft`X-K2hA`_S*9C1CZeu5Re0xp_1PKo?BAFN>WFm zKOG%M$P@&z_&xCpN&+3a@$P%JHY&_0vX$|4U5a0IUs4^WA^Js^3d(781=aO27kK zn4hrA=V*-ckpb?g>?OXn#hBFzW2)3F4SS zKNK|tzkB*cGHaq;XnxV^49e(29F@~ySQv)|yD+w)vX?zW)?W~?su5f@8CE{JG@upd zUeiPk8N*7!;!!SP=H{e31CyfmpV1FHMJYF~67QkFPk5ej0%)bMKf*76W8`}WrVz#=@|OyXk~Qs3QdIv%LpD8qzg zRjdlB9H5pqI2NXw(ZmfH-cakij(iRsg{rulbY*Y_8rH5U)?5K=y2NJYa~*4NO6Vc1 z4}4By8FU5_t)k@qJi{n;ZEOiu3KWW9fwyq{l_y)sWDuDG*jPYhC;J~L* zGAt9bY#elO3CE3T^r+28;f53Lm}30}0m}!oLt>!(na_kPP#^SNS?lMs;i}c}GKPhR z^xz6xI*H*4N6XwoK8-Kp_BXgx04Ilm5!`Zf{Q)Ujvtx*QJKSbkPDt2E_oEvaWGs%x zf?z&`Dj$11x0hNHC2p`;a?qvvEZvBL1H>h>8)BQbm?+9cxB+(SF(qrOW1 znh4wuzFHlCX#lA`2scaz7?zXTiD!Xph`ocYVf3|@HY@7U&7))Epn+9U_R(}aq2!+# z7a;Q8M66xnm9r))OqbZqf;$*7Y#CZ%6$>>G;p#z9zm|A7#4JJNkdfL)o0oecp2*MId)y?OzEh?0d9 zw%{eI^HY-76zrwfDp%a3Sb<(O@yVWpU%lvx!ze?o+$VGlYZ|N+lag9&dA>Dj6d9I_ z9?jE^o(>j^<>s!}5rz8%EN5+Cm@cu6Q6?F~D|oawTOe1M3F~2Mdtg|hz^I0!6w_;{ zb1nBB4H6UMq2ujGmyPmb>F^ zhINSnq!Ynd$gV(hhc3f77P^^G#L|r@u_}Lc;PhZF7%S~3EX}AcS`7TlP^>00OqbZk z%J^pYIL94#AeG^jSKA+mRM$o`}>srnPm-OKe|@0TCRZ z-wJSP8R6@l_1<9~^nP($sNaPrqhQQp$eI|OW6;!6v2X-GjDsc>i)N%K8yK-nVL$R1 z9Tu^61X(XFVA(4uNLX$x)-7=5^-_zsd8E-eT%c7DliegzJ$}`S0ch(z0*RSu#K%td z6Rv9$983XMuAh9#Bzr?-SjkwNGxieNz9bP$WLc?T%ZLGe0BE!P1x6-Usa(^*605iJ3lPk4aX*tI4>AUKS)so25f@1dsr} zKtaFSGL|2jV|kG+n|oPChP4yOdhH%U>nKUyKMYs0a$X8p&`{o#y8r+n07*naR5kb< zw6eg(K%A@uNyk)h36@O)9Q72o$x_RKY;d>sRu;=<9^8`u)nn%UwwV}KBw2E&`O#eT zZ`lL6vaz?&$yW`yYSc#D)yym6R4mOpssZoPNHEb%Dq?}kF2yu^^3Ew%6B?#VY-8jQ zHkdQ)IN#h!Xo|$+Ex;5-wI?pkO$K65=M0XbOqW}Hf-woIhO5l?}p^rWCIH?ZjXy? zm>5ym0j(6TQXLDxO6Q-D=uu0GHMSF(C3;-(91ByAax^K%y6==?HL+p3#1_Ut)fv{V z@UtAT1hXI}@Nq_9*2uz#?NIcr``Y&GYadd}0@sv7F@Y zL@bKri#)4^S~vzedW4q6&sY{nSm*^xr+MI4o?sQkI_BMkd%!DaO>CGfu!T8My_u#@ z3f@4l#2G{_^^umrlr|a%N!Ap%gQ-1QE}i+DfWl4l(E_YtC1ap3Ni0@`t)#PXxkm`7 zl&1OCPC}5dTqu@KNm17Xu~5P)Hg+yrsKf3k)(iI#D!-}}s%%T&K?pxL;FSqj_oG!- z)pb*79yYWY^()7)F3)CIO^D>Jdw@}hyTVO@VMUO_XV9R8xKJ zFw?Qm&`F3Q7DSKg4?BQHwQ!z_ec_d}COAwM*uc`U&Zo5@i-uf0E-?eTg9(?aTYY16 zIfwUWd$=<0o3O3q36e`l@P*H)6aMbviM`UUvK9rqyJ671Dq6`@627AYaSV`LAXZAT zYT3ZB%CE#7+y!F2F2RC?qJ~$#myq8}-8tZzaHYZRYcZ^3-7~C^A_gOf5YLo4Y_DN? z+s~D#r9t^#!SbXjSJ*Ewq%(ynPK?F)MUgVIqTSmnmQ-;a|6F?tIT8z|u5XSeWQLW@ z3%vupa@GQe$pSm!SIx|f06+_k6R|xuo}IzUfse2N8Am7$Z{=u!Rc*6ti*O$@=)_*a za(gkiH0Nwch4+g-x%TWiKJlmqwohe9j+%So78+t{ss;~M(qOVFRdrH&7;C5#QtXam zEhJdSy%^;DDbG=N(38xDG~CcjNQ3ZK1glHVu#!Ln#j5HULR$;XZ+EuMHMK+Ry#kj) zmLHgt=a{+B7MkJ95v&l01Kj%Y&9?bO@1HCbZXrnt623B326?CJQ{@ zID`SVPr%PY$O7#_UZJZ7HpDbC=;T40!Y0D{@m^u7*dDIz++21JcIchOUP6aX7yl^P zlBu6P#VSj4`w43gQ`%FgE+ME`OsGneu}Fs`c2o!!hP&^qmvHeQ!sA}ddIp(ar35Pl zt+{~p2!_S^lvE61X^J@jyv|>bVeP^oZ69uD)fiI90q#k#`)G|gt-z~XygPx_T+JP*RP0(Z zKTtC@1cs%ud+-TOyHcgy0^mnT+XZ61Fu@{POgr3zyo+Gz@8{jcNRFM1!A>qEl5PULo<)`mSgt!B^TmIQHQf z=2CqvhSh?H$pTL|_V!?VFxoV0u3aonF@MnCvnFWyAa8|WEyD|KvvqW9K(X$z_8vn)7bBJ6RRq_3LSwBaJs;bmew93 z8>A+N4P6Tqi)E`iM5mUL{0-Q2(oif-=U#Xgc#@hkc?WnEtc4Gg1)gsRN4#}SbKL&! z2~*AYBZd_vlo$$1?FU-j8>D7{6D^0kmZm%8PC=K3)Qs^gSROd)HLSVAbFi1`)DYfJ z;Ih zABI`g0+hOuVOcLZa#ezT|pRFNg^5bDSf=#nPYZul+h{*y^wnoJ0`gjEr7FNZ@ z=mio7I)*g9rXgaXp5+=DHMlos&81fmx5jrfvR&u9gWh;X9lpb`5^4owoiV*ki($1w zvGPDHWmuJ5DZip_zrKc5{vb2k4a0g#1?!0fYaNDVl!|M+^_;iRsw2E4gW=vb-#B4I z(!YV4I}9gmBGV<{R@AT3(S%NRpEo+k$6;Z<(YjqT_*sXbYeY1t5a4PwK(}(>E&z+I zg%Fbko@~s9ZS!O7ZnWY~B%GEdkN@$)J4sk!fZ^K~LKMOi+{29QB4qic3qw_E3|Uce zhj4e;u9$>%&~Nq(3j=*dW(7WB+Jpkb%3~V##jxB*w*X>Sc!fEzo`6^P(yJg^8PV#} zt5m*nzus`Q%<`}++!mcee1KsT&ZV);pq2k{ie&2}3_+sK6sg=;LLB-G!n?GWtQkQp z76movGW(O;q3!iIXui{UMOiXiTKJ4Lb}l=CxmD=cWdXil>tVo66K4b0gO#hM%CzAL=K zfZm4@tl{;y7QxDbMZ46>d4t3W-bi(`WjPv1c6U)EEr#VINxRYSnTnMn7O7bVK^aoz z`z@?Ng?ISTM$*ZNB@tLfzIuU9!X`#c7I>}^7q+dB0W6&_=LS<+1uA>3*Ye^{iIwp$ zYHM$_y4Og+a*&k{CdB82Le^y#!AdAr1Fmw95NcpRre5eMI)}BtFfb+^oRcuD0$1*s zH^ExBhj3-Q(iAkxN=n5)ud2!t_EFf3!XwfyzOIB`UNZ9}Z41q;mFcP=}T78by z!>c55dvB+W*TG4k-BhaBnCeukU%PhFhi`+xZbt~T%|iO&;d0p7b2P@^t;O|^x3c` z1F_HzOcTH1LNK@iS1o2*YY&#MJ)37J?HN8#3x z^#W1ufz3WX1WRigcSSEU>JGO$?jqeYZe>m9O|90qboeD^Zgp-UJ~u@tV_TPQ?_dkE zDCo+EHUtT)*H@T$ge18~hUFTQ=5v6dgoCAReQUV#*20X*0*|yTkqPq50&IJge*gr(NQE30S% zQ#W)H`muvHdQfXSyueXqM^Eq#Sr0_35PD@Ep+On` zU&Mk?E3blZUwFwc1Fw2Ye6?k8`}OiCjRV~6kL&nQwUN3baUd?JM z?oP654u8g6?}%7!%xVuL418?sD6E(0BV@p;@o(~IZ2M|pMH<#!X8xcjSYE(FhDGtB zZ+iq#(PkGv;(7?Pr{+QHGN&@+(iLoSdHiNrH$W>SZ79to%`~Gr7Y`(qBV22IGpr?m zC3n{W)@e;^1~JTKSXiwCR5{6(m0##0%*MPu+x{5Ka-r?`R){{K2Pr>t5Z%H{r%s6W z8FG!DCn(l=7EYy$#<1!_zjfttSP4Jbnqj?$gvI%L>L13d)zdW0fvZW2;p|wulXp1z zf!o8?KVae3!z1BN5{50zh6UE_QEp6A?*OcwywAFs$Te&bEWj!St|YZgH6Q8D-GbQx z?>@pQz+#{9fn9{>MGPx9sMF5-V-KU0m4+j~-+tkvAqt_2HhcFF$#59r%p-N$rk%@e z1*?Y7Sa3s+T(uUwu7ycvNK^5+g&F+(EcK2sY)!CUMZz+`8W&*7H7l^Hwd>w&i}4H) zmL)~tZBDHvAMWZ!lbcD3hmfV?8rK$VaHzfVaN$wQv zuDyhQiZ7764*Min&2G$z{ZB9$NC1EZ``1D$`Lh6;5~#wFu};InXoj&UXzV^0@;d?6 zLyRMI0n5BQm}u?UQ;r5hyTDB>aFs~!wtXt0dzxM}Stk8TD3)eysEtOcRzxfNO=jF{ zBfxqQf@RXx>7g+VluRb6g^OS;gtNo@x)$&LWy-5Mo0SugD|x^%3AlfhkB>O@`&2LJS5~solB;Yhsz$1{KG4POx?aSTe;&_0Mhh z%C-cUB2ICI4!wj?(4z5!&qu94i%6;Y*el!2ow)Ux04jM6D@7`H36WsgK<8v`)zCed z(JV_+k_3(7n;ap{&p(mIx?>li0#_E$uqnlQ83{{8EO-EqBv?&~bpv(<2_&Eu5v=V} zj9&jCP;(s{L1*`FJoX6&5i7HF3>S!4E{uUg8*)=db(}HfmrIh|jvLM9sMqW=rEw{2 z>DHYytf~FaRo%1H$fwmUt%XTV^cJEE(}6kSWsp|l^prh0g)eSljtRFX28tqvIj;~N zb%SGZZGk8()YvJ(45gWA8$wdZiDd%2t%5tq{-3oRZB=fVb2G4E)2PvxAy{(5Ez>AR zI;;ayuyg}fCE(RStBO@DVe!D+H(IR)RUFMmsTlZu(V|#cFhdurPTDD$Y!6WlZc7)h z*yBq^7`hlO7*H59BXg*`02$@)^JclS_DryL1Xwl7-2>KXeQQ_7E^H+pgLewkpCm~1 zk&tx_PTqBv;ZQp@E_`>ict~K$e#yzFS5Ezz=KXH#$ z-aKui@q?E5Bl`&yD>rcRXd45RN36QF#jr%R0s%`xvC`aqNV7HosCf))640Jwmc~8o zSsknrT;i_kIhOFKhDu_1wIh3B+-ew&dopYTr(7f}_lW#s?Ye@ag-HMmz|#J~Uhg1c zlHgT3jF91sdk9NPch_!=LIue^$=zq<>Mdc-1uWk?xGG?|3Inwbs$G|2HHL4XE7(FT zYf|@u*J7YqC||t{khyV!xT5!&xvtZ&(nkuiR^8vNC8WMf2Vu^xRI-|wLDd$RVBt)J zysb1Jr?C@exl|3#WfT*E>)lB>53tI6;$eVgP?g~l4YrtLS%4@&mv=?xwY+uhWw2-6 z9PSvX%a4FmMqa7UbVes(HK{^4iVz0ov_*HThRI|U-YMk0xKm#4G&094STg^-$EGaM zUAELnt?jLa6jS@3Wbpn7d)9#|w;s)6lv8VtkL@^uJ{j^ueZwh$iY)5-T2MFV?or|% z5)s`i1*IxSvFw3o21pck+$dl%CgtOvj|pOFuX-9e>ZJA()=wZ4V;+R{bv{!TdN-C>Dd6Z;GJxhzBTUI+?5=uZo;oS+`AOp_6}2I zG|0(87^znJ~Z`t0!U2F&DQW8~xb946e#@E@Sz|opupgP{a6pb8ErG)c!33 zvDODHZ;K_Yv|{JXs!Vr>X!R7>y2tn12{!eunT;WA2n;KtRp!m>j`MO6>(te+CI>zn zHl+%d?2S8BahEov?S>P|SlIi4M)9caAa3-v7#6)L24ljqP_`WtR|<iVcwWY%mOd4 zlh{42@Rldb- zEcMkP4Qa5z(Q(7()&h#D{r?=pYQPmim7o!HH<^M}+7-apYIa@apx=*=kB_h4%T8=* zZu{%kaQ#1cJS;i7n{1YYcawmIpKGSU#-h1JnzKVZrM|H?M+E$Di+F9l+AMH^a!=;Lh;ccBI&&tcP9o zyZ+>*u0wnO`1tTD*rdAk9GgtcH{#XDM*&>sQy^ajyb=&Xk)7rC>;)B!(joH>*^=Sa zT%Rz>f`$1T;GJ%xZ=s_w=_M3~<+5M7)@Ko;Lbo=z22M=vf37_UuuiA%Qp>+Oc-3TB zB*ePPFDuud0TO?Hl(&e)dt<|#Z`T-MRh#s8en7nyz)|v3^3qKE_4i?}B{~#^R@o=i z%l`&dJ&A2^QY_akXf9z8xf*sd-!E+Ua0NRHH{gf7M9S1@2~NcGkKSc28H1h4>kJZR0jvo*UMn)y_4E1n%U|@^ zRE1!z%cQ2*&vib-S{tw$_hF%BW5a110#?1voSC6dvWOywV9^w)PGLYZsP2}9p)toQIE<7LYin!a#MJ)H0qf)I_s-`$RGe9Wl@Y9L zC@hE~rOPT_^R+sK&~f+xYYc8?z!D^J9EBvT>qGErJr;*>^vh?ikHYrn^h$lhRuDtZ zuTD0~*;kZaUo+;Bkxs!(be}`9U_p?H=4lBG3lywYV1qZIVfJ@(hV{CD_3`m@7g~)^ z`fi40H5}j3f(;R|$^e}Q*+kyG3BbDiet*qSm==N9PwUZL?y|tKhUM$`*U$s1>);ax z5sTDD>=$H3E54(ec9L{_oe~bVTK$6)0JQlGl8khryObb26H^W*9 zus-hRSn~j@qhZB&^Uxe}UQyAaHl+1n>pFAS6kx4y;${xF`0M)%V0_i^2*+4u$Y3L) zfqg<3isfHG8OMTg4>5#c0;{yYr70s$Np#Fk|Wxz=DI@ zD*mJ?aDUe*3)^tH)7(%&-jTfy0&GF}RiZ>r$1$8a9c}amY0Z$yFWknnTv5orM2dS6 zc-fEEoB&uFjZ|tH zp7Y1vv~t+_EbU&ZHgvGdImXQ)P^h$CyeMmr5Mf|W6pc$JnpyoVV>H(AuZWTcSfNkg z+ddRSwuVtW-mQ}}e`8qHPyB8zaI#Y;cL7CzyL1=I^$U#3z7u}aus>{c|44z`cZVN@vC^RNA2{(a$q1g1h*H`9MOP*2~ZKmB%z}nXcir0ZX(e zP_cX<0mW%~6nt@+hAqeb^DiS=NmSHN%CL+D4Ye#DCY(tQvzBiR%agRSIcdJJD^Xl0#SX+PfVy~O z0kic1%iRJ+8HeN(fYl3P2oFvJ;pJex2||*A$H{eE17Kx$R}`vPSqjNYpLuocXM|y~ z>3ph?%r6+C7IzGW45DrkI2KHkBbWt)azao81dcXx_JuKokgeg(uxwlPvV1HbupbuXK0%Wgi1ro^D+8 zYya*87H~sv*N(okw07!Qu*%M07Uf$KV11=c*}m)-2y;J=0IX2%r*ZAM zg0ENl)#6y`gR8h4uHhRTzyewN_59GBJP@v+QeIig1N_FYF}t1_pk!w0WMF`yfK*1Y z9J5Mdup-^EuEJAIgKSNPbN3m;qL@({`|LwTQ^?vV=jf|Ox;wx+egRW5Nc#Hu{jr)> z`Vg&oeGhwe#RHZSvGI*6y9S@+ay21#th}*3m|mq_W3oYpJCj}Wi}H{(#-Blx#m30s z@wEi7#)vjKXU&n70amzxf+b)1&e-J$`@Yj;rc&VR_X-^e1-8RI{)TT*fm^tCHC9aVbcSRY2t|?-ZWS9jtQcv@zRgmto;>oB&z*TwX-5 zXe42QppliqJcJz6pi@vlYolFRPkuE>b`)z4?C8|LQ$D#PzD%0ILWY-Uo|GAM|S1K ztU5bRH6>d%Z4Tj;LnF>O3P~J1rpe&vttnOmCnk393a}KC^dTxeGE9PDJU@0u11yg- z(iW^TN)BEGtR%9~0pDoBDYVyow#6{kQ;`g?A`GqvScZylqOj8_ZMdRT{FVbL^b5C) zUtEhv0Q}+aJC3t~3)FilQM-CxW6t_`>@56JYFdk3oddzbtbMbR^x?E!3BgKyLdoEc zd9Q3so#YGkc2BTe;=X*?v#sr(VI6h~Sc+0VhBYvv%Yg;GTQ~;z!`f<$5XX=RDVPMmuMJpV*{PHGb)_`%lG3gVz61<6h5I6f zQTyTmReAGxz|yC$PvBA>`PU`GBzqG%cd-Rnr#6(Cgq5Xm2ZELJtLA{`RKL;yhbmZ= zmZ9SZm0?*%8OSp#T&fN-EGyU@=q3T%E^?HuffG~v_r$QY>Di++3{$rweWgj0@k+Tk zlGxSv8v!dDy3t}-M6qH-5dw(!e0U4=F!*T(*9NTb>_k~~mFj}gAg25y7w?l30Wg2J zXUh1t$aexPxw|?*&?Z>RWU0F82P0X&L6w|uCtz5oNyy5fDVvub{X|G7qe=Tnb=TRR zN2mhC5)F&8xjTMk-GOEKWf<1+g#asXsMFE-7cj9lU}-hgs;8ZAVA>26l(IUDfaUTl zRWmQ7G03hDSfpf+di28pE1qcRVkFSui%$S+%(KO}SuR4qguln=d2&Pq&5ffU3LSiK zq&`g;%41zH;WI(tDkZ*uewX9b+2$r(1Xul>eF9e*%W@1Wc!Wpm8pPjV^=O`eFoCO$ zrcz~V0man*&9XIA18GVcB0NSrO55Qaz%oMB&S(XIMWI$xy@co$Cde`$utJcLGOb4f zma(BM=Bf)=W&E@QE#OdzH37@KK)vGc4qyqtvTRqa)QSbLe2muDFwk&5UY!M-qDR=* zuxQGz2ulq#tA!;FE9S$}DJO(kX`XfjEz0|DgPt2v4bO(G*JfDu8UeuK5~E#i11v+C zHeh}90gK|WC_w;FEQ)}1fZ;=;BAO(+(D%*(YrHyQTHhFpHUqFKO}awnR`duFuq>RE z9!z--eZWehO1~CC)+w7HhhiIg)}&Y}x<`*tqDEtKnbJeZlha3fB}afOn7~!t_hwj2 z0ZZQ^QlBoX0+uRI_X8G3x@*o}4^B4#R&y}n69DTLmk>eAuDlCa!!;)N$O04~Az_WD z`UpzYINaI)OaRu*!Gx(<5}8E6n(8DBS+0_u`Q{RBMH-gtAsmy+C~+!e%i|kBQw~`Q zTTi!_W>|7(6&8+bx`ftyq@jn=CR{=rGz8mfmZj0s2v3XJo^}acdKtO!XECfS2gCg2 zT9(Vg`XZwRhNaHkk0(-9sRF?A8Wv6CB}!y8DIO)a*@$)0EHZt?JwcvchEdbpxsdWJ zC%HpMA;mPngwJ55sApKgbWG32D%Pt3R(&oSBW-b`lpAZQ=x!ryOWpG!gls*)vZz&p zF-nDUm*_5-!S10vnKfHkw1&>MuHCMN<*_MQ!<^g3kNGTe20l;VvWV#WA6!y8?4 zl3Sw|uqiG@v?>&924uAc-?*?*AyyU0qJ||{Mbml-%i;-BLxaoHIB33^Eg*`C-D?3> zy~8Rs48-a7um;6FOOR5X!Y*K0KCH|*N6lcR*<`U)&=|qfngv*8JLEEW7GTA&)>h)< zYcbvkx8Z96U};xhy>3~MyNrMZ{kdW4$aJ(#W;kK>?;^Z9-Ndl^y9vxt%hE7+pAKvE z6RYZu;Z;t<5`tz~NRweZ24dSWtSLmYf;(ea!`-!^cSAi`7&v;W11^5J97nGwfumqu zz*1?3`w1zyG6@`o(5(4@#iO4iar=3IhNTy8dlfb5%JPc_VAi34(UO@_c~1J@`k~`E zLI+qbOm2Kz)LCOEsI$YYUVt!LnSw$X)^ZK2H?$cUmSL7o`8)!X>m@7$a&+8{QLF*6 znr#iEM)O@BJa)ve_Cm3OhIKj~Elz=P*4~JK=`5<=+#=@fnHMWYxI=(DmK~Ga1 z(2S{O2D70v2xsCkYTI+^Wo()VL>;48KUEK&Vpz~M4#RV}mD}*#-r(mHu)eEA>;Y>) zDLe_{Vh^x>7Xua~llXP|KSNHWVlK74oCXdl219dzVU?fi3jU}^SjG{+!}Eim(GfHz zTOZ6>?&zU7m#JCa?G^76_z^Sm>1E9EoCGY0iTEx@!}ydhmtN-DNiUNF zmfx8;Yjvl^#3z8|(}B)+2|M$|GGJ*rnVN|MAd8M3=O znO??rUKF2HeVj|jPNcXu!W!-|9GHWlScX|*HX?`oK^#g5W+-PJgpIt(0#{p!Sg*#g zGW)KN5r^0Pq7Kb)Hh`W1UP#~vP9dd`8RtS(1$G3f3BbZwo?!x5!q_sZ@OMrEzZ9_C zd|~PyW152UvGA!Kz#7Z`EMZtNa`h_@Yk+6>_46}Kon`A>U<}qbt~Q{KzXlsFfS)|} z5spA+#c537@UiU#e(p0}9WO>;S+MygH1ySxv*@WXE%4M#kh}f z)uvayw0)LYrozITVch~)-)DJ@>!e7w(~ME-`C-2^0IQLOcWf3VEL+30{a1=)Cv3^{ zeNs|)E71n5>#SLGQostCjei?~qj?@^ICEa00E?7VNRm9GaO=Jra#MbH3kLYq2$z;laDKw?}Bcw1+z0?wI-n;;zY)rimxXnSSLj*NX?!|?(;AzF1ivlLk@5( zpjxux=gAR<1yj}s3u$MP5<6j7JNF4&fc5oD4>y_S>vwXRFO9y=C6t`q(Sc|%E`qPPYr_(HCSTx3FNX!)(R)wq{k!%zg@rpz# zm9XmF{mLdQvf|@vJg+6W$|_6Um0Yh+jui(qpGjN~a{FA0)tvR2=OhHhUGnz{1o@fi zwH3{2#NFAT4K+5`uwD|dzJAU_2QJv}3KOYXJVbdLHz(DcWLRm7smwuB&4j5wrIk;G zHTdg-d9?h*ryamTnzR_ON^0gWNz>jQOPHj?`ufFmhVjAGuynbG@&?c>Juvg*_yAId z1*xj_W*`CfpQ*ri3fEhl_yn;|C|l{o&i6{~5VR1Wj2uB7NEjGa$;d|$SlUC_YGzZd z+$BwTGpzZ5H8hfId6kfzv8sLl&Y7w{Ff7XeU+XtbTW)*dmuLhYwoCF(WG8Pv!blk!lXW6m49!B zHOK7vSyDx3L)xY9@1LLFtd5+AUaIf!pI@61IxAJWd7x^`IVUqv`T|4W;?MWj*D%ob zyHxy3$lP$Pr!Q!g#ZM-48Wynm8NLt9`3`&Rj5ExSow>yz7Hlv-<;HLuDRfV^wX|B$NVaamv7Z;;dlB!QP5l~^`EA1u>cr_qQ zUvHm?z#5$`9}D$VZ_s08^D6uMpKS2>)LVayogZY?tEr>nT0j(cG)rz{=bCi_kus1s z=+&D#onO@(Rq-mOh%tPs1=^6cjxkIjZ7Mj$@uBQ5-sBqQ$z%YiG((mIiAt)`lt;~$ zuo}A@zuIgF^aLR72e5pg?>KGudVpm$s#dcbEpn`6xgu6N9dxUS?+dbGLM$F>biVzf zF+FHmpZt-VoAIv|3@{3lwx5t;)&4@2v#?&xnkomTd&c>`u#BM;MvUq(98H3i#55?B zwHsK!e=vzQ-wdpJfHbxLX;!JPKE1MSHNm~H6`x2+HGonx&KMz^*Q${~?|DgMs z(a8ERAb_=9x`r2KSdXPxh%6bXQ%s3+JMy%=y z?P8raj(8#9wK2omy@(|}w)#|8M=Xa~tJQacD`;~#Hm=cxeH-5qW;McMIV;2T^;YtP zYraITU=hPY0MomjEA)3;j955pP=j$U(6eSSEKbwz_rY)*?j!3!N1#}m{kT!o zAVcA56MLmJ$@-}DF_w)6SjU}Etk_171jrUhfH~2e7ec_Mh?S+a8jWEo*{2BIa)%?w zYH3&xHuMS4>JOrB<*QVGs+{Khs2W6C-_{&~Med+_gvTCcO-oq$9>NQA3!k46i`FNu z_PDKCP@F!}ar5{fS2K8NuE()hcBcj>15IK>hGx4D9!9W0a|h!YaYA?DJcGamTC>1~B*xuHR^Dz(-(lE05yL=50Wr21m2)G*+6Q8J zz*-ftJb%BvQU@I?Yd5CGG%-Q-=KaA{3YF>g|O4{z#gY zjT1cQ)v3?0LY8*Vv__g`FY5?Y1=$3#rrp4vO^QMrYgpj}n_pyN|8vaZ;_PwO9S;z( z7RE7P;3x-%Vjx2Z9W7IQbt%>Ccy?bF@B;IVZa)>p)D<7MHGE3-p+16QaqW5_ z$AZ|%mTF@yc$c#KVryMH-T}LLxCdd2kfa;OlV6KMk8P>i78#2VwUF+)Z>&RG{F6>|X_OAs;68M0*>n<;5dhIPI zQGp9a*^Jv0@{6M0tDkPJ&RGt8H;WS)sx zWdmF&WNpu|UV~yKDi*P>RR`!ihGQiZ%X2L5F9fN%6&SyJ9E(^Ronhcf<7)2kL7{Rt zX|dj6{hI@q1FA(&d1k-gIn*d;Q+fL2?MwuViB|0)oEyhJSm9PPOFOurD6IW5tbG8M z(;Dl;eTY-|D30YxmV>Oe%cta|&BUPGE={gHy?g^MBT^lHMcskzyFG1^d41_2)79s! z^=J;q3X(e_6B8^L@eCzAyCUH|VO}#KD?tm5!g>XUb=VtTJ(OZuu=3+6mSGt+;)X|6 zTYd){_Jdo9wf0ryD|1O8Mp3|mTNZumsA=i0Ht^i?U~j2N{n;c!WJBl)3d!RUwh6oilv}cRuGxEkC1{(M}IMRggvoc7pB{C3Kk+_Z3kI= zNmJK;+|Kx&V-L6PUD2M$u>xd`yJB0f3+5A=_p}G=1+`<$CqNhX{>{XzoMGuUC&Eu) z&kYP~MwL0uin?mQUY)eAbI)rSmWymCF{5)B)(B}fSN)_#a4^k%L%5nJV(o%r`G~pt zgk|r#wwjC;sQ_$XxJrL=1n~ai*47u+Xs`{iCEG#Vvux~%?O7LWH_sQ^^d8dd`<%HQ2EtR4G=&Z&pTZ3SM4Vr2}=I=g&( zxAdgwRhg%_p#iKm;>d_di9;ygDY|?d&+hT66@t4!b1zD}{FzZ)Ky9`9b!=`UZ7Tj~ z#~?(w2Y!WudthGONpY}Tga(*_VsnOdd_A8q1Y@nwv1siMi*gJ1x?@;Tn_*QTg9iPO zUcuYWr&rZFCj@_590vmu+?G6q9q-aCu$mW&m2S4Vo2A_8;dV?ImU@JNVU-M{Q`1V| z9P|aLWWM=cQ)@!S?ikjKP%P>x)B-D-O)T&rjs*^o3oHV+NU@;8le$Y7PMZ6Ux1kQu zpgAXWu$p6*aVeyT4zD1R${>mOR|vnNTe&Q#L8bQQQ!S6b7M8@w53?gVgB;6Fnmf3T zgjVe~Q>Ubumjzi1Wx%i#4eN#a2^)CzFpA~u22}EGD&G#O425t6;*f^Gt}ML0 zrC&X z$w}j$Ko6R4^WX|U9GDj17Z5D{0!~pUW{JEr3=ISXgZp@wrH@q{!cw4_o$n#OphGR2 zx4`tPvDjf)jRXtyEAt2)QuP~g0t&1hZ8VJV^w}`QPVdF2_Q3 z2H;BK8!BWCr<6ofa4zd)o5B`c!IL#$s2k~}{%OjvuweNPgrWF#$=x%r5VknJnccqb zy`3A0758ciQDaySv!f?ZSzjUjDk#;CwyLc~;3}Zi4fHBuSX<+k*yI;EZevM*FFbTD zwUTKv?u8ud^!eXl3*Y)JhE@Jw$5SfEgysxtkVmHoUG8K_X%{xpECig6fs@&jg~KwV zLaYv4DyZyso9<;)<5QA9c~HYx0X)MxJ;;s(MVqZF2zbZ*%S&M{P&sdYs*+5Dr3otN9C0NDOP}6D4ruy zBce&@HI9n~Q2$HO$PQ@i!f@3I4->v!MODNg0A!?>AZ5`FX-RE5vT-kiCr(5+y9DcW{nRJj0IdY9XoA6bfV`O=tXz#2@QNTyCv+}Ft#h#c zYVa$VvlFmrI>>#B)P!tUyAH+LoMI&%DCMD#Pg6^sPC_H3CSRVXWAzwTZFG&z*aHSc z>v9&1VffIaC^mrjRti6OG9X?PrUPo6L#IAwz0m?!QB$WUg7AX8l0Jgn#QetTdr2;U zfXBi^<6{$zDq4BU&xpG^r3zL0UN#j(b0%UL{R%stW5@E#b1W9J3Pg=1D?$~366HPWR{^W4fHf;OL%)a61z>y0IM(@8iOGLubJqs7W@e+YW1Oo+t#@#{OjPF3 zQQ1bZRzSCeQK3IMo($uoCc;Yr8SM%x%@WKoA&KI~^sw4_+CnTiJA6rA3Tr7|%|omc z|G`IkdWs!g3_};MO6`Z2wDk{qhNWe*jK~x8N;?4kkMJu}*|){37o}Kozy=YGz1@n`z#*$LIgZh=!BnSYc78bgtA&{*KGy6xJVsSyYt5!^okG zGz+mvqfkqBg|b3{7KW&bC1tO@M<#AaxHDp(!3ETF<^boyAj~CT_LJ ztE4uURqGNI+!Asn(GE_-O2l?ZG1@fcRxJqfbV|Ah-xO;Cu5!!*$kNv?V3Aa9qgbXC zL%;*{1J;+d>>PL0^0fpuJUlC05!p zFpNQ>8eqX+__c&gl_kM1{2FFjOfH>91}Sz4U;%`1x1x|TAMIfT>Ds#?a64&(a67(t zx(%PjRZq-uS{I1lBD{JARE^dWu|UCsF*ucB)g@$D+B#xyp$^6AF%08OfnpgvnL~(K z8#W|aFF~GAah zS2^aYR01%8ZTv9zrG{1-d+@HhN%#g|g-YN8Cs){yPG!ME8#GjolB;34z5M-bet$)y z?1pGSN4+w|J$p0ZJ3zj00UbFLoLE0U-Y>(e)06DT%&IsG5Ho6U<+LmD5tU!n_jcA~ zW~S=vGAwck9pBoEh_%O#!Un?v8B3Ltv7}n9m4r*s5Nj!6K|!f^2Mj%h0XaUCC@eW) z(hx%gksL24P~>F{%mC|}3DD!`Bq0YDg*AdsfV3)*iGYs#6|uy<8VcIA)v^OrLcf4O zpa5k=m(Rux8H)l~JrpvTQ1MtN-Q6`lE>}OLaJ&(x;o|hl?J@qFUo|~N#<@@ z+&g8EVFh|+1Ph`XpsR2@dj*O$CA;gmm{M8{LlR=&l5ni7eh>S6qkWY_xYIaNFt;AEs=QqY)Jk^d!u7Xpj1Pi+d3*&-$o~uVV0a<;sgnSMB3F12j zVeN)t?T})frkp}`JZgEdN(pkj62~u(-@3*_l1)(uWn)FvRsgPGKegWyJ|(3&^)yMGqV{Xf#&^+i4m)a{)`R~$@~h64nb z0Kwh0;lqP#aJR}&<>w>f>Qg`kPBv3&pj*VJ4-}fjjZ{pJ-`fQbYTIalRvIKraadtBRWC>Q zw+{`ML+IxO>(ig&ezfv-ZEFRV3We+tDDXDYw%a){Jd!Xi&KNf|L(ohb!j|f~Imo4; zHCNq*0l+h^5MI!D89BUJqCW!r&-0j5qut3JBsIQ7j~c*FC9?VC*MH{2dc1YjwrbHN@&%b-(-Lp+0|o@GAtUQk ziAQ4HNmV6xv+1=&l^G7&M=@9Zk{?NDdFFPXoF!}G&}0{A$rNktSP$=TB6uFRiP{Jd zBTmfl1uWU9aJ)V9c;#?hCs?OhK6b7mF4bxtJXkglM3*1jqooX!7sT9A$ zp2xjXXp&Mx*cVrE8pM{QQ6PSEooD*WeF|6mCu{Q?xI0)W&oOc{_-*)dG``njeaJs0)TMA&TjY!FX)V*t z8JeyS{x0Q-Y8l~nrI?@dqxCz;1?8NRXpHAClBvJUJ$*bm`JXugk8!S1t+##*MN76j zL=a2P>Ugibq7)WtLPaEUrU==!Af5wlY4tI2771MVPdkw%w#J^=j&0C2TnC&&Bm!T1 zixlfTXz7lgl1xBmNZ$%dr zGzVg$@*aQGCfp6d_osxJIV6v-;cD6-1yb6T)P0+>Ul3l5aA+UDYt2-(Ar|fL72Y)V9U6B# zi@GMS+o+MMnTj7z(tlLU&e)%@X$oAt6kfl+Fg^apd#-eidXV%*m5Pz{klKn{p=n+E zD{)`)tJ($`Gmh#uFD?V*(?~u;32>!5>W{1>(}#m=%QT98w2U@tP3iCGqh9UPMj>|i zu^)*W&w07b-46y;YoQ929pjv&x%bo2Xg4^+Ch6k39nOuRTBs^byOHcnM6{qmDai>Z??YQbmOo zK`uKYHWzpKNfJ80Oqzwi-+@~%NelxPS;K^TBE$lX&EB^reNZ37YmyA34mz8NfED;2 zF}kPSjkL{_32@`3_QSmeqSPf)Q9MWl-ZvjNQBV~evzW#YuTFfhkbh#Y*##HUGsgA` z;MPc1a}Y_&<-k+;D?NpLpu5YmC5`xdMvD7O%Dk$hENsh~#`NjSB#67?)z&N@MPBcn z>M^E?^oxPh;PY71dx!~jqZ5|S_6}dEZs&h$o9s^A;GZ84<-~1y?Cc6C6Xa9f3Fj^+ z%xq{p4YF%x)@}1-oLX`JS4&*C%`Q#f{F{gfI|vCEdROAGV%;%1Ppic1`7!4nlk=ax zegPiP&U*!%g^k7|iim8I3rGCNe_$S=LctAA8gda#D{$zX+2QD6r`RgX$&nyf{btcW zN(_`5yk<9HX6{MrFD3E`J5tm6mZ)X7Z`1z#7r@wzRsXj}HP$L0XX+N_Ar_fxk$cakxP{R`f-KXzEsfI<0` zkKgaf_yFfWM>SaJ^{yVu!^n0|De65$y|v|E2+fB4vKwU9>|ax|;LzqwkJ9sXr##Vk z%PL1|iqqBXW_4LSu=EBvLvCJwMjo(huWNrhzNvF#p8Y6Kid3V8H~hCN3>PVu(ytCZ zC-?)$S6jre1=O~Pbi_&$YB@kg0Kw3=6U-h-8`wmMs-6Xacf`O-RO0xJYTl5s#OzqWQq=QnH{j1 zwMFqopg?{`M;(2Xt)v6NqkPE`c8SD$Hb=>bGPhmdUT&c9K62=$Cb`FQ?Bwr1=4Z2U!Lrvi=%iS zR@e(Mtf8lCo{+!npr15c{3wc-|GEvDcJB>VtI`=JxBtlxrq~>~X zMyT+N8+&12+AbcL`|wUucW-<%$b&~k^W!aBlU$LO9(1HCtK;qPn-x%jlxX6=nhHYN zPU*=UuNlZFov7s|w^#^k07I#ZJLoaIcpk-7$3%QtcIOM3reP&LAKDp{=pDpF>ql4K zwEozJ>0n_N%fTzK+vZM6BcQLoW>=v1&41#|nzNvdknNYLy99c>KVDSi9pE}I#Lpxa zI2Z3-{<^edr~-$>FX3?Y>(T{3`De(^<8oJX)vl3_liphPADSyV<0GdcW3 z-4sYKRot~B6dg72QznoNjX{>75$bjuS=zSkZ2qZ}Fdjzsc`Pk+o`$SkM931l^iRm|!V;k8X`+-n~q?9h|zvQ!y!`q}WQ>xBZjp?o?BHQ6X z3+mM9gR2qjq1X6B&B1LbwP#!oe1{{}@#lG;H$CSSy);#~KewWdpgYQZAv4H4EcPNO z2*^Sq9heXBZd6}f+y02z#L|OC^t6UTstm^hZr)3N(!;h)9-GxKnWkGZP^{2&1NF+PxhryU zg?gF`yoK}Kw?dKOODBuVE!$6Zh;&;FzGoyD)Z1sZedD$H_< zp;f7*M8J`Cw|;bt&XM?J_QlHPs9}FZrt0d#_kw~?tfk_^w4tWJu#RiIVn(_}U8(wb&J zw&x_ZqR%!*1JHv@+1%>d=hUyg(K|^L-ExRvG6|>3hH4S6G^K1bwVK}Tm5F8y+!4q1 zYtHui_xfsPN~M?D55|s=m-^#uH$Q007xb{W=k5ICVIY6nbD4dG8!iD-_98q{uT_r_ zp)js4v7Nd6n$V=Z?c6@%x9sQ7nv$9Z&LSE^I8yIjcGrQ-Gha;=yjCotS`&EvqQCbm zeHRIT!rE;~B8B&)&mnIR2_p{L6-{3MZfPUBu6=bvcXe`r(i(wu2`|7J+>DFwrHsQoLcOJ9DxjoNb;ReNzFvp{E%Wm*?7X zkMsn?=&jA-eSm?c{gcDW(#X^FeS7zCGHhc#v3hSVjcRwFKMybU4ZWh83r!1TYd8JNTFLk21;~y%*16tlHk`2%=vRZ1;?s_R7 zw&M2*Av){@Oy((+Iej9^(esdFYvJXMzA|!(?mDr5MrvHZeBE2y?Ek2s5+jW^8A?6@ z0ovJp^%RzKuBln^8s1UlcbKRRF~fKuREB@JSr4*>8Ycbvxw6t|{tv@c4y(i`HmkR< z0-|dvz`&4D=yJMqB6J97=q!g19qc+xubW6Xp=ciE>K9#!BkBGLQX-cOW>9V9K!Tvb z1lh1uV%^=zq-Mj?ukf+|ygnWpEx%bp-&chQt(Me{QHL_SPTJo|^Hx}q^d;fVNKKO7 z?v;S%7DGMLcK!6xo~z)*5^r}F8He&wUxp%kP237u`$emd`oR=Ly@H|i@pZHG7^kT* z#la0p?o-!r`P%Bf3zahkT7~yQ=$)HtmG;jq^m z&xw#OWVetE-ZJYj6`RDq-)`Gr(jQyZmo{qBUKXzqZHOuq9{Hq|Vi_yA_MEU&;m84I zGw1dtJT(d}1@K28a+cfH@rM^bjN$uvx4;d;RX8Fc@1$mlIxTU(E@H{|us*aeC_;Av zDGKwiYj2tr-E9hKg?Z{@SM%#XRsauVX%@AoJ?P;-0~F4fghl`pVCygn@i^(&M~J6Y zxk6jFn+kT_^~VZ%=zW-dt6}*zHT8q5>UJcBViPtk)|efkiWW4+sV-pMCRO!4U84Cg z;pY9~{q0TL1jFFMJSsmuok;n|i%%+@;xYuRijC$*^1^N{ocD)H={m$Mbk!NE!yDMH zk2OfdS=v!ct5YkrtPW*PY5?}#_WpU96Lpvf>nc6joVIJXm^)(0=`nC&JV_?f0?4wb zxG}~}bnTVIq;aDmEBcXd+2camaY18;CA+rpoz$7Iu5IsmrJ|XQ;3>|TbmZv0Xw!b$xoq|2AR0tl)c+Eg z!Ne49s@)Ota1dt{`lGD7ZP}6MZDh8dLX`QwlJac1QH(OQ3aMcg3mp&rJ)6mB)MR0o zB(2eS|6&C6kMHjYp|!#z2!laMg)~uxK+VZY_edur{P(wqhuFgnR-Hrkw^#>wi(+$@ zuOdoR;bmJhmHJkjKf1zq*{It?$L{vtqm0S_(^)YgMuL>;C_bfD0{Bx`HKYZ9+?)g! ziJ0>)E<5p{H1yfOt(~kltLhYV`tsjTHn*f1W->V3ookA}&tL25vi^uXK(539j>r&G z{@SVre@M$_qHavX>YWlj9jna#=tGTbSJeuM@nCUf)f3rJ0O5&lm>C__{8hfF9^g`5 z(j?9%+*^D7*5lrE=)F>j&G@vx@vxphFy0_n{mgOzZ*#%4;at@=)wlW%*c* zrs{XTdb?>Wdt+Fxb0Hk6q&J%3XI^9jaOV9~Ka^slnQXC9KHw+eKYe_i(z7gYhRo8P zM!Zu1Gwqdzp6C$z)gEi{Q)FWe)LvzXE|W@Hnj(Bl@1I97T7sUw4A_daq+iC%9k7*t zthL-*QxdbRJ*Y>QHrZ~KcxI!0b!W~iO19tnx?(ipuG?#}znGJQCx^^h6XX@D3swyd zu9wkCja*pBHyoj86uje(@Wh|IV6C?-ZxFJtjdE*2{4S)IdqPxWu*nhN+{IU7e{<`H8?u1wrPfzkw#w8hgF z$P}0w1eyO)Q1XOyXV&#@xw)Ac7@3%$FdjD*! z7z}8zScg_7@TO>!LdUMWBtFbpr1D#Hq#z=YAIJd%SR}8kN#yJotjRl`E+qG)kG6CB z(zCeWNYPT>ZGtyrI%==_K@I0>iyH2urI8W_#@f?idk{4q5 ztB0UM4e%GUz~k{8nj9E`N_wy3z4#{4M00oIn2Ht_Gpt?#ekyPfa(?uIZygIf-q`LON?Ur%q&` zzA@JkkRRG-yVV|u)s~1J^yuNCg_a{W@r+5yV*-KDwW(5sU)8iHwR^o6d1Bn^orNS% zQ~)Af+(V^9IebG6UX7yn$W;A?>#v=u%iLGF@vFZ-M;w=z@0C*#{Q5e!K*}KS{>pQ^ z0f)I`HDne^AwkCTtQE|AP&0YNdU}gBTGe9hX(r-yM>fKu+}FAZp+HQ`t@O9)3|uag z=C@N-NO>_X_?`C+)I%9rrQ!loAX9zi#v@b#)>r{lIQ-CK;L!n*Q3Cy_T-CC-eGlZW?6Vvd%?AB= zt{Y8LuYJ2zEOpg=7E=4GCW2I@@yp-ccbbTHB@tj()IZ+C2#pe!p;JuXFT~Ls5xXM^ zb4X0e_=gb`;LreVyOd>rt5|WJ6$Z~~vQpc8>1{5V6d}MGWB5RZT5T~(>|%*+~)zjwRb)&+eduJ`#mj>AyNBn9?vipJ?hyljcJHVFoy=4uUqJG zvEc~5EalX?FtF{hjM}fzVfuvgFTsf9t(ppNbsY-Y$2wD#fw!g(^b)(Yf#H^#S+msM z5bBS@!|dLRj{eL*%0&GVGa8+~GQAMxDW-+-DgKRSiuLKh zT&PMA2}fksE>^&>e>UUr_5!r$J6r z6>JFUa6X(NH*XAj{xik2UwFoFxWI7!G+32|H71YQ@B*V#{5-m0h4%YqQM&wgxjW1Y zFm^WADX_9LOgTLJny@2B4@AHe!XNddx&DG;ygg}49jxZ>E_`f21pQPC-@f6HA`-1* z5BN7lDEn7?&a49-3kGY>8*+O=USOfzs$OA-IMi*#OUR{t?&tbM>VgG!9xBXODr_}5 zjmrviwL@@5Y^GD7St<{-dSKBWUiq)t;f)HYK4!LHH{SY+09Xp!n83jTI>LF}87}I` z5n#wUh1BKBF1UspIWy~}b5%OGd43IGq%}>5Ns~W&68l!p+v$wF9@=+}qBC??<(FXR z>OE6?rAU0GTbcoostrjEe+-oq+p0a86Z)dZRX)4GH!SK9W07dbOv{?5 z!7Ie4Zn(-4+x%6r5YVCj`9!9`D7*_;(At0Pof$sYrF(P9K;(a1u*WW~1Oy%{ zk+yZ+8kVd@<~&WZ!z>M^wGkpX}iy&TD4l6##=;2Dx*t_*j2X)1l?|$Ad=9; ztg_k0c$_Zb$5kE|Q>KM>iDDRK!_m;sv1it}D|RPp{%S1-u**hp%7*5`dFS zOUJmibA?mt-YDfX2k=btjpZeVG6g~%4=S|e^=tDIq0!^ayBpuuyOZ-uyv%$-!2+cAk+7@fMUHR0X%Rl-Q8wy*-LkZ-3R{<`iNe)h-JIyT#F=1` zr%Af=n`uoff&b;#c+-j1`(F`V&8&k#g>R7!vzwLws^^>2JnIVNED$ctCF0IE<~t2=S2 z(RsuR)wnbPM=;D84iMRexJYKKuG7Gg3 z9O=Mb=&)DGJeCz3<9l-F=48_OytW_)Z`FKJsnHvJ2Zmm&6bd+O_T1n>l-kRiAhD^` z4v`su9y2>=RTs^(x=C3AaF&K*egy=Q2ag24rSE^)=G+Yd-25Kfh+atn#YTVfDp~R_>kMf4n349i)Fh@%jtnsywKD?){7S+WWp zL-eO*1_-sDX|?#O!n1u0(A!xT;FsrG5i-`2vQs8*dM$IQB?w&-f~1IynKd}CF_z}Y z?P#~3#!5r>P-gBuZ)bd@TUI0w!}7{?r6Yg+E;#)VVgb+zor?XjW2i!YZhVQTizy6~ z0;{g_lOt8QU5=`=GP0@{kIsXmz4c~TISlhkfezCGn*}}tja%s%Q2VW*KkPetU@Kkb zoU`g`$@JoY*f_)M@_ZcqY>Nhuuam*Jp;z90W&#gi*KixG2M40=SmMhRQ~PG6zOLU4 z+_4zq6L+r298Su9rijqox--?l<6!MxaMMkrYh>|!&zh20E_S^g$WqJ(Rb{tW*F_}F?gK$JO) z&wAB3y4~~Ig4V~!9Nxg9s|0zAi(JZ+vr_y-Ht8BPBKVI*Yds5ivM*ir`o^P3p5Q2> z(d+d}X!9+Z_q(ZK!zi&7o5VwheI3x#MN9BMkiw|Z1;YeQx?P1fb6luHUEd8tRIp%a`Y>EyWG$L=RMqDXD+bK;LYrm< zd)-u_B@`X`cg%a$NcJk#zxR=^MHpa|Ejy2~pYKLbCwn#LfpByCeRcNI>p&evQBp++ z>|e)_RM_1^cSDJJoUzXUk?hK_Twg~dVV5|B;q{ejd(&QzW_ZCby6-N^9z@i!gQMb2 zv>v6l;(@(0Q~L7{8dj%NCg$mBhQ7+FkkL}$0_tW&Z;QG!h8P;W)8gC z=D8Czt3RpKz=-^62W_bgh7;Ea0uz=-9Q_3*2$ou--&Ci+&ube9k6`jT&U5R zLdk97-O<(evi<6Q$OLtfzgA9ewUmErK9JX)Xn)jQt>ofTj@0T+2P0V|YMX6{(=SFF zm&M|H+SOZNR&9w#jf7Y8NUIf-;+A3>4k-bP)x)Q>BFJD#0+%0JPXLjfagKWz$HJJ0 zRSh13xxd zU>E=Ow!jypfT`MDn%fuT)N8d(obzM$A3D_jE`_*v1`p@)RJ!cz8XGI2aGm~)lf+dW z!MeS_T20YVzGF&2zaHP6;{kp2LMhH;3jpWjr1J;F?G&Ql7RNxUyg0xP`8=sHTigb} zo=_7pDuwBIgf9p<>&1BGs^ae=g?5x||uCMvD^4k%;R{%tw z7ExQJxK$OzFKe{%W|jz{h+yE^`cI$WLsDtMnj=9Fnfmnlf3TqxeQ~!)S>3FBMBsF!WwC zGtxaC?tkk=r-w|V^;W$=KD5D5V(u9{*q#{_%afVyz27&9F_mlLIH!`@GmOWk+;p?K z>TS}y!+QyPB={6%``4|hnf?d{_)i3;yU&_3m)HuYCHl7g!mR&l2n$ID?eL;wmET@= zTv37-e18A5eA;0o&=wEY{;FtvDc*U44oa2)lGEt$Z&saEb1?s5wyExAy@17AH&?eN zJ{3SAMg$}U0ZV57zx=4@2Oz-)^orilsTMwF;FZ3%E#xm!=v@zTG0chLKAjbkDxYcG z$?N0%W3r%hD% zuPk|#vnRxSH8)+?GtMm6__xu0ayz>{cSQeOU#JOabPK2 zWO=8r%N`@l@6%0eDvNxJV7CeCi8&8;OD%aC=ECl_AK79x5+*~QI4>!^S}cd5qXEEG zEzB~omWYjaPW?_S3_Cq-0L)Xd@xh#Bs!a7v5Sojf7m`6jB=WbC{ z2p>|o@zVUG`s4A6Z5pr*lh<4*7U##%=gHcQU@A?8-U^lhR1ew!ZH4iR{@>2*jSKLo zn~iPT^)IS++zNRk;5`^iR_Jv86Ch-KUpJs<0-F3W^D2F8E9G0?bB&qdnXigzn%l4+ zt}e@O>~y}9Kgq~)R!aMzzrOg-4zk!@^3jh_&$rMWj!^h?j$y6Cbpx-a5Pou-luj|L zC}Sy!lg;2dXa=l4MY9?N&SY-4C{a#@bBusAw+dE+kY#?eNj)!Z=Ec($i!Yk-ZV}lo z9qfUxvR4w_xHH~97CWGo6C4G;MJLUAeYvx&!_!4(iPyTIz@fy+=)$a?9~XbtVQE-4 z%Zv^6BIox>oVjyMfeJV#Ltj4D5j2_M-|3go7_jV1LpgTvVhgrI6{bSYgrtnV=d+S+ z%6|5wEnne6MNY9}mTb_hika>Dd@}!;4#tpGLO!B)k&^`Y5~D?FIoR0#;{f$NNQz>6xqu_ddx1+uNVXOa)ZrA4vE^q1zL`&A$G*Ex*c| z4_yS>1Avts26WS)R6|g7>}+`v`QpslzF=prlStUZ0-%l3d94I*<~mp&fzbma?N4P2 zLqHFBQ{#(=3$32Fk$PJDHUW|eK+wyysA}dAvEoa z;u#9*iPoc=z3NszJ&wN$>^PbXJjiz}QWMW+SV_<}dxC4{=Ze@BP>N{Tau9GH#-8{+ z{KpBxmHIkfe+fZeSOTq>_ z^M1N1un32evV`Nu8sOj(tB?Sy4X|1fCG$oZT+OhxFJ7w7Q4r_GwJSPK)?HMcQP4=W z;_4!ZBo8&p)?8 zQpb@riSMm=+Lrm>0dlxNN$L?%6mvOkI;A}6p&W2v-W08BL!d0}^f@o4W`9l(OD(0) zBr*HwDwZ#U{|GqSr@_vbZmT-wJmrk5=7{Px%qWseZWwFF%6s>lDnf%CMjA(wKQUVi zE*AP=h(frur*vE&OeK!+D0V2Z^b)oDeSH;7kCLXK)RuTAcmFr>2_xmG0y*g=ct?{L zF}ehIyTVgND|{YxIoco#De7(!VPriJG#=d)gj4{l{`=NVT5aeLw};{(x0ow6qWrWb ztCrmrdl^vx68H!kTn`#sAQZrN`@(Dv>W#c#`!s${on`HME3 zs8$!D#VX{CXke;umIx8D$A40|S6u829=XeS_+))BEK^|kFSaYnbS=^5p(elCv9^jr znpohVxS^%Si7#@C8QLqJJS{&b*~TPTV=T)rgaawVAbvbnc8 zAWFlKLR_MCw^>AndSIC0(!)<=rpeH{q%oAuII>cO|3X$z_yLlW)&fkwc(oLVmBL)4 zk^n@jm4w*^#)+g?%)8+sMbNtBIiiWT+61A$XW`57JUY>y+aZr7gC;uO0TtBY)dH*E z#V+ zZ-$dN4`5H%AY(R+#boYYJ<^83fX{9y;g-&x6GZoDNsJ+N4ABJIFsis_5u65dgt)b| z23LyZGWU%L$Egw8>vL5opMB~N1JstOM`)3BG#I3glt#L)1=${>-t&N~IAhuEByRap zNv;7!X`#z+C~ACkkvp(SZSQ;Id9-Dw-lK-AFoK`+QsiR&0nUc;y)>raOFC0duQ2{s z(e$ckZKVJ^2O6M0=@&KV7-qTrl~NicobP=;P2bMo7k3H&5YUNP*T*HMyjclnxr^rdB9F!Hsd-$Zcb7>q_Hce> z-*$YPVQM(Ut&NH;Ckp!=oagA6_)kug z1Z>*>^`#4Bk{Twys~EZkCP>U=(Gs`0^qpwh%fkUSho4{qIt zG)l&lyj$%MCCm0CHZfTaQdnt70;)c0wb|f9CWR&l>0w4}iUWg`)KkCH${BsJr9ATfenX+2 z0e3q1cWBmB-Vp1kpe#pfFI+Gfdx@ket?#m+QkQN=rr<><7Z*IGr7%lI6cIYHEi+T} zBpXp>h9ofJ;{Uel>)IMYp|&K|`4=!K0x44D1k@qek|_Vb{a@XIw^8pqLcy+YiUyam R*N1;gURvdArKD-l{{TJ8uVDZH diff --git a/scripts/generate-og-images.mjs b/scripts/generate-og-images.mjs index d420dc2..ae435e7 100644 --- a/scripts/generate-og-images.mjs +++ b/scripts/generate-og-images.mjs @@ -63,12 +63,7 @@ const pages = [ line1: "AWS Development Services", line2: "Cloud-Native Apps & Infrastructure", }, - { - file: "docker-development.png", - line1: "Docker Consulting Services", - line2: "Containerization & DevOps", - }, - { +{ file: "golang-development.png", line1: "Go Development Services", line2: "Microservices & Cloud-Native APIs", From 94ba7d6fcaeee7e35bd97078a1d9fdf6e817c818 Mon Sep 17 00:00:00 2001 From: vibemarketerpromax Date: Wed, 4 Mar 2026 16:09:11 +0530 Subject: [PATCH 3/4] Add section parity for 8 new tech pages Add hero CTAs, trust badges, intro statements, stats, "Why [Tech]" sections, industry grids, decision tables, framework comparisons, custom stack tables, mid-page CTAs, "What you get" blocks, pricing lines, and FAQ titles for TypeScript, PostgreSQL, AWS, Go, MongoDB, Java, Kotlin, and Swift pages. --- app/services/[slug]/ExpertisePageClient.tsx | 149 ++++- app/services/[slug]/ExpertisePageHero.tsx | 65 +++ .../[slug]/slug-sections/CustomStackTable.tsx | 507 ++++++++++++++++++ .../slug-sections/FrameworkComparison.tsx | 408 ++++++++++++++ .../[slug]/slug-sections/IntroStatement.tsx | 157 ++++++ .../slug-sections/TechDecisionTable.tsx | 427 +++++++++++++++ .../[slug]/slug-sections/TechIndustries.tsx | 328 +++++++++++ .../[slug]/slug-sections/WhyTechnology.tsx | 249 +++++++++ 8 files changed, 2269 insertions(+), 21 deletions(-) diff --git a/app/services/[slug]/ExpertisePageClient.tsx b/app/services/[slug]/ExpertisePageClient.tsx index 44c98f3..4999923 100644 --- a/app/services/[slug]/ExpertisePageClient.tsx +++ b/app/services/[slug]/ExpertisePageClient.tsx @@ -91,6 +91,22 @@ const bookingSubtext: Record = { "Talk directly with engineers, not sales. We'll assess fit and give honest next steps.", "thanos-long-term-storage": "Talk directly with engineers, not sales. We'll assess your monitoring stack and give honest next steps - even if that means you don't need Thanos yet.", + "typescript": + "Tell us about your TypeScript project. Whether it's a new build, migration from JavaScript, or improving type safety across your stack, we'll discuss architecture and give honest next steps.", + "postgresql": + "Tell us about your database challenges. Whether it's schema design, performance tuning, or migrating to PostgreSQL, we'll assess your data architecture and give honest next steps.", + "aws": + "Tell us about your cloud infrastructure needs. Whether it's a new deployment, migration to AWS, or cost optimization, we'll discuss architecture and give honest next steps.", + "golang": + "Tell us about your Go project. Whether it's microservices, CLI tooling, or a backend migration, we'll discuss architecture and give honest next steps.", + "mongodb": + "Tell us about your MongoDB project. Whether it's schema design, performance optimization, or migrating from another database, we'll assess your data architecture and give honest next steps.", + "java": + "Tell us about your Java project. Whether it's enterprise modernization, Spring Boot microservices, or a new build, we'll discuss architecture and give honest next steps.", + "kotlin": + "Tell us about your Kotlin project. Whether it's a new Android app, migrating from Java, or Kotlin Multiplatform, we'll discuss architecture and give honest next steps.", + "swift": + "Tell us about your iOS project. Whether it's a new app, migrating from Objective-C, or expanding to watchOS/tvOS, we'll discuss architecture and give honest next steps.", }; // Technology logo paths for the "What you get" section @@ -103,6 +119,14 @@ const technologyLogos: Record = { dotnet: "/technologies/dotnet-logo.svg", flutter: "/technologies/flutter-logo.svg", "react-native": "/technologies/react-logo.svg", + typescript: "/technologies/typescript-logo.svg", + postgresql: "/technologies/postgresql-logo.svg", + aws: "/technologies/aws-logo.svg", + golang: "/technologies/golang-logo.svg", + mongodb: "/technologies/mongodb-logo.svg", + java: "/technologies/java-logo.svg", + kotlin: "/technologies/kotlin-logo.svg", + swift: "/technologies/swift-logo.svg", }; // "What you get" content per technology - used in the hire section @@ -155,6 +179,73 @@ const whatYouGetContent: Record )} - {["react", "nextjs", "nodejs", "python", "angular", "flutter", "react-native"].includes(expertise.slug) && ( + {["react", "nextjs", "nodejs", "python", "angular", "flutter", "react-native", "typescript", "postgresql", "aws", "golang", "mongodb", "java", "kotlin", "swift"].includes(expertise.slug) && ( )} -

+
@@ -272,17 +363,17 @@ export default function ExpertisePageClient({ {expertise.slug === "dotnet" && } {/* Non-dotnet tech pages: Industries section */} - {["react", "nextjs", "nodejs", "python", "angular", "flutter", "react-native"].includes(expertise.slug) && ( + {["react", "nextjs", "nodejs", "python", "angular", "flutter", "react-native", "typescript", "postgresql", "aws", "golang", "mongodb", "java", "kotlin", "swift"].includes(expertise.slug) && ( )} {/* Tech slugs: Decision tables (dynamically imported) */} - {["nodejs", "react", "python", "angular", "flutter", "react-native"].includes(expertise.slug) && ( + {["nodejs", "react", "python", "angular", "flutter", "react-native", "typescript", "postgresql", "aws", "golang", "mongodb", "java", "kotlin", "swift"].includes(expertise.slug) && ( )} {/* Tech slugs: Framework comparisons (dynamically imported) */} - {["react", "python", "flutter", "react-native", "nodejs", "nextjs", "angular", "dotnet"].includes(expertise.slug) && ( + {["react", "python", "flutter", "react-native", "nodejs", "nextjs", "angular", "dotnet", "typescript", "postgresql", "aws", "golang", "mongodb", "java", "kotlin", "swift"].includes(expertise.slug) && ( )} @@ -296,10 +387,10 @@ export default function ExpertisePageClient({ )} {pageData.process && ( -
+
@@ -340,7 +431,7 @@ export default function ExpertisePageClient({ { category: "CI/CD & Monitoring", items: ["GitHub Actions", "Vercel Analytics", "Sentry", "DataDog"] }, ]} /> - ) : ["nodejs", "react", "python", "angular", "react-native", "flutter", "prometheus-monitoring", "thanos-long-term-storage", "istio-consulting"].includes(expertise.slug) ? ( + ) : ["nodejs", "react", "python", "angular", "react-native", "flutter", "prometheus-monitoring", "thanos-long-term-storage", "istio-consulting", "typescript", "postgresql", "aws", "golang", "mongodb", "java", "kotlin", "swift"].includes(expertise.slug) ? ( ) : ( + {["dotnet", "nextjs", "nodejs", "react", "python", "angular", "flutter", "react-native", "prometheus-monitoring", "istio-consulting", "thanos-long-term-storage", "typescript", "postgresql", "aws", "golang", "mongodb", "java", "kotlin", "swift"].includes(expertise.slug) && ( +

- {expertise.slug === "flutter" || expertise.slug === "react-native" + {expertise.slug === "flutter" || expertise.slug === "react-native" || expertise.slug === "kotlin" || expertise.slug === "swift" ? <>Let's Talk About Your App : expertise.slug === "prometheus-monitoring" ? <>Not Sure If Prometheus Is Right for Your Stack? @@ -408,7 +499,7 @@ export default function ExpertisePageClient({ ? <>Prometheus Metrics Growing Faster Than Your Retention Budget? : expertise.slug === "istio-consulting" ? <>Not Sure If You Need a Service Mesh? - : <>Discuss Your {expertise.slug === "nextjs" ? "Next.js" : expertise.slug === "nodejs" ? "Node.js" : expertise.slug === "react" ? "React" : expertise.slug === "python" ? "Python" : expertise.slug === "angular" ? "Angular" : ".NET"} Project + : <>Discuss Your {expertise.slug === "nextjs" ? "Next.js" : expertise.slug === "nodejs" ? "Node.js" : expertise.slug === "react" ? "React" : expertise.slug === "python" ? "Python" : expertise.slug === "angular" ? "Angular" : expertise.slug === "typescript" ? "TypeScript" : expertise.slug === "postgresql" ? "PostgreSQL" : expertise.slug === "aws" ? "AWS" : expertise.slug === "golang" ? "Go" : expertise.slug === "mongodb" ? "MongoDB" : expertise.slug === "java" ? "Java" : expertise.slug === "kotlin" ? "Kotlin" : expertise.slug === "swift" ? "Swift" : ".NET"} Project }

@@ -432,6 +523,22 @@ export default function ExpertisePageClient({ ? "We'll audit your current setup and tell you whether Thanos is the right move - or if something else makes more sense." : expertise.slug === "istio-consulting" ? "We'll give you an honest assessment. Sometimes the answer is \"not yet\" or \"use something simpler.\" We'd rather tell you that upfront." + : expertise.slug === "typescript" + ? "Whether it\u2019s a new build, JavaScript migration, or improving type safety, we\u2019re happy to talk through your situation." + : expertise.slug === "postgresql" + ? "Whether it\u2019s schema design, performance tuning, or migrating databases, we\u2019re happy to talk through your situation." + : expertise.slug === "aws" + ? "Whether it\u2019s a new deployment, cloud migration, or cost optimization, we\u2019re happy to talk through your situation." + : expertise.slug === "golang" + ? "Whether it\u2019s microservices, CLI tools, or a backend migration to Go, we\u2019re happy to talk through your situation." + : expertise.slug === "mongodb" + ? "Whether it\u2019s schema design, performance optimization, or migrating databases, we\u2019re happy to talk through your situation." + : expertise.slug === "java" + ? "Whether it\u2019s enterprise modernization, Spring Boot microservices, or a new build, we\u2019re happy to talk through your situation." + : expertise.slug === "kotlin" + ? "Whether it\u2019s a new Android app, Java migration, or Kotlin Multiplatform, we\u2019re happy to talk through your situation." + : expertise.slug === "swift" + ? "Whether it\u2019s a new iOS app, Objective-C migration, or expanding to watchOS/tvOS, we\u2019re happy to talk through your situation." : "Whether modernizing legacy systems or building new, we\u2019re happy to talk through your situation."}

+
{/* "What you get" block with technology logo - before EngagementModels */} {whatYouGetContent[expertise.slug] && (
@@ -544,7 +651,7 @@ export default function ExpertisePageClient({ /> {/* Node.js / React / Python / Angular / Flutter: Pricing line + CTA after EngagementModels */} - {["nodejs", "react", "python", "angular", "flutter", "react-native"].includes(expertise.slug) && ( + {["nodejs", "react", "python", "angular", "flutter", "react-native", "typescript", "postgresql", "aws", "golang", "mongodb", "java", "kotlin", "swift"].includes(expertise.slug) && (
{pageData.faqs.length > 0 && ( -
+
diff --git a/app/services/[slug]/ExpertisePageHero.tsx b/app/services/[slug]/ExpertisePageHero.tsx index e0bee0c..f72495f 100644 --- a/app/services/[slug]/ExpertisePageHero.tsx +++ b/app/services/[slug]/ExpertisePageHero.tsx @@ -15,12 +15,21 @@ const heroCTAMap: Record = { "prometheus-monitoring": { text: "Talk to a Prometheus Engineer", href: "#book-call" }, "istio-consulting": { text: "Talk to an Istio Engineer", href: "#book-call" }, "thanos-long-term-storage": { text: "Talk to a Thanos Engineer", href: "#book-call" }, + "typescript": { text: "Talk to a TypeScript Engineer", href: "#book-call" }, + "postgresql": { text: "Talk to a PostgreSQL Engineer", href: "#book-call" }, + "aws": { text: "Talk to an AWS Engineer", href: "#book-call" }, + "golang": { text: "Talk to a Go Engineer", href: "#book-call" }, + "mongodb": { text: "Talk to a MongoDB Engineer", href: "#book-call" }, + "java": { text: "Talk to a Java Engineer", href: "#book-call" }, + "kotlin": { text: "Talk to a Kotlin Engineer", href: "#book-call" }, + "swift": { text: "Talk to a Swift Engineer", href: "#book-call" }, }; const noSecondaryCTASlugs = [ "ai-engineering", "ai-agents", "dotnet", "nextjs", "nodejs", "react", "python", "angular", "flutter", "react-native", "prometheus-monitoring", "istio-consulting", "thanos-long-term-storage", + "typescript", "postgresql", "aws", "golang", "mongodb", "java", "kotlin", "swift", ]; const checkSvg = ( @@ -146,6 +155,62 @@ const heroChildrenMap: Record = { { href: "#fit", text: "Is Thanos right for you?" }, ], }, + "typescript": { + badges: ["Free architecture review", "30-minute call", "Talk to engineers, not sales"], + links: [ + { href: "#services", text: "See our services" }, + { href: "#hire", text: "Need developers on your team?" }, + ], + }, + "postgresql": { + badges: ["Free database assessment", "30-minute call", "Talk to engineers, not sales"], + links: [ + { href: "#services", text: "See our services" }, + { href: "#fit", text: "Is PostgreSQL right for you?" }, + ], + }, + "aws": { + badges: ["Free architecture review", "30-minute call", "Talk to engineers, not sales"], + links: [ + { href: "#services", text: "See our services" }, + { href: "#fit", text: "Is AWS right for you?" }, + ], + }, + "golang": { + badges: ["Free architecture review", "30-minute call", "Talk to engineers, not sales"], + links: [ + { href: "#services", text: "See our services" }, + { href: "#fit", text: "Is Go right for you?" }, + ], + }, + "mongodb": { + badges: ["Free database assessment", "30-minute call", "Talk to engineers, not sales"], + links: [ + { href: "#services", text: "See our services" }, + { href: "#fit", text: "Is MongoDB right for you?" }, + ], + }, + "java": { + badges: ["Free architecture review", "30-minute call", "Talk to engineers, not sales"], + links: [ + { href: "#services", text: "See our services" }, + { href: "#hire", text: "Need developers on your team?" }, + ], + }, + "kotlin": { + badges: ["No obligation", "30-minute call", "Talk to engineers, not sales"], + links: [ + { href: "#services", text: "See our services" }, + { href: "#hire", text: "Need developers on your team?" }, + ], + }, + "swift": { + badges: ["No obligation", "30-minute call", "Talk to engineers, not sales"], + links: [ + { href: "#services", text: "See our services" }, + { href: "#hire", text: "Need developers on your team?" }, + ], + }, }; export function ExpertisePageHero({ expertise }: { expertise: ExpertisePageForListing }) { diff --git a/app/services/[slug]/slug-sections/CustomStackTable.tsx b/app/services/[slug]/slug-sections/CustomStackTable.tsx index 7c9bd84..66c05ca 100644 --- a/app/services/[slug]/slug-sections/CustomStackTable.tsx +++ b/app/services/[slug]/slug-sections/CustomStackTable.tsx @@ -574,6 +574,513 @@ const dataMap: Record = { }, ], }, + typescript: { + type: "three-column", + title: "Our", + highlight: "TypeScript", + afterHighlight: "Stack", + subtitle: + "Every tool earns its place. Here\u2019s what we ship with and why.", + whyHeader: "Why", + rows: [ + { + layer: "Language", + tools: "TypeScript 5.x strict", + why: "Strict mode catches entire categories of bugs at compile time. Non-negotiable on our projects.", + }, + { + layer: "Framework", + tools: "React, Next.js, NestJS, Angular", + why: "React/Next.js for frontends, NestJS for backend structure, Angular for enterprise apps", + }, + { + layer: "Build", + tools: "Vite, Turbopack, SWC", + why: "Sub-second HMR with Vite, Turbopack for Next.js, SWC for fast transpilation", + }, + { + layer: "ORM / Query", + tools: "Prisma, Drizzle, TypeORM", + why: "Prisma for type-safe queries and migrations, Drizzle for edge runtimes, TypeORM for legacy codebases", + }, + { + layer: "Database", + tools: "PostgreSQL, MongoDB, Redis", + why: "Postgres for relational data, MongoDB for document workloads, Redis for caching and queues", + }, + { + layer: "API Style", + tools: "REST, GraphQL, tRPC", + why: "REST for public APIs, GraphQL for frontend flexibility, tRPC for end-to-end type safety without codegen", + }, + { + layer: "State Management", + tools: "Zustand, Redux Toolkit, TanStack Query", + why: "Zustand for simple state, Redux Toolkit for complex flows, TanStack Query for server state", + }, + { + layer: "Forms", + tools: "React Hook Form, Zod", + why: "Performant forms with schema-based validation. Zod schemas shared between client and server.", + }, + { + layer: "Testing", + tools: "Vitest, Playwright, Jest", + why: "Vitest for unit tests, Playwright for E2E, Jest for legacy projects and Node.js services", + }, + { + layer: "Hosting", + tools: "Vercel, AWS, Cloudflare", + why: "Vercel for Next.js, AWS for containers and serverless, Cloudflare for edge-first apps", + }, + { + layer: "CI/CD", + tools: "GitHub Actions, Docker", + why: "Automated type checking, tests, and deployments on every merge", + }, + { + layer: "Monitoring", + tools: "Sentry, Datadog", + why: "Error tracking with full source map support, APM for performance bottlenecks", + }, + ], + bottomNote: + "TypeScript is not optional on our projects. Strict mode, no any escapes, shared Zod schemas between frontend and backend. The type system is the first line of defense, not an afterthought.", + }, + postgresql: { + type: "three-column", + title: "Our", + highlight: "PostgreSQL", + afterHighlight: "Stack", + subtitle: + "Every tool earns its place. Here\u2019s what we ship with and why.", + whyHeader: "Why", + rows: [ + { + layer: "Database", + tools: "PostgreSQL 17", + why: "Latest stable with incremental backup, improved JSON handling, and better query performance", + }, + { + layer: "Extensions", + tools: "PostGIS, pg_vector, TimescaleDB, Citus", + why: "PostGIS for spatial data, pg_vector for AI embeddings, TimescaleDB for time series, Citus for horizontal scaling", + }, + { + layer: "ORM / Query", + tools: "Prisma, SQLAlchemy, TypeORM, Drizzle", + why: "Prisma for TypeScript, SQLAlchemy for Python, TypeORM/Drizzle depending on runtime constraints", + }, + { + layer: "Migration", + tools: "Flyway, Alembic, Prisma Migrate", + why: "Flyway for Java/enterprise, Alembic for Python stacks, Prisma Migrate for TypeScript", + }, + { + layer: "Monitoring", + tools: "pganalyze, pg_stat_statements, Grafana", + why: "pganalyze for query optimization insights, pg_stat_statements for bottleneck identification, Grafana for dashboards", + }, + { + layer: "Replication", + tools: "Streaming replication, Patroni, pgBouncer", + why: "Streaming replication for HA, Patroni for automated failover, pgBouncer for connection pooling", + }, + { + layer: "Backup", + tools: "pg_dump, Barman, WAL-G", + why: "pg_dump for logical backups, Barman for physical backup management, WAL-G for WAL archiving to cloud storage", + }, + { + layer: "Cloud Managed", + tools: "AWS RDS, Aurora, Cloud SQL, Azure Database", + why: "RDS for straightforward hosting, Aurora for high throughput, Cloud SQL and Azure for multi-cloud", + }, + { + layer: "Infrastructure", + tools: "Docker, Kubernetes, Terraform", + why: "Containerized deployments with infrastructure as code for reproducible environments", + }, + { + layer: "CI/CD", + tools: "GitHub Actions, automated migration testing", + why: "Every migration runs against a test database before touching production", + }, + ], + bottomNote: + "PostgreSQL handles relational data, vector search, geospatial queries, and time series in a single engine. We use extensions instead of adding databases. Fewer moving parts means fewer things to break at 3 AM.", + }, + aws: { + type: "three-column", + title: "Our", + highlight: "AWS", + afterHighlight: "Stack", + subtitle: + "Every tool earns its place. Here\u2019s what we ship with and why.", + whyHeader: "Why", + rows: [ + { + layer: "Compute", + tools: "EC2, ECS, Lambda, Fargate", + why: "EC2 for full control, ECS/Fargate for containers without cluster management, Lambda for event-driven workloads", + }, + { + layer: "Storage", + tools: "S3, EBS, EFS", + why: "S3 for object storage, EBS for block storage on EC2, EFS for shared file systems across containers", + }, + { + layer: "Database", + tools: "RDS, Aurora, DynamoDB, ElastiCache", + why: "RDS for managed Postgres/MySQL, Aurora for high throughput, DynamoDB for key-value at scale, ElastiCache for Redis", + }, + { + layer: "Networking", + tools: "VPC, ALB, CloudFront, Route 53", + why: "VPC for network isolation, ALB for load balancing, CloudFront for global CDN, Route 53 for DNS", + }, + { + layer: "Security", + tools: "IAM, KMS, WAF, GuardDuty", + why: "Least-privilege IAM policies, KMS for encryption, WAF for web protection, GuardDuty for threat detection", + }, + { + layer: "Containers", + tools: "ECS, EKS, ECR", + why: "ECS for simpler orchestration, EKS when you need full Kubernetes, ECR for private container registries", + }, + { + layer: "Serverless", + tools: "Lambda, API Gateway, Step Functions, EventBridge", + why: "Lambda for compute, API Gateway for endpoints, Step Functions for workflows, EventBridge for event routing", + }, + { + layer: "Monitoring", + tools: "CloudWatch, X-Ray, CloudTrail", + why: "CloudWatch for metrics and alarms, X-Ray for distributed tracing, CloudTrail for audit logs", + }, + { + layer: "IaC", + tools: "Terraform, CDK, CloudFormation", + why: "Terraform for multi-cloud, CDK for TypeScript-native IaC, CloudFormation for AWS-only stacks", + }, + { + layer: "CI/CD", + tools: "CodePipeline, GitHub Actions", + why: "CodePipeline for AWS-native workflows, GitHub Actions for cross-platform builds and deployments", + }, + { + layer: "AI/ML", + tools: "SageMaker, Bedrock, Comprehend", + why: "SageMaker for custom model training, Bedrock for managed foundation models, Comprehend for NLP", + }, + ], + bottomNote: + "We default to the simplest AWS service that solves the problem. Fargate over EKS unless you need Kubernetes. Lambda over containers for event-driven workloads. The goal is less infrastructure to manage, not more services on the bill.", + }, + golang: { + type: "three-column", + title: "Our", + highlight: "Go", + afterHighlight: "Stack", + subtitle: + "Every tool earns its place. Here\u2019s what we ship with and why.", + whyHeader: "Why", + rows: [ + { + layer: "Language", + tools: "Go 1.23+", + why: "Range-over-func iterators, enhanced servemux routing, and continued performance improvements", + }, + { + layer: "Web Framework", + tools: "Gin, Echo, Chi, Fiber", + why: "Gin for established APIs, Echo for middleware-heavy services, Chi for stdlib compatibility, Fiber for raw throughput", + }, + { + layer: "gRPC", + tools: "gRPC-Go, Protocol Buffers", + why: "Low-latency service-to-service communication with code-generated type-safe clients", + }, + { + layer: "ORM / Query", + tools: "GORM, sqlc, pgx", + why: "GORM for rapid development, sqlc for compile-time SQL validation, pgx for raw Postgres performance", + }, + { + layer: "Database", + tools: "PostgreSQL, Redis, MongoDB", + why: "Postgres for relational data, Redis for caching and pub/sub, MongoDB for document workloads", + }, + { + layer: "Message Queue", + tools: "Kafka, NATS, RabbitMQ", + why: "Kafka for high-throughput event streaming, NATS for lightweight messaging, RabbitMQ for reliable task queues", + }, + { + layer: "Testing", + tools: "Go testing, testify, gomock", + why: "Standard library testing for most cases, testify for assertions, gomock for interface mocking", + }, + { + layer: "API Style", + tools: "REST, gRPC, GraphQL via gqlgen", + why: "REST for public APIs, gRPC for internal services, gqlgen for type-safe GraphQL from Go structs", + }, + { + layer: "Hosting", + tools: "AWS ECS/Lambda, GCP Cloud Run, Kubernetes", + why: "ECS for containers, Lambda for event-driven, Cloud Run for fast autoscaling, Kubernetes for complex orchestration", + }, + { + layer: "CI/CD", + tools: "GitHub Actions, Docker, GoReleaser", + why: "GitHub Actions for pipeline automation, Docker for consistent builds, GoReleaser for binary distribution", + }, + { + layer: "Monitoring", + tools: "Prometheus, Grafana, OpenTelemetry", + why: "Prometheus for metrics collection, Grafana for dashboards, OpenTelemetry for distributed tracing", + }, + ], + bottomNote: + "Go compiles to a single static binary with no runtime dependencies. That means smaller containers, faster cold starts, and fewer things to debug in production. We reach for Go when performance and operational simplicity matter more than ecosystem breadth.", + }, + mongodb: { + type: "three-column", + title: "Our", + highlight: "MongoDB", + afterHighlight: "Stack", + subtitle: + "Every tool earns its place. Here\u2019s what we ship with and why.", + whyHeader: "Why", + rows: [ + { + layer: "Database", + tools: "MongoDB 8.x", + why: "Queryable encryption, improved aggregation performance, and native vector search support", + }, + { + layer: "Drivers", + tools: "MongoDB Node.js Driver, PyMongo, Mongoose", + why: "Native drivers for each language with full feature support and connection pooling", + }, + { + layer: "ODM", + tools: "Mongoose, Prisma, Motor", + why: "Mongoose for schema validation in Node.js, Prisma for type-safe access, Motor for async Python", + }, + { + layer: "Atlas", + tools: "MongoDB Atlas, Atlas Search, Atlas Data Federation", + why: "Atlas for managed hosting, Atlas Search for full-text without Elasticsearch, Data Federation for cross-source queries", + }, + { + layer: "Aggregation", + tools: "Aggregation Pipeline, Atlas Charts", + why: "Pipeline for complex data transformations in-database, Charts for embedded analytics without BI tools", + }, + { + layer: "Change Streams", + tools: "Real-time data sync, event-driven pipelines", + why: "Push-based change notifications for real-time features without polling the database", + }, + { + layer: "Security", + tools: "Encryption at rest, field-level encryption, RBAC", + why: "Encryption at rest for compliance, field-level encryption for sensitive data, RBAC for least-privilege access", + }, + { + layer: "Monitoring", + tools: "MongoDB Atlas monitoring, Grafana, Datadog", + why: "Atlas monitoring for database-specific metrics, Grafana/Datadog for unified infrastructure dashboards", + }, + { + layer: "Backup", + tools: "Atlas backup, mongodump, Ops Manager", + why: "Atlas continuous backup for point-in-time recovery, mongodump for logical backups, Ops Manager for on-prem", + }, + { + layer: "Infrastructure", + tools: "Docker, Kubernetes, Terraform", + why: "Containerized replica sets for development parity, Terraform for provisioning Atlas clusters as code", + }, + ], + bottomNote: + "MongoDB is the right choice when your data model is document-oriented and schema flexibility matters. We use Atlas for managed infrastructure and lean on aggregation pipelines to keep processing in the database instead of the application layer.", + }, + java: { + type: "three-column", + title: "Our", + highlight: "Java", + afterHighlight: "Stack", + subtitle: + "Every tool earns its place. Here\u2019s what we ship with and why.", + whyHeader: "Why", + rows: [ + { + layer: "Language", + tools: "Java 21+ LTS", + why: "Virtual threads, pattern matching, record types. Modern Java is not the Java you remember.", + }, + { + layer: "Framework", + tools: "Spring Boot 3.x, Quarkus, Micronaut", + why: "Spring Boot for enterprise ecosystems, Quarkus for fast startup and native images, Micronaut for low memory footprint", + }, + { + layer: "ORM", + tools: "Spring Data JPA, Hibernate 6", + why: "Spring Data JPA for repository abstraction, Hibernate 6 for full ORM control and advanced mappings", + }, + { + layer: "Database", + tools: "PostgreSQL, MongoDB, Redis", + why: "Postgres for relational data, MongoDB for document workloads, Redis for caching and session storage", + }, + { + layer: "Message Queue", + tools: "Kafka, RabbitMQ, AWS SQS", + why: "Kafka for event streaming at scale, RabbitMQ for reliable task queues, SQS for serverless integrations", + }, + { + layer: "API Style", + tools: "REST, GraphQL, gRPC", + why: "REST for public APIs, GraphQL for flexible frontend queries, gRPC for low-latency internal communication", + }, + { + layer: "Security", + tools: "Spring Security, OAuth2, JWT", + why: "Spring Security for comprehensive auth, OAuth2 for third-party login, JWT for stateless token-based auth", + }, + { + layer: "Testing", + tools: "JUnit 5, Mockito, Testcontainers", + why: "JUnit 5 for unit tests, Mockito for mocking, Testcontainers for integration tests against real databases", + }, + { + layer: "Build", + tools: "Gradle, Maven", + why: "Gradle for flexible builds and better performance, Maven when convention-over-configuration matters", + }, + { + layer: "Hosting", + tools: "AWS ECS, Kubernetes, GCP", + why: "ECS for managed containers, Kubernetes for complex orchestration, GCP for teams already in that ecosystem", + }, + { + layer: "CI/CD", + tools: "GitHub Actions, Jenkins, Docker", + why: "GitHub Actions for modern pipelines, Jenkins for enterprise workflows, Docker for consistent builds", + }, + { + layer: "Monitoring", + tools: "Micrometer, Prometheus, Grafana, ELK", + why: "Micrometer for metrics instrumentation, Prometheus/Grafana for dashboards, ELK for centralized logging", + }, + ], + bottomNote: + "Java 21 with virtual threads changes the concurrency story entirely. Spring Boot 3.x on GraalVM native images delivers startup times that compete with Go. We build Java services that are fast to develop and fast to run.", + }, + kotlin: { + type: "two-column", + title: "Our", + highlight: "Kotlin", + afterHighlight: "Stack", + subtitle: + "Every tool earns its place. Here\u2019s what we ship with.", + rows: [ + { layer: "Language", tools: "Kotlin 2.x" }, + { layer: "Android UI", tools: "Jetpack Compose, Material 3" }, + { + layer: "Architecture", + tools: "MVVM, MVI, Clean Architecture", + }, + { layer: "Dependency Injection", tools: "Hilt, Koin" }, + { + layer: "Networking", + tools: "Retrofit, Ktor Client, OkHttp", + }, + { + layer: "Local Storage", + tools: "Room, DataStore, SQLDelight", + }, + { + layer: "Navigation", + tools: "Jetpack Navigation, Compose Navigation", + }, + { + layer: "Testing", + tools: "JUnit, Espresso, Robolectric, Compose Test", + }, + { layer: "Server-Side", tools: "Ktor, Spring Boot" }, + { + layer: "Multiplatform", + tools: "Kotlin Multiplatform, Compose Multiplatform", + }, + { + layer: "CI/CD", + tools: "GitHub Actions, Fastlane, Gradle", + }, + { + layer: "Distribution", + tools: "Play Store, Firebase App Distribution", + }, + ], + bottomNote: + "Jetpack Compose is the default for new Android projects. We use Kotlin Multiplatform when sharing business logic with iOS makes sense, not as a blanket rule. Architecture choices scale with the project - MVVM for straightforward apps, MVI when state management complexity demands it.", + }, + swift: { + type: "two-column", + title: "Our", + highlight: "Swift", + afterHighlight: "Stack", + subtitle: + "Every tool earns its place. Here\u2019s what we ship with.", + rows: [ + { layer: "Language", tools: "Swift 6, strict concurrency" }, + { layer: "UI Framework", tools: "SwiftUI, UIKit" }, + { + layer: "Architecture", + tools: "MVVM, TCA, Clean Architecture", + }, + { layer: "Package Manager", tools: "Swift Package Manager" }, + { + layer: "Networking", + tools: "URLSession, Alamofire, async/await", + }, + { + layer: "Local Storage", + tools: "Core Data, SwiftData, UserDefaults", + }, + { + layer: "Testing", + tools: "XCTest, Swift Testing, snapshot tests", + }, + { + layer: "watchOS", + tools: "WatchKit, HealthKit, ClockKit", + }, + { + layer: "CI/CD", + tools: "Xcode Cloud, Fastlane, GitHub Actions", + }, + { + layer: "Distribution", + tools: "App Store, TestFlight, Enterprise", + }, + { + layer: "Monitoring", + tools: "Sentry, Firebase Crashlytics", + }, + { + layer: "Accessibility", + tools: "VoiceOver, Dynamic Type, SwiftUI accessibility modifiers", + }, + ], + bottomNote: + "SwiftUI is the default for new iOS projects. We drop into UIKit when SwiftUI hits its limits - complex collection views, custom transitions, or legacy codebases. Swift 6 strict concurrency catches data races at compile time, which matters more than most teams realize.", + }, }; function ThreeColumnTable({ data }: { data: ThreeColumnData }) { diff --git a/app/services/[slug]/slug-sections/FrameworkComparison.tsx b/app/services/[slug]/slug-sections/FrameworkComparison.tsx index 9efd820..53e4ad8 100644 --- a/app/services/[slug]/slug-sections/FrameworkComparison.tsx +++ b/app/services/[slug]/slug-sections/FrameworkComparison.tsx @@ -402,6 +402,414 @@ const comparisonDataMap: Record = { ), }, + typescript: { + sectionId: "typescript-vs-alternatives", + title: "TypeScript vs JavaScript:", + highlight: "When You Need What", + subtitle: "We use both. Here's how we decide.", + gridCols: "md:grid-cols-2", + frameworks: [ + { + name: "TypeScript", + bestFor: + "Large codebases, team projects, long-lived applications, shared API contracts", + why: "Static types catch bugs at compile time, serve as living documentation, and make refactoring safe. IDE support (autocompletion, inline errors, go-to-definition) is dramatically better with types. Adoption is near-universal for serious JavaScript projects.", + useWhen: + "Your project has more than one developer, will be maintained for over a year, or shares types between frontend and backend. The upfront cost of types pays for itself within weeks on any non-trivial project.", + }, + { + name: "JavaScript (plain)", + bestFor: + "Quick prototypes, scripts, small utilities, solo projects with short lifespans", + why: "Zero configuration, instant feedback, no compile step. When you need to ship a script or validate an idea in hours, TypeScript's setup overhead isn't worth it. Every TypeScript developer still writes plain JavaScript when the situation calls for it.", + useWhen: + "You're writing a one-off script, prototyping an idea to validate before investing in proper architecture, or building a small utility that won't grow beyond a single file.", + }, + ], + bottomNote: ( + <> + The line between TypeScript and JavaScript is thinner than the debate + suggests. TypeScript compiles to JavaScript. The question isn't + which language, it's how much type safety your project needs right + now. We default to TypeScript for production code and use plain + JavaScript for scripts and prototypes. For the backend, we pair + TypeScript with{" "} +
+ Node.js + {" "} + or{" "} + + Next.js + + . + + ), + }, + postgresql: { + sectionId: "postgresql-vs-alternatives", + title: "PostgreSQL vs MongoDB vs Redis:", + highlight: "When You Need What", + subtitle: "We use all three. Here's how we decide.", + gridCols: "md:grid-cols-3", + frameworks: [ + { + name: "PostgreSQL", + bestFor: + "Complex relational data, ACID transactions, regulatory compliance, mixed workloads (SQL + JSON + full-text search)", + why: "The most capable open-source relational database. JOINs, foreign keys, window functions, CTEs, JSONB, and PostGIS in one engine. When your data has relationships that need enforcement, PostgreSQL handles it at the database level.", + useWhen: + "Your data is relational, you need multi-table transactions, or compliance requires strong consistency guarantees. Also when you need JSON flexibility alongside relational structure (JSONB columns with GIN indexes).", + }, + { + name: "MongoDB", + bestFor: + "Document-shaped data, rapidly evolving schemas, content management, real-time analytics, horizontal scaling", + why: "Flexible schema means no migrations for every product change. The aggregation pipeline handles complex analytics. Native sharding scales horizontally across regions. Atlas simplifies operations with managed infrastructure.", + useWhen: + "Your data is naturally document-shaped (catalogs, user profiles, CMS content), schema changes are frequent, or you need to scale writes horizontally across regions.", + }, + { + name: "Redis", + bestFor: + "Caching, session storage, real-time leaderboards, rate limiting, pub/sub messaging", + why: "In-memory data store operating at microsecond latency. Data structures (sorted sets, streams, HyperLogLog) solve common problems without application logic. Redis Stack adds JSON, search, and time-series on top.", + useWhen: + "You need sub-millisecond reads, are caching database queries or API responses, need real-time counters or leaderboards, or want pub/sub messaging between services.", + }, + ], + bottomNote: ( + <> + Most production systems use more than one.{" "} + + PostgreSQL + {" "} + for the core transactional data,{" "} + + MongoDB + {" "} + for flexible document storage, and Redis for caching and real-time + features. We design data architectures that use each database for what + it does best rather than forcing one to do everything. + + ), + }, + aws: { + sectionId: "aws-vs-alternatives", + title: "AWS vs Azure vs GCP:", + highlight: "When You Need What", + subtitle: "We deploy on all three. Here's how we decide.", + gridCols: "md:grid-cols-3", + frameworks: [ + { + name: "AWS", + bestFor: + "Broadest service catalog, startup-to-enterprise scaling, global deployments, regulated industries", + why: "200+ services covering every workload. Largest global infrastructure (33 regions). Most compliance certifications. The default choice when you need breadth, maturity, and the deepest talent pool of cloud engineers.", + useWhen: + "You need a specific managed service that only AWS offers, your team already has AWS expertise, you're deploying globally and need the most regions, or compliance requires FedRAMP/GovCloud.", + }, + { + name: "Azure", + bestFor: + "Microsoft ecosystem shops (.NET, Active Directory, SQL Server), enterprise hybrid cloud, AI services (OpenAI partnership)", + why: "Native Active Directory integration, first-class .NET support, and the strongest hybrid cloud story with Azure Arc. Microsoft's OpenAI partnership means Azure gets GPT models first. Enterprise agreements bundle discounts with existing Microsoft licensing.", + useWhen: + "Your organization runs on Microsoft (AD, Office 365, .NET), you need hybrid cloud connecting on-premise to cloud, or you want priority access to OpenAI models through Azure OpenAI Service.", + }, + { + name: "Google Cloud (GCP)", + bestFor: + "ML/AI workloads (TPUs, Vertex AI), data analytics (BigQuery), Kubernetes-native teams, cost-optimized compute", + why: "Google built Kubernetes and runs it best on GKE. BigQuery is the fastest serverless data warehouse. TPU pods provide ML training performance that AWS and Azure can't match. Sustained-use discounts apply automatically.", + useWhen: + "ML training is a core workload and you need TPU infrastructure, BigQuery is your analytics backbone, you want the best managed Kubernetes experience, or your team values Google's developer-friendly tooling.", + }, + ], + bottomNote: ( + <> + Multi-cloud is common but rarely for redundancy. Most organizations + pick a primary cloud based on team expertise and workload, with + selective use of another cloud's strengths (GCP for BigQuery, AWS + for Lambda, Azure for AD integration). We help teams avoid unnecessary + complexity while leveraging each cloud's genuine advantages. + + ), + }, + golang: { + sectionId: "golang-vs-alternatives", + title: "Go vs Node.js vs Rust:", + highlight: "When You Need What", + subtitle: "We build with all three. Here's how we decide.", + gridCols: "md:grid-cols-3", + frameworks: [ + { + name: "Go", + bestFor: + "High-throughput APIs, microservices, infrastructure tooling, CLI tools, DevOps automation", + why: "Compiled to a single static binary. Goroutines handle massive concurrency without callback complexity. Sub-millisecond cold starts and tiny memory footprint make it ideal for containerized and serverless deployments. The cloud-native ecosystem (Kubernetes, Docker, Terraform) is built in Go.", + useWhen: + "You need high throughput with low latency, operational simplicity matters (single binary, no runtime), or you're building infrastructure-level services where startup time and memory footprint are critical.", + }, + { + name: "Node.js (TypeScript)", + bestFor: + "Full-stack JavaScript teams, real-time apps (WebSocket, SSE), API gateways, BFF layers", + why: "Same language on frontend and backend eliminates context switching. The npm ecosystem has a package for almost everything. Event-driven I/O handles concurrent connections efficiently for I/O-bound workloads.", + useWhen: + "Your team is JavaScript-native and you want full-stack velocity, you're building real-time features, or you need a lightweight API layer between frontend and downstream services.", + }, + { + name: "Rust", + bestFor: + "Systems programming, WebAssembly, performance-critical services, embedded systems, safety-critical applications", + why: "Zero-cost abstractions and no garbage collector mean predictable, maximum performance. Memory safety without a runtime. When Go is fast enough for most workloads, Rust is for when 'most' isn't enough.", + useWhen: + "You need bare-metal performance without garbage collection pauses, are building WASM modules for the browser, or require memory safety guarantees for safety-critical systems. Rust's learning curve is steep, so reserve it for workloads that justify the investment.", + }, + ], + bottomNote: ( + <> + Go is our default for new backend services where performance and + simplicity matter.{" "} + + Node.js + {" "} + wins when the team is JavaScript-native and full-stack velocity is the + priority. Rust is reserved for performance-critical paths where Go + isn't fast enough (which is rare). We frequently run Go and + Node.js services side by side in the same system, each handling the + workload it's best suited for. + + ), + }, + mongodb: { + sectionId: "mongodb-vs-alternatives", + title: "MongoDB vs PostgreSQL vs DynamoDB:", + highlight: "When You Need What", + subtitle: "We use all three. Here's how we decide.", + gridCols: "md:grid-cols-3", + frameworks: [ + { + name: "MongoDB", + bestFor: + "Document-shaped data, flexible schemas, content platforms, real-time analytics, horizontal scaling", + why: "Schema flexibility lets you iterate without migrations. The aggregation pipeline handles complex analytics natively. Atlas provides managed multi-region deployments with built-in monitoring. Native sharding scales writes horizontally.", + useWhen: + "Your data model is document-oriented (varying attributes, nested objects), you need to iterate on schema quickly during product development, or you need horizontal write scaling across regions.", + }, + { + name: "PostgreSQL", + bestFor: + "Relational data, complex JOINs, ACID transactions, regulatory compliance, mixed SQL + JSON workloads", + why: "The most capable open-source relational database. When your data has strict relationships, foreign key constraints, and multi-table transactions, PostgreSQL enforces correctness at the database level. JSONB gives you document flexibility within a relational model.", + useWhen: + "Your data is fundamentally relational, you need multi-table ACID transactions, compliance requires strong consistency, or you want the flexibility of both SQL and document queries in one database.", + }, + { + name: "DynamoDB", + bestFor: + "Serverless architectures, single-digit millisecond latency at any scale, AWS Lambda integration, simple key-value access patterns", + why: "Fully managed with zero operational overhead. Single-digit millisecond reads at any scale. Pay-per-request pricing aligns with serverless economics. DynamoDB Streams enable event-driven architectures natively.", + useWhen: + "Your access patterns are well-defined and key-value oriented, you're building serverless on AWS, or you need guaranteed low latency at any scale without capacity planning.", + }, + ], + bottomNote: ( + <> + The choice depends on access patterns, not brand preference.{" "} + + MongoDB + {" "} + for flexible documents,{" "} + + PostgreSQL + {" "} + for relational integrity, DynamoDB for serverless key-value at scale. + We regularly architect systems using multiple databases, each handling + the access pattern it was designed for. + + ), + }, + java: { + sectionId: "java-vs-alternatives", + title: "Java vs .NET vs Node.js:", + highlight: "When You Need What", + subtitle: "We build across all three. Here's how we decide.", + gridCols: "md:grid-cols-3", + frameworks: [ + { + name: "Java (Spring Boot)", + bestFor: + "Large-scale distributed systems, financial services, Android backends, organizations with JVM infrastructure", + why: "The JVM is the most battle-tested runtime for distributed computing. Spring Boot's ecosystem covers every enterprise pattern: CQRS, event sourcing, microservices, batch processing. Virtual threads (Project Loom) bring modern concurrency without callback complexity.", + useWhen: + "You're building large distributed systems, your organization has deep JVM expertise, you need the Spring ecosystem's breadth for enterprise integrations, or you're in financial services where Java is the industry standard.", + }, + { + name: ".NET (C# / ASP.NET Core)", + bestFor: + "Microsoft ecosystem shops, Azure-native deployments, Windows-integrated applications, regulated industries", + why: "First-class Azure integration, native Active Directory support, and excellent tooling. ASP.NET Core benchmarks among the fastest web frameworks. Enterprise agreements bundle cloud discounts with existing Microsoft licensing.", + useWhen: + "Your organization runs on the Microsoft stack (AD, SQL Server, Azure), you need tight Windows integration, or your hiring market has stronger .NET talent than Java talent.", + }, + { + name: "Node.js (TypeScript)", + bestFor: + "Full-stack JavaScript teams, real-time applications, lightweight API services, rapid iteration", + why: "Same language across frontend and backend means shared types, shared validation, and fewer context switches. Event-driven architecture handles I/O-heavy workloads efficiently. Fastest path from idea to production for JavaScript-native teams.", + useWhen: + "Your team is JavaScript/TypeScript-native, you're building real-time features (chat, notifications, live updates), or you want full-stack velocity without the JVM or .NET runtime overhead.", + }, + ], + bottomNote: ( + <> + Java and .NET compete directly for enterprise backends. The choice + often comes down to existing infrastructure and team expertise.{" "} + + Node.js + {" "} + serves a different niche: full-stack velocity for JavaScript teams. For + new microservices where startup time and binary size matter,{" "} + + Go + {" "} + is worth considering. We pick the runtime based on your team's + strengths and the workload's requirements. + + ), + }, + kotlin: { + sectionId: "kotlin-vs-alternatives", + title: "Kotlin vs Swift vs React Native:", + highlight: "When You Need What", + subtitle: "We build with all three. Here's how we decide.", + gridCols: "md:grid-cols-3", + frameworks: [ + { + name: "Kotlin (Android + Multiplatform)", + bestFor: + "Native Android apps, Kotlin Multiplatform shared logic, JVM backend services, teams migrating from Java", + why: "Google's recommended language for Android. Jetpack Compose provides modern declarative UI. Kotlin Multiplatform shares business logic across Android, iOS, and backend without forcing a shared UI framework. Full Java interop means gradual migration.", + useWhen: + "You're building an Android app (or Android-first), want to share business logic across platforms while keeping native UIs, or have JVM expertise and want a modern language with null safety and coroutines.", + }, + { + name: "Swift (iOS native)", + bestFor: + "iOS-exclusive apps, deep Apple ecosystem integration, performance-critical mobile experiences", + why: "Swift compiles to native ARM code with zero runtime overhead. SwiftUI provides declarative UI for Apple's entire platform family. HealthKit, ARKit, CarPlay, and visionOS APIs are Swift-first. No abstraction layer between your code and Apple hardware.", + useWhen: + "You're building exclusively for Apple platforms, need deep hardware integration (AR, health, car), or require maximum performance on iOS without any cross-platform compromise.", + }, + { + name: "React Native (Cross-platform)", + bestFor: + "iOS + Android from one JavaScript/TypeScript codebase, code sharing with React web apps, teams with JavaScript expertise", + why: "One codebase, two platforms. React developers can contribute to mobile without learning Swift or Kotlin. The New Architecture (Fabric, TurboModules) eliminates the old performance concerns. Largest mobile framework talent pool by far.", + useWhen: + "Your team is JavaScript-native, you need both platforms with one team and one codebase, or you want to share components and logic between your React web app and mobile app.", + }, + ], + bottomNote: ( + <> + Kotlin for Android-native, Swift for iOS-native, React Native when you + need both from one team. Kotlin Multiplatform sits in between: native + UIs with shared business logic. For pixel-perfect custom UI across + platforms,{" "} + + Flutter + {" "} + is another strong option. We help teams pick the right approach based + on platform priorities, team skills, and long-term maintenance costs. + + ), + }, + swift: { + sectionId: "swift-vs-alternatives", + title: "Swift vs React Native vs Flutter:", + highlight: "When You Need What", + subtitle: "We build with all three. Here's how we decide.", + gridCols: "md:grid-cols-3", + frameworks: [ + { + name: "Swift (iOS native)", + bestFor: + "iOS-exclusive apps, deep Apple platform integration, performance-critical experiences, apps targeting visionOS/watchOS/CarPlay", + why: "Compiles to native ARM with zero abstraction overhead. SwiftUI and UIKit give you full access to every Apple API. Day-one support for new iOS features at every WWDC. No cross-platform framework can match this level of platform integration.", + useWhen: + "Your app is iOS-only (or Apple ecosystem-only), requires deep hardware integration (AR, health sensors, car), or needs to ship new Apple platform features on launch day.", + }, + { + name: "React Native (JavaScript/TypeScript)", + bestFor: + "iOS + Android from one team, JavaScript-native teams, code sharing with React web apps, budget-conscious projects", + why: "One codebase targeting both platforms. React developers can ship mobile without learning new languages. New Architecture delivers near-native performance. Over-the-air updates skip App Store review cycles for non-native changes.", + useWhen: + "You need both platforms and don't want to maintain two native codebases, your team is JavaScript-first, or you want to share UI components and business logic between web and mobile.", + }, + { + name: "Flutter (Dart)", + bestFor: + "Pixel-perfect custom UI on both platforms, animation-heavy apps, mobile + web + desktop from one codebase", + why: "Flutter renders every pixel itself via Impeller. Complete control over visual design without platform constraints. One codebase targeting iOS, Android, web, macOS, Windows, and Linux. Growing talent pool and strong Google backing.", + useWhen: + "Custom UI and brand consistency across platforms is the top priority, you're building for mobile plus web plus desktop from one codebase, or your team is open to Dart.", + }, + ], + bottomNote: ( + <> + Native Swift gives you the best iOS experience at the cost of + iOS-only reach. Cross-platform frameworks trade some platform depth for + broader coverage. For Android-native alongside Swift iOS, pair with{" "} + + Kotlin + {" "} + and consider{" "} + + Kotlin Multiplatform + {" "} + to share business logic. We help teams weigh platform depth against + development velocity based on their actual product requirements. + + ), + }, }; export default function FrameworkComparison({ slug }: { slug: string }) { diff --git a/app/services/[slug]/slug-sections/IntroStatement.tsx b/app/services/[slug]/slug-sections/IntroStatement.tsx index 4a91972..0c9d491 100644 --- a/app/services/[slug]/slug-sections/IntroStatement.tsx +++ b/app/services/[slug]/slug-sections/IntroStatement.tsx @@ -139,6 +139,163 @@ const introStatements: Record = { when the workload demands it. ), + typescript: ( + <> + Procedure is a TypeScript development company that builds type-safe, + maintainable applications across frontend, backend, and full-stack + engagements for enterprises that refuse to ship runtime errors to + production. Since 2016, Procedure's engineers have delivered + TypeScript-first platforms for clients including Setu, Pine Labs, and + Last9, spanning payment dashboards, observability tools, and real-time + APIs. The team pairs TypeScript with{" "} + + React + {" "} + and{" "} + + Node.js + {" "} + for end-to-end type safety from database to UI. + + ), + postgresql: ( + <> + Procedure is a PostgreSQL development company that designs + high-performance relational database architectures for fintech, payments, + and SaaS products where data integrity is non-negotiable. Since 2016, + Procedure's database engineers have built PostgreSQL-backed systems + handling millions of daily transactions for clients including Pine Labs, + KredX, and Setu. The team specializes in schema design, query + optimization, and migration from legacy databases. For the application + layer, we pair PostgreSQL with{" "} + + Node.js + {" "} + or{" "} + + Python + {" "} + backends. + + ), + aws: ( + <> + Procedure is an AWS development company that architects production-grade + cloud infrastructure, serverless systems, and CI/CD pipelines for + companies that need to scale without compromising reliability. Since 2016, + Procedure has delivered AWS solutions across compute, storage, and ML + services for clients including Last9, Setu, and Treebo, managing + infrastructure serving millions of requests daily. Engineers hold AWS + certifications and build with{" "} + + Node.js + + ,{" "} + + Python + + , and{" "} + {/* eslint-disable-next-line @next/next/no-html-link-for-pages */} + + Kubernetes + {" "} + on AWS. + + ), + golang: ( + <> + Procedure is a Go development company that builds high-concurrency + backend services, CLI tools, and cloud-native infrastructure for + engineering teams that need C-level performance with Python-level + productivity. Since 2016, Procedure's Go engineers have delivered + microservices, API gateways, and observability backends for clients + including Last9 and Setu. The team builds Go services that integrate with{" "} + + Node.js + {" "} + frontends and deploy to{" "} + + AWS + {" "} + infrastructure. + + ), + mongodb: ( + <> + Procedure is a MongoDB development company that designs document-oriented + database architectures for products with flexible schemas, rapid iteration + cycles, and high-volume unstructured data. Since 2016, Procedure has + delivered MongoDB-backed platforms for clients including ESPN, KredX, and + Timely, building everything from content management systems to real-time + analytics pipelines. The team pairs MongoDB with{" "} + + Node.js + {" "} + or{" "} + + Python + {" "} + application layers for full-stack delivery. + + ), + java: ( + <> + Procedure is a Java development company that builds enterprise-grade + backend systems, payment processing platforms, and distributed + microservices for organizations where uptime and regulatory compliance are + business-critical. Since 2016, Procedure's Java engineers have + delivered Spring Boot APIs, Kafka-driven event systems, and high-throughput + transaction platforms for clients including Pine Labs and MCLabs. For + modern API layers, we complement Java backends with{" "} + + Node.js + {" "} + or{" "} + + .NET + {" "} + where the architecture demands it. + + ), + kotlin: ( + <> + Procedure is a Kotlin development company that builds modern Android + applications, server-side APIs, and multiplatform solutions for teams + migrating from legacy Java codebases or starting greenfield mobile + projects. Since 2016, Procedure's Kotlin engineers have shipped + native Android apps and backend services for clients including ESPN, + Treebo, and KredX. For teams that need cross-platform mobile delivery, we + evaluate Kotlin Multiplatform alongside{" "} + + React Native + {" "} + based on the product's requirements. Kotlin's full + interoperability with{" "} + + Java + {" "} + means existing enterprise systems integrate without rewrites. + + ), + swift: ( + <> + Procedure is a Swift development company that builds native iOS + applications, watchOS extensions, and Apple ecosystem integrations for + products where platform-native performance and App Store optimization are + hard requirements. Since 2016, Procedure has shipped Swift applications in + fintech, media, and consumer verticals for clients including ESPN and + Timely. For teams that need both iOS and Android from a single codebase, + we evaluate cross-platform alternatives including{" "} + + React Native + {" "} + and{" "} + + Flutter + + . + + ), }; export default function IntroStatement({ slug }: { slug: string }) { diff --git a/app/services/[slug]/slug-sections/TechDecisionTable.tsx b/app/services/[slug]/slug-sections/TechDecisionTable.tsx index 9447b4b..dc1530f 100644 --- a/app/services/[slug]/slug-sections/TechDecisionTable.tsx +++ b/app/services/[slug]/slug-sections/TechDecisionTable.tsx @@ -343,6 +343,433 @@ const dataMap: Record = {

), }, + typescript: { + sectionId: "fit", + title: "Is TypeScript Right for Your", + highlight: "Project?", + subtitle: "Type safety is a spectrum. Here's when to go all in.", + cards: [ + { + label: "Codebases with 3+ developers", + description: + "Types serve as living documentation. New developers read the interfaces and understand the data flow without digging through implementation. Refactoring across a large codebase goes from terrifying to routine.", + }, + { + label: "APIs and shared contracts (frontend + backend)", + description: + "Shared types between your React frontend and Node.js backend catch mismatches at compile time, not in production. One schema change propagates everywhere instantly.", + }, + { + label: "Long-lived applications (2+ year lifespan)", + description: + "Code you wrote six months ago is code you forgot. TypeScript's compiler catches the errors your memory won't. Maintenance costs drop significantly on typed codebases.", + }, + { + label: "Enterprise and regulated environments", + description: + "Static analysis satisfies compliance requirements that dynamic languages can't. Type coverage is measurable, auditable, and enforceable in CI pipelines.", + }, + ], + bottomNote: ( +

+ For quick scripts, prototypes, or solo projects where speed outweighs + long-term maintenance, plain JavaScript is often faster to ship. For + data science and ML workloads,{" "} + + Python + {" "} + is the better tool. TypeScript adds friction that pays off at scale but + can slow you down on throwaway work. We'll tell you which fits. +

+ ), + ctaHref: "#book-call", + ctaText: "Book a free architecture call", + ctaSubtext: + "We\u2019ve shipped 100+ TypeScript projects. We know where it helps and where it gets in the way.", + }, + postgresql: { + sectionId: "fit", + title: "Is PostgreSQL Right for Your", + highlight: "Data Layer?", + subtitle: "The most capable open-source database. But not always the simplest.", + cards: [ + { + label: "Complex relational data with strong consistency", + description: + "ACID transactions, foreign keys, and complex JOINs across dozens of tables. When your data has relationships that matter, PostgreSQL enforces them at the database level, not in application code.", + }, + { + label: "Mixed workloads (relational + JSON + full-text search)", + description: + "JSONB columns with GIN indexes, full-text search with tsvector, PostGIS for geospatial queries. PostgreSQL handles workloads that would otherwise require three separate databases.", + }, + { + label: "Applications requiring regulatory compliance", + description: + "Row-level security, audit logging, and ACID guarantees make compliance audits straightforward. Financial services, healthcare, and government projects choose PostgreSQL for a reason.", + }, + { + label: "High-write transactional systems", + description: + "MVCC handles concurrent reads and writes without locking. Connection pooling with PgBouncer scales to thousands of concurrent transactions. Proven at petabyte scale.", + }, + ], + bottomNote: ( +

+ If your data is primarily document-shaped with no relational needs,{" "} + + MongoDB + {" "} + offers a more natural fit and faster iteration on schema changes. For + pure caching or session storage where persistence is secondary, Redis + is simpler and faster. We architect data layers with the right tool per + workload, not one database for everything. +

+ ), + ctaHref: "#book-call", + ctaText: "Book a free architecture call", + ctaSubtext: + "We\u2019ve designed data architectures running PostgreSQL alongside MongoDB and Redis in the same system.", + }, + aws: { + sectionId: "fit", + title: "Is AWS Right for Your", + highlight: "Infrastructure?", + subtitle: "The largest cloud. Not always the simplest choice.", + cards: [ + { + label: "You need breadth of services (200+ and counting)", + description: + "No other cloud matches AWS for service catalog depth. From Lambda to SageMaker to IoT Core, there's a managed service for almost every workload. Less custom infrastructure to build and maintain.", + }, + { + label: "Multi-region, global-scale deployments", + description: + "33 regions, 105 availability zones. CloudFront edge locations in 50+ countries. When your users span continents, AWS's global footprint is unmatched.", + }, + { + label: "Startup-to-enterprise growth trajectory", + description: + "Start on a t3.micro, scale to thousands of instances. AWS credits programs for startups, enterprise support tiers for Fortune 500s. The platform grows with you without re-platforming.", + }, + { + label: "Regulated industries requiring specific compliance", + description: + "FedRAMP, HIPAA, SOC 2, PCI DSS, ISO 27001. AWS has more compliance certifications than any cloud provider. GovCloud regions for federal workloads.", + }, + ], + bottomNote: ( +

+ If your organization is deeply invested in the Microsoft ecosystem + (Active Directory, .NET, SQL Server), Azure provides tighter + integration with less friction. For ML-heavy workloads where TPUs and + Vertex AI are priorities, GCP offers purpose-built infrastructure. The + best cloud is the one your team can operate effectively. We help teams + choose and migrate between all three. +

+ ), + ctaHref: "#book-call", + ctaText: "Book a free infrastructure review", + ctaSubtext: + "We\u2019ve architected AWS environments from startup MVPs to enterprise platforms serving millions.", + }, + golang: { + sectionId: "fit", + title: "Is Go Right for Your", + highlight: "Backend?", + subtitle: "Simple language, serious performance. But simplicity has trade-offs.", + cards: [ + { + label: "High-throughput API services and microservices", + description: + "Compiled to native binaries with sub-millisecond cold starts. Goroutines handle tens of thousands of concurrent connections with minimal memory overhead. No runtime, no garbage collection pauses at scale.", + }, + { + label: "Infrastructure and DevOps tooling", + description: + "Kubernetes, Docker, Terraform, Prometheus - the cloud-native ecosystem is built in Go. If you're building infrastructure tooling, you're already in Go's world.", + }, + { + label: "Services where operational simplicity matters", + description: + "Single static binary deployment. No dependency management at runtime. No JVM tuning, no interpreter version conflicts. Copy the binary, run it. That's it.", + }, + { + label: "Teams that value readability over expressiveness", + description: + "Go forces explicit error handling, minimal abstractions, and straightforward control flow. Code written by any Go developer reads the same way. Onboarding new team members takes days, not weeks.", + }, + ], + bottomNote: ( +

+ If your team is JavaScript-native and you need full-stack velocity,{" "} + + Node.js + {" "} + with TypeScript avoids the language switch. For ML and data science + workloads,{" "} + + Python + {" "} + owns the ecosystem. Go's simplicity means fewer abstractions, + which can mean more boilerplate for complex business logic. We'll + tell you when Go is overkill and when it's exactly right. +

+ ), + ctaHref: "#book-call", + ctaText: "Book a free architecture call", + ctaSubtext: + "We\u2019ve built Go services handling 50K+ requests/second in production.", + }, + mongodb: { + sectionId: "fit", + title: "Is MongoDB Right for Your", + highlight: "Data Layer?", + subtitle: "The most popular document database. But not every dataset is a document.", + cards: [ + { + label: "Rapidly evolving schemas and product iteration", + description: + "No migrations, no ALTER TABLE. Add fields to documents as your product evolves. MongoDB's flexible schema lets you ship features without waiting for database changes.", + }, + { + label: "Content management and catalog systems", + description: + "Products with varying attributes, CMS entries with dynamic fields, user profiles with optional properties. Document models map naturally to how applications actually use this data.", + }, + { + label: "Real-time analytics and event logging", + description: + "Time-series collections, capped collections for log rotation, and the aggregation pipeline for complex analytics. MongoDB handles high-write event streams with built-in TTL indexes for automatic cleanup.", + }, + { + label: "Horizontal scaling across regions", + description: + "Native sharding distributes data across clusters automatically. Atlas provides multi-region deployments with zone-based sharding. Scale reads and writes independently as your user base grows globally.", + }, + ], + bottomNote: ( +

+ If your data is heavily relational with complex JOINs, foreign key + constraints, and multi-table transactions,{" "} + + PostgreSQL + {" "} + is the better fit. For pure key-value caching or session storage, Redis + is faster and simpler. We design data architectures that use each + database for what it does best, often running MongoDB and PostgreSQL + side by side. +

+ ), + ctaHref: "#book-call", + ctaText: "Book a free architecture call", + ctaSubtext: + "We\u2019ve designed MongoDB schemas for applications serving millions of documents per day.", + }, + java: { + sectionId: "fit", + title: "Is Java Right for Your", + highlight: "Backend?", + subtitle: "Three decades of enterprise trust. Still the backbone of serious systems.", + cards: [ + { + label: "Large-scale distributed systems", + description: + "The JVM is the most battle-tested runtime for distributed computing. Spring Cloud, Kafka, and Hadoop all run on Java. When you need microservices communicating reliably at massive scale, Java's ecosystem is unmatched.", + }, + { + label: "Financial services and regulated industries", + description: + "Banks, insurance companies, and healthcare systems run on Java. Strong typing, mature security libraries, and decades of enterprise hardening make compliance audits straightforward.", + }, + { + label: "High-performance backend APIs (Spring Boot)", + description: + "Spring Boot with virtual threads (Project Loom) handles millions of concurrent requests. JIT compilation optimizes hot paths at runtime. Throughput improves the longer your service runs.", + }, + { + label: "Teams with deep JVM expertise", + description: + "Java has one of the largest developer talent pools globally. Mature tooling (IntelliJ, Maven/Gradle, JUnit) and well-understood patterns mean predictable development velocity on large teams.", + }, + ], + bottomNote: ( +

+ If your organization is a Microsoft shop with existing .NET + infrastructure, staying in that ecosystem avoids unnecessary migration + friction. For JavaScript-native teams building full-stack web + applications,{" "} + + Node.js + {" "} + delivers faster iteration. For new microservices where startup time and + memory footprint matter more than ecosystem breadth,{" "} + + Go + {" "} + compiles to smaller, faster binaries. We pick the runtime that fits + your team and workload, not the one with the most history. +

+ ), + ctaHref: "#book-call", + ctaText: "Book a free architecture call", + ctaSubtext: + "We\u2019ve built Java backends for fintech platforms processing thousands of transactions per second.", + }, + kotlin: { + sectionId: "fit", + title: "Is Kotlin Right for Your", + highlight: "Project?", + subtitle: "Modern JVM language. Android's default. Increasingly a backend contender.", + cards: [ + { + label: "Android development (Google's recommended language)", + description: + "Kotlin is Android's first-class language. Jetpack Compose, Kotlin Coroutines, and the entire modern Android ecosystem are Kotlin-first. New Android projects that start in Java are already behind.", + }, + { + label: "Backend services on the JVM (Spring Boot, Ktor)", + description: + "Full interoperability with Java means you get the entire Spring ecosystem with concise, null-safe syntax. Ktor provides a lightweight, coroutine-based alternative for microservices.", + }, + { + label: "Kotlin Multiplatform (shared logic across platforms)", + description: + "Share business logic, networking, and data layers between Android, iOS, web, and backend. Not a UI framework, but shared core logic that reduces duplication without forcing a cross-platform UI.", + }, + { + label: "Teams migrating from Java who want modern language features", + description: + "Null safety, coroutines, data classes, extension functions, and sealed classes. Kotlin fixes Java's verbosity while maintaining 100% interop. Migrate file by file, not all at once.", + }, + ], + bottomNote: ( +

+ If you're building exclusively for iOS,{" "} + + Swift + {" "} + is the native choice. For true cross-platform UI from a single + codebase,{" "} + + React Native + {" "} + or{" "} + + Flutter + {" "} + share the UI layer too, not just business logic. For backend-only + services where the JVM ecosystem isn't needed,{" "} + + Go + {" "} + or{" "} + + Node.js + {" "} + may be simpler. We help teams pick the right language for each layer of + their stack. +

+ ), + ctaHref: "#book-call", + ctaText: "Book a free architecture call", + }, + swift: { + sectionId: "fit", + title: "Is Swift Right for Your", + highlight: "Project?", + subtitle: "Apple's language. Unmatched on Apple platforms. Limited beyond them.", + cards: [ + { + label: "iOS and macOS applications with native performance", + description: + "Swift compiles to native ARM code with zero runtime overhead. Metal for GPU access, Core ML for on-device AI, ARKit for augmented reality. No cross-platform layer sits between your code and the hardware.", + }, + { + label: "Apps requiring deep Apple ecosystem integration", + description: + "HealthKit, HomeKit, CarPlay, watchOS, visionOS. Apple's frameworks are Swift-first. If your app needs tight integration with Apple hardware and services, Swift is the only production-grade option.", + }, + { + label: "High-performance, low-latency user experiences", + description: + "SwiftUI with async/await delivers smooth 120fps animations on ProMotion displays. Instruments and Xcode profiling tools catch performance issues before users do.", + }, + { + label: "Teams committed to Apple platforms for the long term", + description: + "Apple invests heavily in Swift. Every WWDC brings new APIs, and they're all Swift-first. Building native gives you day-one access to new platform features without waiting for framework bindings.", + }, + ], + bottomNote: ( +

+ If you need Android alongside iOS,{" "} + + Kotlin + {" "} + (with Kotlin Multiplatform for shared logic) or cross-platform + frameworks like{" "} + + React Native + {" "} + and{" "} + + Flutter + {" "} + reduce duplication. Swift on the server exists but hasn't reached + the maturity of Node.js, Go, or Java for backend workloads. We help + teams decide where native Swift pays off and where cross-platform + makes more sense. +

+ ), + ctaHref: "#book-call", + ctaText: "Book a free architecture call", + }, }; export default function TechDecisionTable({ slug }: { slug: string }) { diff --git a/app/services/[slug]/slug-sections/TechIndustries.tsx b/app/services/[slug]/slug-sections/TechIndustries.tsx index d22effa..0499232 100644 --- a/app/services/[slug]/slug-sections/TechIndustries.tsx +++ b/app/services/[slug]/slug-sections/TechIndustries.tsx @@ -302,6 +302,334 @@ const techIndustryData: Record = { }, ], }, + typescript: { + sectionTitle: "Industries We Build TypeScript Applications For", + subtitle: + "Domain knowledge that accelerates delivery and reduces risk.", + industries: [ + { + title: "Financial Services & Fintech", + description: + "Type-safe trading platforms, payment APIs, and regulatory reporting systems. TypeScript's strict typing catches financial calculation errors at compile time across full-stack codebases.", + href: "/industries/financial-services", + }, + { + title: "SaaS & Technology", + description: + "Multi-tenant platforms with shared type definitions between frontend and backend. TypeScript monorepos with Zod validation ensure API contract consistency across microservices.", + href: "/industries/saas", + }, + { + title: "Healthcare & Life Sciences", + description: + "HIPAA-compliant patient portals and clinical data systems. Type-safe HL7 FHIR integrations and strict null checks prevent data handling errors in regulated healthcare environments.", + href: "/industries/healthcare", + }, + { + title: "Education & EdTech", + description: + "Learning management systems and assessment platforms with complex state. TypeScript's type inference reduces bugs in real-time collaboration features and grading logic.", + href: "/industries/education", + }, + { + title: "E-commerce & Retail", + description: + "Product catalog APIs, checkout flows, and inventory systems. End-to-end type safety from database queries through API responses to storefront rendering.", + }, + { + title: "Government & Enterprise", + description: + "Large-scale internal tools and citizen-facing portals. TypeScript's refactoring support and self-documenting interfaces help distributed teams maintain complex codebases.", + }, + ], + }, + postgresql: { + sectionTitle: "Industries We Build PostgreSQL Systems For", + subtitle: + "Domain knowledge that accelerates delivery and reduces risk.", + industries: [ + { + title: "Financial Services & Fintech", + description: + "ACID-compliant transaction ledgers, audit trails, and regulatory reporting databases. PostgreSQL's row-level security and partitioning handle high-volume financial data with SOC 2 compliance.", + href: "/industries/financial-services", + }, + { + title: "Healthcare & Life Sciences", + description: + "HIPAA-compliant patient record stores, clinical trial databases, and genomics data platforms. PostgreSQL's JSONB and full-text search handle complex medical data models.", + href: "/industries/healthcare", + }, + { + title: "SaaS & Technology", + description: + "Multi-tenant schemas with row-level security, real-time analytics, and time-series data. PostgreSQL extensions like pg_cron and PostGIS power SaaS features at scale.", + href: "/industries/saas", + }, + { + title: "Education & EdTech", + description: + "Student information systems, assessment result stores, and learning analytics databases. Complex relational models for curricula, enrollments, and progress tracking.", + href: "/industries/education", + }, + { + title: "E-commerce & Retail", + description: + "Product catalogs with faceted search, order management systems, and inventory databases. PostgreSQL's GIN indexes and materialized views power fast catalog queries.", + }, + { + title: "Government & Public Sector", + description: + "Citizen record databases, case management systems, and geospatial data platforms. PostGIS extensions enable location-based queries for public infrastructure and service delivery.", + }, + ], + }, + aws: { + sectionTitle: "Industries We Build AWS Systems For", + subtitle: + "Domain knowledge that accelerates delivery and reduces risk.", + industries: [ + { + title: "Financial Services & Fintech", + description: + "PCI-DSS compliant payment infrastructure, real-time fraud detection with Lambda, and disaster recovery architectures. AWS GovCloud and dedicated tenancy for regulatory requirements.", + href: "/industries/financial-services", + }, + { + title: "SaaS & Technology", + description: + "Auto-scaling multi-tenant platforms on ECS/EKS, serverless APIs with API Gateway, and CI/CD pipelines with CodePipeline. Cost-optimized architectures that scale with your customer base.", + href: "/industries/saas", + }, + { + title: "Healthcare & Life Sciences", + description: + "HIPAA-eligible services for patient data, medical imaging storage on S3, and HealthLake for FHIR-compliant data lakes. BAA-covered architectures for protected health information.", + href: "/industries/healthcare", + }, + { + title: "Education & EdTech", + description: + "Scalable LMS backends on Fargate, content delivery via CloudFront, and real-time features with AppSync. Elastic infrastructure that handles enrollment spikes without over-provisioning.", + href: "/industries/education", + }, + { + title: "Media & Entertainment", + description: + "Video transcoding with MediaConvert, CDN delivery via CloudFront, and serverless content processing pipelines. S3 Intelligent-Tiering for cost-effective media asset management.", + }, + { + title: "Manufacturing & IoT", + description: + "AWS IoT Core for device management, Kinesis for telemetry ingestion, and SageMaker for predictive maintenance models. Edge computing with Greengrass for factory floor deployments.", + }, + ], + }, + golang: { + sectionTitle: "Industries We Build Go Systems For", + subtitle: + "Domain knowledge that accelerates delivery and reduces risk.", + industries: [ + { + title: "Financial Services & Fintech", + description: + "High-throughput payment gateways, real-time risk scoring engines, and order matching systems. Go's concurrency primitives handle thousands of simultaneous transactions with predictable latency.", + href: "/industries/financial-services", + }, + { + title: "SaaS & Technology", + description: + "API gateways, service meshes, and platform infrastructure tools. Go's fast compilation and small binaries make it ideal for CLI tools, microservices, and developer platform backends.", + href: "/industries/saas", + }, + { + title: "Healthcare & Life Sciences", + description: + "HIPAA-compliant data pipelines, medical device integrations, and health record APIs. Go's memory safety and static binaries simplify deployment in regulated healthcare environments.", + href: "/industries/healthcare", + }, + { + title: "Education & EdTech", + description: + "Real-time collaboration backends, WebSocket servers for live classrooms, and content delivery APIs. Go's goroutines efficiently manage thousands of concurrent student connections.", + href: "/industries/education", + }, + { + title: "Infrastructure & DevOps", + description: + "Custom Kubernetes operators, CI/CD pipeline tools, and infrastructure automation. Go is the language of cloud-native tooling, from Docker to Terraform to Prometheus.", + }, + { + title: "Logistics & Supply Chain", + description: + "Real-time tracking services, route optimization APIs, and warehouse management backends. Go's low-latency processing handles high-frequency location updates across global fleets.", + }, + ], + }, + mongodb: { + sectionTitle: "Industries We Build MongoDB Systems For", + subtitle: + "Domain knowledge that accelerates delivery and reduces risk.", + industries: [ + { + title: "Financial Services & Fintech", + description: + "Flexible transaction records, customer profile stores, and real-time analytics. MongoDB's document model handles evolving financial product schemas without costly migrations.", + href: "/industries/financial-services", + }, + { + title: "SaaS & Technology", + description: + "Multi-tenant document stores, user activity logs, and feature flag systems. MongoDB Atlas scales horizontally with sharding while the aggregation pipeline powers in-app analytics.", + href: "/industries/saas", + }, + { + title: "Healthcare & Life Sciences", + description: + "Patient record stores with varying schema requirements, clinical event logs, and medical device data. MongoDB's flexible documents model complex, evolving healthcare data standards.", + href: "/industries/healthcare", + }, + { + title: "Education & EdTech", + description: + "Course content repositories, student interaction logs, and adaptive learning data stores. MongoDB's document model naturally represents hierarchical curriculum structures.", + href: "/industries/education", + }, + { + title: "Gaming & Real-time", + description: + "Player profiles, game state persistence, and leaderboard systems. MongoDB's low-latency reads and change streams power real-time multiplayer features and live event tracking.", + }, + { + title: "E-commerce & Retail", + description: + "Product catalogs with variable attributes, shopping cart sessions, and recommendation data. MongoDB handles diverse product schemas without rigid table structures.", + }, + ], + }, + java: { + sectionTitle: "Industries We Build Java Systems For", + subtitle: + "Domain knowledge that accelerates delivery and reduces risk.", + industries: [ + { + title: "Financial Services & Fintech", + description: + "Core banking systems, payment processing engines, and regulatory compliance platforms. Java's mature ecosystem with Spring Boot and enterprise-grade JVM performance powers mission-critical financial infrastructure.", + href: "/industries/financial-services", + }, + { + title: "Healthcare & Life Sciences", + description: + "Electronic health record systems, clinical decision support, and claims processing engines. Java's HIPAA-compliant frameworks and long-term stability serve healthcare's stringent reliability requirements.", + href: "/industries/healthcare", + }, + { + title: "SaaS & Technology", + description: + "Enterprise API platforms, event-driven microservices with Spring Cloud, and batch processing systems. Java's thread management and JVM optimization handle sustained high-throughput workloads.", + href: "/industries/saas", + }, + { + title: "Education & EdTech", + description: + "Institutional management systems, enrollment platforms, and assessment engines. Java's enterprise patterns support complex business logic for large-scale educational organizations.", + href: "/industries/education", + }, + { + title: "Insurance & Risk Management", + description: + "Policy administration systems, actuarial calculation engines, and claims workflows. Java's precision arithmetic and enterprise integration patterns handle complex insurance domain logic.", + }, + { + title: "Government & Public Sector", + description: + "Tax processing systems, benefits administration, and inter-agency data exchange platforms. Java's security framework and FedRAMP-compatible libraries meet government compliance mandates.", + }, + ], + }, + kotlin: { + sectionTitle: "Industries We Build Kotlin Applications For", + subtitle: + "Domain knowledge that accelerates delivery and reduces risk.", + industries: [ + { + title: "Financial Services & Fintech", + description: + "Mobile banking apps, payment wallets, and investment platforms on Android. Kotlin's null safety and coroutines deliver crash-resistant financial apps with smooth real-time data updates.", + href: "/industries/financial-services", + }, + { + title: "SaaS & Technology", + description: + "Android companion apps and Ktor-based backend services. Kotlin Multiplatform shares business logic between mobile and server, reducing duplication across SaaS product surfaces.", + href: "/industries/saas", + }, + { + title: "Healthcare & Life Sciences", + description: + "Patient-facing Android apps, health monitoring tools, and clinical workflow applications. Kotlin's type safety and Jetpack Compose UI deliver accessible, HIPAA-compliant mobile experiences.", + href: "/industries/healthcare", + }, + { + title: "Education & EdTech", + description: + "Interactive learning apps, campus mobile portals, and offline-capable study tools. Kotlin's concise syntax accelerates development of feature-rich educational Android applications.", + href: "/industries/education", + }, + { + title: "Travel & Hospitality", + description: + "Booking apps, digital concierge tools, and loyalty programs on Android. Kotlin coroutines handle complex async flows for search, booking, and real-time availability updates.", + }, + { + title: "E-commerce & Retail", + description: + "Shopping apps, barcode scanning tools, and in-store associate applications. Jetpack Compose delivers performant product catalogs with smooth animations and gesture navigation.", + }, + ], + }, + swift: { + sectionTitle: "Industries We Build Swift Apps For", + subtitle: + "Domain knowledge that accelerates delivery and reduces risk.", + industries: [ + { + title: "Financial Services & Fintech", + description: + "iOS banking apps, Apple Pay integrations, and investment portfolio trackers. Swift's memory safety and Keychain APIs deliver secure financial experiences with biometric authentication.", + href: "/industries/financial-services", + }, + { + title: "SaaS & Technology", + description: + "Native iOS companion apps, macOS desktop tools, and Apple Watch extensions. SwiftUI enables rapid development across Apple platforms with shared business logic via Swift packages.", + href: "/industries/saas", + }, + { + title: "Healthcare & Life Sciences", + description: + "Patient iOS apps, HealthKit integrations, and clinical trial data collection tools. Swift's CryptoKit and App Transport Security enforce HIPAA-compliant data handling on Apple devices.", + href: "/industries/healthcare", + }, + { + title: "Education & EdTech", + description: + "iPad learning apps, classroom management tools, and interactive textbooks. Swift Playgrounds and ARKit power immersive educational experiences on Apple's education-focused hardware.", + href: "/industries/education", + }, + { + title: "Travel & Hospitality", + description: + "iOS booking apps, digital room keys via NFC, and Apple Wallet boarding passes. Core Location and MapKit deliver context-aware travel experiences with offline map support.", + }, + { + title: "Media & Entertainment", + description: + "Streaming apps with AVFoundation, content creation tools, and social media clients. Swift's performance and Metal framework integration handle media-rich experiences at 120fps.", + }, + ], + }, }; export default function TechIndustries({ slug }: { slug: string }) { diff --git a/app/services/[slug]/slug-sections/WhyTechnology.tsx b/app/services/[slug]/slug-sections/WhyTechnology.tsx index 625fd23..cd9aeaa 100644 --- a/app/services/[slug]/slug-sections/WhyTechnology.tsx +++ b/app/services/[slug]/slug-sections/WhyTechnology.tsx @@ -260,6 +260,255 @@ const whyTechnologyContent: Record = { }, ], }, + typescript: { + sectionTitle: "Why TypeScript for Your Business", + subtitle: "Catch bugs before your users do. Ship with confidence at scale.", + benefits: [ + { + title: "Fewer Production Bugs", + description: + "TypeScript catches type errors at compile time, not in production. Teams that adopt TypeScript report 15-25% fewer bugs reaching QA, which compounds into faster release cycles and lower support costs.", + }, + { + title: "Safer Refactoring", + description: + "When your product evolves, TypeScript's compiler tells you exactly what breaks. Engineers refactor confidently instead of tip-toeing through fragile JavaScript, making large codebases manageable long-term.", + }, + { + title: "Full-stack Consistency", + description: (<>TypeScript runs everywhere JavaScript runs: React frontends, Node.js backends, serverless functions. One language with one type system across your entire stack eliminates an entire class of integration bugs.), + }, + { + title: "Faster Onboarding", + description: + "TypeScript's type annotations serve as living documentation. New engineers understand function signatures, data shapes, and API contracts by reading the code instead of hunting through wikis.", + }, + { + title: "Industry Standard", + description: + "Google, Airbnb, Stripe, and Slack standardized on TypeScript. Over 98% of the top 1,000 npm packages ship TypeScript definitions. You're adopting the default, not the exception.", + }, + ], + }, + postgresql: { + sectionTitle: "Why PostgreSQL for Your Business", + subtitle: "The database that scales from startup to enterprise without compromise.", + benefits: [ + { + title: "ACID Compliance", + description: + "PostgreSQL guarantees data consistency even under high concurrency. For fintech, payments, and healthcare products, this means zero data corruption risk during transaction spikes.", + }, + { + title: "Zero Licensing Costs", + description: + "PostgreSQL is open-source with no per-core or per-user fees. Companies running Oracle or SQL Server migrations to PostgreSQL routinely eliminate six-figure annual licensing costs.", + }, + { + title: "Advanced Query Capabilities", + description: + "Full-text search, JSONB document storage, geospatial queries, and window functions are built in. PostgreSQL handles workloads that typically require multiple specialized databases.", + }, + { + title: "Proven at Scale", + description: (<>Apple, Instagram, and Spotify run critical systems on PostgreSQL. Paired with Node.js or Python application layers, PostgreSQL handles billions of rows without breaking a sweat.), + }, + { + title: "Extension Ecosystem", + description: + "PostGIS for geospatial, TimescaleDB for time-series, pg_vector for AI embeddings. PostgreSQL extends to new workloads through a mature plugin ecosystem instead of requiring database migrations.", + }, + ], + }, + aws: { + sectionTitle: "Why AWS for Your Business", + subtitle: "The cloud platform with more services, more regions, and more uptime.", + benefits: [ + { + title: "Broadest Service Catalog", + description: + "AWS offers 200+ fully managed services covering compute, AI/ML, databases, IoT, and analytics. Your team builds on managed infrastructure instead of operating it, which cuts operational overhead by 40-60%.", + }, + { + title: "Global Reach", + description: + "33 regions and 105 availability zones mean your application runs close to your users everywhere. For products serving the US, India, and EU simultaneously, AWS reduces latency without architectural complexity.", + }, + { + title: "Cost Optimization Tools", + description: + "Reserved instances, spot pricing, and Savings Plans let engineering teams cut compute costs by 30-70%. AWS's cost explorer and right-sizing recommendations make optimization measurable.", + }, + { + title: "Security and Compliance", + description: + "SOC 2, HIPAA, PCI DSS, FedRAMP: AWS holds more compliance certifications than any cloud provider. For regulated industries, that's months of audit preparation you skip.", + }, + { + title: "Cloud-native Ecosystem", + description: ( + <> + Lambda for serverless, ECS and EKS for{" "} + {/* eslint-disable-next-line @next/next/no-html-link-for-pages */} + Kubernetes, + SageMaker for ML. Teams build with{" "} + Node.js and{" "} + Python on AWS + services that scale automatically. + + ), + }, + ], + }, + golang: { + sectionTitle: "Why Go for Your Business", + subtitle: "Built for concurrency. Compiled for speed. Designed for simplicity.", + benefits: [ + { + title: "Concurrency by Design", + description: + "Go's goroutines handle thousands of concurrent operations with minimal memory overhead. For APIs, message brokers, and real-time systems, Go delivers throughput that interpreted languages cannot match.", + }, + { + title: "Fast Compile, Fast Deploy", + description: + "Go compiles to a single static binary in seconds. No dependency management at deploy time, no runtime installation. Your CI/CD pipeline runs faster and your containers are 10-50MB instead of hundreds.", + }, + { + title: "Operationally Simple", + description: + "Go's standard library covers HTTP servers, JSON handling, cryptography, and testing. Teams build production services with fewer dependencies, which means fewer security vulnerabilities and smaller attack surfaces.", + }, + { + title: "Cloud Infrastructure Standard", + description: (<>Docker, Kubernetes, Terraform, and Prometheus are all written in Go. If your team operates cloud-native infrastructure on AWS, Go is the language your tooling already speaks.), + }, + { + title: "Predictable Performance", + description: + "Go's garbage collector pauses for microseconds, not milliseconds. For latency-sensitive services like payment processing and real-time observability, Go provides the consistency that garbage-collected alternatives struggle to deliver.", + }, + ], + }, + mongodb: { + sectionTitle: "Why MongoDB for Your Business", + subtitle: "Flexible schemas for products that evolve faster than your data model.", + benefits: [ + { + title: "Schema Flexibility", + description: + "MongoDB's document model lets your data structure evolve with your product. Adding fields doesn't require migration scripts or downtime, so feature development isn't blocked by database changes.", + }, + { + title: "Developer Productivity", + description: (<>Documents map directly to objects in Node.js and Python. No ORM translation layer, no impedance mismatch. Engineers write less boilerplate and ship features faster.), + }, + { + title: "Horizontal Scaling", + description: + "MongoDB shards natively across commodity hardware. As your data grows from gigabytes to terabytes, you add capacity without re-architecting. This is the scaling model cloud-native products need.", + }, + { + title: "Real-time Analytics", + description: + "MongoDB's aggregation pipeline handles complex analytics queries on operational data. Teams build dashboards and reporting without maintaining a separate analytics database or ETL pipeline.", + }, + { + title: "Atlas Managed Service", + description: + "MongoDB Atlas handles backups, scaling, security patching, and multi-region replication. Your engineers build product features instead of administering database infrastructure.", + }, + ], + }, + java: { + sectionTitle: "Why Java for Your Business", + subtitle: "The enterprise backbone that runs 3 billion devices worldwide.", + benefits: [ + { + title: "Unmatched Enterprise Ecosystem", + description: + "Spring Boot, Hibernate, Apache Kafka, and Elasticsearch: Java's enterprise library ecosystem is the deepest in any language. Whatever integration your system needs, a battle-tested Java library exists for it.", + }, + { + title: "Performance at Scale", + description: + "Java's JVM optimizes code at runtime through JIT compilation. For high-throughput transaction systems processing millions of requests, Java delivers consistent sub-millisecond response times.", + }, + { + title: "Regulatory Readiness", + description: + "Banks, insurance companies, and government agencies have run Java in production for decades. Compliance teams and auditors trust Java stacks, which matters when regulatory approval gates your launch.", + }, + { + title: "Largest Talent Pool", + description: (<>Java consistently ranks as the most-used enterprise language worldwide. Finding experienced Java engineers is easier and more cost-effective than niche alternatives. For Microsoft-stack organizations, .NET is the closest equivalent.), + }, + { + title: "Long-term Maintainability", + description: + "Java's strong typing, mature tooling, and backward compatibility mean codebases stay maintainable across decades. Systems built on Java 8 still run on Java 21 with minimal changes.", + }, + ], + }, + kotlin: { + sectionTitle: "Why Kotlin for Your Business", + subtitle: "Modern Android development with full Java interoperability.", + benefits: [ + { + title: "Google's Preferred Language", + description: + "Google declared Kotlin the preferred language for Android development. New Android APIs, Jetpack libraries, and official samples are Kotlin-first. Building in Kotlin means building with the platform, not against it.", + }, + { + title: "Safer Code, Fewer Crashes", + description: + "Kotlin's null safety eliminates NullPointerExceptions, the single most common cause of Android app crashes. Fewer crashes mean higher app store ratings and better user retention.", + }, + { + title: "Java Interoperability", + description: (<>Kotlin compiles to JVM bytecode and calls Java libraries directly. Teams migrate incrementally, file by file, without rewriting existing Java code. Your current investment in Java infrastructure is preserved.), + }, + { + title: "Concise, Readable Syntax", + description: + "Kotlin requires 30-40% fewer lines of code than equivalent Java. Less code means faster code reviews, fewer bugs, and engineers who spend time on product logic instead of boilerplate.", + }, + { + title: "Multiplatform Potential", + description: (<>Kotlin Multiplatform lets teams share business logic between Android, iOS, and backend. For teams that need maximum native performance across platforms, it's an alternative to React Native worth evaluating.), + }, + ], + }, + swift: { + sectionTitle: "Why Swift for Your Business", + subtitle: "Native iOS performance for products where the Apple experience matters.", + benefits: [ + { + title: "Best iOS Performance", + description: + "Swift compiles to native machine code, delivering the fastest possible execution on iPhone, iPad, and Apple Watch. For media-heavy apps, AR features, and real-time processing, no cross-platform framework matches Swift's speed.", + }, + { + title: "First Access to Apple APIs", + description: + "SwiftUI, ARKit, CoreML, HealthKit, and every new Apple framework ships Swift-first. Your product accesses new iOS capabilities on launch day, not weeks later when wrapper libraries catch up.", + }, + { + title: "Memory Safety", + description: + "Swift's ARC memory management and optional types eliminate entire categories of crashes. Apps built in Swift have measurably lower crash rates, which directly impacts App Store ranking and user retention.", + }, + { + title: "App Store Optimization", + description: + "Native Swift apps launch faster, consume less battery, and feel responsive in ways Apple's review team notices. Apple features native apps more prominently, giving your product better discovery.", + }, + { + title: "Cross-platform When Needed", + description: (<>Swift excels for iOS-first products. When your roadmap requires Android, teams can add React Native or Flutter for the cross-platform layer while keeping Swift for performance-critical iOS features.), + }, + ], + }, }; export default function WhyTechnology({ slug }: { slug: string }) { From 073b612298289782255042d10ce942545b339132 Mon Sep 17 00:00:00 2001 From: vibemarketerpromax Date: Wed, 4 Mar 2026 16:26:20 +0530 Subject: [PATCH 4/4] Remove Data Engineering, Test Automation, Serverless from tech hub These are concepts/disciplines, not specific technologies. Service pages already cover them as capabilities. --- lib/technologies-hub-data.ts | 37 +----------------------------------- 1 file changed, 1 insertion(+), 36 deletions(-) diff --git a/lib/technologies-hub-data.ts b/lib/technologies-hub-data.ts index 103370f..4d30de5 100644 --- a/lib/technologies-hub-data.ts +++ b/lib/technologies-hub-data.ts @@ -9,8 +9,7 @@ export type CategoryId = | "databases" | "ai-ml" | "messaging" - | "data-api" - | "testing"; + | "data-api"; export interface CategoryLink { label: string; @@ -89,14 +88,6 @@ export const categories: Category[] = [ }, { id: "messaging", label: "Messaging & Events", hash: "messaging" }, { id: "data-api", label: "Data & API", hash: "data-api" }, - { - id: "testing", - label: "Quality Assurance & Testing", - hash: "testing", - serviceLinks: [ - { label: "Software Testing & QA Services", href: "/services/software-testing-and-qa" }, - ], - }, ]; export const technologies: TechnologyItem[] = [ @@ -373,14 +364,6 @@ export const technologies: TechnologyItem[] = [ }, // Data & API - { - name: "Data Engineering", - slug: "data-engineering", - category: "data-api", - description: "ETL pipelines, data lakes, and real-time processing architectures", - logoPath: "/technologies/data-engineering-logo.svg", - href: null, - }, { name: "GraphQL", slug: "graphql", @@ -389,24 +372,6 @@ export const technologies: TechnologyItem[] = [ logoPath: "/technologies/graphql-logo.svg", href: null, }, - { - name: "Serverless", - slug: "serverless", - category: "data-api", - description: "Event-driven compute without infrastructure management", - logoPath: "/technologies/serverless-logo.svg", - href: null, - }, - - // Testing - { - name: "Test Automation", - slug: "test-automation", - category: "testing", - description: "End-to-end, integration, and unit testing frameworks and strategy", - logoPath: "/technologies/test-automation-logo.svg", - href: null, - }, ]; export function getTechnologiesByCategory(