{"id":17118,"date":"2026-04-14T13:53:01","date_gmt":"2026-04-14T06:53:01","guid":{"rendered":"https:\/\/labamu.co.id\/career\/fullstack-developer\/"},"modified":"2026-04-14T14:08:33","modified_gmt":"2026-04-14T07:08:33","slug":"fullstack-developer","status":"publish","type":"career","link":"https:\/\/labamu.co.id\/en\/career\/fullstack-developer\/","title":{"rendered":"Fullstack Developer"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"17118\" class=\"elementor elementor-17118 elementor-17099\" data-elementor-post-type=\"career\">\n\t\t\t\t<div class=\"elementor-element elementor-element-75a2b55 e-flex e-con-boxed e-con e-parent\" data-id=\"75a2b55\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-518e4c2 e-con-full e-flex e-con e-child\" data-id=\"518e4c2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-172b438 e-con-full e-flex elementor-invisible e-con e-child\" data-id=\"172b438\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;animation&quot;:&quot;fadeInLeft&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ba79123 elementor-widget elementor-widget-page-title\" data-id=\"ba79123\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;align&quot;:&quot;left&quot;}\" data-widget_type=\"page-title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\n\t\t<div class=\"hfe-page-title hfe-page-title-wrapper elementor-widget-heading\">\n\n\t\t\t\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\n\t\t\t\t\t\t\t\t\n\t\t\t\tFullstack Developer  \n\t\t\t<\/h2 > \n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-aec086f elementor-widget elementor-widget-html\" data-id=\"aec086f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div class=\"career-meta\"><\/div><div id=\"career-detail\" class=\"career-detail-wrapper\"><\/div><style>.career-meta {\n    display: flex;\n    align-items: center;\n    font-family: \"Inter\", sans-serif;\n    font-size: 18px;\n    color: #fff; \/* ganti sesuai tema (misal #222 utk dark text) *\/\n    flex-wrap: wrap;\n  }\n  \n  .career-meta span {\n    display: inline-block;\n    margin-right: 8px;\n  }\n  \n  .separator {\n    opacity: 0.6;\n    margin: 0 8px;\n  }\n  \n  .posted-time {\n    margin-left: auto;\n    font-size: 13px;\n    opacity: 0.8;\n  }\n  \n  .btn-apply {\n    border: 1px solid #fff;\n    color: #fff;\n    padding: 12px 24px;\n    border-radius: 8px;\n    transition: 0.3s;\n    text-decoration: none;\n  }\n\n  .btn-apply:hover {\n    background: #fff;\n    color: #fff;\n  }\n  <\/style><script>document.addEventListener(\"DOMContentLoaded\", function () {\n  const pathParts = window.location.pathname.split(\"\/\").filter(Boolean);\n  const slug = pathParts[pathParts.length - 1];\n  const apiUrl = `\/wp-json\/wp\/v2\/career?slug=${slug}&_fields=acf,date`;\n\n  fetch(apiUrl)\n    .then(res => res.json())\n    .then(data => {\n      if (!data.length || !data[0].acf) return;\n      const acf = data[0].acf;\n      const date = data[0].date;\n      const dateTime = new Date(date);\n\n\n      const buttonHtml =  `<button class=\"btn-apply\" onclick=\"window.open('${acf.link}', '_blank')\">Daftar Sekarang\n        <\/button>`\n\n      document.querySelector(\".career-meta\").innerHTML = `\n        <span>${acf.location}<\/span><span class=\"separator\">\u25aa<\/span><span>${acf.job_type.split(\": \")[1]}<\/span><span class=\"separator\">\u25aa<\/span><span>Posted Date: ${dateTime.toLocaleDateString(\"id-ID\")}<\/span>`;\n\n    })\n    .catch(err => console.error(err));\n});\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4fdd554 elementor-widget elementor-widget-heading\" data-id=\"4fdd554\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Experience Level: 6+ years in Fullstack Developer<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c0510c4 elementor-widget elementor-widget-button\" data-id=\"c0510c4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/labamu.co.id\/apply-career\/?position=fullstack-developer\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Apply<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3417506 e-flex e-con-boxed e-con e-parent\" data-id=\"3417506\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-11bc801 elementor-widget elementor-widget-text-editor\" data-id=\"11bc801\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p class=\"p1\">As a Fullstack Developer at Labamu, you will be responsible for developing and maintaining the front-end and back-end components of our platform. You will work closely with product and QA teams to deliver high-quality features that improve the user experience. <\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-989d905 e-flex e-con-boxed e-con e-parent\" data-id=\"989d905\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-20db1bc elementor-widget elementor-widget-text-editor\" data-id=\"20db1bc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h3><b>Key Responsibilities:<\/b><\/h3><ul><li><p class=\"p1\">End-to-End Development: Design, develop, and maintain reliable and scalable web applications, from UI\/UX to server logic<\/p><\/li><li><p class=\"p1\">Collaboration: Work with cross-functional teams (Product, Design, and QA) to define requirements and release new features<\/p><\/li><li><p class=\"p1\">Optimization: Write code that is clean, maintainable, and efficient, and ensures application performance and responsiveness remains optimal<\/p><\/li><li><p class=\"p1\">Troubleshooting: Debugging and resolving bugs and performance problems in the application<\/p><\/li><li><p class=\"p1\">Modernization: Following the latest technological developments and industry trends to continuously improve the quality and technology used<\/p><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0f2fd2e elementor-widget elementor-widget-text-editor\" data-id=\"0f2fd2e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h3><b>Required Qualifications:<\/b><\/h3><ul><li><p class=\"p1\">Has 6+ years of experience as a Fullstack Engineer<\/p><\/li><li><p class=\"p1\">Have strong experience in microservices and distributed systems&lt; 0 &gt;<br><span class=\"s1\"><\/span><\/p><\/li><li><p class=\"p1\">Mastering backend development (Node.js, Typescript, or Go)<\/p><\/li><li><p class=\"p1\">Experience in building REST APIs (GraphQL is a plus)<\/p><\/li><li><p class=\"p1\">Familiar with PostgreSQL\/MySQL, Redis, and message brokers (Kafka\/RabbitMQ\/PubSub)<\/p><\/li><li><p class=\"p1\">Experienced in designing transactional systems (order\/payment) as well as multi-tenant architecture&lt; 0 &gt;<br><span class=\"s1\"><\/span><\/p><\/li><li><p class=\"p1\">Have a strong understanding of RBAC, security, data isolation, and event-driven systems<\/p><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8e16ac1 elementor-widget elementor-widget-text-editor\" data-id=\"8e16ac1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h3 class=\"p1\"><b>Why Join Labamu?<\/b><\/h3><ul><li><p class=\"p1\">Dynamic Culture: Work in a fast-paced, collaborative and innovation-filled startup environment<\/p><\/li><li><p class=\"p1\">Stability: Gain experience in a startup with professional standards as well as support from a global financial group<\/p><\/li><li><p class=\"p1\">Career Development: Opportunity to develop skills and build a career within the operational team<\/p><\/li><li><p class=\"p1\">Competitive Compensation: Attractive salary and health benefits that support your well-being<\/p><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f9bb87e elementor-widget elementor-widget-html\" data-id=\"f9bb87e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div id=\"event-register\" class=\"register-wrapper\"><\/div>\n\n<script>\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n  \/\/ Ambil slug dari URL\n  const pathParts = window.location.pathname.split(\"\/\").filter(Boolean);\n  const slug = pathParts[pathParts.length - 1]; \n\n  \/\/ API endpoint\n  const apiUrl = `\/wp-json\/wp\/v2\/career?slug=${slug}&_fields=acf`;\n\n  fetch(apiUrl)\n    .then(res => res.json())\n    .then(data => {\n      if (!data.length || !data[0].acf) {\n        document.getElementById(\"event-register\").innerHTML = \"\";\n        return;\n      }\n\n      const acf = data[0].acf;\n        const dateTime = new Date(acf.date_time);\n        const now = new Date();\n\n\n      \/\/ cek apakah sudah lewat\n      const isExpired = dateTime < now;\n      const buttonHtml =  `<a href=\"${acf.link}\" target=\"_blank\" class=\"btn-register\">Apply<\/a>`\n\n      document.getElementById(\"event-register\").innerHTML = `\n        ${buttonHtml}\n      `;\n    })\n    .catch(err => {\n      console.error(err);\n      document.getElementById(\"event-register\").innerHTML = \"\";\n    });\n});\n<\/script>\n\n<style>\n.register-wrapper {\n  display: flex;  \/* vertical center (kalau tinggi diberi) *\/\n  margin: 20px 20px;\n}\n\n.btn-register {\n  display: inline-block;\n  background: #007bff;\n  color: #fff !important;\n  padding: 12px 28px;\n  border-radius: 8px;\n  font-weight: bold;\n  font-size: 16px;\n  text-decoration: none;\n  transition: background 0.3s;\n}\n\n.btn-register:hover {\n  background: #0056b3;\n}\n<\/style>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6d7f30c e-flex e-con-boxed e-con e-parent\" data-id=\"6d7f30c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-f62fa08 e-con-full e-flex e-con e-child\" data-id=\"f62fa08\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-59a11a6 elementor-widget elementor-widget-heading\" data-id=\"59a11a6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Career Recommendations For You<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2fd50f6 e-flex e-con-boxed e-con e-parent\" data-id=\"2fd50f6\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4fde534 elementor-widget elementor-widget-html\" data-id=\"4fde534\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\/* Wrapper *\/\n    .post-grid-wrapper {\n      max-width: 1200px;\n      margin: 0 auto;\n      padding: 20px;\n      font-family: sans-serif;\n    }\n    \n    \/* Dropdown + search *\/\n    .post-filter {\n     margin-bottom: 20px;\n     display: flex;\n     justify-content: space-between; \/* kiri - kanan *\/\n     align-items: center;\n     flex-wrap: wrap; \/* biar turun ke bawah di layar kecil *\/\n     gap: 20px;\n    }\n\n    \/* Kiri *\/\n.filter-left {\n  display: flex;\n  align-items: center;\n  gap: 15px;\n}\n\n\/* Kanan *\/\n.filter-right {\n  display: flex;\n  align-items: center;\n  gap: 10px;\n}\n\n    .post-filter label {\n     font-size: 0.95rem;\n     margin: 0;\n     color: #333;\n     white-space: nowrap;\n    }\n\n    \/* Dropdown *\/\n.post-filter select {\n  padding: 8px 12px;\n  border-radius: 6px;\n  border: 1px solid #ccc;\n  font-size: 0.95rem;\n  background: #fff;\n}\n.search-wrapper input {\n  padding: 8px 12px;\n  padding-right: 30px;\n  border-radius: 6px;\n  border: 1px solid #ccc;\n  font-size: 0.95rem;\n}\n\n\/* Search box *\/\n.search-wrapper {\n  position: relative;\n  display: inline-flex;\n  align-items: center;\n}\n    .search-wrapper input {\n     padding-right: 30px;\n    }\n    .search-wrapper .search-icon {\n  position: absolute;\n  right: 8px;\n  top: 50%;\n  transform: translateY(-50%);\n  color: #666;\n  font-size: 0.9rem;\n}\n    \n    \/* Grid layout *\/\n    .post-grid {\n      --gap: 20px;\n      display: grid;\n      gap: var(--gap);\n      grid-template-columns: repeat(1, 1fr);\n    }\n    @media (min-width: 600px) {\n      .post-grid { grid-template-columns: repeat(2, 1fr); }\n    }\n    @media (min-width: 960px) {\n      .post-grid { grid-template-columns: repeat(3, 1fr); }\n    }\n    \n    \/* Card style *\/\n    .post-card {\n      background: #fff;\n      border-radius: 12px;\n      overflow: hidden;\n      box-shadow: 0 4px 15px rgba(0,0,0,0.1);\n      display: flex;\n      flex-direction: column;\n      transition: transform 0.2s ease, box-shadow 0.2s ease;\n    }\n    .post-card:hover {\n      transform: translateY(-4px);\n      box-shadow: 0 6px 20px rgba(0,0,0,0.15);\n    }\n    .post-card img {\n      width: 100%;\n      aspect-ratio: 16\/9;\n      object-fit: cover;\n      display: block;\n    }\n    .post-card .card-body {\n      padding: 18px;\n      text-align: center;\n      flex: 1;\n      display: flex;\n      flex-direction: column;\n      gap: 12px;\n    }\n    .post-card h3 {\n        margin: 0;\n        font-size: 1.2rem;\n        font-weight: 600;\n        color: #111;\n\n        display: -webkit-box;\n        -webkit-line-clamp: 2;   \/* maksimal 2 baris *\/\n        -webkit-box-orient: vertical;\n        overflow: hidden;\n        text-overflow: ellipsis;\n    }\n    .post-card .excerpt {\n      font-size: 0.95rem;\n      color: #444;\n      flex-grow: 1;\n    }\n    .post-card .readmore a {\n      display: inline-block;\n      padding: 10px 20px;\n      border: 1px solid #ccc;\n      border-radius: 6px;\n      text-decoration: none;\n      color: #111;\n      background: #fff;\n      font-size: 0.9rem;\n      transition: background 0.2s, color 0.2s;\n    }\n    .post-card .readmore a:first-child {\n      background: #fff;\n      color: #111;\n    }\n    .post-card .readmore a:first-child:hover {\n      background: #006bff;\n      color: #fff;\n      border-color: #006bff;\n    }\n    .post-card .readmore .btn-register {\n      background: #006bff;\n      color: #fff;\n      border-color: #006bff;\n    }\n\n    .post-card .readmore .btn-register.disabled {\n      background: #ccc;\n      color: #fff;\n      border-color: #ccc;\n      cursor: not-allowed;\n    }\n    \n    .loading, .error {\n      text-align: center;\n      padding: 20px;\n      color: #666;\n    }\n\/* Status buttons *\/\n.filter-status {\n  display: flex;\n  gap: 10px;\n}\n.filter-status button {\n  padding: 8px 18px;\n  border: 1px solid #ccc;\n  background: #fff;\n  border-radius: 6px;\n  cursor: pointer;\n  font-size: 0.95rem;\n  transition: all 0.2s;\n  color: #111;\n}\n.filter-status button:hover {\n  background: #006bff;\n  color: #fff;\n  border-color: #006bff;\n}\n.filter-status button.active {\n  background: #006bff;\n  color: #fff;\n  border-color: #006bff;\n}\n    <\/style><div class=\"post-grid-wrapper\"><!-- Grid --><div id=\"postGrid\"><div class=\"loading\">Loading posts...<\/div><\/div><\/div><script>(function(){\n          const gridContainer = document.getElementById(\"postGrid\");\n        \n          const baseUrl = \"\/wp-json\/wp\/v2\";\n          const postsPerPage = 6;\n        \n          \/\/ helper: strip HTML\n          function stripHtml(html){\n            const tmp = document.createElement(\"div\");\n            tmp.innerHTML = html;\n            return tmp.textContent || tmp.innerText || \"\";\n          }\n          function truncate(str, n){\n            return str.length > n ? str.slice(0, n).trim() + \"\u2026\" : str;\n          }\n        \n          \/\/ Fetch posts\n          async function loadPosts(catId = \"\", searchTerm = \"\") {\n            gridContainer.innerHTML = '<div class=\"loading\">Loading posts...<\/div>';\n        \n            let url = `${baseUrl}\/career?per_page=${postsPerPage}&_embed`;\n        \n            try {\n              const res = await fetch(url);\n              if (!res.ok) throw new Error(\"Gagal ambil data post\");\n              const posts = await res.json();\n              console.log(posts);\n                \n        \n              const grid = document.createElement(\"div\");\n              grid.className = \"post-grid\";\n        \n              posts.forEach(post => {\n                let thumb = \"\";\n                try {\n                  const fm = post._embedded[\"wp:featuredmedia\"][0];\n                  thumb = fm?.source_url || \"\";\n                } catch (e) {}\n        \n                const acf = post.acf || {};\n                \n\n                const readMoreHtml = `<a href=\"${post.link}\">Selengkapnya<\/a>`\n\n                \n        \n                const card = document.createElement(\"div\");\n                card.className = \"post-card\";\n                card.innerHTML = `\n                  ${thumb ? `<img decoding=\"async\" src=\"${thumb}\" alt=\"${post.title.rendered}\">` : \"\"}\n                  <div class=\"card-body\"><h3>${post.title.rendered}<\/h3><div class=\"readmore\">${readMoreHtml}\n                    <\/div><\/div>`;\n                grid.appendChild(card);\n              });\n        \n              gridContainer.innerHTML = \"\";\n              gridContainer.appendChild(grid);\n            } catch (err) {\n              gridContainer.innerHTML = `<div class=\"error\">Error: ${err.message}<\/div>`;\n            }\n          }\n        \n          \/\/ Init\n          loadPosts();\n        })();\n        <\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"featured_media":18123,"template":"","meta":{"_acf_changed":false,"content-type":"","om_disable_all_campaigns":false},"categories":[363],"class_list":["post-17118","career","type-career","status-publish","has-post-thumbnail","hentry","category-software-engineering"],"acf":{"description":"As a Fullstack Developer at Labamu, you will be responsible for developing and maintaining the front-end and back-end components of our platform. You will work closely with product and QA teams to deliver high-quality features that improve the user experience. ","job_type":"fulltime: Full time","link":"https:\/\/labamu.co.id\/apply-career\/?position=fullstack-developer","location":"Indonesia - BSD City"},"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/labamu.co.id\/en\/wp-json\/wp\/v2\/career\/17118","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/labamu.co.id\/en\/wp-json\/wp\/v2\/career"}],"about":[{"href":"https:\/\/labamu.co.id\/en\/wp-json\/wp\/v2\/types\/career"}],"version-history":[{"count":1,"href":"https:\/\/labamu.co.id\/en\/wp-json\/wp\/v2\/career\/17118\/revisions"}],"predecessor-version":[{"id":17119,"href":"https:\/\/labamu.co.id\/en\/wp-json\/wp\/v2\/career\/17118\/revisions\/17119"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/labamu.co.id\/en\/wp-json\/wp\/v2\/media\/18123"}],"wp:attachment":[{"href":"https:\/\/labamu.co.id\/en\/wp-json\/wp\/v2\/media?parent=17118"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/labamu.co.id\/en\/wp-json\/wp\/v2\/categories?post=17118"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}