{"id":53,"date":"2026-10-18T23:30:48","date_gmt":"2026-10-18T23:30:48","guid":{"rendered":"https:\/\/studymorph.com\/blog\/managing-environment-variables-and-secrets-safely\/"},"modified":"2026-10-18T23:30:48","modified_gmt":"2026-10-18T23:30:48","slug":"managing-environment-variables-and-secrets-safely","status":"publish","type":"post","link":"http:\/\/www.studymorph.com\/blog\/managing-environment-variables-and-secrets-safely\/","title":{"rendered":"How to Manage Environment Variables and Secrets Safely in Modern Web Apps"},"content":{"rendered":"<p>Few moments induce panic quite like receiving an automated email from an API provider notifying you that your production secret key was detected in a public repository, or seeing web server access logs flooded with automated bots probing for <code>\/.env<\/code>. Sensitive credentials\u2014database passwords, encryption salts, third-party API tokens, and webhook signing secrets\u2014are the keys to your entire digital infrastructure. Yet, many teams still treat environment variable management as an afterthought, relying on fragile ad-hoc copying or flawed deployment workflows.<\/p>\n<p>Securing secrets does not require an overwhelming enterprise credential engine right out of the gate. For most modern web applications, robust security comes down to enforcing clean boundaries between code and configuration, locking down server roots, and establishing sound operational habits. Here is a practical, developer-tested guide to keeping your application secrets protected across development, CI\/CD, and production.<\/p>\n<h2>1. Stop Web Server Leaks and Enforce Git Hygiene<\/h2>\n<p>The vast majority of credential leaks happen through two shockingly simple oversights: accidentally committing a local configuration file into version control, or configuring a web server such that the project root is publicly accessible via the browser.<\/p>\n<h3>Locking Down Web Server Document Roots<\/h3>\n<p>If your application framework stores its entry point (like <code>index.php<\/code> or <code>index.html<\/code>) inside a <code>public<\/code>, <code>web<\/code>, or <code>dist<\/code> subdirectory, your web server must point exclusively to that directory\u2014never the parent project folder containing your <code>.env<\/code> file. However, defense-in-depth requires explicit server rules that block access to hidden dotfiles regardless of directory structure.<\/p>\n<p>In Nginx, ensure you block requests to dotfiles across all location blocks:<\/p>\n<pre><code># Block access to hidden files (.env, .git, .htaccess)&#010;location ~ \/. {&#010;    deny all;&#010;    access_log off;&#010;    log_not_found off;&#010;    return 404;&#010;}<\/code><\/pre>\n<p>Returning a <code>404 Not Found<\/code> rather than a <code>403 Forbidden<\/code> prevents automated vulnerability scanners from confirming that the file actually exists on your filesystem.<\/p>\n<h3>Bulletproofing Your Repository<\/h3>\n<p>Your root <code>.gitignore<\/code> should proactively exclude all local credential files before the first commit ever takes place:<\/p>\n<pre><code>.env&#010;.env.*&#010;!.env.example&#010;*.pem&#010;*.key&#010;credentials.json<\/code><\/pre>\n<p>Always commit a sanitized <code>.env.example<\/code> file containing dummy values and inline documentation explaining what each variable does. If a developer accidentally commits a real <code>.env<\/code> file, simply deleting it in a subsequent commit is not enough\u2014the secret remains visible in your git history forever. You must invalidate and rotate the credential immediately, followed by cleaning the git history using tools like <code>git-filter-repo<\/code>.<\/p>\n<h2>2. Enforce the Client vs. Server Boundary<\/h2>\n<p>Modern frontend frameworks like Next.js, Vite, and Nuxt allow developers to expose environment variables to client-side code using specific naming prefixes (such as <code>NEXT_PUBLIC_<\/code> or <code>VITE_<\/code>). While convenient, this mechanism is one of the most common vectors for unintended credential exposure.<\/p>\n<p>Any variable embedded with a client prefix is compiled directly into your production JavaScript bundles, rendering it visible to anyone who inspects network requests or views page source. In our work at <a href=\"https:\/\/studymorph.com\">Study Morph Engineering Consultancy<\/a>, where we audit digital systems and architect scalable Laravel and modern JavaScript applications, we frequently find that teams accidentally expose private payment gateway keys or database credentials by confusing client-accessible tokens with backend secrets.<\/p>\n<h3>Implementing Backend Proxy Endpoints<\/h3>\n<p>If your frontend needs data from a third-party service that requires a sensitive token, never make that call directly from the browser using a client-exposed secret. Instead, route the request through a lightweight backend API route:<\/p>\n<pre><code>\/\/ Client makes an authenticated request to your own API&#010;const response = await fetch('\/api\/user\/subscription');&#010;const data = await response.json();&#010;&#010;\/\/ Backend route (Node.js\/Next.js Route Handler)&#010;export async function GET() {&#010;  \/\/ Processed strictly on the server\u2014SECRET_API_KEY is never sent to the browser&#010;  const res = await fetch('https:\/\/api.paymentprovider.com\/v1\/customers', {&#010;    headers: {&#010;      Authorization: `Bearer ${process.env.PAYMENT_SECRET_KEY}`,&#010;    },&#010;  });&#010;  return Response.json(await res.json());&#010;}<\/code><\/pre>\n<p>By maintaining a strict boundary, private credentials never leave server memory, keeping your application resilient even if client-side code is compromised.<\/p>\n<h2>3. Injecting Production Secrets at Runtime<\/h2>\n<p>Hardcoding values into configuration files or baking them into build artifacts creates significant operational risk. In containerized environments like Docker, a common mistake is using <code>ARG<\/code> statements to pass secret tokens during the image build process. Build arguments are stored in the intermediate image layers and can be retrieved using <code>docker history<\/code>.<\/p>\n<h3>Using Docker Environment Files Safely<\/h3>\n<p>Instead of baking secrets into Docker images, supply them dynamically at container startup using an environment file or orchestration secrets:<\/p>\n<pre><code># Run your container with external runtime injection&#010;docker run -d &#010;  --name api-service &#010;  --env-file \/etc\/production\/api-service.env &#010;  -p 8080:80 &#010;  my-registry.com\/api-service:latest<\/code><\/pre>\n<p>On the host server, restrict filesystem permissions on your production environment file so only the execution user or root can read it:<\/p>\n<pre><code>sudo chmod 600 \/etc\/production\/api-service.env&#010;sudo chown www-data:www-data \/etc\/production\/api-service.env<\/code><\/pre>\n<h3>Managing Systemd Services<\/h3>\n<p>If you run background workers or queue listeners directly on Linux systems using systemd, reference an external environment file with restricted permissions rather than typing secrets into the unit file:<\/p>\n<pre><code>[Unit]&#010;Description=High Performance Queue Worker&#010;After=network.target&#010;&#010;[Service]&#010;Type=simple&#010;User=www-data&#010;WorkingDirectory=\/var\/www\/app&#010;EnvironmentFile=\/etc\/production\/app.env&#010;ExecStart=\/usr\/bin\/php artisan queue:work&#010;Restart=always&#010;&#010;[Install]&#010;WantedBy=multi-user.target<\/code><\/pre>\n<h2>4. Secret Scanning and Rotation Habits<\/h2>\n<p>Even with rigorous standards, human error can happen. Automating secret detection in your local workflow and deployment pipeline ensures that sensitive data is flagged before it reaches production.<\/p>\n<ul>\n<li><strong>Install Pre-Commit Hooks:<\/strong> Tools like Gitleaks or Trufflehog run automatically during <code>git commit<\/code> to check staged diffs against patterns for private keys, AWS tokens, and connection strings.<\/li>\n<li><strong>Validate Variables at Startup:<\/strong> Use schema validation libraries (such as Zod or Joi) in your application bootstrap code. If a required secret is missing or malformed, fail the startup process immediately with a descriptive error rather than allowing silent runtime failures.<\/li>\n<li><strong>Treat Secrets as Ephemeral:<\/strong> Periodically rotate credentials to verify that your application handles updates seamlessly. An emergency rotation during an incident is far less stressful when your deployment pipeline is already accustomed to routine updates.<\/li>\n<\/ul>\n<p>By enforcing strict web server routing, isolating server-only API keys from frontend bundles, and injecting secrets cleanly at runtime, you protect your infrastructure against common automated attacks while keeping your development workflow light, dependable, and maintainable.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Learn how to protect sensitive credentials across development and production environments, prevent accidental git leaks, and stop public .env exposures.<\/p>\n","protected":false},"author":1,"featured_media":54,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[19,70,55,15,38],"class_list":["post-53","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops-security","tag-devops","tag-docker","tag-nginx","tag-security","tag-web-development"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7-RC1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How to Manage Environment Variables Safely | Study Morph Blog<\/title>\n<meta name=\"description\" content=\"Learn how to protect sensitive credentials across development and production environments, prevent accidental git leaks, and stop public .env exposures.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/studymorph.com\/blog\/managing-environment-variables-and-secrets-safely\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Manage Environment Variables Safely | Study Morph Blog\" \/>\n<meta property=\"og:description\" content=\"Learn how to protect sensitive credentials across development and production environments, prevent accidental git leaks, and stop public .env exposures.\" \/>\n<meta property=\"og:url\" content=\"http:\/\/studymorph.com\/blog\/managing-environment-variables-and-secrets-safely\/\" \/>\n<meta property=\"og:site_name\" content=\"Study Morph Tech Journal \u2014 IT Consulting &amp; Engineering\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-18T23:30:48+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/studymorph.com\/blog\/wp-content\/uploads\/2026\/10\/how-to-manage-environment-variables-and-secrets-safely-in-modern-web-apps-cover.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"800\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Tubagus Putra Kencana\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tubagus Putra Kencana\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"http:\\\/\\\/studymorph.com\\\/blog\\\/managing-environment-variables-and-secrets-safely\\\/#article\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/studymorph.com\\\/blog\\\/managing-environment-variables-and-secrets-safely\\\/\"},\"author\":{\"name\":\"Tubagus Putra Kencana\",\"@id\":\"http:\\\/\\\/studymorph.com\\\/blog\\\/#\\\/schema\\\/person\\\/95920a6db16182bc43a3d8ef330679cd\"},\"headline\":\"How to Manage Environment Variables and Secrets Safely in Modern Web Apps\",\"datePublished\":\"2026-10-18T23:30:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\\\/\\\/studymorph.com\\\/blog\\\/managing-environment-variables-and-secrets-safely\\\/\"},\"wordCount\":840,\"image\":{\"@id\":\"http:\\\/\\\/studymorph.com\\\/blog\\\/managing-environment-variables-and-secrets-safely\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/www.studymorph.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/how-to-manage-environment-variables-and-secrets-safely-in-modern-web-apps-cover.jpg\",\"keywords\":[\"DevOps\",\"Docker\",\"Nginx\",\"Security\",\"Web Development\"],\"articleSection\":[\"DevOps &amp; Security\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"http:\\\/\\\/studymorph.com\\\/blog\\\/managing-environment-variables-and-secrets-safely\\\/\",\"url\":\"http:\\\/\\\/studymorph.com\\\/blog\\\/managing-environment-variables-and-secrets-safely\\\/\",\"name\":\"How to Manage Environment Variables Safely | Study Morph Blog\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/studymorph.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\\\/\\\/studymorph.com\\\/blog\\\/managing-environment-variables-and-secrets-safely\\\/#primaryimage\"},\"image\":{\"@id\":\"http:\\\/\\\/studymorph.com\\\/blog\\\/managing-environment-variables-and-secrets-safely\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/www.studymorph.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/how-to-manage-environment-variables-and-secrets-safely-in-modern-web-apps-cover.jpg\",\"datePublished\":\"2026-10-18T23:30:48+00:00\",\"author\":{\"@id\":\"http:\\\/\\\/studymorph.com\\\/blog\\\/#\\\/schema\\\/person\\\/95920a6db16182bc43a3d8ef330679cd\"},\"description\":\"Learn how to protect sensitive credentials across development and production environments, prevent accidental git leaks, and stop public .env exposures.\",\"breadcrumb\":{\"@id\":\"http:\\\/\\\/studymorph.com\\\/blog\\\/managing-environment-variables-and-secrets-safely\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\\\/\\\/studymorph.com\\\/blog\\\/managing-environment-variables-and-secrets-safely\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\\\/\\\/studymorph.com\\\/blog\\\/managing-environment-variables-and-secrets-safely\\\/#primaryimage\",\"url\":\"http:\\\/\\\/www.studymorph.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/how-to-manage-environment-variables-and-secrets-safely-in-modern-web-apps-cover.jpg\",\"contentUrl\":\"http:\\\/\\\/www.studymorph.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/how-to-manage-environment-variables-and-secrets-safely-in-modern-web-apps-cover.jpg\",\"width\":1200,\"height\":800},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\\\/\\\/studymorph.com\\\/blog\\\/managing-environment-variables-and-secrets-safely\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\\\/\\\/studymorph.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Manage Environment Variables and Secrets Safely in Modern Web Apps\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\\\/\\\/studymorph.com\\\/blog\\\/#website\",\"url\":\"http:\\\/\\\/studymorph.com\\\/blog\\\/\",\"name\":\"Study Morph Tech Journal \u2014 IT Consulting &amp; Engineering\",\"description\":\"Deep-dive architectural insights, system engineering case studies, and digital transformation best practices.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\\\/\\\/studymorph.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"http:\\\/\\\/studymorph.com\\\/blog\\\/#\\\/schema\\\/person\\\/95920a6db16182bc43a3d8ef330679cd\",\"name\":\"Tubagus Putra Kencana\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e3030f9ebf657d3c71681da0b8b893e64ad0d8ee62a7e35d8048b3fe1eb8ba0e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e3030f9ebf657d3c71681da0b8b893e64ad0d8ee62a7e35d8048b3fe1eb8ba0e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e3030f9ebf657d3c71681da0b8b893e64ad0d8ee62a7e35d8048b3fe1eb8ba0e?s=96&d=mm&r=g\",\"caption\":\"Tubagus Putra Kencana\"},\"description\":\"Founder &amp; Principal Engineer at Study Morph. Specializing in modern web architecture, cloud systems, and scalable digital platforms.\",\"sameAs\":[\"http:\\\/\\\/localhost\\\/study-morph-baru\\\/blog\"],\"url\":\"http:\\\/\\\/www.studymorph.com\\\/blog\\\/author\\\/tubagus-putra-kencana\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to Manage Environment Variables Safely | Study Morph Blog","description":"Learn how to protect sensitive credentials across development and production environments, prevent accidental git leaks, and stop public .env exposures.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/studymorph.com\/blog\/managing-environment-variables-and-secrets-safely\/","og_locale":"en_US","og_type":"article","og_title":"How to Manage Environment Variables Safely | Study Morph Blog","og_description":"Learn how to protect sensitive credentials across development and production environments, prevent accidental git leaks, and stop public .env exposures.","og_url":"http:\/\/studymorph.com\/blog\/managing-environment-variables-and-secrets-safely\/","og_site_name":"Study Morph Tech Journal \u2014 IT Consulting &amp; Engineering","article_published_time":"2026-10-18T23:30:48+00:00","og_image":[{"width":1200,"height":800,"url":"http:\/\/studymorph.com\/blog\/wp-content\/uploads\/2026\/10\/how-to-manage-environment-variables-and-secrets-safely-in-modern-web-apps-cover.jpg","type":"image\/jpeg"}],"author":"Tubagus Putra Kencana","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Tubagus Putra Kencana","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/studymorph.com\/blog\/managing-environment-variables-and-secrets-safely\/#article","isPartOf":{"@id":"http:\/\/studymorph.com\/blog\/managing-environment-variables-and-secrets-safely\/"},"author":{"name":"Tubagus Putra Kencana","@id":"http:\/\/studymorph.com\/blog\/#\/schema\/person\/95920a6db16182bc43a3d8ef330679cd"},"headline":"How to Manage Environment Variables and Secrets Safely in Modern Web Apps","datePublished":"2026-10-18T23:30:48+00:00","mainEntityOfPage":{"@id":"http:\/\/studymorph.com\/blog\/managing-environment-variables-and-secrets-safely\/"},"wordCount":840,"image":{"@id":"http:\/\/studymorph.com\/blog\/managing-environment-variables-and-secrets-safely\/#primaryimage"},"thumbnailUrl":"http:\/\/www.studymorph.com\/blog\/wp-content\/uploads\/2026\/10\/how-to-manage-environment-variables-and-secrets-safely-in-modern-web-apps-cover.jpg","keywords":["DevOps","Docker","Nginx","Security","Web Development"],"articleSection":["DevOps &amp; Security"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"http:\/\/studymorph.com\/blog\/managing-environment-variables-and-secrets-safely\/","url":"http:\/\/studymorph.com\/blog\/managing-environment-variables-and-secrets-safely\/","name":"How to Manage Environment Variables Safely | Study Morph Blog","isPartOf":{"@id":"http:\/\/studymorph.com\/blog\/#website"},"primaryImageOfPage":{"@id":"http:\/\/studymorph.com\/blog\/managing-environment-variables-and-secrets-safely\/#primaryimage"},"image":{"@id":"http:\/\/studymorph.com\/blog\/managing-environment-variables-and-secrets-safely\/#primaryimage"},"thumbnailUrl":"http:\/\/www.studymorph.com\/blog\/wp-content\/uploads\/2026\/10\/how-to-manage-environment-variables-and-secrets-safely-in-modern-web-apps-cover.jpg","datePublished":"2026-10-18T23:30:48+00:00","author":{"@id":"http:\/\/studymorph.com\/blog\/#\/schema\/person\/95920a6db16182bc43a3d8ef330679cd"},"description":"Learn how to protect sensitive credentials across development and production environments, prevent accidental git leaks, and stop public .env exposures.","breadcrumb":{"@id":"http:\/\/studymorph.com\/blog\/managing-environment-variables-and-secrets-safely\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["http:\/\/studymorph.com\/blog\/managing-environment-variables-and-secrets-safely\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/studymorph.com\/blog\/managing-environment-variables-and-secrets-safely\/#primaryimage","url":"http:\/\/www.studymorph.com\/blog\/wp-content\/uploads\/2026\/10\/how-to-manage-environment-variables-and-secrets-safely-in-modern-web-apps-cover.jpg","contentUrl":"http:\/\/www.studymorph.com\/blog\/wp-content\/uploads\/2026\/10\/how-to-manage-environment-variables-and-secrets-safely-in-modern-web-apps-cover.jpg","width":1200,"height":800},{"@type":"BreadcrumbList","@id":"http:\/\/studymorph.com\/blog\/managing-environment-variables-and-secrets-safely\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/studymorph.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Manage Environment Variables and Secrets Safely in Modern Web Apps"}]},{"@type":"WebSite","@id":"http:\/\/studymorph.com\/blog\/#website","url":"http:\/\/studymorph.com\/blog\/","name":"Study Morph Tech Journal \u2014 IT Consulting &amp; Engineering","description":"Deep-dive architectural insights, system engineering case studies, and digital transformation best practices.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/studymorph.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"http:\/\/studymorph.com\/blog\/#\/schema\/person\/95920a6db16182bc43a3d8ef330679cd","name":"Tubagus Putra Kencana","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/e3030f9ebf657d3c71681da0b8b893e64ad0d8ee62a7e35d8048b3fe1eb8ba0e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/e3030f9ebf657d3c71681da0b8b893e64ad0d8ee62a7e35d8048b3fe1eb8ba0e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e3030f9ebf657d3c71681da0b8b893e64ad0d8ee62a7e35d8048b3fe1eb8ba0e?s=96&d=mm&r=g","caption":"Tubagus Putra Kencana"},"description":"Founder &amp; Principal Engineer at Study Morph. Specializing in modern web architecture, cloud systems, and scalable digital platforms.","sameAs":["http:\/\/localhost\/study-morph-baru\/blog"],"url":"http:\/\/www.studymorph.com\/blog\/author\/tubagus-putra-kencana\/"}]}},"_links":{"self":[{"href":"http:\/\/www.studymorph.com\/blog\/wp-json\/wp\/v2\/posts\/53","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.studymorph.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.studymorph.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.studymorph.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.studymorph.com\/blog\/wp-json\/wp\/v2\/comments?post=53"}],"version-history":[{"count":0,"href":"http:\/\/www.studymorph.com\/blog\/wp-json\/wp\/v2\/posts\/53\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.studymorph.com\/blog\/wp-json\/wp\/v2\/media\/54"}],"wp:attachment":[{"href":"http:\/\/www.studymorph.com\/blog\/wp-json\/wp\/v2\/media?parent=53"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.studymorph.com\/blog\/wp-json\/wp\/v2\/categories?post=53"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.studymorph.com\/blog\/wp-json\/wp\/v2\/tags?post=53"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}