# Build with Matija > Technical deep dives, product experiments, and services from Matija Ziberna, a full-stack developer helping founders ship production software. ## About Matija Ziberna Matija Ziberna is a full-stack developer and technical founder partnering with teams to ship production-ready products, automation, and AI-enabled workflows. ## Services - [Productized Web App Development](https://buildwithmatija.com/services/web-app-development): Fractional CTO partnership to scope, build, and operate complex web applications with strong product thinking and technical ownership. - Model: retainer (Monthly partnership starting at €4.5k with minimum 4-week engagement.) - Spec: https://buildwithmatija.com/services/web-app-development/spec.json - [SEO-Friendly Websites](https://buildwithmatija.com/services/seo-friendly-websites): High-performance marketing websites with structured data, localization, and content workflows tuned for search visibility and speed. - Model: project (Fixed project pricing starting at €6k for 4–6 week delivery.) - Spec: https://buildwithmatija.com/services/seo-friendly-websites/spec.json - [Single-Purpose Tools](https://buildwithmatija.com/services/single-purpose-tools): Rapidly build internal tools, data enrichment bots, and workflow automations with measurable ROI within two weeks. - Model: fixed-bid (Builder package from €3k delivered in 10–14 days.) - Spec: https://buildwithmatija.com/services/single-purpose-tools/spec.json - [MVP Roadmapping](https://buildwithmatija.com/mvp): Strategy workshop to scope, price, and plan an investor-ready MVP with clear technical milestones. - Model: workshop (€1.5k flat workshop fee with credit toward future build.) - Spec: https://buildwithmatija.com/mvp/spec.json ## Markdown Content Index All blog posts listed below have dedicated Markdown versions designed for LLM consumption. Use the category sections to find content relevant to your task. ## Recent Posts by Category ### AI - [Ultimate Guide to JSON Contracts in OpenAI Automations](https://buildwithmatija.com/blog/md/enforcing-json-contracts-openai-automations-zod) (2025-10-31): Learn to enforce JSON contracts with Zod for seamless OpenAI integrations and robust background job management. - [llms.txt: Ultimate Guide to Make Content LLM-Ready](https://buildwithmatija.com/blog/md/llms-txt-why-it-matters) (2025-10-19): How to use llms.txt, Markdown mirrors, Next.js 15, and Sanity CMS to guide LLM crawlers and improve AI discovery of… ### Cloudflare - [Run Multiple Cloudflare Tunnels on a Single VPS Effortlessly](https://buildwithmatija.com/blog/md/run-multiple-cloudflare-tunnels-vps) (2025-10-23): Learn how to efficiently manage multiple domains with Cloudflare tunnels on one Ubuntu server without complex setups. ### Docker - [Migrating Docker Containers Between VPS Servers Without Data Loss](https://buildwithmatija.com/blog/md/migrate-docker-containers-between-vps) (2025-10-18): Move a Docker Compose stack, persistent volumes, and configuration to a new host without downtime. - [How to Self-Host n8n on Your VPS (Simple, Secure, and Production-Ready)](https://buildwithmatija.com/blog/md/self-host-n8n-vps-guide) (2025-10-10): Docker deployment secured with Cloudflare Tunnel, hardened access, and production-ready tweaks - [Expose Any Docker Container with Cloudflare Tunnel (No Nginx, No Open Ports)](https://buildwithmatija.com/blog/md/cloudflared-tunnel-expose-docker-no-nginx-open-ports) (2025-10-08): Replace reverse proxies and open ports with a secure, persistent tunnel ### Next.js - [Master Sending Transactional Emails with Brevo Templates](https://buildwithmatija.com/blog/md/send-transactional-emails-brevo-templates-dynamic-data) (2025-11-04): A Complete Guide to Using Brevo Templates and Dynamic Data for Personalized Emails - [Transform Your Next.js 16 App into a Powerful PWA](https://buildwithmatija.com/blog/md/turn-nextjs-16-app-into-pwa) (2025-11-03): Step-by-step guide on converting your Next.js 16 app into a production-ready PWA with push notifications. - [Master Next.js 16 Partial Prerendering in 5 Easy Steps](https://buildwithmatija.com/blog/md/nextjs-16-partial-prerendering-guide) (2025-11-02): Unlock fast loading and dynamic content with Next.js 16's Partial Prerendering. A step-by-step guide for developers! - [Silence Console Logs in Next.js 16+ for Production](https://buildwithmatija.com/blog/md/nextjs-disable-console-logs-production) (2025-11-01): A Simple Two-step Solution to Manage Console Outputs in Next.js Applications - [Keep Your Sanity-Powered Blog Static in Next.js 15](https://buildwithmatija.com/blog/md/how-to-keep-sanity-powered-blog-static-nextjs-15) (2025-10-29): Discover essential steps to eliminate dynamic fetches and maintain static routes with Sanity and Next.js 15. - [Dynamic Headers & Cookies in Next.js 16: A Complete Guide](https://buildwithmatija.com/blog/md/dynamic-headers-cookies-nextjs-16-ppr) (2025-10-28): Learn how to implement Partial Prerendering (PPR) in Next.js 16 for optimal performance and static rendering. - [Build a Secure Email Pipeline in Next.js](https://buildwithmatija.com/blog/md/building-a-secure-email-pipeline-in-next-js) (2025-10-27): Learn how to send secure transactional emails using Brevo without exposing your SMTP credentials. - [Mastering Cookies in Next.js `force-static` Routes](https://buildwithmatija.com/blog/md/using-next-headers-cookies-in-a-force-static-route) (2025-10-26): Learn how to handle HTTP cookies while maintaining static routes for speed and SEO with Next.js. - [Optimize Google Analytics with Tag Manager in Next.js 15](https://buildwithmatija.com/blog/md/nextjs-google-analytics-tag-manager-guide) (2025-10-25): Master Google Analytics integration with Next.js 15.5.5 and Google Tag Manager to ensure GDPR compliance and avoid… - [Build an IP Intelligence Firewall for Newsletter Signups](https://buildwithmatija.com/blog/md/ip-intelligence-firewall-newsletter-signups) (2025-10-24): Protect Your Newsletter with Advanced IP Filtering Techniques - [Master Google Tag Manager: A Step-by-Step Guide](https://buildwithmatija.com/blog/md/how-to-use-google-tag-manager-web-interface) (2025-10-22): Unlock the full potential of Google Tag Manager with our essential guide on using its web interface effectively. - [Mastering llms.txt: Advanced Next.js 15 Implementation](https://buildwithmatija.com/blog/md/llms-txt-advanced-nextjs-implementation) (2025-10-21): Unlock richer metadata and automation for your Next.js and Sanity CMS projects with llms.txt. - [Implementing llms.txt in Next.js 15 with Sanity CMS](https://buildwithmatija.com/blog/md/implementing-llms-txt-nextjs-15-sanity-cms) (2025-10-20): Step-by-step guide to integrate llms.txt support for your blogging ecosystem with Next.js 15 and Sanity CMS. - [How to Auto-Sync Your CMS Content to OpenAI Vector Store with Webhooks](https://buildwithmatija.com/blog/md/auto-sync-cms-openai-vector-store) (2025-10-15): Build a production-ready webhook system that syncs blog posts to OpenAI for AI-powered search - [Why Next.js is Moving Away from Middleware: Understanding the proxy.ts Rename](https://buildwithmatija.com/blog/md/nextjs16-middleware-change) (2025-10-14): The security vulnerability that forced Next.js to rethink where authentication belongs - [Building a ChatKit AI Chatbot in Next.js 15: What OpenAI Didn't Tell You](https://buildwithmatija.com/blog/md/chatkit-nextjs-integration) (2025-10-13): A complete guide to integrating OpenAI's ChatKit with Next.js, including the gotchas the docs don't mention ### Payload - [Building Custom Admin UI in Payload CMS v3: A Complete Guide to @payloadcms/ui Components](https://buildwithmatija.com/blog/md/payload-cms-custom-admin-ui-components-guide) (2025-10-16): Use the undocumented @payloadcms/ui package to ship custom fields that feel native to Payload. - [How to Dynamically Filter Payload CMS Relationship Fields Based on Sibling Data in Array Fields](https://buildwithmatija.com/blog/md/payload-dynamic-relationship-filtering-array-fields) (2025-10-12): Use siblingData-powered filterOptions to keep relationship dropdowns in sync inside Payload arrays. - [How To Implement Slugs for Content and SKUs for Products in Payload CMS (With Safe Uniqueness + Seeding)](https://buildwithmatija.com/blog/md/payload-cms-slugs-and-skus) (2025-10-11): Separate human-friendly slugs from inventory SKUs while keeping Payload hooks and seeding predictable. - [When to Use Multi-Tenant vs Access Control in Payload CMS: A Decision Framework](https://buildwithmatija.com/blog/md/payload-cms-multi-tenant-vs-access-control-decision-framework) (2025-10-09): Choose isolation (multi-tenant) or flexibility (RBAC + tagging) based on real requirements - [Fix Turbopack React Client Manifest Errors with Payload CMS Admin Import Maps](https://buildwithmatija.com/blog/md/payload-turbopack-react-client-manifest-error-debugging) (2025-10-07): Why Turbopack loops on admin-only client imports and how to ship safely today - [Auto-Generate Base64 Blur Placeholders in Payload CMS with Sharp](https://buildwithmatija.com/blog/md/payload-cms-base64-blur-placeholders-sharp) (2025-10-06): Create tiny blurDataURL placeholders at upload time and use them with Next.js Image ### React - [Capture Signatures in React with React Signature Canvas](https://buildwithmatija.com/blog/md/capture-signatures-in-react-with-react-signature-canvas) (2025-10-30): Build a reusable signature capture flow with validation and persistence using React Hook Form and Zustand. ### Uncategorized - [Understanding Git Cherry-Pick and How to Use It Safely](https://buildwithmatija.com/blog/md/git-cherry-pick-safely) (2025-10-17): Promote production-ready commits without merging the entire branch. ## Discovery Notes - Sitemap: https://buildwithmatija.com/sitemap.xml - Markdown endpoints follow the pattern https://buildwithmatija.com/blog/md/{slug} - Machine manifest: https://buildwithmatija.com/blog/md/index.json - NDJSON corpus: https://buildwithmatija.com/llm/corpus.ndjson