@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
package/README.md
ADDED
|
@@ -0,0 +1,566 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://img.shields.io/badge/barka-0.1.0-000000?style=for-the-badge&labelColor=000" alt="Barka 0.1.0" />
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<h1 align="center">Barka<br/>AI-Native Progressive Content-as-Code CMS</h1>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<strong>The first CMS designed for AI coding agents.</strong><br/>
|
|
9
|
+
Write in Markdown. Configure in YAML. Let AI build features.<br/>
|
|
10
|
+
Start as a static site generator — grow into a full CMS when you need it.
|
|
11
|
+
</p>
|
|
12
|
+
|
|
13
|
+
<p align="center">
|
|
14
|
+
<a href="https://github.com/barkajs/barka/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License" /></a>
|
|
15
|
+
<a href="https://github.com/barkajs/barka/pulls"><img src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg" alt="PRs Welcome" /></a>
|
|
16
|
+
<a href="https://github.com/barkajs/barka"><img src="https://img.shields.io/badge/TypeScript-5.7-blue?logo=typescript&logoColor=white" alt="TypeScript" /></a>
|
|
17
|
+
<a href="https://hono.dev"><img src="https://img.shields.io/badge/Hono-4.7-E36002?logo=hono&logoColor=white" alt="Hono" /></a>
|
|
18
|
+
</p>
|
|
19
|
+
|
|
20
|
+
<p align="center">
|
|
21
|
+
<a href="#quickstart">Quickstart</a> · <a href="#why-barka">Why Barka</a> · <a href="#features">Features</a> · <a href="#starters">Starters</a> · <a href="#comparison">Comparison</a> · <a href="#testing-smoke">Smoke tests</a> · <a href="https://github.com/barkajs/barka">GitHub</a>
|
|
22
|
+
</p>
|
|
23
|
+
|
|
24
|
+
> **Early Access — v0.1.0**
|
|
25
|
+
>
|
|
26
|
+
> Barka is in early development. The core engine, CLI, theme system, i18n, multi-site, and static build are functional and tested (151 unit tests). The admin UI and database layer work but are less polished. Some features (workflow approvals, scheduled publishing, role-based permissions) are planned but not yet implemented.
|
|
27
|
+
>
|
|
28
|
+
> We welcome testers, feedback, and contributions. If you hit a bug or have an idea — [open an issue](https://github.com/barkajs/barka/issues). If you build a site with Barka, we'd love to hear about it.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
# What is Barka?
|
|
33
|
+
|
|
34
|
+
Barka is the first **progressive CMS built for AI agents**. It bridges the gap between static site generators and traditional content management systems — combining the simplicity of Astro/Hugo (Markdown files, free hosting) with the power of Drupal/WordPress (structured content, page builder, multi-language, admin UI).
|
|
35
|
+
|
|
36
|
+
**Born from real frustration.** Barka was created after extensive work with AI coding agents (Claude Code, Cursor, Codex, Copilot) on existing CMS platforms — Payload, Astro, Drupal, WordPress, Strapi. The problems hit hardest in the scenarios that matter most for marketing teams: multi-language sites across multiple domains, rapid creation of custom landing pages, and high-volume content publishing (blog posts, case studies, service pages). Every existing CMS made these tasks painful with AI — complex configs, binary formats, database-dependent workflows, and opaque abstractions meant that building a simple landing page with AI required fighting the framework instead of creating content.
|
|
37
|
+
|
|
38
|
+
**Barka is designed to be the #1 CMS for marketing-driven companies** that need rich, multi-language websites across multiple domains — and need to publish a lot, fast. With AI agents, you can generate a complete landing page with 10 sections in minutes, translate it to 3 languages instantly, and deploy to a new domain without touching the admin panel. Barka was built to eliminate every barrier between "I need a page" and "it's live."
|
|
39
|
+
|
|
40
|
+
**Designed from the ground up for AI-assisted development.** Content in Markdown, config in YAML, themes in JSX — all plain text formats that AI coding agents can read, modify, and extend without APIs or authentication. The repo ships with `CLAUDE.md` and `INVARIANTS.json` — built-in guardrails that keep AI agents aligned with project rules across tasks. An AI agent can create an entire website — content, theme, config — in a single session.
|
|
41
|
+
|
|
42
|
+
**No database required to start.** Content lives in Markdown files and YAML configs — version-controlled with Git, deployable to Cloudflare Pages for $0. When editors need a UI, add SQLite with one command and unlock a full admin panel.
|
|
43
|
+
|
|
44
|
+
## Why Barka?
|
|
45
|
+
|
|
46
|
+
- **Built for AI Agents** — Every file is plain text (Markdown, YAML, JSX). AI tools can create content, add features, modify themes, and extend the CMS — no API calls, no auth tokens, no binary formats. Ships with agent guardrails (`CLAUDE.md`, `INVARIANTS.json`) to prevent drift across tasks.
|
|
47
|
+
- **Progressive Complexity** — Start with files only, add a database when you actually need one. No upfront infrastructure decisions.
|
|
48
|
+
- **Zero JavaScript on Frontend** — Public pages ship 0 bytes of JS. Pure server-rendered HTML with perfect Lighthouse scores.
|
|
49
|
+
- **Full Code Ownership** — No vendor lock-in, no SaaS fees. Your content lives in Git. Self-host anywhere or deploy static for free.
|
|
50
|
+
- **Drupal-Grade Features** — Page builder with 15 section types, multi-language, multi-site, taxonomy, revisions — without the Drupal complexity.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
# Features
|
|
55
|
+
|
|
56
|
+
**Content as Code**
|
|
57
|
+
Write content in Markdown with YAML frontmatter. Define content types, taxonomies, and section types in simple YAML config files. Everything is a file — version-controlled, diffable, AI-friendly.
|
|
58
|
+
|
|
59
|
+
**Page Builder — 15 Section Types**
|
|
60
|
+
Compose landing pages from reusable sections: Hero, Features, CTA, Testimonials, FAQ, Pricing, Gallery, Counters, Logo Slider, Text with Image, Blog Listing, Columns, Video, Form, and Text — inspired by [Droopler](https://droopler.dev). Each section supports per-instance settings (background, spacing, width, CSS class).
|
|
61
|
+
|
|
62
|
+
**Single Directory Components (SDC)**
|
|
63
|
+
Each section component lives in its own directory with co-located template (`.tsx`), scoped styles (`.css`), and schema definition (`schema.yaml`). CSS is automatically collected and served via a dynamic `/static/components.css` route — no build step needed.
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
themes/lokatech/components/
|
|
67
|
+
├── hero/
|
|
68
|
+
│ ├── hero.tsx # Hono JSX template
|
|
69
|
+
│ ├── hero.css # Scoped styles (animations, gradients)
|
|
70
|
+
│ └── schema.yaml # Field definitions
|
|
71
|
+
├── features/
|
|
72
|
+
│ ├── features.tsx
|
|
73
|
+
│ ├── features.css
|
|
74
|
+
│ └── schema.yaml
|
|
75
|
+
└── ... (15 components)
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**Starter Profiles (Distributions)**
|
|
79
|
+
Self-contained starter profiles — like Drupal distributions (Droopler, OpenIntranet). Each starter bundles themes, config, and demo content. After `barka init`, everything in `content/`, `config/`, and `themes/` is yours — framework updates never touch these directories.
|
|
80
|
+
|
|
81
|
+
**Admin UI with HTMX**
|
|
82
|
+
A full content management interface at `/admin` — content CRUD with revisions, section builder, media library, taxonomy management, user accounts, settings. Built with server-rendered HTML + HTMX for instant interactivity. No React, no JS build step.
|
|
83
|
+
|
|
84
|
+
**Multi-Language**
|
|
85
|
+
Built-in i18n via filename suffixes (`about.pl.md`, `about.de.md`). Language negotiation (URL prefix → cookie → Accept-Language). Hreflang tags auto-generated. A scalable **language switcher** (dropdown: code + label, active checkmark) lives in the header and matches mobile drawer styling. On the **default language**, URLs have no prefix (`/`); prefixed routes (`/pl/...`, `/de/...`) serve the matching translation. If two files share the same slug (e.g. `page.md` and `page.pl.md`), the unprefixed URL always resolves to the **site default language** — not “first file on disk.” Listings (`/articles`, `/case-studies`, `/services`) filter by language so you never mix EN and PL on the same index. Config in one YAML file:
|
|
86
|
+
|
|
87
|
+
```yaml
|
|
88
|
+
# config/languages.yaml
|
|
89
|
+
default: en
|
|
90
|
+
languages:
|
|
91
|
+
en:
|
|
92
|
+
label: "English"
|
|
93
|
+
direction: ltr
|
|
94
|
+
pl:
|
|
95
|
+
label: "Polski"
|
|
96
|
+
direction: ltr
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**UI strings (theme / admin copy)**
|
|
100
|
+
Navigation labels, mega-menu copy, footer headings, and other **non-content** strings are not stored in Markdown. They live in `config/translations/<lang>.yaml` (dot keys, e.g. `nav.services: "Services"`). At render time the active theme receives a Drupal-style **`t()`** helper via theme settings (`themeSettings._t`) with fallback to the site default language. Add or edit keys there — same idea as Drupal’s string translations.
|
|
101
|
+
|
|
102
|
+
**Base path & internal URLs**
|
|
103
|
+
Templates get **`_basePath`** (empty for the default language, or `/<lang>` when prefixed) and **`_url('/path')`** so links stay correct when the user is on `/pl/...` (logo, nav, footer, CTAs). You don’t hardcode `/pl` in JSX.
|
|
104
|
+
|
|
105
|
+
**Multi-Site / Multi-Domain**
|
|
106
|
+
Serve multiple sites from a single Barka instance. Each site can have its own domain, language set, and theme settings — while sharing the same components and content engine. Content **without** optional `siteId` in frontmatter is **shared** across sites; content **with** `siteId` is scoped to that site. `barka dev` prints a table mapping each site’s production domain to its `.localhost` alias and languages. Local development uses RFC 6761 `.localhost` subdomains (zero config, no `/etc/hosts` editing):
|
|
107
|
+
|
|
108
|
+
```yaml
|
|
109
|
+
# config/sites.yaml
|
|
110
|
+
sites:
|
|
111
|
+
main:
|
|
112
|
+
label: "Barka"
|
|
113
|
+
domain: "barka.dev"
|
|
114
|
+
localhost: "barka.localhost" # http://barka.localhost:3000
|
|
115
|
+
default_lang: en
|
|
116
|
+
languages: [en, pl, de]
|
|
117
|
+
|
|
118
|
+
blog:
|
|
119
|
+
label: "Blog"
|
|
120
|
+
domain: "blog.barka.dev"
|
|
121
|
+
localhost: "blog.localhost" # http://blog.localhost:3000
|
|
122
|
+
default_lang: en
|
|
123
|
+
languages: [en]
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**Themes**
|
|
127
|
+
Drupal-style theme system with inheritance and a resolution chain: `active theme → base theme → built-in fallback`. Themes include layouts, SDC components, partials, and static assets. Slug-specific templates (`page--contact.tsx`), collection listings (`index--articles.tsx`). Shipped inside starters so they're fully customizable.
|
|
128
|
+
|
|
129
|
+
**Bidirectional Sync**
|
|
130
|
+
Edit in files, edit in admin UI — it all stays in sync. `barka sync` merges changes from both directions with conflict detection. Export from DB to files for Git versioning anytime.
|
|
131
|
+
|
|
132
|
+
**SEO-First**
|
|
133
|
+
Zero JS on public pages. Auto-generated meta tags (Open Graph, Twitter), JSON-LD structured data, sitemap.xml, robots.txt, RSS feed, clean URLs, hreflang tags. Sitemap and RSS are **site-scoped** when multi-site is enabled. Static HTML output scores 100/100 on Lighthouse.
|
|
134
|
+
|
|
135
|
+
**Themed 404**
|
|
136
|
+
Unknown routes render through your active theme (navigation, language switcher, translated UI) — not a bare HTML error page.
|
|
137
|
+
|
|
138
|
+
**Mobile-First Navigation**
|
|
139
|
+
Responsive design with a hamburger menu that opens a slide-in drawer with full accordion sub-navigation (Services, Industries, Insights sub-items), app-style bottom navigation bar, and a prominent Contact CTA.
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
# Progressive Complexity
|
|
144
|
+
|
|
145
|
+
Barka grows with your project. Start simple, scale up only when needed.
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
Level 1: Files Only Level 2: Dev Server Level 3: + Database Level 4: Full CMS
|
|
149
|
+
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
|
150
|
+
│ content/*.md │ │ barka dev │ │ + SQLite │ │ + Multi-lang │
|
|
151
|
+
│ config/*.yaml │ → │ Hot reload │ → │ + Admin UI │ → │ + Multi-site │
|
|
152
|
+
│ barka build │ │ Live preview │ │ + Auth │ │ + Workflows │
|
|
153
|
+
│ Deploy: $0 │ │ Local only │ │ Deploy: $0-5 │ │ Deploy: $5-20 │
|
|
154
|
+
└─────────────────┘ └─────────────────┘ └─────────────────┘ └─────────────────┘
|
|
155
|
+
No DB No DB SQLite SQLite or PG
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
# Quickstart
|
|
161
|
+
|
|
162
|
+
**Step 1:** Create a new Barka project:
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
npx @barkajs/barka create my-site
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
**Step 2:** Install dependencies and start:
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
cd my-site
|
|
172
|
+
npm install
|
|
173
|
+
npm run dev
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
**Step 4:** Open your site at `http://localhost:3000`
|
|
177
|
+
|
|
178
|
+
**Step 5 (optional):** Add a database and admin UI:
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
npx barka db:init
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Access the admin panel at `http://localhost:3000/admin`
|
|
185
|
+
Default credentials: `admin@example.com` / `Admin123!SecurePass`
|
|
186
|
+
|
|
187
|
+
## Prerequisites
|
|
188
|
+
|
|
189
|
+
- Node.js v20+
|
|
190
|
+
- npm, pnpm, or bun
|
|
191
|
+
|
|
192
|
+
That's it. No Docker, no PostgreSQL, no Redis — unless you want them later.
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
<h2 id="starters">Starter Profiles</h2>
|
|
197
|
+
|
|
198
|
+
Starters are self-contained distributions — like Drupal installation profiles (Droopler, OpenIntranet). Each starter bundles a premium theme, full configuration, demo content, and translations. After `barka init`, everything becomes yours to customize. More starters are coming.
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
barka starters # list available starters
|
|
202
|
+
barka init --starter lokatech # enterprise IT company
|
|
203
|
+
barka init --starter kadoservices # staffing & HR company
|
|
204
|
+
barka init --starter blank # clean starting point
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### LokaTech — Enterprise IT Demo (default)
|
|
208
|
+
|
|
209
|
+
A complete website for a fictional enterprise IT services company. Dark navy + emerald green theme with premium animations (floating blobs, grid patterns, glow lines, stagger reveals).
|
|
210
|
+
|
|
211
|
+
- **Content**: 62 files — 6 services, 6 industries, 8 case studies, 22 articles, 5 team members, 5 locations, homepage with 10 sections
|
|
212
|
+
- **Theme**: 14 layouts, 15 SDC section components, CSS-only mega menu, mobile drawer nav, frosted glass header
|
|
213
|
+
- **Languages**: EN + PL translations, language switcher, hreflang tags
|
|
214
|
+
- **Use case**: IT outsourcing, software house, digital agency, consulting firm
|
|
215
|
+
|
|
216
|
+
### KadoServices — Staffing & HR Demo
|
|
217
|
+
|
|
218
|
+
A complete website for a fictional staffing and HR services company. Warm amber + deep plum theme with a completely different visual language (numbered rows, split hero, dual CTA, slim dropdowns).
|
|
219
|
+
|
|
220
|
+
- **Content**: 42 files — 6 services (recruitment, temp staffing, RPO, consulting, branding, payroll), 6 industries, 3 case studies, 4 articles, 5 team members, 4 locations, homepage with 10 sections
|
|
221
|
+
- **Theme**: 14 layouts, 15 SDC components, DM Sans + Source Sans 3 typography, pre-footer dual audience strip
|
|
222
|
+
- **Languages**: EN + PL translations
|
|
223
|
+
- **Use case**: Staffing agency, HR consulting, recruitment firm, outsourcing company
|
|
224
|
+
|
|
225
|
+
### Blank — Clean Starting Point
|
|
226
|
+
|
|
227
|
+
Minimal setup for starting from scratch. Just a homepage, about page, and the base Starter theme.
|
|
228
|
+
|
|
229
|
+
- **Content**: 2 files — homepage + about page
|
|
230
|
+
- **Config**: 3 content types (article, page, landing_page)
|
|
231
|
+
- **Theme**: Starter base theme (clean, unstyled)
|
|
232
|
+
- **Use case**: Custom project where you build your own theme and content
|
|
233
|
+
|
|
234
|
+
### How to use a starter for a new site
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
# Create a new project
|
|
238
|
+
npx @barkajs/barka create my-company
|
|
239
|
+
cd my-company && npm install
|
|
240
|
+
|
|
241
|
+
# Pick a starter that matches your industry
|
|
242
|
+
barka init --starter kadoservices --force
|
|
243
|
+
|
|
244
|
+
# Customize: edit content, change colors, add your logo
|
|
245
|
+
# Then start the dev server
|
|
246
|
+
barka dev
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
After init, you own everything:
|
|
250
|
+
- `content/` — your content, edit freely (or let AI agents generate it)
|
|
251
|
+
- `config/` — your content types, taxonomies, languages, sites
|
|
252
|
+
- `themes/` — your theme layouts, components, styles
|
|
253
|
+
|
|
254
|
+
Framework updates (`npm update @barkajs/barka`) never touch these directories.
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## For AI Coding Agents
|
|
259
|
+
|
|
260
|
+
Copy the prompt below into **Claude Code**, **Cursor**, **Codex**, **Aider**, or any AI coding tool to start building a new Barka site from scratch. The agent will ask you a few questions, recommend the best starter, and generate a customized website.
|
|
261
|
+
|
|
262
|
+
````markdown
|
|
263
|
+
# Build a new website with Barka CMS
|
|
264
|
+
|
|
265
|
+
## Step 1 — Set up the project
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
npx @barkajs/barka create my-site
|
|
269
|
+
cd my-site
|
|
270
|
+
npm install
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
Read the files `CLAUDE.md` and `INVARIANTS.json` in the project root before making
|
|
274
|
+
any changes — they contain the rules you must follow.
|
|
275
|
+
|
|
276
|
+
## Step 2 — Gather requirements
|
|
277
|
+
|
|
278
|
+
Before choosing a starter or generating content, ask me (the human) these questions
|
|
279
|
+
and wait for answers:
|
|
280
|
+
|
|
281
|
+
1. **Company / website name** — What is the company called? What should the site title be?
|
|
282
|
+
2. **Main goal** — What is the primary goal of the website?
|
|
283
|
+
(lead generation, brand awareness, recruitment, e-commerce, portfolio, internal tool, etc.)
|
|
284
|
+
3. **Services / products** — What does the company offer? List the main services or product categories.
|
|
285
|
+
4. **Target audience** — Who are the ideal customers? Which industries or verticals?
|
|
286
|
+
5. **Languages** — How many languages are needed and which ones? (e.g. EN + PL, EN only, EN + DE + FR)
|
|
287
|
+
6. **Brand identity** — Do you have a brand book, existing website, or logo I can use to match colors and typography? Paste a link or describe the palette.
|
|
288
|
+
7. **Content volume** — How much content do you plan to publish?
|
|
289
|
+
(a few static pages, regular blog posts, case studies, landing pages for campaigns, etc.)
|
|
290
|
+
|
|
291
|
+
## Step 3 — Choose a starter and initialize
|
|
292
|
+
|
|
293
|
+
Based on the answers, pick the best starter:
|
|
294
|
+
|
|
295
|
+
| Starter | Best for | Theme style |
|
|
296
|
+
|---------|----------|-------------|
|
|
297
|
+
| `lokatech` | IT services, software houses, consulting, digital agencies | Dark navy + emerald, premium animations |
|
|
298
|
+
| `kadoservices` | HR, staffing, recruitment, outsourcing, business services | Warm amber + deep plum, professional |
|
|
299
|
+
| `blank` | Fully custom design, e-commerce, portfolio, non-standard layouts | Minimal base theme |
|
|
300
|
+
|
|
301
|
+
> More industry-specific starters are coming (healthcare, real estate, SaaS, education).
|
|
302
|
+
> For now, pick the closest match and customize from there.
|
|
303
|
+
|
|
304
|
+
```bash
|
|
305
|
+
barka init --starter <recommended> --force
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
## Step 4 — Customize for the company
|
|
309
|
+
|
|
310
|
+
1. Edit `config/settings.yaml` — set `site_name`, `site_url`, `tagline`, and theme colors
|
|
311
|
+
to match the brand book or provided palette.
|
|
312
|
+
2. Edit `config/languages.yaml` — configure the languages from the requirements.
|
|
313
|
+
3. Edit `config/sites.yaml` — set the production domain and localhost alias.
|
|
314
|
+
4. Update `config/translations/en.yaml` (and other language files) — replace demo
|
|
315
|
+
navigation labels, footer text, and CTA copy with the real company content.
|
|
316
|
+
|
|
317
|
+
## Step 5 — Generate content
|
|
318
|
+
|
|
319
|
+
Replace the demo content in `content/` with real pages tailored to the company:
|
|
320
|
+
|
|
321
|
+
- `content/landing-pages/homepage.yaml` — hero, features, CTA, testimonials sections
|
|
322
|
+
- `content/pages/about.md` — company story, mission, values
|
|
323
|
+
- `content/services/*.md` — one file per service/product
|
|
324
|
+
- `content/articles/*.md` — blog posts relevant to the industry
|
|
325
|
+
- `content/landing-pages/*.yaml` — campaign landing pages with section builder
|
|
326
|
+
|
|
327
|
+
For each non-default language, create translated files with the language suffix
|
|
328
|
+
(e.g. `homepage.pl.yaml`, `about.pl.md`).
|
|
329
|
+
|
|
330
|
+
## Step 6 — Preview and iterate
|
|
331
|
+
|
|
332
|
+
```bash
|
|
333
|
+
barka dev
|
|
334
|
+
# Open http://localhost:3000
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
Use Playwright or a browser to verify every page renders correctly.
|
|
338
|
+
Check all languages, navigation, footer links, and mobile responsiveness.
|
|
339
|
+
|
|
340
|
+
## Rules to follow
|
|
341
|
+
|
|
342
|
+
- NEVER delete content/, config/, or themes/ directories
|
|
343
|
+
- NEVER hardcode language prefixes (/pl/, /de/) — use `_url()` and `_t()` in templates
|
|
344
|
+
- ALWAYS run `npm test && npm run typecheck` before committing
|
|
345
|
+
- Content files use YAML frontmatter; landing pages are pure YAML with sections
|
|
346
|
+
- Theme components are Single Directory Components (SDC) in `themes/<name>/components/`
|
|
347
|
+
- UI strings live in `config/translations/<lang>.yaml` — not hardcoded in JSX
|
|
348
|
+
````
|
|
349
|
+
|
|
350
|
+
---
|
|
351
|
+
|
|
352
|
+
# CLI
|
|
353
|
+
|
|
354
|
+
```bash
|
|
355
|
+
barka create <name> # Scaffold a new project
|
|
356
|
+
barka init -s <starter> # Initialize from a starter profile (lokatech, blank)
|
|
357
|
+
barka starters # List available starter profiles
|
|
358
|
+
barka dev # Dev server with hot reload
|
|
359
|
+
barka build # Static HTML output to dist/
|
|
360
|
+
barka build --site X # Build for a specific site
|
|
361
|
+
barka db:init # Initialize SQLite + seed data
|
|
362
|
+
barka import # Files → Database
|
|
363
|
+
barka export # Database → Files
|
|
364
|
+
barka sync # Bidirectional sync with conflict detection
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
---
|
|
368
|
+
|
|
369
|
+
# Content
|
|
370
|
+
|
|
371
|
+
Content lives in `content/` as Markdown with YAML frontmatter:
|
|
372
|
+
|
|
373
|
+
```markdown
|
|
374
|
+
---
|
|
375
|
+
title: "Getting Started with Barka"
|
|
376
|
+
type: article
|
|
377
|
+
status: published
|
|
378
|
+
date: 2026-03-21
|
|
379
|
+
fields:
|
|
380
|
+
category: technology
|
|
381
|
+
author: "Jane Doe"
|
|
382
|
+
featured_image: "/static/images/article-hero.jpg"
|
|
383
|
+
---
|
|
384
|
+
|
|
385
|
+
Your markdown content here. Supports **bold**, *italic*, [links](https://example.com),
|
|
386
|
+
code blocks, images, and everything else Markdown offers.
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
Landing pages use pure YAML with sections:
|
|
390
|
+
|
|
391
|
+
```yaml
|
|
392
|
+
title: "Homepage"
|
|
393
|
+
type: landing_page
|
|
394
|
+
status: published
|
|
395
|
+
sections:
|
|
396
|
+
- type: hero
|
|
397
|
+
heading: "Build websites the simple way"
|
|
398
|
+
subheading: "Content in files. Deploy anywhere."
|
|
399
|
+
cta_text: "Get Started"
|
|
400
|
+
cta_url: "/docs"
|
|
401
|
+
settings:
|
|
402
|
+
background: dark
|
|
403
|
+
spacing: large
|
|
404
|
+
- type: features
|
|
405
|
+
heading: "Why Barka?"
|
|
406
|
+
items:
|
|
407
|
+
- title: "Files First"
|
|
408
|
+
description: "No database needed to start"
|
|
409
|
+
icon: "file-text"
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
## Multi-Language Content
|
|
413
|
+
|
|
414
|
+
Add a translation by creating a file with a language suffix:
|
|
415
|
+
|
|
416
|
+
```
|
|
417
|
+
content/
|
|
418
|
+
├── articles/
|
|
419
|
+
│ ├── platform-engineering.md # English (default)
|
|
420
|
+
│ └── platform-engineering.pl.md # Polish translation
|
|
421
|
+
├── pages/
|
|
422
|
+
│ ├── contact.md # English
|
|
423
|
+
│ └── contact.pl.md # Polish
|
|
424
|
+
└── landing-pages/
|
|
425
|
+
├── homepage.yaml # English
|
|
426
|
+
└── homepage.pl.yaml # Polish
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
The system automatically detects the language from the filename, associates translations with the same slug, and serves them at prefixed URLs (`/pl/articles/platform-engineering`).
|
|
430
|
+
|
|
431
|
+
**Missing translation:** If there is no content file for a language (e.g. no German homepage), that URL may show a **404** — UI chrome still uses `config/translations/de.yaml` for nav/footer. Add `homepage.de.yaml` (or the relevant `.de.md`) when you want a full page.
|
|
432
|
+
|
|
433
|
+
---
|
|
434
|
+
|
|
435
|
+
# Configuration
|
|
436
|
+
|
|
437
|
+
All configuration in `config/` — simple YAML files:
|
|
438
|
+
|
|
439
|
+
| File | Purpose |
|
|
440
|
+
|------|---------|
|
|
441
|
+
| `settings.yaml` | Site name, URL, theme, SEO defaults |
|
|
442
|
+
| `content-types.yaml` | Content type definitions with fields |
|
|
443
|
+
| `section-types.yaml` | Section types for the page builder |
|
|
444
|
+
| `languages.yaml` | i18n language definitions |
|
|
445
|
+
| `taxonomies.yaml` | Vocabularies and terms |
|
|
446
|
+
| `sites.yaml` | Multi-site domains, per-site languages, `.localhost` aliases |
|
|
447
|
+
| `translations/*.yaml` | UI strings per language (`en.yaml`, `pl.yaml`, …) — keys consumed by `t()` in themes |
|
|
448
|
+
|
|
449
|
+
---
|
|
450
|
+
|
|
451
|
+
<h2 id="testing-smoke">Smoke tests (manual / Playwright)</h2>
|
|
452
|
+
|
|
453
|
+
After changes to routing, i18n, `sites.yaml`, or theme navigation, verify at least:
|
|
454
|
+
|
|
455
|
+
| Area | Checks |
|
|
456
|
+
|------|--------|
|
|
457
|
+
| **EN** | `/` — logo → `/`, nav without `/pl`, English body copy |
|
|
458
|
+
| **PL** | `/pl` — logo → `/pl`, nav/footer links prefixed `/pl/`, Polish copy where translated |
|
|
459
|
+
| **Same slug, two langs** | `/services/...` = default lang; `/pl/services/...` = Polish — no cross-leak |
|
|
460
|
+
| **Listings** | `/articles` vs `/pl/articles` — only items for that language |
|
|
461
|
+
| **404** | `/missing` vs `/pl/missing` — themed page + matching nav language |
|
|
462
|
+
| **Switcher** | Dropdown lists all configured languages; links use correct prefix |
|
|
463
|
+
|
|
464
|
+
The Barka wrapper documents a fuller checklist in `.claude/skills/role-qa-testing/SKILL.md` (section **Frontend Smoke Tests — Barka v2**).
|
|
465
|
+
|
|
466
|
+
---
|
|
467
|
+
|
|
468
|
+
# Tech Stack
|
|
469
|
+
|
|
470
|
+
| Layer | Technology | Why |
|
|
471
|
+
|-------|-----------|-----|
|
|
472
|
+
| Web framework | **Hono** | Ultrafast, runs on Cloudflare Workers, Bun, Deno, Node.js |
|
|
473
|
+
| Database | **SQLite** (optional) | Zero-config, embedded, no server process |
|
|
474
|
+
| ORM | **Drizzle** | Type-safe, SQL-like API, lazy-loaded |
|
|
475
|
+
| Admin UI | **HTMX** | Server-rendered interactivity, no JS build step |
|
|
476
|
+
| Templates | **Hono JSX** | Fast server-side rendering |
|
|
477
|
+
| Styling | **Tailwind CSS** | Utility-first, CDN-friendly |
|
|
478
|
+
| CLI | **Commander.js** | Standard Node.js CLI framework |
|
|
479
|
+
| Content | **gray-matter** + **marked** | Frontmatter parsing + Markdown rendering |
|
|
480
|
+
|
|
481
|
+
---
|
|
482
|
+
|
|
483
|
+
<h2 id="comparison">Comparison vs Other Tools</h2>
|
|
484
|
+
|
|
485
|
+
| Feature | Astro | Hugo | Drupal | WordPress | Payload CMS | Keystatic | **Barka** |
|
|
486
|
+
|---------|:-----:|:----:|:------:|:---------:|:-----------:|:---------:|:---------:|
|
|
487
|
+
| Content in files | :white_check_mark: | :white_check_mark: | :x: | :x: | :x: | :white_check_mark: | :white_check_mark: |
|
|
488
|
+
| Admin UI for editors | :x: | :x: | :white_check_mark: | :white_check_mark: | :white_check_mark: | Partial | :white_check_mark: |
|
|
489
|
+
| Page builder / sections | :x: | :x: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: |
|
|
490
|
+
| Starter distributions | :x: | :x: | :white_check_mark: | :x: | :x: | :x: | :white_check_mark: |
|
|
491
|
+
| Database optional | :white_check_mark: | :white_check_mark: | :x: | :x: | :x: | :white_check_mark: | :white_check_mark: |
|
|
492
|
+
| Multi-language | Plugin | Built-in | Built-in | Plugin | Plugin | :x: | Built-in |
|
|
493
|
+
| Multi-site | :x: | :x: | :white_check_mark: | :white_check_mark: | :x: | :x: | :white_check_mark: |
|
|
494
|
+
| Content revisions | Git | Git | DB | DB | DB | Git | Git + DB |
|
|
495
|
+
| 0 JS on frontend | :x: | :white_check_mark: | Depends | :x: | Depends | :white_check_mark: | :white_check_mark: |
|
|
496
|
+
| AI-friendly content | :white_check_mark: | :white_check_mark: | :x: | :x: | Partial | Partial | :white_check_mark: |
|
|
497
|
+
| Free static hosting | :white_check_mark: | :white_check_mark: | :x: | :x: | :x: | :white_check_mark: | :white_check_mark: |
|
|
498
|
+
| Self-contained | :x: | :white_check_mark: | :x: | :x: | :x: | Partial | :white_check_mark: |
|
|
499
|
+
| SDC / co-located styles | :white_check_mark: | :x: | :white_check_mark: | :x: | :x: | :x: | :white_check_mark: |
|
|
500
|
+
| Setup complexity | `npm create` | `brew install` | Docker + server | PHP + MySQL | Node + DB | `npm create` | **`npx barka create`** |
|
|
501
|
+
| Hosting cost | $0 | $0 | $10-50/mo | $5-30/mo | $10-30/mo | $0 | **$0-5/mo** |
|
|
502
|
+
|
|
503
|
+
---
|
|
504
|
+
|
|
505
|
+
# Project Structure
|
|
506
|
+
|
|
507
|
+
```
|
|
508
|
+
my-site/
|
|
509
|
+
├── content/ # Your content (Markdown + YAML) — user-owned
|
|
510
|
+
│ ├── articles/ # 22 articles (+ .pl.md translations)
|
|
511
|
+
│ ├── pages/ # Static pages (about, contact + PL)
|
|
512
|
+
│ ├── services/ # 7 service pages (+ PL)
|
|
513
|
+
│ ├── case-studies/ # 9 case studies (+ PL)
|
|
514
|
+
│ ├── industries/ # Industry pages
|
|
515
|
+
│ ├── landing-pages/ # Homepage and landing pages (YAML + PL)
|
|
516
|
+
│ ├── team/ # Team member profiles
|
|
517
|
+
│ └── locations/ # Office locations
|
|
518
|
+
├── config/ # Configuration (YAML) — user-owned
|
|
519
|
+
│ ├── settings.yaml # Site name, theme, SEO
|
|
520
|
+
│ ├── content-types.yaml # 8 content types with fields
|
|
521
|
+
│ ├── section-types.yaml # Section type definitions
|
|
522
|
+
│ ├── languages.yaml # en, pl, de
|
|
523
|
+
│ ├── taxonomies.yaml # Vocabularies and terms
|
|
524
|
+
│ ├── sites.yaml # Multi-site domains
|
|
525
|
+
│ └── translations/ # UI strings per locale (en.yaml, pl.yaml, …)
|
|
526
|
+
├── themes/ # Themes (Hono JSX + SDC) — user-owned
|
|
527
|
+
│ ├── lokatech/ # Premium theme
|
|
528
|
+
│ │ ├── theme.yaml # Theme config and settings
|
|
529
|
+
│ │ ├── layouts/ # 14 layout templates
|
|
530
|
+
│ │ ├── components/ # 15 SDC section components
|
|
531
|
+
│ │ │ ├── hero/ # hero.tsx + hero.css + schema.yaml
|
|
532
|
+
│ │ │ ├── features/ # features.tsx + features.css + schema.yaml
|
|
533
|
+
│ │ │ └── ...
|
|
534
|
+
│ │ └── static/ # CSS, images, fonts
|
|
535
|
+
│ └── starter/ # Base theme (fallback)
|
|
536
|
+
├── starters/ # Starter profiles (framework-managed)
|
|
537
|
+
│ ├── lokatech/ # Enterprise demo distribution
|
|
538
|
+
│ └── blank/ # Clean starting point
|
|
539
|
+
├── src/ # Framework source code
|
|
540
|
+
│ ├── lib/ # Content engine, i18n, themes, SEO
|
|
541
|
+
│ ├── built-in-theme/ # Minimal fallback theme
|
|
542
|
+
│ └── cli/ # CLI commands
|
|
543
|
+
├── public/ # Static assets
|
|
544
|
+
└── dist/ # Build output (generated)
|
|
545
|
+
```
|
|
546
|
+
|
|
547
|
+
---
|
|
548
|
+
|
|
549
|
+
# Contributing
|
|
550
|
+
|
|
551
|
+
Barka is an open source project and we welcome contributions. If you're interested in contributing, please read our contributing guide.
|
|
552
|
+
|
|
553
|
+
Found a bug or have a feature idea? [Create an issue](https://github.com/barkajs/barka/issues).
|
|
554
|
+
|
|
555
|
+
---
|
|
556
|
+
|
|
557
|
+
# Resources
|
|
558
|
+
|
|
559
|
+
- [GitHub Repository](https://github.com/barkajs/barka)
|
|
560
|
+
- [Issue Tracker](https://github.com/barkajs/barka/issues)
|
|
561
|
+
|
|
562
|
+
---
|
|
563
|
+
|
|
564
|
+
# License
|
|
565
|
+
|
|
566
|
+
[MIT](LICENSE)
|
package/dist/app.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Hono } from 'hono';
|
|
2
|
+
import { type ContentEngine } from './content-engine.js';
|
|
3
|
+
import { type SiteDefinition } from './lib/multisite.js';
|
|
4
|
+
type AppVariables = {
|
|
5
|
+
site: SiteDefinition | null;
|
|
6
|
+
siteId: string | undefined;
|
|
7
|
+
};
|
|
8
|
+
export declare function createApp(options: {
|
|
9
|
+
contentDir: string;
|
|
10
|
+
configDir: string;
|
|
11
|
+
themesDir: string;
|
|
12
|
+
publicDir: string;
|
|
13
|
+
dataDir: string;
|
|
14
|
+
distDir?: string;
|
|
15
|
+
}): {
|
|
16
|
+
app: Hono<{
|
|
17
|
+
Variables: AppVariables;
|
|
18
|
+
}>;
|
|
19
|
+
engine: ContentEngine;
|
|
20
|
+
};
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=app.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAK5B,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAgB7B,OAAO,EAA+C,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AActG,KAAK,YAAY,GAAG;IAClB,IAAI,EAAE,cAAc,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,CAAC;AAEF,wBAAgB,SAAS,CAAC,OAAO,EAAE;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG;IAAE,GAAG,EAAE,IAAI,CAAC;QAAE,SAAS,EAAE,YAAY,CAAA;KAAE,CAAC,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CA6fpE"}
|