@barkajs/barka 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +64 -0
- package/INVARIANTS.json +43 -0
- package/LICENSE +19 -0
- package/README.md +566 -0
- package/dist/app.d.ts +22 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +464 -0
- package/dist/app.js.map +1 -0
- package/dist/built-in-theme/components/cta/cta.d.ts +5 -0
- package/dist/built-in-theme/components/cta/cta.d.ts.map +1 -0
- package/dist/built-in-theme/components/cta/cta.js +6 -0
- package/dist/built-in-theme/components/cta/cta.js.map +1 -0
- package/dist/built-in-theme/components/features/features.d.ts +5 -0
- package/dist/built-in-theme/components/features/features.d.ts.map +1 -0
- package/dist/built-in-theme/components/features/features.js +7 -0
- package/dist/built-in-theme/components/features/features.js.map +1 -0
- package/dist/built-in-theme/components/hero/hero.d.ts +5 -0
- package/dist/built-in-theme/components/hero/hero.d.ts.map +1 -0
- package/dist/built-in-theme/components/hero/hero.js +6 -0
- package/dist/built-in-theme/components/hero/hero.js.map +1 -0
- package/dist/built-in-theme/components/text/text.d.ts +4 -0
- package/dist/built-in-theme/components/text/text.d.ts.map +1 -0
- package/dist/built-in-theme/components/text/text.js +7 -0
- package/dist/built-in-theme/components/text/text.js.map +1 -0
- package/dist/built-in-theme/layouts/article.d.ts +4 -0
- package/dist/built-in-theme/layouts/article.d.ts.map +1 -0
- package/dist/built-in-theme/layouts/article.js +11 -0
- package/dist/built-in-theme/layouts/article.js.map +1 -0
- package/dist/built-in-theme/layouts/base.d.ts +7 -0
- package/dist/built-in-theme/layouts/base.d.ts.map +1 -0
- package/dist/built-in-theme/layouts/base.js +21 -0
- package/dist/built-in-theme/layouts/base.js.map +1 -0
- package/dist/built-in-theme/layouts/landing-page.d.ts +6 -0
- package/dist/built-in-theme/layouts/landing-page.d.ts.map +1 -0
- package/dist/built-in-theme/layouts/landing-page.js +6 -0
- package/dist/built-in-theme/layouts/landing-page.js.map +1 -0
- package/dist/built-in-theme/layouts/page.d.ts +4 -0
- package/dist/built-in-theme/layouts/page.d.ts.map +1 -0
- package/dist/built-in-theme/layouts/page.js +7 -0
- package/dist/built-in-theme/layouts/page.js.map +1 -0
- package/dist/cli/build.d.ts +11 -0
- package/dist/cli/build.d.ts.map +1 -0
- package/dist/cli/build.js +271 -0
- package/dist/cli/build.js.map +1 -0
- package/dist/cli/create-app.d.ts +4 -0
- package/dist/cli/create-app.d.ts.map +1 -0
- package/dist/cli/create-app.js +179 -0
- package/dist/cli/create-app.js.map +1 -0
- package/dist/cli/db-init.d.ts +6 -0
- package/dist/cli/db-init.d.ts.map +1 -0
- package/dist/cli/db-init.js +28 -0
- package/dist/cli/db-init.js.map +1 -0
- package/dist/cli/dev.d.ts +10 -0
- package/dist/cli/dev.d.ts.map +1 -0
- package/dist/cli/dev.js +68 -0
- package/dist/cli/dev.js.map +1 -0
- package/dist/cli/export-cmd.d.ts +6 -0
- package/dist/cli/export-cmd.d.ts.map +1 -0
- package/dist/cli/export-cmd.js +12 -0
- package/dist/cli/export-cmd.js.map +1 -0
- package/dist/cli/import-cmd.d.ts +6 -0
- package/dist/cli/import-cmd.d.ts.map +1 -0
- package/dist/cli/import-cmd.js +11 -0
- package/dist/cli/import-cmd.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +163 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init-cmd.d.ts +20 -0
- package/dist/cli/init-cmd.d.ts.map +1 -0
- package/dist/cli/init-cmd.js +116 -0
- package/dist/cli/init-cmd.js.map +1 -0
- package/dist/cli/sync-cmd.d.ts +5 -0
- package/dist/cli/sync-cmd.d.ts.map +1 -0
- package/dist/cli/sync-cmd.js +17 -0
- package/dist/cli/sync-cmd.js.map +1 -0
- package/dist/content-engine.d.ts +50 -0
- package/dist/content-engine.d.ts.map +1 -0
- package/dist/content-engine.js +240 -0
- package/dist/content-engine.js.map +1 -0
- package/dist/db/connection.d.ts +9 -0
- package/dist/db/connection.d.ts.map +1 -0
- package/dist/db/connection.js +121 -0
- package/dist/db/connection.js.map +1 -0
- package/dist/db/schema.d.ts +1178 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +79 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/auth.d.ts +14 -0
- package/dist/lib/auth.d.ts.map +1 -0
- package/dist/lib/auth.js +40 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/config-files.d.ts +8 -0
- package/dist/lib/config-files.d.ts.map +1 -0
- package/dist/lib/config-files.js +72 -0
- package/dist/lib/config-files.js.map +1 -0
- package/dist/lib/content-files.d.ts +5 -0
- package/dist/lib/content-files.d.ts.map +1 -0
- package/dist/lib/content-files.js +156 -0
- package/dist/lib/content-files.js.map +1 -0
- package/dist/lib/i18n.d.ts +33 -0
- package/dist/lib/i18n.d.ts.map +1 -0
- package/dist/lib/i18n.js +247 -0
- package/dist/lib/i18n.js.map +1 -0
- package/dist/lib/multisite.d.ts +23 -0
- package/dist/lib/multisite.d.ts.map +1 -0
- package/dist/lib/multisite.js +73 -0
- package/dist/lib/multisite.js.map +1 -0
- package/dist/lib/paths.d.ts +6 -0
- package/dist/lib/paths.d.ts.map +1 -0
- package/dist/lib/paths.js +25 -0
- package/dist/lib/paths.js.map +1 -0
- package/dist/lib/schema-loader.d.ts +25 -0
- package/dist/lib/schema-loader.d.ts.map +1 -0
- package/dist/lib/schema-loader.js +45 -0
- package/dist/lib/schema-loader.js.map +1 -0
- package/dist/lib/seo.d.ts +18 -0
- package/dist/lib/seo.d.ts.map +1 -0
- package/dist/lib/seo.js +212 -0
- package/dist/lib/seo.js.map +1 -0
- package/dist/lib/sync.d.ts +33 -0
- package/dist/lib/sync.d.ts.map +1 -0
- package/dist/lib/sync.js +308 -0
- package/dist/lib/sync.js.map +1 -0
- package/dist/lib/taxonomy.d.ts +29 -0
- package/dist/lib/taxonomy.d.ts.map +1 -0
- package/dist/lib/taxonomy.js +170 -0
- package/dist/lib/taxonomy.js.map +1 -0
- package/dist/lib/template-renderer.d.ts +6 -0
- package/dist/lib/template-renderer.d.ts.map +1 -0
- package/dist/lib/template-renderer.js +80 -0
- package/dist/lib/template-renderer.js.map +1 -0
- package/dist/lib/theme-loader.d.ts +5 -0
- package/dist/lib/theme-loader.d.ts.map +1 -0
- package/dist/lib/theme-loader.js +199 -0
- package/dist/lib/theme-loader.js.map +1 -0
- package/dist/lib/theme-types.d.ts +39 -0
- package/dist/lib/theme-types.d.ts.map +1 -0
- package/dist/lib/theme-types.js +2 -0
- package/dist/lib/theme-types.js.map +1 -0
- package/dist/lib/types.d.ts +91 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +2 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/routes/admin/content-edit.d.ts +10 -0
- package/dist/routes/admin/content-edit.d.ts.map +1 -0
- package/dist/routes/admin/content-edit.js +325 -0
- package/dist/routes/admin/content-edit.js.map +1 -0
- package/dist/routes/admin/content-list.d.ts +10 -0
- package/dist/routes/admin/content-list.d.ts.map +1 -0
- package/dist/routes/admin/content-list.js +162 -0
- package/dist/routes/admin/content-list.js.map +1 -0
- package/dist/routes/admin/content.d.ts +3 -0
- package/dist/routes/admin/content.d.ts.map +1 -0
- package/dist/routes/admin/content.js +12 -0
- package/dist/routes/admin/content.js.map +1 -0
- package/dist/routes/admin/dashboard.d.ts +4 -0
- package/dist/routes/admin/dashboard.d.ts.map +1 -0
- package/dist/routes/admin/dashboard.js +121 -0
- package/dist/routes/admin/dashboard.js.map +1 -0
- package/dist/routes/admin/export-route.d.ts +10 -0
- package/dist/routes/admin/export-route.d.ts.map +1 -0
- package/dist/routes/admin/export-route.js +19 -0
- package/dist/routes/admin/export-route.js.map +1 -0
- package/dist/routes/admin/index.d.ts +9 -0
- package/dist/routes/admin/index.d.ts.map +1 -0
- package/dist/routes/admin/index.js +27 -0
- package/dist/routes/admin/index.js.map +1 -0
- package/dist/routes/admin/layout.d.ts +17 -0
- package/dist/routes/admin/layout.d.ts.map +1 -0
- package/dist/routes/admin/layout.js +110 -0
- package/dist/routes/admin/layout.js.map +1 -0
- package/dist/routes/admin/login.d.ts +5 -0
- package/dist/routes/admin/login.d.ts.map +1 -0
- package/dist/routes/admin/login.js +113 -0
- package/dist/routes/admin/login.js.map +1 -0
- package/dist/routes/admin/media.d.ts +10 -0
- package/dist/routes/admin/media.d.ts.map +1 -0
- package/dist/routes/admin/media.js +192 -0
- package/dist/routes/admin/media.js.map +1 -0
- package/dist/routes/admin/middleware.d.ts +8 -0
- package/dist/routes/admin/middleware.d.ts.map +1 -0
- package/dist/routes/admin/middleware.js +29 -0
- package/dist/routes/admin/middleware.js.map +1 -0
- package/dist/routes/admin/section-builder.d.ts +10 -0
- package/dist/routes/admin/section-builder.d.ts.map +1 -0
- package/dist/routes/admin/section-builder.js +487 -0
- package/dist/routes/admin/section-builder.js.map +1 -0
- package/dist/routes/admin/settings.d.ts +10 -0
- package/dist/routes/admin/settings.d.ts.map +1 -0
- package/dist/routes/admin/settings.js +209 -0
- package/dist/routes/admin/settings.js.map +1 -0
- package/dist/routes/admin/site-switcher.d.ts +3 -0
- package/dist/routes/admin/site-switcher.d.ts.map +1 -0
- package/dist/routes/admin/site-switcher.js +36 -0
- package/dist/routes/admin/site-switcher.js.map +1 -0
- package/dist/routes/admin/taxonomy.d.ts +10 -0
- package/dist/routes/admin/taxonomy.d.ts.map +1 -0
- package/dist/routes/admin/taxonomy.js +297 -0
- package/dist/routes/admin/taxonomy.js.map +1 -0
- package/dist/routes/admin/users.d.ts +10 -0
- package/dist/routes/admin/users.d.ts.map +1 -0
- package/dist/routes/admin/users.js +227 -0
- package/dist/routes/admin/users.js.map +1 -0
- package/package.json +75 -0
- package/src/built-in-theme/components/cta/cta.tsx +18 -0
- package/src/built-in-theme/components/cta/schema.yaml +17 -0
- package/src/built-in-theme/components/features/features.tsx +18 -0
- package/src/built-in-theme/components/features/schema.yaml +22 -0
- package/src/built-in-theme/components/hero/hero.tsx +18 -0
- package/src/built-in-theme/components/hero/schema.yaml +17 -0
- package/src/built-in-theme/components/text/schema.yaml +12 -0
- package/src/built-in-theme/components/text/text.tsx +11 -0
- package/src/built-in-theme/layouts/article.tsx +20 -0
- package/src/built-in-theme/layouts/base.tsx +50 -0
- package/src/built-in-theme/layouts/landing-page.tsx +15 -0
- package/src/built-in-theme/layouts/page.tsx +11 -0
- package/src/built-in-theme/theme.yaml +4 -0
- package/starters/blank/config/content-types.yaml +47 -0
- package/starters/blank/config/section-types.yaml +115 -0
- package/starters/blank/config/settings.yaml +12 -0
- package/starters/blank/content/landing-pages/homepage.yaml +55 -0
- package/starters/blank/content/pages/about.md +27 -0
- package/starters/blank/starter.yaml +14 -0
- package/starters/blank/themes/starter/_types.ts +93 -0
- package/starters/blank/themes/starter/components/blog-listing/blog-listing.tsx +102 -0
- package/starters/blank/themes/starter/components/blog-listing/schema.yaml +21 -0
- package/starters/blank/themes/starter/components/columns/columns.tsx +101 -0
- package/starters/blank/themes/starter/components/columns/schema.yaml +23 -0
- package/starters/blank/themes/starter/components/counters/counters.css +13 -0
- package/starters/blank/themes/starter/components/counters/counters.tsx +81 -0
- package/starters/blank/themes/starter/components/counters/schema.yaml +23 -0
- package/starters/blank/themes/starter/components/cta/cta.tsx +57 -0
- package/starters/blank/themes/starter/components/cta/schema.yaml +30 -0
- package/starters/blank/themes/starter/components/faq/faq.tsx +77 -0
- package/starters/blank/themes/starter/components/faq/schema.yaml +20 -0
- package/starters/blank/themes/starter/components/features/features.tsx +82 -0
- package/starters/blank/themes/starter/components/features/schema.yaml +19 -0
- package/starters/blank/themes/starter/components/form/form.tsx +126 -0
- package/starters/blank/themes/starter/components/form/schema.yaml +18 -0
- package/starters/blank/themes/starter/components/gallery/gallery.tsx +85 -0
- package/starters/blank/themes/starter/components/gallery/schema.yaml +27 -0
- package/starters/blank/themes/starter/components/hero/hero.tsx +77 -0
- package/starters/blank/themes/starter/components/hero/schema.yaml +26 -0
- package/starters/blank/themes/starter/components/logo-slider/logo-slider.css +21 -0
- package/starters/blank/themes/starter/components/logo-slider/logo-slider.tsx +81 -0
- package/starters/blank/themes/starter/components/logo-slider/schema.yaml +23 -0
- package/starters/blank/themes/starter/components/pricing/pricing.tsx +141 -0
- package/starters/blank/themes/starter/components/pricing/schema.yaml +44 -0
- package/starters/blank/themes/starter/components/testimonials/schema.yaml +26 -0
- package/starters/blank/themes/starter/components/testimonials/testimonials.tsx +100 -0
- package/starters/blank/themes/starter/components/text/schema.yaml +12 -0
- package/starters/blank/themes/starter/components/text/text.tsx +62 -0
- package/starters/blank/themes/starter/components/text-with-image/schema.yaml +30 -0
- package/starters/blank/themes/starter/components/text-with-image/text-with-image.tsx +86 -0
- package/starters/blank/themes/starter/components/video/schema.yaml +19 -0
- package/starters/blank/themes/starter/components/video/video.tsx +98 -0
- package/starters/blank/themes/starter/layouts/article.tsx +42 -0
- package/starters/blank/themes/starter/layouts/base.tsx +92 -0
- package/starters/blank/themes/starter/layouts/landing-page.tsx +14 -0
- package/starters/blank/themes/starter/layouts/page.tsx +29 -0
- package/starters/blank/themes/starter/partials/footer.tsx +22 -0
- package/starters/blank/themes/starter/partials/header.tsx +32 -0
- package/starters/blank/themes/starter/static/style.css +125 -0
- package/starters/blank/themes/starter/theme.yaml +16 -0
- package/starters/kadoservices/config/content-types.yaml +239 -0
- package/starters/kadoservices/config/languages.yaml +12 -0
- package/starters/kadoservices/config/section-types.yaml +379 -0
- package/starters/kadoservices/config/settings.yaml +15 -0
- package/starters/kadoservices/config/sites.yaml +14 -0
- package/starters/kadoservices/config/taxonomies.yaml +61 -0
- package/starters/kadoservices/config/translations/de.yaml +120 -0
- package/starters/kadoservices/config/translations/en.yaml +120 -0
- package/starters/kadoservices/config/translations/pl.yaml +120 -0
- package/starters/kadoservices/content/articles/employer-branding-strategies.md +61 -0
- package/starters/kadoservices/content/articles/hiring-trends-2026.md +61 -0
- package/starters/kadoservices/content/articles/hiring-trends-2026.pl.md +61 -0
- package/starters/kadoservices/content/articles/labor-law-changes.md +78 -0
- package/starters/kadoservices/content/articles/temporary-staffing-guide.md +76 -0
- package/starters/kadoservices/content/articles/temporary-staffing-guide.pl.md +76 -0
- package/starters/kadoservices/content/case-studies/finance-rpo-program.md +68 -0
- package/starters/kadoservices/content/case-studies/manufacturing-mass-recruitment.md +65 -0
- package/starters/kadoservices/content/case-studies/manufacturing-mass-recruitment.pl.md +65 -0
- package/starters/kadoservices/content/case-studies/retail-seasonal-staffing.md +69 -0
- package/starters/kadoservices/content/industries/finance-shared-services.md +59 -0
- package/starters/kadoservices/content/industries/healthcare.md +64 -0
- package/starters/kadoservices/content/industries/it-technology.md +61 -0
- package/starters/kadoservices/content/industries/logistics.md +54 -0
- package/starters/kadoservices/content/industries/manufacturing.md +61 -0
- package/starters/kadoservices/content/industries/retail.md +56 -0
- package/starters/kadoservices/content/landing-pages/homepage.pl.yaml +198 -0
- package/starters/kadoservices/content/landing-pages/homepage.yaml +198 -0
- package/starters/kadoservices/content/locations/gdansk.md +32 -0
- package/starters/kadoservices/content/locations/krakow.md +30 -0
- package/starters/kadoservices/content/locations/warsaw.md +30 -0
- package/starters/kadoservices/content/locations/wroclaw.md +32 -0
- package/starters/kadoservices/content/pages/about.md +58 -0
- package/starters/kadoservices/content/pages/about.pl.md +58 -0
- package/starters/kadoservices/content/pages/careers.md +55 -0
- package/starters/kadoservices/content/pages/clients.md +65 -0
- package/starters/kadoservices/content/pages/contact.md +74 -0
- package/starters/kadoservices/content/pages/contact.pl.md +74 -0
- package/starters/kadoservices/content/pages/faq.md +76 -0
- package/starters/kadoservices/content/services/employer-branding.md +70 -0
- package/starters/kadoservices/content/services/hr-consulting.md +64 -0
- package/starters/kadoservices/content/services/outsourcing-rpo.md +78 -0
- package/starters/kadoservices/content/services/outsourcing-rpo.pl.md +67 -0
- package/starters/kadoservices/content/services/payroll-hr-admin.md +66 -0
- package/starters/kadoservices/content/services/permanent-recruitment.md +78 -0
- package/starters/kadoservices/content/services/permanent-recruitment.pl.md +78 -0
- package/starters/kadoservices/content/services/temporary-staffing.md +78 -0
- package/starters/kadoservices/content/team/anna-kowalska.md +26 -0
- package/starters/kadoservices/content/team/jan-lewandowski.md +26 -0
- package/starters/kadoservices/content/team/katarzyna-zielinska.md +26 -0
- package/starters/kadoservices/content/team/maria-wisniewska.md +28 -0
- package/starters/kadoservices/content/team/tomasz-nowak.md +26 -0
- package/starters/kadoservices/starter.yaml +15 -0
- package/starters/kadoservices/themes/kadoservices/_types.ts +93 -0
- package/starters/kadoservices/themes/kadoservices/components/blog-listing/blog-listing.tsx +197 -0
- package/starters/kadoservices/themes/kadoservices/components/blog-listing/schema.yaml +21 -0
- package/starters/kadoservices/themes/kadoservices/components/columns/columns.tsx +104 -0
- package/starters/kadoservices/themes/kadoservices/components/columns/schema.yaml +23 -0
- package/starters/kadoservices/themes/kadoservices/components/counters/counters.css +13 -0
- package/starters/kadoservices/themes/kadoservices/components/counters/counters.tsx +103 -0
- package/starters/kadoservices/themes/kadoservices/components/counters/schema.yaml +23 -0
- package/starters/kadoservices/themes/kadoservices/components/cta/cta.tsx +100 -0
- package/starters/kadoservices/themes/kadoservices/components/cta/schema.yaml +30 -0
- package/starters/kadoservices/themes/kadoservices/components/faq/faq.tsx +77 -0
- package/starters/kadoservices/themes/kadoservices/components/faq/schema.yaml +20 -0
- package/starters/kadoservices/themes/kadoservices/components/features/features.tsx +151 -0
- package/starters/kadoservices/themes/kadoservices/components/features/schema.yaml +19 -0
- package/starters/kadoservices/themes/kadoservices/components/form/form.tsx +135 -0
- package/starters/kadoservices/themes/kadoservices/components/form/schema.yaml +18 -0
- package/starters/kadoservices/themes/kadoservices/components/gallery/gallery.tsx +90 -0
- package/starters/kadoservices/themes/kadoservices/components/gallery/schema.yaml +27 -0
- package/starters/kadoservices/themes/kadoservices/components/hero/hero.tsx +175 -0
- package/starters/kadoservices/themes/kadoservices/components/hero/schema.yaml +26 -0
- package/starters/kadoservices/themes/kadoservices/components/logo-slider/logo-slider.css +21 -0
- package/starters/kadoservices/themes/kadoservices/components/logo-slider/logo-slider.tsx +83 -0
- package/starters/kadoservices/themes/kadoservices/components/logo-slider/schema.yaml +23 -0
- package/starters/kadoservices/themes/kadoservices/components/pricing/pricing.tsx +161 -0
- package/starters/kadoservices/themes/kadoservices/components/pricing/schema.yaml +44 -0
- package/starters/kadoservices/themes/kadoservices/components/testimonials/schema.yaml +26 -0
- package/starters/kadoservices/themes/kadoservices/components/testimonials/testimonials.css +13 -0
- package/starters/kadoservices/themes/kadoservices/components/testimonials/testimonials.tsx +150 -0
- package/starters/kadoservices/themes/kadoservices/components/text/schema.yaml +12 -0
- package/starters/kadoservices/themes/kadoservices/components/text/text.tsx +67 -0
- package/starters/kadoservices/themes/kadoservices/components/text-with-image/schema.yaml +30 -0
- package/starters/kadoservices/themes/kadoservices/components/text-with-image/text-with-image.tsx +92 -0
- package/starters/kadoservices/themes/kadoservices/components/video/schema.yaml +19 -0
- package/starters/kadoservices/themes/kadoservices/components/video/video.tsx +103 -0
- package/starters/kadoservices/themes/kadoservices/layouts/404.tsx +96 -0
- package/starters/kadoservices/themes/kadoservices/layouts/article.tsx +140 -0
- package/starters/kadoservices/themes/kadoservices/layouts/base.tsx +669 -0
- package/starters/kadoservices/themes/kadoservices/layouts/case-study.tsx +240 -0
- package/starters/kadoservices/themes/kadoservices/layouts/index--articles.tsx +250 -0
- package/starters/kadoservices/themes/kadoservices/layouts/index--case-studies.tsx +232 -0
- package/starters/kadoservices/themes/kadoservices/layouts/index--services.tsx +237 -0
- package/starters/kadoservices/themes/kadoservices/layouts/index.tsx +96 -0
- package/starters/kadoservices/themes/kadoservices/layouts/industry.tsx +121 -0
- package/starters/kadoservices/themes/kadoservices/layouts/landing-page.tsx +14 -0
- package/starters/kadoservices/themes/kadoservices/layouts/page--about.tsx +158 -0
- package/starters/kadoservices/themes/kadoservices/layouts/page--careers.tsx +214 -0
- package/starters/kadoservices/themes/kadoservices/layouts/page--contact.tsx +218 -0
- package/starters/kadoservices/themes/kadoservices/layouts/page.tsx +45 -0
- package/starters/kadoservices/themes/kadoservices/layouts/service.tsx +235 -0
- package/starters/kadoservices/themes/kadoservices/partials/footer.tsx +109 -0
- package/starters/kadoservices/themes/kadoservices/partials/header.tsx +53 -0
- package/starters/kadoservices/themes/kadoservices/static/images/article-platform-engineering.jpg +0 -0
- package/starters/kadoservices/themes/kadoservices/static/images/barka-logo.png +0 -0
- package/starters/kadoservices/themes/kadoservices/static/images/case-study-banking-dashboard.jpg +0 -0
- package/starters/kadoservices/themes/kadoservices/static/images/case-study-banking.png +0 -0
- package/starters/kadoservices/themes/kadoservices/static/images/case-study-ecommerce-dashboard.jpg +0 -0
- package/starters/kadoservices/themes/kadoservices/static/images/case-study-healthcare-dashboard.jpg +0 -0
- package/starters/kadoservices/themes/kadoservices/static/images/case-study-healthcare.png +0 -0
- package/starters/kadoservices/themes/kadoservices/static/images/case-study-retail.png +0 -0
- package/starters/kadoservices/themes/kadoservices/static/images/handshake.jpg +0 -0
- package/starters/kadoservices/themes/kadoservices/static/images/hero-bg.jpg +0 -0
- package/starters/kadoservices/themes/kadoservices/static/images/hero-bg.png +0 -0
- package/starters/kadoservices/themes/kadoservices/static/images/lokatech-logo.png +0 -0
- package/starters/kadoservices/themes/kadoservices/static/images/office-warsaw.png +0 -0
- package/starters/kadoservices/themes/kadoservices/static/images/office.jpg +0 -0
- package/starters/kadoservices/themes/kadoservices/static/images/team-anna-kowalska.png +0 -0
- package/starters/kadoservices/themes/kadoservices/static/images/team-collaboration.jpg +0 -0
- package/starters/kadoservices/themes/kadoservices/static/images/team-jan-nowak.png +0 -0
- package/starters/kadoservices/themes/kadoservices/static/images/team-katarzyna-kaminska.png +0 -0
- package/starters/kadoservices/themes/kadoservices/static/images/team-maria-wisniewska.png +0 -0
- package/starters/kadoservices/themes/kadoservices/static/images/team-meeting.jpg +0 -0
- package/starters/kadoservices/themes/kadoservices/static/images/team-strategy-session.jpg +0 -0
- package/starters/kadoservices/themes/kadoservices/static/images/team-tomasz-lewandowski.png +0 -0
- package/starters/kadoservices/themes/kadoservices/static/style.css +542 -0
- package/starters/kadoservices/themes/kadoservices/theme.yaml +21 -0
- package/starters/kadoservices/themes/starter/_types.ts +93 -0
- package/starters/kadoservices/themes/starter/components/blog-listing/blog-listing.tsx +102 -0
- package/starters/kadoservices/themes/starter/components/blog-listing/schema.yaml +21 -0
- package/starters/kadoservices/themes/starter/components/columns/columns.tsx +101 -0
- package/starters/kadoservices/themes/starter/components/columns/schema.yaml +23 -0
- package/starters/kadoservices/themes/starter/components/counters/counters.css +13 -0
- package/starters/kadoservices/themes/starter/components/counters/counters.tsx +81 -0
- package/starters/kadoservices/themes/starter/components/counters/schema.yaml +23 -0
- package/starters/kadoservices/themes/starter/components/cta/cta.tsx +57 -0
- package/starters/kadoservices/themes/starter/components/cta/schema.yaml +30 -0
- package/starters/kadoservices/themes/starter/components/faq/faq.tsx +77 -0
- package/starters/kadoservices/themes/starter/components/faq/schema.yaml +20 -0
- package/starters/kadoservices/themes/starter/components/features/features.tsx +82 -0
- package/starters/kadoservices/themes/starter/components/features/schema.yaml +19 -0
- package/starters/kadoservices/themes/starter/components/form/form.tsx +126 -0
- package/starters/kadoservices/themes/starter/components/form/schema.yaml +18 -0
- package/starters/kadoservices/themes/starter/components/gallery/gallery.tsx +85 -0
- package/starters/kadoservices/themes/starter/components/gallery/schema.yaml +27 -0
- package/starters/kadoservices/themes/starter/components/hero/hero.tsx +77 -0
- package/starters/kadoservices/themes/starter/components/hero/schema.yaml +26 -0
- package/starters/kadoservices/themes/starter/components/logo-slider/logo-slider.css +21 -0
- package/starters/kadoservices/themes/starter/components/logo-slider/logo-slider.tsx +81 -0
- package/starters/kadoservices/themes/starter/components/logo-slider/schema.yaml +23 -0
- package/starters/kadoservices/themes/starter/components/pricing/pricing.tsx +141 -0
- package/starters/kadoservices/themes/starter/components/pricing/schema.yaml +44 -0
- package/starters/kadoservices/themes/starter/components/testimonials/schema.yaml +26 -0
- package/starters/kadoservices/themes/starter/components/testimonials/testimonials.tsx +100 -0
- package/starters/kadoservices/themes/starter/components/text/schema.yaml +12 -0
- package/starters/kadoservices/themes/starter/components/text/text.tsx +62 -0
- package/starters/kadoservices/themes/starter/components/text-with-image/schema.yaml +30 -0
- package/starters/kadoservices/themes/starter/components/text-with-image/text-with-image.tsx +86 -0
- package/starters/kadoservices/themes/starter/components/video/schema.yaml +19 -0
- package/starters/kadoservices/themes/starter/components/video/video.tsx +98 -0
- package/starters/kadoservices/themes/starter/layouts/article.tsx +42 -0
- package/starters/kadoservices/themes/starter/layouts/base.tsx +92 -0
- package/starters/kadoservices/themes/starter/layouts/landing-page.tsx +14 -0
- package/starters/kadoservices/themes/starter/layouts/page.tsx +29 -0
- package/starters/kadoservices/themes/starter/partials/footer.tsx +22 -0
- package/starters/kadoservices/themes/starter/partials/header.tsx +32 -0
- package/starters/kadoservices/themes/starter/static/style.css +125 -0
- package/starters/kadoservices/themes/starter/theme.yaml +16 -0
- package/starters/lokatech/config/content-types.yaml +226 -0
- package/starters/lokatech/config/languages.yaml +12 -0
- package/starters/lokatech/config/section-types.yaml +379 -0
- package/starters/lokatech/config/settings.yaml +15 -0
- package/starters/lokatech/config/sites.yaml +21 -0
- package/starters/lokatech/config/taxonomies.yaml +65 -0
- package/starters/lokatech/config/translations/de.yaml +108 -0
- package/starters/lokatech/config/translations/en.yaml +108 -0
- package/starters/lokatech/config/translations/pl.yaml +108 -0
- package/starters/lokatech/content/articles/ai-in-enterprise.md +51 -0
- package/starters/lokatech/content/articles/api-gateway-patterns-enterprise.md +35 -0
- package/starters/lokatech/content/articles/design-system-enterprise-scale.md +35 -0
- package/starters/lokatech/content/articles/domain-driven-design-bounded-contexts.md +35 -0
- package/starters/lokatech/content/articles/engineering-team-scaling-50-to-200.md +33 -0
- package/starters/lokatech/content/articles/event-driven-architecture-microservices.md +35 -0
- package/starters/lokatech/content/articles/future-of-cloud-native.md +47 -0
- package/starters/lokatech/content/articles/getting-started.md +83 -0
- package/starters/lokatech/content/articles/headless-cms-composable-architecture.md +35 -0
- package/starters/lokatech/content/articles/kubernetes-cost-optimization-finops.md +33 -0
- package/starters/lokatech/content/articles/legacy-modernization-strangler-fig.md +35 -0
- package/starters/lokatech/content/articles/llm-fine-tuning-enterprise-data.md +33 -0
- package/starters/lokatech/content/articles/observability-opentelemetry-stack.md +35 -0
- package/starters/lokatech/content/articles/platform-engineering-internal-developer-portals.md +33 -0
- package/starters/lokatech/content/articles/platform-engineering-internal-developer-portals.pl.md +33 -0
- package/starters/lokatech/content/articles/rag-retrieval-augmented-generation-production.md +35 -0
- package/starters/lokatech/content/articles/remote-engineering-culture-distributed-teams.md +35 -0
- package/starters/lokatech/content/articles/supply-chain-security-sbom.md +35 -0
- package/starters/lokatech/content/articles/welcome.md +42 -0
- package/starters/lokatech/content/articles/welcome.pl.md +39 -0
- package/starters/lokatech/content/articles/zero-trust-network-architecture.md +35 -0
- package/starters/lokatech/content/articles/zero-trust-security.md +55 -0
- package/starters/lokatech/content/case-studies/banking-platform-modernization.md +67 -0
- package/starters/lokatech/content/case-studies/ecommerce-platform-rewrite.md +64 -0
- package/starters/lokatech/content/case-studies/govtech-citizen-portal.md +59 -0
- package/starters/lokatech/content/case-studies/healthcare-data-pipeline.md +67 -0
- package/starters/lokatech/content/case-studies/healthcare-data-pipeline.pl.md +60 -0
- package/starters/lokatech/content/case-studies/insurance-claims-automation.md +58 -0
- package/starters/lokatech/content/case-studies/manufacturing-iot-digital-twin.md +58 -0
- package/starters/lokatech/content/case-studies/retail-cloud-migration.md +49 -0
- package/starters/lokatech/content/case-studies/telecom-5g-platform.md +57 -0
- package/starters/lokatech/content/industries/energy-utilities.md +35 -0
- package/starters/lokatech/content/industries/financial-services.md +35 -0
- package/starters/lokatech/content/industries/healthcare.md +35 -0
- package/starters/lokatech/content/industries/manufacturing.md +35 -0
- package/starters/lokatech/content/industries/retail-ecommerce.md +35 -0
- package/starters/lokatech/content/industries/telecom-media.md +35 -0
- package/starters/lokatech/content/landing-pages/homepage.pl.yaml +182 -0
- package/starters/lokatech/content/landing-pages/homepage.yaml +236 -0
- package/starters/lokatech/content/locations/berlin.md +22 -0
- package/starters/lokatech/content/locations/krakow.md +22 -0
- package/starters/lokatech/content/locations/london.md +22 -0
- package/starters/lokatech/content/locations/warsaw.md +22 -0
- package/starters/lokatech/content/locations/wroclaw.md +22 -0
- package/starters/lokatech/content/pages/about.md +55 -0
- package/starters/lokatech/content/pages/about.pl.md +36 -0
- package/starters/lokatech/content/pages/careers.md +50 -0
- package/starters/lokatech/content/pages/contact.md +51 -0
- package/starters/lokatech/content/pages/contact.pl.md +51 -0
- package/starters/lokatech/content/pages/security-compliance.md +66 -0
- package/starters/lokatech/content/services/cloud-infrastructure.md +73 -0
- package/starters/lokatech/content/services/custom-software-development.md +74 -0
- package/starters/lokatech/content/services/custom-software-development.pl.md +80 -0
- package/starters/lokatech/content/services/cybersecurity.md +72 -0
- package/starters/lokatech/content/services/data-ai.md +74 -0
- package/starters/lokatech/content/services/digital-transformation.md +70 -0
- package/starters/lokatech/content/services/it-outsourcing.md +72 -0
- package/starters/lokatech/content/team/anna-kowalska.md +21 -0
- package/starters/lokatech/content/team/jan-nowak.md +21 -0
- package/starters/lokatech/content/team/katarzyna-kaminska.md +20 -0
- package/starters/lokatech/content/team/maria-wisniewska.md +20 -0
- package/starters/lokatech/content/team/tomasz-lewandowski.md +20 -0
- package/starters/lokatech/starter.yaml +15 -0
- package/starters/lokatech/themes/lokatech/_types.ts +93 -0
- package/starters/lokatech/themes/lokatech/components/blog-listing/blog-listing.tsx +197 -0
- package/starters/lokatech/themes/lokatech/components/blog-listing/schema.yaml +21 -0
- package/starters/lokatech/themes/lokatech/components/columns/columns.tsx +104 -0
- package/starters/lokatech/themes/lokatech/components/columns/schema.yaml +23 -0
- package/starters/lokatech/themes/lokatech/components/counters/counters.css +13 -0
- package/starters/lokatech/themes/lokatech/components/counters/counters.tsx +103 -0
- package/starters/lokatech/themes/lokatech/components/counters/schema.yaml +23 -0
- package/starters/lokatech/themes/lokatech/components/cta/cta.tsx +100 -0
- package/starters/lokatech/themes/lokatech/components/cta/schema.yaml +30 -0
- package/starters/lokatech/themes/lokatech/components/faq/faq.tsx +77 -0
- package/starters/lokatech/themes/lokatech/components/faq/schema.yaml +20 -0
- package/starters/lokatech/themes/lokatech/components/features/features.tsx +149 -0
- package/starters/lokatech/themes/lokatech/components/features/schema.yaml +19 -0
- package/starters/lokatech/themes/lokatech/components/form/form.tsx +135 -0
- package/starters/lokatech/themes/lokatech/components/form/schema.yaml +18 -0
- package/starters/lokatech/themes/lokatech/components/gallery/gallery.tsx +90 -0
- package/starters/lokatech/themes/lokatech/components/gallery/schema.yaml +27 -0
- package/starters/lokatech/themes/lokatech/components/hero/hero.tsx +167 -0
- package/starters/lokatech/themes/lokatech/components/hero/schema.yaml +26 -0
- package/starters/lokatech/themes/lokatech/components/logo-slider/logo-slider.css +21 -0
- package/starters/lokatech/themes/lokatech/components/logo-slider/logo-slider.tsx +83 -0
- package/starters/lokatech/themes/lokatech/components/logo-slider/schema.yaml +23 -0
- package/starters/lokatech/themes/lokatech/components/pricing/pricing.tsx +161 -0
- package/starters/lokatech/themes/lokatech/components/pricing/schema.yaml +44 -0
- package/starters/lokatech/themes/lokatech/components/testimonials/schema.yaml +26 -0
- package/starters/lokatech/themes/lokatech/components/testimonials/testimonials.css +13 -0
- package/starters/lokatech/themes/lokatech/components/testimonials/testimonials.tsx +150 -0
- package/starters/lokatech/themes/lokatech/components/text/schema.yaml +12 -0
- package/starters/lokatech/themes/lokatech/components/text/text.tsx +67 -0
- package/starters/lokatech/themes/lokatech/components/text-with-image/schema.yaml +30 -0
- package/starters/lokatech/themes/lokatech/components/text-with-image/text-with-image.tsx +92 -0
- package/starters/lokatech/themes/lokatech/components/video/schema.yaml +19 -0
- package/starters/lokatech/themes/lokatech/components/video/video.tsx +103 -0
- package/starters/lokatech/themes/lokatech/layouts/404.tsx +96 -0
- package/starters/lokatech/themes/lokatech/layouts/article.tsx +140 -0
- package/starters/lokatech/themes/lokatech/layouts/base.tsx +672 -0
- package/starters/lokatech/themes/lokatech/layouts/case-study.tsx +233 -0
- package/starters/lokatech/themes/lokatech/layouts/index--articles.tsx +246 -0
- package/starters/lokatech/themes/lokatech/layouts/index--case-studies.tsx +230 -0
- package/starters/lokatech/themes/lokatech/layouts/index--services.tsx +237 -0
- package/starters/lokatech/themes/lokatech/layouts/index.tsx +96 -0
- package/starters/lokatech/themes/lokatech/layouts/industry.tsx +121 -0
- package/starters/lokatech/themes/lokatech/layouts/landing-page.tsx +14 -0
- package/starters/lokatech/themes/lokatech/layouts/page--about.tsx +158 -0
- package/starters/lokatech/themes/lokatech/layouts/page--careers.tsx +125 -0
- package/starters/lokatech/themes/lokatech/layouts/page--contact.tsx +235 -0
- package/starters/lokatech/themes/lokatech/layouts/page.tsx +45 -0
- package/starters/lokatech/themes/lokatech/layouts/service.tsx +235 -0
- package/starters/lokatech/themes/lokatech/partials/footer.tsx +109 -0
- package/starters/lokatech/themes/lokatech/partials/header.tsx +53 -0
- package/starters/lokatech/themes/lokatech/static/images/article-platform-engineering.jpg +0 -0
- package/starters/lokatech/themes/lokatech/static/images/barka-logo.png +0 -0
- package/starters/lokatech/themes/lokatech/static/images/case-study-banking-dashboard.jpg +0 -0
- package/starters/lokatech/themes/lokatech/static/images/case-study-banking.png +0 -0
- package/starters/lokatech/themes/lokatech/static/images/case-study-ecommerce-dashboard.jpg +0 -0
- package/starters/lokatech/themes/lokatech/static/images/case-study-healthcare-dashboard.jpg +0 -0
- package/starters/lokatech/themes/lokatech/static/images/case-study-healthcare.png +0 -0
- package/starters/lokatech/themes/lokatech/static/images/case-study-retail.png +0 -0
- package/starters/lokatech/themes/lokatech/static/images/hero-bg.png +0 -0
- package/starters/lokatech/themes/lokatech/static/images/lokatech-logo.png +0 -0
- package/starters/lokatech/themes/lokatech/static/images/office-warsaw.png +0 -0
- package/starters/lokatech/themes/lokatech/static/images/team-anna-kowalska.png +0 -0
- package/starters/lokatech/themes/lokatech/static/images/team-collaboration.jpg +0 -0
- package/starters/lokatech/themes/lokatech/static/images/team-jan-nowak.png +0 -0
- package/starters/lokatech/themes/lokatech/static/images/team-katarzyna-kaminska.png +0 -0
- package/starters/lokatech/themes/lokatech/static/images/team-maria-wisniewska.png +0 -0
- package/starters/lokatech/themes/lokatech/static/images/team-strategy-session.jpg +0 -0
- package/starters/lokatech/themes/lokatech/static/images/team-tomasz-lewandowski.png +0 -0
- package/starters/lokatech/themes/lokatech/static/style.css +495 -0
- package/starters/lokatech/themes/lokatech/theme.yaml +21 -0
- package/starters/lokatech/themes/starter/_types.ts +93 -0
- package/starters/lokatech/themes/starter/components/blog-listing/blog-listing.tsx +102 -0
- package/starters/lokatech/themes/starter/components/blog-listing/schema.yaml +21 -0
- package/starters/lokatech/themes/starter/components/columns/columns.tsx +101 -0
- package/starters/lokatech/themes/starter/components/columns/schema.yaml +23 -0
- package/starters/lokatech/themes/starter/components/counters/counters.css +13 -0
- package/starters/lokatech/themes/starter/components/counters/counters.tsx +81 -0
- package/starters/lokatech/themes/starter/components/counters/schema.yaml +23 -0
- package/starters/lokatech/themes/starter/components/cta/cta.tsx +57 -0
- package/starters/lokatech/themes/starter/components/cta/schema.yaml +30 -0
- package/starters/lokatech/themes/starter/components/faq/faq.tsx +77 -0
- package/starters/lokatech/themes/starter/components/faq/schema.yaml +20 -0
- package/starters/lokatech/themes/starter/components/features/features.tsx +82 -0
- package/starters/lokatech/themes/starter/components/features/schema.yaml +19 -0
- package/starters/lokatech/themes/starter/components/form/form.tsx +126 -0
- package/starters/lokatech/themes/starter/components/form/schema.yaml +18 -0
- package/starters/lokatech/themes/starter/components/gallery/gallery.tsx +85 -0
- package/starters/lokatech/themes/starter/components/gallery/schema.yaml +27 -0
- package/starters/lokatech/themes/starter/components/hero/hero.tsx +77 -0
- package/starters/lokatech/themes/starter/components/hero/schema.yaml +26 -0
- package/starters/lokatech/themes/starter/components/logo-slider/logo-slider.css +21 -0
- package/starters/lokatech/themes/starter/components/logo-slider/logo-slider.tsx +81 -0
- package/starters/lokatech/themes/starter/components/logo-slider/schema.yaml +23 -0
- package/starters/lokatech/themes/starter/components/pricing/pricing.tsx +141 -0
- package/starters/lokatech/themes/starter/components/pricing/schema.yaml +44 -0
- package/starters/lokatech/themes/starter/components/testimonials/schema.yaml +26 -0
- package/starters/lokatech/themes/starter/components/testimonials/testimonials.tsx +100 -0
- package/starters/lokatech/themes/starter/components/text/schema.yaml +12 -0
- package/starters/lokatech/themes/starter/components/text/text.tsx +62 -0
- package/starters/lokatech/themes/starter/components/text-with-image/schema.yaml +30 -0
- package/starters/lokatech/themes/starter/components/text-with-image/text-with-image.tsx +86 -0
- package/starters/lokatech/themes/starter/components/video/schema.yaml +19 -0
- package/starters/lokatech/themes/starter/components/video/video.tsx +98 -0
- package/starters/lokatech/themes/starter/layouts/article.tsx +42 -0
- package/starters/lokatech/themes/starter/layouts/base.tsx +92 -0
- package/starters/lokatech/themes/starter/layouts/landing-page.tsx +14 -0
- package/starters/lokatech/themes/starter/layouts/page.tsx +29 -0
- package/starters/lokatech/themes/starter/partials/footer.tsx +22 -0
- package/starters/lokatech/themes/starter/partials/header.tsx +32 -0
- package/starters/lokatech/themes/starter/static/style.css +125 -0
- package/starters/lokatech/themes/starter/theme.yaml +16 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Observability with OpenTelemetry: One Pipeline for Metrics, Logs, and Traces"
|
|
3
|
+
type: article
|
|
4
|
+
status: published
|
|
5
|
+
langcode: en
|
|
6
|
+
slug: observability-opentelemetry-stack
|
|
7
|
+
date: 2026-02-10
|
|
8
|
+
fields:
|
|
9
|
+
category: "Cloud & DevOps"
|
|
10
|
+
author: "Maria Wisniewska"
|
|
11
|
+
author_role: "Head of AI at LokaTech"
|
|
12
|
+
author_image: "/static/images/team-maria-wisniewska.png"
|
|
13
|
+
featured_image: "/static/images/hero-bg.png"
|
|
14
|
+
featured: false
|
|
15
|
+
excerpt: "Standardizing on OpenTelemetry for instrumentation, sampling trade-offs, and building SLOs that connect user pain to backend signals."
|
|
16
|
+
tags:
|
|
17
|
+
- observability
|
|
18
|
+
- opentelemetry
|
|
19
|
+
- sre
|
|
20
|
+
seo:
|
|
21
|
+
title: "OpenTelemetry Observability Stack | LokaTech Solutions"
|
|
22
|
+
description: "Enterprise observability with OpenTelemetry: traces, metrics, logs, sampling strategies, backends, and SLO-driven alerting for cloud-native systems."
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
Observability is not a dashboard collection—it is the ability to ask novel questions about system behavior without deploying new code. **OpenTelemetry** gives us a vendor-neutral path to instrument services consistently across languages and runtimes, which matters when enterprises standardize practices but not always stacks.
|
|
26
|
+
|
|
27
|
+
We start with **traces** as the backbone: propagate context across services, annotate spans with business identifiers where safe, and ensure async work does not break parent-child relationships. Traces turn “it feels slow” into a ranked list of spans worth fixing.
|
|
28
|
+
|
|
29
|
+
Metrics complement traces: counters for errors, histograms for latency, gauges for saturation. The goal is **SLO-friendly signals**: metrics that map to user-visible journeys, not only CPU graphs that look fine while checkout fails.
|
|
30
|
+
|
|
31
|
+
Logs remain essential for forensic detail, but they should link to traces via shared IDs. Without that, teams grep in circles. Structured logging with stable fields beats clever prose in incident response.
|
|
32
|
+
|
|
33
|
+
Sampling is a reality at scale. **Tail-based sampling** can keep interesting traces while controlling cost, but it requires thoughtful pipeline design. The worst outcome is “we sample everything uniformly” and still miss the rare catastrophic trace.
|
|
34
|
+
|
|
35
|
+
Finally, observability must feed back into engineering: blameless postmortems, dashboards owned by services, and alerts tied to symptoms—not every threshold breach. Telemetry is an investment in **faster, calmer operations**, not more noise.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Platform Engineering: Building Internal Developer Portals That Teams Actually Use"
|
|
3
|
+
type: article
|
|
4
|
+
status: published
|
|
5
|
+
langcode: en
|
|
6
|
+
slug: platform-engineering-internal-developer-portals
|
|
7
|
+
date: 2026-03-20
|
|
8
|
+
fields:
|
|
9
|
+
category: "Cloud & DevOps"
|
|
10
|
+
author: "Jan Nowak"
|
|
11
|
+
author_role: "CTO at LokaTech"
|
|
12
|
+
author_image: "/static/images/team-jan-nowak.png"
|
|
13
|
+
featured_image: "/static/images/article-platform-engineering.jpg"
|
|
14
|
+
featured: false
|
|
15
|
+
excerpt: "How we treat internal platforms as products, not tickets—and what that means for golden paths, self-service, and measurable developer experience."
|
|
16
|
+
tags:
|
|
17
|
+
- platform-engineering
|
|
18
|
+
- developer-experience
|
|
19
|
+
- idp
|
|
20
|
+
seo:
|
|
21
|
+
title: "Platform Engineering & Internal Developer Portals | LokaTech Solutions"
|
|
22
|
+
description: "Principles for internal developer portals: product mindset, golden paths, paved roads, and metrics that prove platform value at enterprise scale."
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
Internal developer portals (IDPs) are often sold as a catalog of services and a nicer UI on top of Kubernetes. In practice, the teams that get real leverage treat the portal as the front door to a **platform product**: opinionated defaults, clear ownership, and feedback loops that close faster than your quarterly planning cycle.
|
|
26
|
+
|
|
27
|
+
At LokaTech, we anchor every portal capability on a **golden path**—the blessed way to ship a service, run a batch job, or expose an API—with escape hatches documented rather than hidden. That does not mean forbidding alternatives; it means making the default path fast, observable, and compliant by design so that exceptions are rare and intentional.
|
|
28
|
+
|
|
29
|
+
Self-service only works when the underlying automation is trustworthy. We invest heavily in **idempotent provisioning**, automated rollbacks, and policy-as-code checks that run before changes hit production namespaces. Developers should not have to read a wiki to know whether their change is allowed; the platform should answer that question in CI and at deploy time.
|
|
30
|
+
|
|
31
|
+
We also measure what matters: time from idea to running workload, frequency of platform incidents versus application incidents, and **toil tickets** reopened because documentation drifted. If the portal is the product, then product metrics apply—activation, retention, and churn of internal teams are as important as uptime.
|
|
32
|
+
|
|
33
|
+
Finally, platform engineering is a long game. Roadmaps need room for migrations, deprecations, and honest communication when we retire a pattern that once felt modern. The best portals we have built are boring on the surface and rigorous underneath—and that is exactly the point.
|
package/starters/lokatech/content/articles/platform-engineering-internal-developer-portals.pl.md
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Platform Engineering: Budowanie wewnętrznych portali deweloperskich, z których zespoły naprawdę korzystają"
|
|
3
|
+
type: article
|
|
4
|
+
status: published
|
|
5
|
+
langcode: pl
|
|
6
|
+
slug: platform-engineering-internal-developer-portals
|
|
7
|
+
date: 2026-03-20
|
|
8
|
+
fields:
|
|
9
|
+
category: "Cloud & DevOps"
|
|
10
|
+
author: "Jan Nowak"
|
|
11
|
+
author_role: "CTO w LokaTech"
|
|
12
|
+
author_image: "/static/images/team-jan-nowak.png"
|
|
13
|
+
featured_image: "/static/images/article-platform-engineering.jpg"
|
|
14
|
+
featured: false
|
|
15
|
+
excerpt: "Jak traktujemy wewnętrzne platformy jako produkty, a nie tickety — i co to oznacza dla golden paths, self-service i mierzalnego developer experience."
|
|
16
|
+
tags:
|
|
17
|
+
- platform-engineering
|
|
18
|
+
- developer-experience
|
|
19
|
+
- idp
|
|
20
|
+
seo:
|
|
21
|
+
title: "Platform Engineering i wewnętrzne portale deweloperskie | LokaTech Solutions"
|
|
22
|
+
description: "Zasady budowania wewnętrznych portali deweloperskich: podejście produktowe, golden paths, paved roads i metryki potwierdzające wartość platformy w skali enterprise."
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
Wewnętrzne portale deweloperskie (IDP) są często sprzedawane jako katalog usług i ładniejszy UI na szczycie Kubernetesa. W praktyce zespoły, które osiągają realną dźwignię, traktują portal jako front door do **produktu platformowego**: opiniowane wartości domyślne, jasne ownership i pętle informacji zwrotnej, które zamykają się szybciej niż Twój kwartalny cykl planowania.
|
|
26
|
+
|
|
27
|
+
W LokaTech zakotwiczamy każdą funkcjonalność portalu w **golden path** — zalecanej ścieżce do wystawienia serwisu, uruchomienia batch joba czy wyeksponowania API — z wyjątkami udokumentowanymi, a nie ukrytymi. Nie oznacza to zabraniania alternatyw; oznacza to, że domyślna ścieżka jest szybka, obserwowalna i zgodna z wymogami by design, więc wyjątki są rzadkie i świadome.
|
|
28
|
+
|
|
29
|
+
Self-service działa tylko wtedy, gdy automatyzacja pod spodem jest godna zaufania. Inwestujemy intensywnie w **idempotentne provisioning**, automatyczne rollbacki i sprawdzenia policy-as-code, które uruchamiają się zanim zmiany trafią do produkcyjnych namespace'ów. Deweloperzy nie powinni czytać wiki, żeby dowiedzieć się, czy ich zmiana jest dozwolona; platforma powinna odpowiedzieć na to pytanie w CI i w momencie deploymentu.
|
|
30
|
+
|
|
31
|
+
Mierzymy też to, co się liczy: czas od pomysłu do działającego workloada, częstotliwość incydentów platformowych versus incydentów aplikacyjnych oraz **toil tickety** ponownie otwarte, bo dokumentacja się rozjechała. Jeśli portal jest produktem, to obowiązują metryki produktowe — aktywacja, retencja i churn wewnętrznych zespołów są równie ważne jak uptime.
|
|
32
|
+
|
|
33
|
+
Wreszcie, platform engineering to gra na długi dystans. Roadmapy potrzebują miejsca na migracje, deprecjacje i szczerą komunikację, gdy wycofujemy wzorzec, który kiedyś wydawał się nowoczesny. Najlepsze portale, jakie zbudowaliśmy, są nudne na powierzchni i rygorystyczne pod spodem — i dokładnie o to chodzi.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "RAG in Production: Retrieval Quality, Evaluation, and the Failure Modes We See Most"
|
|
3
|
+
type: article
|
|
4
|
+
status: published
|
|
5
|
+
langcode: en
|
|
6
|
+
slug: rag-retrieval-augmented-generation-production
|
|
7
|
+
date: 2026-03-01
|
|
8
|
+
fields:
|
|
9
|
+
category: "AI & Machine Learning"
|
|
10
|
+
author: "Maria Wisniewska"
|
|
11
|
+
author_role: "Head of AI at LokaTech"
|
|
12
|
+
author_image: "/static/images/team-maria-wisniewska.png"
|
|
13
|
+
featured_image: "/static/images/hero-bg.png"
|
|
14
|
+
featured: false
|
|
15
|
+
excerpt: "Beyond demo RAG: chunking strategies, hybrid search, citation hygiene, and evaluation loops that keep assistants accurate after launch."
|
|
16
|
+
tags:
|
|
17
|
+
- rag
|
|
18
|
+
- llm
|
|
19
|
+
- production-ml
|
|
20
|
+
seo:
|
|
21
|
+
title: "RAG in Production: Enterprise Best Practices | LokaTech Solutions"
|
|
22
|
+
description: "Production RAG systems: chunking, embeddings, hybrid retrieval, reranking, guardrails, evaluation metrics, and operational monitoring for LLM apps."
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
Retrieval-augmented generation looks straightforward in a notebook: embed documents, embed the question, return top-k chunks, ask the model to answer. In production, **retrieval quality** dominates outcomes—and it degrades quietly as content changes, permissions shift, and users ask questions the index was never built to answer.
|
|
26
|
+
|
|
27
|
+
Chunking is not a one-time choice. Overly large chunks dilute relevance; overly small chunks lose context. We iterate with labeled queries from real users, measuring not only answer correctness but whether the retrieved passages actually support the answer—**attribution** matters for trust and compliance.
|
|
28
|
+
|
|
29
|
+
Hybrid search often beats pure vector retrieval for enterprise corpora where exact identifiers, SKUs, and policy clauses matter. Combining lexical and semantic signals, with **reranking** as a second stage, improves precision without exploding latency budgets.
|
|
30
|
+
|
|
31
|
+
Permissions are non-negotiable. The retriever must enforce document-level access the same way your source systems do; otherwise you build an expensive search bar that leaks titles or snippets. We treat ACLs as first-class metadata in the index pipeline.
|
|
32
|
+
|
|
33
|
+
Evaluation has to be continuous: golden sets, regression tests on new content drops, and monitoring for **hallucination rates** when citations are missing or contradictory. Launching RAG without these loops is launching a demo.
|
|
34
|
+
|
|
35
|
+
The teams that succeed treat RAG as a **data product** with owners, SLAs, and a backlog—not as a prompt wrapped around a vector database.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Remote Engineering Culture: Async-First Collaboration Without Losing Craft"
|
|
3
|
+
type: article
|
|
4
|
+
status: published
|
|
5
|
+
langcode: en
|
|
6
|
+
slug: remote-engineering-culture-distributed-teams
|
|
7
|
+
date: 2026-02-18
|
|
8
|
+
fields:
|
|
9
|
+
category: "Engineering Culture"
|
|
10
|
+
author: "Anna Kowalska"
|
|
11
|
+
author_role: "VP of Engineering at LokaTech"
|
|
12
|
+
author_image: "/static/images/team-anna-kowalska.png"
|
|
13
|
+
featured_image: "/static/images/hero-bg.png"
|
|
14
|
+
featured: false
|
|
15
|
+
excerpt: "How distributed teams protect deep work, run effective reviews, and build trust when hallway conversations are not an option."
|
|
16
|
+
tags:
|
|
17
|
+
- remote-work
|
|
18
|
+
- culture
|
|
19
|
+
- collaboration
|
|
20
|
+
seo:
|
|
21
|
+
title: "Remote Engineering Culture & Distributed Teams | LokaTech Solutions"
|
|
22
|
+
description: "Building high-performing remote engineering teams: async communication, documentation, code review norms, mentorship, and healthy meeting culture."
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
Distributed engineering is not “the same office, but on Zoom.” When collaboration defaults to meetings, remote teams pay a higher tax: timezone seams, context switching, and the subtle exclusion of people who are not in the loudest channel.
|
|
26
|
+
|
|
27
|
+
We bias toward **async-first** workflows: written proposals, recorded demos for those who cannot attend live, and decisions captured in durable artifacts—not ephemeral chat threads. Meetings are for ambiguity and conflict resolution, not status reads you could have skimmed.
|
|
28
|
+
|
|
29
|
+
Code review becomes a primary social ritual. We emphasize **kind, specific feedback**, fast turnaround on small changes, and reviewers who explain the “why” behind requests. A healthy review culture replaces some of the mentorship that used to happen at desks.
|
|
30
|
+
|
|
31
|
+
Trust is built through predictability: clear ownership, transparent roadmaps, and managers who avoid surprises in performance conversations. Remote environments amplify unfairness when expectations are implicit; **explicit norms** reduce anxiety.
|
|
32
|
+
|
|
33
|
+
We also protect craft. Deep work needs uninterrupted blocks; calendars stuffed with syncs produce shallow code and shallow tests. Leaders model focus time and defend it for ICs—not as a perk, but as a production requirement.
|
|
34
|
+
|
|
35
|
+
Remote culture is not anti-office; it is **pro-intentionality**. When you choose when to be synchronous, you make those moments count—and you give people room to do their best work the rest of the time.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Software Supply Chain Security: SBOMs, Provenance, and Practical Controls"
|
|
3
|
+
type: article
|
|
4
|
+
status: published
|
|
5
|
+
langcode: en
|
|
6
|
+
slug: supply-chain-security-sbom
|
|
7
|
+
date: 2026-03-12
|
|
8
|
+
fields:
|
|
9
|
+
category: "Security & Compliance"
|
|
10
|
+
author: "Maria Wisniewska"
|
|
11
|
+
author_role: "Head of AI at LokaTech"
|
|
12
|
+
author_image: "/static/images/team-maria-wisniewska.png"
|
|
13
|
+
featured_image: "/static/images/hero-bg.png"
|
|
14
|
+
featured: false
|
|
15
|
+
excerpt: "Why SBOMs are necessary but not sufficient—and how we combine provenance, dependency pinning, and policy to reduce supply-chain risk."
|
|
16
|
+
tags:
|
|
17
|
+
- security
|
|
18
|
+
- sbom
|
|
19
|
+
- supply-chain
|
|
20
|
+
seo:
|
|
21
|
+
title: "Supply Chain Security & SBOM Best Practices | LokaTech Solutions"
|
|
22
|
+
description: "SBOM generation, SLSA-style provenance, vulnerability management, and secure CI patterns for enterprise software delivery pipelines."
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
A Software Bill of Materials (SBOM) answers a simple question: what is inside the artifact we are about to run? That visibility is table stakes for vulnerability response, license compliance, and incident forensics—especially when dependencies nest ten layers deep.
|
|
26
|
+
|
|
27
|
+
SBOMs are not a control by themselves. They are an **input to policy**: which CVE severities block release, which packages require manual review, and which ecosystems need additional scanning because upstream metadata is incomplete.
|
|
28
|
+
|
|
29
|
+
We combine SBOMs with **build provenance** so we can trust where an artifact came from. Signing attestations and verifying them in deployment pipelines reduces the risk of a compromised build system quietly swapping binaries—even when the SBOM looks identical.
|
|
30
|
+
|
|
31
|
+
Dependency management still matters more than most dashboards admit. **Pinning**, reproducible builds, and private registries with admission checks catch issues earlier than scanning a tarball after the fact. We also watch for “shadow” dependencies introduced by plugins, codegen tools, and container base images.
|
|
32
|
+
|
|
33
|
+
Operationalizing this at enterprise scale means integrating with ticketing, exception workflows, and audit evidence. Security teams need exports that map to controls; engineering teams need feedback in PRs, not monthly spreadsheets.
|
|
34
|
+
|
|
35
|
+
The goal is not zero risk—it is **bounded risk** with measurable dwell time from disclosure to patch and clear accountability when exceptions are granted.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
uuid: a1b2c3d4-e5f6-7890-abcd-ef1234567890
|
|
3
|
+
title: Welcome to Barka
|
|
4
|
+
status: draft
|
|
5
|
+
langcode: en
|
|
6
|
+
date: '2026-03-21'
|
|
7
|
+
slug: welcome
|
|
8
|
+
fields:
|
|
9
|
+
summary: An introduction to the Barka Content-as-Code CMS.
|
|
10
|
+
category: technology
|
|
11
|
+
seo:
|
|
12
|
+
description: >-
|
|
13
|
+
Learn about Barka, the progressive Content-as-Code CMS that puts files
|
|
14
|
+
first.
|
|
15
|
+
updated: '2026-03-21T16:11:33.000Z'
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# Welcome to Barka
|
|
19
|
+
|
|
20
|
+
Barka is a **progressive Content-as-Code CMS** that takes a files-first approach to content management. Write your content in Markdown, configure with YAML, and deploy anywhere.
|
|
21
|
+
|
|
22
|
+
## Why Barka?
|
|
23
|
+
|
|
24
|
+
Traditional CMS platforms lock your content in a database. Barka keeps everything in version-controlled files:
|
|
25
|
+
|
|
26
|
+
- **Markdown** for content authoring
|
|
27
|
+
- **YAML** for configuration and structured data
|
|
28
|
+
- **Git** for versioning and collaboration
|
|
29
|
+
|
|
30
|
+
## Getting Started
|
|
31
|
+
|
|
32
|
+
Create your first content file in the `content/` directory and start the dev server:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
barka dev
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Your site will be live at `http://localhost:3000` with hot-reloading enabled.
|
|
39
|
+
|
|
40
|
+
## What's Next
|
|
41
|
+
|
|
42
|
+
Check out the [Getting Started](/articles/getting-started) guide for a deeper dive into Barka's features.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
uuid: "a1b2c3d4-e5f6-7890-abcd-ef1234567891"
|
|
3
|
+
title: "Witamy w Barka"
|
|
4
|
+
status: draft
|
|
5
|
+
langcode: pl
|
|
6
|
+
date: 2026-03-21
|
|
7
|
+
translation_of: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
|
|
8
|
+
fields:
|
|
9
|
+
summary: "Wprowadzenie do Barka — systemu CMS opartego na plikach."
|
|
10
|
+
category: technology
|
|
11
|
+
seo:
|
|
12
|
+
description: "Poznaj Barkę — progresywny system CMS typu Content-as-Code, w którym pliki są na pierwszym miejscu."
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Witamy w Barka
|
|
16
|
+
|
|
17
|
+
Barka to **progresywny system CMS typu Content-as-Code**, który stawia pliki na pierwszym miejscu. Twórz treści w Markdown, konfiguruj za pomocą YAML i wdrażaj gdziekolwiek chcesz.
|
|
18
|
+
|
|
19
|
+
## Dlaczego Barka?
|
|
20
|
+
|
|
21
|
+
Tradycyjne systemy CMS zamykają Twoje treści w bazie danych. Barka przechowuje wszystko w plikach kontrolowanych przez system wersji:
|
|
22
|
+
|
|
23
|
+
- **Markdown** do tworzenia treści
|
|
24
|
+
- **YAML** do konfiguracji i danych strukturalnych
|
|
25
|
+
- **Git** do wersjonowania i współpracy
|
|
26
|
+
|
|
27
|
+
## Rozpoczęcie pracy
|
|
28
|
+
|
|
29
|
+
Utwórz pierwszy plik z treścią w katalogu `content/` i uruchom serwer deweloperski:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
barka dev
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Twoja strona będzie dostępna pod adresem `http://localhost:3000` z automatycznym odświeżaniem.
|
|
36
|
+
|
|
37
|
+
## Co dalej
|
|
38
|
+
|
|
39
|
+
Zapoznaj się z przewodnikiem [Rozpoczęcie pracy](/pl/articles/getting-started), aby poznać więcej funkcji Barka.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Zero Trust in Practice: Identity, Device Posture, and Micro-Segmentation That Scales"
|
|
3
|
+
type: article
|
|
4
|
+
status: published
|
|
5
|
+
langcode: en
|
|
6
|
+
slug: zero-trust-network-architecture
|
|
7
|
+
date: 2026-02-22
|
|
8
|
+
fields:
|
|
9
|
+
category: "Security & Compliance"
|
|
10
|
+
author: "Jan Nowak"
|
|
11
|
+
author_role: "CTO at LokaTech"
|
|
12
|
+
author_image: "/static/images/team-jan-nowak.png"
|
|
13
|
+
featured_image: "/static/images/hero-bg.png"
|
|
14
|
+
featured: false
|
|
15
|
+
excerpt: "Moving beyond VPN-centric trust: continuous verification, least privilege, and how we implement zero trust without turning every request into a ticket."
|
|
16
|
+
tags:
|
|
17
|
+
- zero-trust
|
|
18
|
+
- security
|
|
19
|
+
- identity
|
|
20
|
+
seo:
|
|
21
|
+
title: "Zero Trust Network Architecture for Enterprises | LokaTech Solutions"
|
|
22
|
+
description: "Zero trust implementation: identity-centric access, device trust, micro-segmentation, SSO, MFA, and observability for modern enterprise networks."
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
Zero trust is not a product you install; it is an **assumption set**: no network location is inherently trustworthy, every access request should be authenticated and authorized, and those decisions should be continuously re-evaluated as risk signals change.
|
|
26
|
+
|
|
27
|
+
We see the biggest wins when organizations stop treating the corporate network as a castle and start treating **identity and policy** as the perimeter. That does not mean removing network controls—it means complementing them with fine-grained authorization for applications and data.
|
|
28
|
+
|
|
29
|
+
Device posture matters. A valid credential on a compromised laptop is still a breach. Integrating MDM signals—encryption status, OS patch level, and device compliance—into access decisions closes gaps that MFA alone cannot.
|
|
30
|
+
|
|
31
|
+
Micro-segmentation reduces blast radius. Instead of broad VLANs where any host can talk to any host, we push teams toward **least-privilege paths** between services, enforced by policy engines and observable in logs. The goal is containment without operational paralysis.
|
|
32
|
+
|
|
33
|
+
Rollout requires empathy for developers and operators. If every new service needs a manual firewall ticket, zero trust becomes friction. We invest in **automation**: infrastructure-as-code for policies, self-service approvals with guardrails, and golden paths for service-to-service auth.
|
|
34
|
+
|
|
35
|
+
Finally, measure outcomes: time to detect lateral movement, coverage of MFA, and mean time to revoke access when someone leaves. Zero trust is measurable—or it is just a slogan on a slide.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Zero Trust Security: A Practical Implementation Guide for Enterprises"
|
|
3
|
+
type: article
|
|
4
|
+
status: published
|
|
5
|
+
langcode: en
|
|
6
|
+
slug: zero-trust-security
|
|
7
|
+
date: 2026-03-21
|
|
8
|
+
fields:
|
|
9
|
+
category: "Security & Compliance"
|
|
10
|
+
tags:
|
|
11
|
+
- security
|
|
12
|
+
- zero-trust
|
|
13
|
+
- cybersecurity
|
|
14
|
+
author: "Anna Kowalska"
|
|
15
|
+
author_role: "VP of Engineering"
|
|
16
|
+
author_image: "/static/images/team-anna-kowalska.png"
|
|
17
|
+
featured_image: "/static/images/hero-bg.png"
|
|
18
|
+
excerpt: "A hands-on guide to implementing zero trust security in enterprise environments — identity, microsegmentation, continuous verification, and common pitfalls."
|
|
19
|
+
reading_time: "9 min"
|
|
20
|
+
seo:
|
|
21
|
+
title: "Zero Trust Security: Practical Implementation Guide — LokaTech Insights"
|
|
22
|
+
description: "A hands-on guide to implementing zero trust security in enterprise environments — identity, microsegmentation, continuous verification, and common pitfalls."
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
"Never trust, always verify" has become the most quoted — and most misunderstood — principle in enterprise security. Zero trust has been marketed as everything from a product category to a silver bullet, but the reality is both simpler and harder than the vendor pitches suggest. It's a security model built on the assumption that no user, device, or network segment should be inherently trusted, regardless of location. Implementing it in a real enterprise with 20 years of accumulated infrastructure is a multi-year journey, not a product purchase.
|
|
26
|
+
|
|
27
|
+
## Beyond the Buzzword: What Zero Trust Actually Means
|
|
28
|
+
|
|
29
|
+
At its core, zero trust replaces the traditional perimeter-based security model — where anything inside the corporate network is trusted — with continuous verification at every layer. This matters because the perimeter dissolved years ago. Remote work, cloud adoption, SaaS applications, and BYOD policies mean that the "inside" and "outside" distinction is meaningless. Attackers who breach the perimeter (and they will) should find not an open field but a landscape of individually secured resources, each requiring independent authentication and authorization.
|
|
30
|
+
|
|
31
|
+
A practical zero trust architecture rests on five pillars: identity verification, device health assessment, network microsegmentation, application-level access controls, and continuous monitoring with automated response. None of these are revolutionary individually. The power comes from implementing them together as a coherent system.
|
|
32
|
+
|
|
33
|
+
## Identity: The New Perimeter
|
|
34
|
+
|
|
35
|
+
Identity is the cornerstone of zero trust. Every access request — whether from a human user, a service account, or an API — must be authenticated and authorized based on contextual signals: who is requesting, from what device, at what time, from what location, and for what resource. Modern identity platforms combine SSO, MFA (phishing-resistant FIDO2/WebAuthn, not SMS), and conditional access policies that evaluate risk signals in real-time.
|
|
36
|
+
|
|
37
|
+
The most common pitfall we encounter is organizations that implement MFA for human users but leave service-to-service communication wide open. Machine identities now outnumber human identities 45:1 in the average enterprise. Mutual TLS, short-lived certificates (via SPIFFE/SPIRE), and workload identity federation are essential for closing this gap.
|
|
38
|
+
|
|
39
|
+
## Microsegmentation: Containing the Blast Radius
|
|
40
|
+
|
|
41
|
+
Microsegmentation limits lateral movement — the technique attackers use to move from an initial foothold to valuable targets. Instead of flat networks where any compromised host can reach any other, microsegmentation creates granular security zones around individual workloads or application tiers. A compromised web server can't reach the database server if there's no allowed path between them.
|
|
42
|
+
|
|
43
|
+
Implementation approaches range from network-based (SDN, host firewalls) to identity-based (service mesh policies, application-level authorization). The right approach depends on your environment. We've found that starting with coarse-grained segments (separating production from development, PCI scope from general workloads) and progressively refining provides quick security wins without the operational paralysis that overly ambitious microsegmentation projects create.
|
|
44
|
+
|
|
45
|
+
## Continuous Verification: Trust Nothing, Log Everything
|
|
46
|
+
|
|
47
|
+
Zero trust isn't a gate you pass through once — it's continuous evaluation throughout the session. Behavioral analytics detect anomalies: a user downloading 10x their normal data volume, a service account making requests at 3 AM, an API key being used from an unfamiliar geography. These signals feed into a risk engine that can step up authentication, restrict access, or trigger incident response workflows in real-time.
|
|
48
|
+
|
|
49
|
+
The technical foundation is comprehensive logging and centralized SIEM/SOAR integration. Every authentication event, every authorization decision, every network flow, and every data access must be logged, correlated, and analyzed. Without this telemetry, zero trust is a policy document, not a security posture.
|
|
50
|
+
|
|
51
|
+
## Getting Started: Pragmatic First Steps
|
|
52
|
+
|
|
53
|
+
For enterprises beginning the zero trust journey, we recommend starting with three concrete actions. First, deploy phishing-resistant MFA (FIDO2 keys or passkeys) for all administrative and privileged access — this single step blocks the majority of credential-based attacks. Second, implement a software-defined perimeter or ZTNA (Zero Trust Network Access) solution to replace traditional VPN for remote access, eliminating the exposed attack surface of VPN concentrators. Third, begin an identity audit — catalog all human and machine identities, eliminate unused accounts, and enforce least-privilege access policies. These three steps deliver measurable security improvement within 90 days while laying the foundation for the broader zero trust architecture.
|
|
54
|
+
|
|
55
|
+
Zero trust is not a destination. It's an operating model that assumes breach and builds resilience through layered, identity-centric controls. The organizations that implement it successfully treat it as a continuous improvement program, not a one-time project — and they start with the fundamentals rather than the vendor slideware.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Banking Platform Modernization for a Top-10 European Bank"
|
|
3
|
+
type: case_study
|
|
4
|
+
status: published
|
|
5
|
+
langcode: en
|
|
6
|
+
slug: banking-platform-modernization
|
|
7
|
+
date: 2026-03-21
|
|
8
|
+
fields:
|
|
9
|
+
client_name: "Leading European Bank (confidential)"
|
|
10
|
+
industry: banking
|
|
11
|
+
service: custom-software-development
|
|
12
|
+
duration: "18 months"
|
|
13
|
+
team_size: "35 engineers"
|
|
14
|
+
client_quote: "LokaTech's team brought both deep technical expertise and a genuine understanding of banking regulations. The migration was seamless."
|
|
15
|
+
client_quote_author: "Head of Technology"
|
|
16
|
+
client_quote_role: "Top-10 European Bank"
|
|
17
|
+
featured_image: "/static/images/case-study-banking-dashboard.jpg"
|
|
18
|
+
gallery:
|
|
19
|
+
- image: "/static/images/case-study-banking-dashboard.jpg"
|
|
20
|
+
caption: "Core banking operations dashboard — real-time transaction monitoring and microservices health"
|
|
21
|
+
- image: "/static/images/case-study-banking.png"
|
|
22
|
+
caption: "Deployment pipeline visualization with automated compliance checks"
|
|
23
|
+
tags:
|
|
24
|
+
- Java
|
|
25
|
+
- Spring Boot
|
|
26
|
+
- Apache Kafka
|
|
27
|
+
- Kubernetes
|
|
28
|
+
- PCI DSS
|
|
29
|
+
metrics:
|
|
30
|
+
- value: "85%"
|
|
31
|
+
label: "Faster deployments"
|
|
32
|
+
- value: "99.99%"
|
|
33
|
+
label: "Uptime"
|
|
34
|
+
- value: "40%"
|
|
35
|
+
label: "Cost reduction"
|
|
36
|
+
seo:
|
|
37
|
+
title: "Case Study: Banking Platform Modernization — LokaTech Solutions"
|
|
38
|
+
description: "How LokaTech modernized a legacy core banking system to microservices — 85% faster deployments, 99.99% uptime, 40% cost reduction."
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## The Challenge
|
|
42
|
+
|
|
43
|
+
A top-10 European bank was running its core banking platform on a 25-year-old COBOL-based mainframe system. Deployments took three days of manual coordination across multiple teams. The monolithic architecture meant that a single change to the payment module required regression testing of the entire system. Technical debt was accumulating faster than the 12-person maintenance team could address it, and the bank was losing market share to digital challengers offering real-time services.
|
|
44
|
+
|
|
45
|
+
The bank needed to modernize without disrupting service for 8 million customers — a "change the engines while flying" challenge that demanded both technical precision and deep banking domain knowledge.
|
|
46
|
+
|
|
47
|
+
## The Solution
|
|
48
|
+
|
|
49
|
+
LokaTech assembled a 35-person team combining senior architects, banking domain experts, and full-stack engineers. The modernization followed a strangler fig pattern — gradually replacing mainframe functionality with cloud-native microservices while maintaining full operational continuity.
|
|
50
|
+
|
|
51
|
+
**Architecture highlights:**
|
|
52
|
+
|
|
53
|
+
- Event-driven microservices built with Java/Spring Boot, communicating via Apache Kafka
|
|
54
|
+
- Kubernetes-based container orchestration on a private cloud with multi-region failover
|
|
55
|
+
- API gateway layer enabling gradual migration of consumer-facing channels to new services
|
|
56
|
+
- Comprehensive observability stack with distributed tracing, centralized logging, and real-time alerting
|
|
57
|
+
- Automated compliance checks embedded in the CI/CD pipeline for PCI DSS and DORA requirements
|
|
58
|
+
|
|
59
|
+
The migration was executed in six phases over 18 months, starting with non-critical reporting services and progressively moving to core transaction processing.
|
|
60
|
+
|
|
61
|
+
## The Results
|
|
62
|
+
|
|
63
|
+
- **85% faster deployments** — From 3-day release cycles to 4-hour automated deployments
|
|
64
|
+
- **99.99% uptime** — Zero unplanned downtime during the entire migration
|
|
65
|
+
- **40% infrastructure cost reduction** — Efficient resource utilization with auto-scaling replaced over-provisioned mainframe capacity
|
|
66
|
+
- **10x API throughput** — New architecture handles peak loads that previously required manual capacity planning
|
|
67
|
+
- **50% reduction in incident resolution time** — Distributed tracing and automated alerting dramatically improved MTTR
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Headless Commerce Platform for a Fashion Retail Giant"
|
|
3
|
+
type: case_study
|
|
4
|
+
status: published
|
|
5
|
+
langcode: en
|
|
6
|
+
slug: ecommerce-platform-rewrite
|
|
7
|
+
date: 2026-03-05
|
|
8
|
+
fields:
|
|
9
|
+
client_name: "European Fashion Retailer (confidential)"
|
|
10
|
+
industry: retail
|
|
11
|
+
service: custom-software-development
|
|
12
|
+
duration: "16 months"
|
|
13
|
+
team_size: "42 engineers"
|
|
14
|
+
tags:
|
|
15
|
+
- E-commerce
|
|
16
|
+
- Headless
|
|
17
|
+
- Performance
|
|
18
|
+
- Microservices
|
|
19
|
+
metrics:
|
|
20
|
+
- value: "340%"
|
|
21
|
+
label: "Revenue increase"
|
|
22
|
+
- value: "0.8s"
|
|
23
|
+
label: "Page load time"
|
|
24
|
+
- value: "99.99%"
|
|
25
|
+
label: "Uptime during Black Friday"
|
|
26
|
+
client_quote: "Our conversion rate tripled after the replatform. LokaTech didn't just rebuild our site — they transformed our entire digital commerce capability."
|
|
27
|
+
client_quote_author: "Chief Digital Officer"
|
|
28
|
+
client_quote_role: "European Fashion Retailer"
|
|
29
|
+
featured_image: "/static/images/case-study-ecommerce-dashboard.jpg"
|
|
30
|
+
gallery:
|
|
31
|
+
- image: "/static/images/case-study-ecommerce-dashboard.jpg"
|
|
32
|
+
caption: "Commerce analytics dashboard and mobile shopping experience — conversion funnel optimization"
|
|
33
|
+
- image: "/static/images/case-study-retail.png"
|
|
34
|
+
caption: "Headless architecture enabling omnichannel product discovery"
|
|
35
|
+
short_description: "Rebuilt a monolithic e-commerce platform into headless microservices — 340% revenue increase, 0.8s page loads."
|
|
36
|
+
seo:
|
|
37
|
+
title: "Case Study: Headless Commerce Platform — LokaTech Solutions"
|
|
38
|
+
description: "How LokaTech rebuilt a fashion retailer's platform — 340% revenue increase, 0.8s page loads, 99.99% Black Friday uptime."
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## The Challenge
|
|
42
|
+
|
|
43
|
+
A European fashion retailer with €800M annual online revenue was losing market share due to a sluggish, monolithic e-commerce platform. Page load times averaged 4.2 seconds, mobile conversion was 60% below industry benchmarks, and the platform couldn't handle traffic spikes during sales events. Their 8-year-old platform required 6-month development cycles for even minor feature changes.
|
|
44
|
+
|
|
45
|
+
## The Solution
|
|
46
|
+
|
|
47
|
+
LokaTech executed a full replatform to a headless commerce architecture, decoupling the frontend experience from backend commerce services. The team built a composable stack using best-of-breed services connected through a custom BFF (Backend for Frontend) layer.
|
|
48
|
+
|
|
49
|
+
**Architecture highlights:**
|
|
50
|
+
|
|
51
|
+
- Next.js frontend with SSR/ISR for sub-second page loads
|
|
52
|
+
- Custom order management microservice built in Go for high-throughput processing
|
|
53
|
+
- Algolia-powered search with ML-driven personalization
|
|
54
|
+
- Contentful for omnichannel content management
|
|
55
|
+
- Stripe for payment orchestration across 22 markets
|
|
56
|
+
- Kubernetes on GCP with auto-scaling to handle 50× normal traffic during sales
|
|
57
|
+
|
|
58
|
+
## The Results
|
|
59
|
+
|
|
60
|
+
- **340% revenue increase** — Driven by improved conversion rates across all channels
|
|
61
|
+
- **0.8s average page load** — Down from 4.2s, with Core Web Vitals all in green
|
|
62
|
+
- **99.99% uptime during Black Friday** — Handled 12× normal traffic without degradation
|
|
63
|
+
- **2-week deployment cycles** — Down from 6 months, enabling rapid experimentation
|
|
64
|
+
- **48% higher mobile conversion** — Responsive PWA with offline browsing and push notifications
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Digital Citizen Portal for a National Government Agency"
|
|
3
|
+
type: case_study
|
|
4
|
+
status: published
|
|
5
|
+
langcode: en
|
|
6
|
+
slug: govtech-citizen-portal
|
|
7
|
+
date: 2026-01-12
|
|
8
|
+
fields:
|
|
9
|
+
client_name: "National Government Agency (confidential)"
|
|
10
|
+
industry: public-sector
|
|
11
|
+
service: custom-software-development
|
|
12
|
+
duration: "20 months"
|
|
13
|
+
team_size: "30 engineers"
|
|
14
|
+
tags:
|
|
15
|
+
- GovTech
|
|
16
|
+
- Accessibility
|
|
17
|
+
- Security
|
|
18
|
+
- Multi-language
|
|
19
|
+
metrics:
|
|
20
|
+
- value: "12M"
|
|
21
|
+
label: "Citizens served"
|
|
22
|
+
- value: "85%"
|
|
23
|
+
label: "Digital adoption"
|
|
24
|
+
- value: "60%"
|
|
25
|
+
label: "Cost reduction"
|
|
26
|
+
client_quote: "LokaTech understood that government IT isn't just about technology — it's about serving every citizen, regardless of their digital literacy or disability."
|
|
27
|
+
client_quote_author: "Director of Digital Transformation"
|
|
28
|
+
client_quote_role: "National Government Agency"
|
|
29
|
+
featured_image: "/static/images/hero-bg.png"
|
|
30
|
+
short_description: "Built a WCAG AAA-compliant citizen portal serving 12M users in 4 languages, achieving 85% digital adoption."
|
|
31
|
+
seo:
|
|
32
|
+
title: "Case Study: Digital Citizen Portal — LokaTech Solutions"
|
|
33
|
+
description: "How LokaTech built a government portal for 12M citizens — 85% digital adoption, WCAG AAA compliance, 60% cost reduction."
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## The Challenge
|
|
37
|
+
|
|
38
|
+
A national government agency was running 47 separate legacy web applications for citizen services — tax filing, permit applications, benefit claims, and more. Each had different login systems, inconsistent UX, and poor accessibility. Only 35% of citizens used digital channels, with the rest relying on in-person visits at 200+ service centers. The government mandated a unified portal with WCAG AAA accessibility and support for 4 official languages.
|
|
39
|
+
|
|
40
|
+
## The Solution
|
|
41
|
+
|
|
42
|
+
LokaTech designed and built a unified citizen services portal consolidating all 47 services under a single, accessible platform. The team applied human-centered design principles with extensive user testing across diverse citizen groups, including elderly users, people with disabilities, and non-native speakers.
|
|
43
|
+
|
|
44
|
+
**Architecture highlights:**
|
|
45
|
+
|
|
46
|
+
- React-based micro-frontend architecture for independent service deployment
|
|
47
|
+
- National eID integration for secure, passwordless authentication
|
|
48
|
+
- WCAG AAA compliance verified by independent accessibility auditors
|
|
49
|
+
- Full i18n support for 4 languages with RTL readiness
|
|
50
|
+
- Event-driven backend on AWS GovCloud with end-to-end encryption
|
|
51
|
+
- Comprehensive design system ensuring consistency across all 47 services
|
|
52
|
+
|
|
53
|
+
## The Results
|
|
54
|
+
|
|
55
|
+
- **12M citizens served** — Unified portal became the primary government touchpoint
|
|
56
|
+
- **85% digital adoption** — Up from 35%, reducing in-person visits by 60%
|
|
57
|
+
- **WCAG AAA compliance** — First government portal in the country to achieve this rating
|
|
58
|
+
- **60% operational cost reduction** — Consolidated infrastructure and automated workflows
|
|
59
|
+
- **4.6/5 citizen satisfaction** — Highest-rated government digital service in national surveys
|