{"id":12242,"date":"2025-09-26T13:38:50","date_gmt":"2025-09-26T13:38:50","guid":{"rendered":"https:\/\/caixamagica.pt\/?page_id=12242"},"modified":"2026-07-14T14:19:21","modified_gmt":"2026-07-14T14:19:21","slug":"desenvolvimento-software","status":"publish","type":"page","link":"https:\/\/caixamagica.pt\/pt\/desenvolvimento-software\/","title":{"rendered":"Desenvolvimento de Software"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"12242\" class=\"elementor elementor-12242\">\n\t\t\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-42458fa0 elementor-section-full_width py-5 elementor-section-stretched elementor-section-height-default elementor-section-height-default\" data-id=\"42458fa0\" data-element_type=\"section\" data-settings=\"{&quot;stretch_section&quot;:&quot;section-stretched&quot;,&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default container my-2 py-md-2 py-lg-5\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5391b61f\" data-id=\"5391b61f\" data-element_type=\"column\">\n\t\t\t<div class=\"p-0 elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4a0a896 elementor-widget elementor-widget-html\" data-id=\"4a0a896\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<!-- =======================================================\n     SHARED STYLES\n     Adiciona isto UMA VEZ em:\n     Elementor \u2192 Settings \u2192 Custom CSS\n     (ou num widget HTML no topo da primeira p\u00e1gina)\n     ======================================================= -->\n<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Red+Hat+Display:wght@400;500;600;700;800;900&display=swap');\n\n:root {\n  --cms-font:    \"Red Hat Display\", sans-serif;\n  --cms-blue:    #2170F2;\n  --cms-dark:    #131022;\n  --cms-body:    #585c7b;\n  --cms-gray-1:  #f3f6ff;\n  --cms-gray-3:  #e2e5f1;\n  --cms-gray-5:  #b4b7c9;\n  --cms-gray-8:  #3e4265;\n  --cms-white:   #ffffff;\n  --cms-radius:  8px;\n  --cms-max:     1160px;\n}\n\n\/* Reset scoped ao prefixo cms- *\/\n.cms * { box-sizing: border-box; }\n.cms {\n  font-family: var(--cms-font);\n  font-size: 1rem;\n  line-height: 1.6;\n  color: var(--cms-body);\n}\n.cms h1, .cms h2, .cms h3, .cms h4 {\n  font-family: var(--cms-font);\n  font-weight: 800;\n  color: var(--cms-dark);\n  line-height: 1.2;\n  margin: 0;\n}\n.cms p { margin: 0 0 1rem; }\n.cms p:last-child { margin-bottom: 0; }\n.cms a { color: var(--cms-blue); text-decoration: none; }\n.cms a:hover { text-decoration: underline; }\n.cms ul { list-style: none; padding: 0; margin: 0; }\n\n\/* \u2500\u2500 BLEED WRAPPER\n   Escapa do padding da coluna Elementor e cobre o fundo completo \u2500\u2500 *\/\n.cms-bleed {\n  margin-left:  calc(-50vw + 50%);\n  margin-right: calc(-50vw + 50%);\n  padding-left:  calc(50vw - 50%);\n  padding-right: calc(50vw - 50%);\n}\n\n\/* \u2500\u2500 INNER \u2014 limita a largura do conte\u00fado \u2500\u2500 *\/\n.cms-inner {\n  max-width: var(--cms-max);\n  margin: 0 auto;\n  padding: 0 1.5rem;\n}\n\n\/* \u2500\u2500 SECTION PADDING \u2500\u2500 *\/\n.cms-section        { padding: 5rem 0; }\n.cms-section-sm     { padding: 3rem 0; }\n.cms-section-xs     { padding: 2rem 0; }\n\n\/* \u2500\u2500 BACKGROUNDS \u2500\u2500 *\/\n.cms-bg-white  { background: var(--cms-white); }\n.cms-bg-light  { background: var(--cms-gray-1); }\n.cms-bg-dark   { background: var(--cms-dark); }\n.cms-bg-blue   { background: var(--cms-blue); }\n\n\/* \u2500\u2500 EYEBROW \u2500\u2500 *\/\n.cms-eyebrow {\n  display: inline-flex;\n  align-items: center;\n  gap: 0.5rem;\n  font-size: 0.75rem;\n  font-weight: 700;\n  letter-spacing: 0.12em;\n  text-transform: uppercase;\n  color: var(--cms-blue);\n  margin-bottom: 1rem;\n  font-family: var(--cms-font);\n}\n.cms-eyebrow::before {\n  content: \"\";\n  display: block;\n  width: 20px;\n  height: 2px;\n  background: var(--cms-blue);\n  flex-shrink: 0;\n}\n.cms-eyebrow-white { color: rgba(255,255,255,0.7); }\n.cms-eyebrow-white::before { background: rgba(255,255,255,0.7); }\n\n\/* \u2500\u2500 HEADINGS \u2500\u2500 *\/\n.cms-h1 {\n  font-size: clamp(2rem, 5vw, 3.25rem);\n  letter-spacing: -0.03em;\n  margin-bottom: 1.5rem;\n}\n.cms-h1 span { color: var(--cms-blue); }\n\n.cms-h2 {\n  font-size: clamp(1.6rem, 3.5vw, 2.5rem);\n  letter-spacing: -0.02em;\n  margin-bottom: 1rem;\n}\n.cms-h2-white { color: #fff; }\n\n\/* \u2500\u2500 LEAD \u2500\u2500 *\/\n.cms-lead {\n  font-size: clamp(0.95rem, 2vw, 1.05rem);\n  color: var(--cms-body);\n  max-width: 660px;\n  line-height: 1.75;\n  margin-bottom: 3rem;\n}\n.cms-lead-white { color: rgba(255,255,255,0.7); }\n\n\/* \u2500\u2500 BUTTONS \u2500\u2500 *\/\n.cms-btn {\n  display: inline-block;\n  background: var(--cms-blue) !important;\n  background-color: var(--cms-blue) !important;\n  color: #fff !important;\n  font-family: var(--cms-font);\n  font-size: 0.95rem;\n  font-weight: 700;\n  padding: 0.8rem 1.75rem;\n  border-radius: var(--cms-radius);\n  text-decoration: none !important;\n  transition: opacity .2s;\n  white-space: nowrap;\n  border: none;\n}\n.cms-btn:hover,\n.cms-btn:visited,\n.cms-btn:focus,\n.cms-btn:active {\n  opacity: 0.88;\n  color: #fff !important;\n  background: var(--cms-blue) !important;\n  background-color: var(--cms-blue) !important;\n  text-decoration: none !important;\n}\n\n.cms-btn-outline {\n  display: inline-block;\n  border: 2px solid var(--cms-gray-3) !important;\n  color: var(--cms-dark) !important;\n  font-family: var(--cms-font);\n  font-size: 0.95rem;\n  font-weight: 700;\n  padding: 0.75rem 1.75rem;\n  border-radius: var(--cms-radius);\n  text-decoration: none !important;\n  transition: border-color .2s, color .2s;\n  white-space: nowrap;\n  background: transparent !important;\n}\n.cms-btn-outline:hover,\n.cms-btn-outline:focus {\n  border-color: var(--cms-blue) !important;\n  color: var(--cms-blue) !important;\n  text-decoration: none !important;\n  background: transparent !important;\n}\n\n.cms-btn-white {\n  display: inline-block;\n  background: #fff !important;\n  background-color: #fff !important;\n  color: var(--cms-blue) !important;\n  font-family: var(--cms-font);\n  font-size: 1rem;\n  font-weight: 700;\n  padding: 0.9rem 2rem;\n  border-radius: var(--cms-radius);\n  text-decoration: none !important;\n  transition: opacity .2s;\n  border: none;\n}\n.cms-btn-white:hover,\n.cms-btn-white:visited,\n.cms-btn-white:focus,\n.cms-btn-white:active {\n  opacity: 0.9;\n  color: var(--cms-blue) !important;\n  background: #fff !important;\n  text-decoration: none !important;\n}\n\n\/* \u2500\u2500 HERO LAYOUT \u2500\u2500 *\/\n.cms-hero-grid {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 4rem;\n  align-items: center;\n}\n.cms-hero-img {\n  border-radius: 16px;\n  overflow: hidden;\n  background: transparent;\n  aspect-ratio: 1 \/ 1;\n}\n.cms-hero-img img {\n  width: 100%;\n  height: 100%;\n  object-fit: cover;\n  display: block;\n}\n.cms-hero-actions {\n  display: flex;\n  gap: 1rem;\n  flex-wrap: wrap;\n  align-items: center;\n  margin-top: 2rem;\n}\n\n\/* \u2500\u2500 CARDS \u2500\u2500 *\/\n.cms-card-grid-3 {\n  display: grid;\n  grid-template-columns: repeat(3, 1fr);\n  gap: 1.25rem;\n}\n.cms-card-grid-2 {\n  display: grid;\n  grid-template-columns: repeat(2, 1fr);\n  gap: 1.25rem;\n}\n.cms-card {\n  border: 1px solid var(--cms-gray-3);\n  border-radius: 12px;\n  padding: 1.75rem;\n  background: var(--cms-white);\n  transition: box-shadow .2s, border-color .2s;\n}\n.cms-card:hover {\n  box-shadow: 0 8px 32px rgba(33,112,242,0.08);\n  border-color: var(--cms-blue);\n}\n.cms-card-num {\n  font-size: 0.7rem;\n  font-weight: 800;\n  letter-spacing: 0.1em;\n  text-transform: uppercase;\n  color: var(--cms-blue);\n  margin-bottom: 1rem;\n  display: block;\n  font-family: var(--cms-font);\n}\n.cms-card h3 { font-size: 1rem; margin-bottom: 0.6rem; }\n.cms-card p { font-size: 0.875rem; color: var(--cms-body); line-height: 1.65; }\n\n\/* Dark card *\/\n.cms-card-dark {\n  background: rgba(255,255,255,0.06);\n  border: 1px solid rgba(255,255,255,0.1);\n  border-radius: 10px;\n  padding: 1.5rem;\n}\n.cms-card-dark h4 {\n  font-size: 0.9rem;\n  font-weight: 700;\n  color: #fff;\n  margin-bottom: 0.4rem;\n  font-family: var(--cms-font);\n}\n.cms-card-dark p {\n  font-size: 0.85rem;\n  color: rgba(255,255,255,0.5);\n  line-height: 1.6;\n  margin: 0;\n}\n\n\/* \u2500\u2500 NUMBERED PROCESS LIST \u2500\u2500 *\/\n.cms-process-list {\n  border: 1px solid var(--cms-gray-3);\n  border-radius: 12px;\n  overflow: hidden;\n}\n.cms-process-item {\n  display: grid;\n  grid-template-columns: 64px 1fr;\n  border-bottom: 1px solid var(--cms-gray-3);\n  background: var(--cms-white);\n}\n.cms-process-item:last-child { border-bottom: none; }\n.cms-process-num {\n  background: var(--cms-gray-1);\n  display: flex;\n  align-items: flex-start;\n  justify-content: center;\n  padding: 1.5rem 0;\n  border-right: 1px solid var(--cms-gray-3);\n  font-size: 1.25rem;\n  font-weight: 800;\n  color: var(--cms-blue);\n  font-family: var(--cms-font);\n}\n.cms-process-content { padding: 1.5rem 1.75rem; }\n.cms-process-content h3 { font-size: 0.95rem; margin-bottom: 0.4rem; }\n.cms-process-content p { font-size: 0.875rem; color: var(--cms-body); line-height: 1.65; }\n\n\/* \u2500\u2500 CAPABILITY ROWS \u2500\u2500 *\/\n.cms-capability-row {\n  display: grid;\n  grid-template-columns: 200px 1fr;\n  gap: 2.5rem;\n  padding: 2rem 0;\n  border-bottom: 1px solid var(--cms-gray-3);\n  align-items: start;\n}\n.cms-capability-row:last-child { border-bottom: none; }\n.cms-cap-label {\n  font-size: 0.95rem;\n  font-weight: 700;\n  color: var(--cms-dark);\n  font-family: var(--cms-font);\n  padding-top: 2px;\n}\n.cms-cap-body p { font-size: 0.9rem; color: var(--cms-body); line-height: 1.75; }\n.cms-cap-body p + p { margin-top: 0.75rem; }\n\n\/* \u2500\u2500 TWO COL LAYOUT \u2500\u2500 *\/\n.cms-two-col {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 5rem;\n  align-items: start;\n}\n\n\/* \u2500\u2500 STACK TAGS \u2500\u2500 *\/\n.cms-stack-group { margin-bottom: 2rem; }\n.cms-stack-label {\n  font-size: 0.68rem;\n  font-weight: 800;\n  letter-spacing: 0.12em;\n  text-transform: uppercase;\n  color: var(--cms-gray-5);\n  display: block;\n  margin-bottom: 0.75rem;\n  padding-bottom: 0.5rem;\n  border-bottom: 1px solid var(--cms-gray-3);\n  font-family: var(--cms-font);\n}\n.cms-tags { display: flex; flex-wrap: wrap; gap: 0.5rem; }\n.cms-tag {\n  font-size: 0.8rem;\n  font-weight: 600;\n  background: var(--cms-white);\n  color: var(--cms-gray-8);\n  border: 1px solid var(--cms-gray-3);\n  padding: 0.35rem 0.85rem;\n  border-radius: 20px;\n  font-family: var(--cms-font);\n}\n\n\/* \u2500\u2500 AEO DEFINITION BLOCK \u2500\u2500 *\/\n.cms-aeo {\n  font-size: 0.9rem;\n  line-height: 1.8;\n  max-width: 800px;\n  padding: 1.5rem 1.75rem;\n  background: var(--cms-white);\n  border-left: 3px solid var(--cms-blue);\n  border-radius: var(--cms-radius);\n  color: var(--cms-body);\n}\n.cms-aeo strong {\n  color: var(--cms-dark);\n  display: block;\n  margin-bottom: 0.4rem;\n  font-size: 0.95rem;\n}\n\n\/* \u2500\u2500 CLIENTS \u2500\u2500 *\/\n.cms-clients { display: flex; flex-wrap: wrap; gap: 0.6rem; }\n.cms-client {\n  font-size: 0.85rem;\n  font-weight: 700;\n  color: var(--cms-gray-8);\n  background: var(--cms-white);\n  border: 1px solid var(--cms-gray-3);\n  padding: 0.45rem 1rem;\n  border-radius: 20px;\n  font-family: var(--cms-font);\n}\n\n\/* \u2500\u2500 FAQ \u2500\u2500 *\/\n.cms-faq-list { max-width: 760px; }\ndetails.cms-faq { border-bottom: 1px solid var(--cms-gray-3); }\ndetails.cms-faq summary {\n  list-style: none;\n  cursor: pointer;\n  font-family: var(--cms-font);\n  font-size: 0.95rem;\n  font-weight: 700;\n  color: var(--cms-dark);\n  padding: 1.25rem 0;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  gap: 1rem;\n  user-select: none;\n}\ndetails.cms-faq summary::-webkit-details-marker { display: none; }\ndetails.cms-faq summary::after {\n  content: \"+\";\n  font-size: 1.3rem;\n  font-weight: 300;\n  color: var(--cms-gray-5);\n  flex-shrink: 0;\n  line-height: 1;\n}\ndetails.cms-faq[open] summary::after { content: \"\u2212\"; }\n.cms-faq-body { padding-bottom: 1.25rem; max-width: 700px; }\n.cms-faq-body p { font-size: 0.9rem; color: var(--cms-body); line-height: 1.75; }\n\n\/* \u2500\u2500 CTA BAND \u2500\u2500 *\/\n.cms-cta-inner {\n  text-align: center;\n  max-width: 640px;\n  margin: 0 auto;\n  padding: 0 1.5rem;\n}\n.cms-cta-inner h2 { color: #fff; margin-bottom: 1rem; }\n.cms-cta-inner p { color: rgba(255,255,255,0.82); font-size: 1.05rem; margin-bottom: 2.5rem; }\n\n\/* \u2500\u2500 DARK SECTION HELPERS \u2500\u2500 *\/\n.cms-dark-eyebrow {\n  display: inline-flex;\n  align-items: center;\n  gap: 0.5rem;\n  font-size: 0.75rem;\n  font-weight: 700;\n  letter-spacing: 0.12em;\n  text-transform: uppercase;\n  color: var(--cms-blue);\n  margin-bottom: 1rem;\n  font-family: var(--cms-font);\n}\n.cms-dark-eyebrow::before {\n  content: \"\";\n  display: block;\n  width: 20px;\n  height: 2px;\n  background: var(--cms-blue);\n}\n.cms-diff-point {\n  border-left: 2px solid var(--cms-blue);\n  padding-left: 1.25rem;\n  margin-bottom: 1.25rem;\n}\n.cms-diff-point:last-child { margin-bottom: 0; }\n.cms-diff-point h4 {\n  font-size: 0.875rem;\n  font-weight: 700;\n  color: #fff;\n  margin-bottom: 0.3rem;\n  font-family: var(--cms-font);\n}\n.cms-diff-point p {\n  font-size: 0.82rem;\n  color: rgba(255,255,255,0.5);\n  line-height: 1.6;\n  margin: 0;\n}\n\n\/* \u2500\u2500 ENGAGEMENT CARDS \u2500\u2500 *\/\n.cms-engage-list {\n  list-style: none;\n  border-top: 1px solid var(--cms-gray-3);\n  padding-top: 1.25rem;\n  margin-top: 1.25rem;\n}\n.cms-engage-list li {\n  font-size: 0.875rem;\n  color: var(--cms-body);\n  padding: 0.3rem 0;\n  display: flex;\n  gap: 0.5rem;\n  align-items: flex-start;\n}\n.cms-engage-list li::before {\n  content: \"\u2192\";\n  color: var(--cms-blue);\n  font-weight: 700;\n  flex-shrink: 0;\n}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   RESPONSIVE\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n\n\/* Tablet \u2014 768px *\/\n@media (max-width: 768px) {\n\n  .cms-section     { padding: 4rem 0; }\n  .cms-section-sm  { padding: 2.5rem 0; }\n\n  .cms-hero-grid {\n    grid-template-columns: 1fr;\n    gap: 2.5rem;\n  }\n  .cms-hero-img { display: none; }\n\n  .cms-h1 { margin-bottom: 1rem; }\n\n  .cms-card-grid-3,\n  .cms-card-grid-2 { grid-template-columns: 1fr 1fr; gap: 1rem; }\n\n  .cms-two-col { grid-template-columns: 1fr; gap: 3rem; }\n\n  .cms-capability-row {\n    grid-template-columns: 1fr;\n    gap: 0.5rem;\n    padding: 1.5rem 0;\n  }\n\n  .cms-process-item { grid-template-columns: 52px 1fr; }\n  .cms-process-num { font-size: 1rem; padding: 1.25rem 0; }\n  .cms-process-content { padding: 1.25rem 1.25rem; }\n}\n\n\/* Mobile \u2014 480px *\/\n@media (max-width: 480px) {\n\n  .cms-section     { padding: 3rem 0; }\n  .cms-section-sm  { padding: 2rem 0; }\n  .cms-section-xs  { padding: 1.5rem 0; }\n\n  .cms-inner { padding: 0 1rem; }\n\n  .cms-card-grid-3,\n  .cms-card-grid-2 { grid-template-columns: 1fr; gap: 0; }\n\n  .cms-hero-actions { flex-direction: column; align-items: flex-start; }\n  .cms-btn, .cms-btn-outline { width: 100%; text-align: center; }\n\n  .cms-h1 { font-size: clamp(1.75rem, 7vw, 2.5rem); }\n  .cms-h2 { font-size: clamp(1.4rem, 6vw, 2rem); }\n\n  .cms-lead { margin-bottom: 2rem; font-size: 0.95rem; }\n\n  details.cms-faq summary { font-size: 0.875rem; padding: 1rem 0; }\n\n  .cms-tag { font-size: 0.75rem; padding: 0.3rem 0.7rem; }\n\n  .cms-cta-inner p { font-size: 0.95rem; }\n  .cms-btn-white { width: auto; padding: 0.85rem 1.75rem; }\n\n  \/* \u2500\u2500 MOBILE ACCORDION \u2014 cards, process, capabilities, stack, dark cards \u2500\u2500 *\/\n\n  \/* Esconde conte\u00fado dos cards em mobile \u2014 o JS transforma em <details> *\/\n  .cms-mob-accordion .cms-card-body,\n  .cms-mob-accordion .cms-process-content > p,\n  .cms-mob-accordion .cms-cap-body,\n  .cms-mob-accordion .cms-stack-tags,\n  .cms-mob-accordion .cms-card-dark > p { display: none; }\n\n  \/* Estilo do summary gerado pelo JS *\/\n  .cms-mob-summary {\n    list-style: none;\n    cursor: pointer;\n    font-family: var(--cms-font);\n    font-size: 0.9rem;\n    font-weight: 700;\n    color: var(--cms-dark);\n    padding: 1rem 0;\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    gap: 0.75rem;\n    user-select: none;\n    border-bottom: 1px solid var(--cms-gray-3);\n  }\n  .cms-mob-summary::-webkit-details-marker { display: none; }\n  .cms-mob-summary::after {\n    content: \"+\";\n    font-size: 1.2rem;\n    font-weight: 300;\n    color: var(--cms-gray-5);\n    flex-shrink: 0;\n    line-height: 1;\n  }\n  details[open] > .cms-mob-summary::after { content: \"\u2212\"; }\n\n  \/* Conte\u00fado aberto \u2014 preserva os estilos visuais originais *\/\n  .cms-mob-body {\n    padding: 1rem 1.25rem 1.25rem;\n    border-bottom: 1px solid var(--cms-gray-3);\n    background: var(--cms-white);\n    border-left: 3px solid var(--cms-blue);\n    border-radius: 0 0 var(--cms-radius) var(--cms-radius);\n  }\n  .cms-mob-body p {\n    font-size: 0.875rem;\n    color: var(--cms-body);\n    line-height: 1.7;\n    margin-bottom: 0.5rem;\n  }\n  .cms-mob-body p:last-child { margin-bottom: 0; }\n\n  \/* Tags dentro do acorde\u00e3o aberto *\/\n  .cms-mob-body .cms-tags {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 0.5rem;\n    padding-top: 0.25rem;\n  }\n\n  \/* Dark section \u2014 corpo do acorde\u00e3o diferente *\/\n  .cms-bg-dark .cms-mob-body {\n    background: rgba(255,255,255,0.06);\n    border-color: var(--cms-blue);\n    border-left-width: 3px;\n  }\n  .cms-bg-dark .cms-mob-body p { color: rgba(255,255,255,0.65); }\n  .cms-bg-dark .cms-mob-summary { color: #fff; border-color: rgba(255,255,255,0.15); }\n  .cms-bg-dark .cms-mob-summary::after { color: rgba(255,255,255,0.4); }\n\n  \/* Cards em mobile: flat, sem border pr\u00f3pria (o acorde\u00e3o assume) *\/\n  .cms-mob-accordion .cms-card {\n    border-radius: 0;\n    border: none;\n    padding: 0;\n    box-shadow: none;\n    background: transparent;\n  }\n  .cms-mob-accordion .cms-card:hover { box-shadow: none; border-color: transparent; }\n  .cms-mob-accordion .cms-card-num { display: none; }\n\n  \/* Process list flat em mobile *\/\n  .cms-mob-accordion .cms-process-list {\n    border: none;\n    border-radius: 0;\n    border-top: 1px solid var(--cms-gray-3);\n  }\n  .cms-mob-accordion .cms-process-item { display: block; border: none; }\n  .cms-mob-accordion .cms-process-num { display: none; }\n  .cms-mob-accordion .cms-process-content { padding: 0; }\n\n  \/* Capability rows flat *\/\n  .cms-mob-accordion .cms-capability-row { display: block; padding: 0; border: none; }\n  .cms-mob-accordion .cms-cap-label { display: none; }\n\n  \/* Stack groups \u2014 elimina margem e espa\u00e7os fantasma *\/\n  .cms-mob-accordion .cms-stack-group { margin-bottom: 0; }\n  .cms-mob-accordion .cms-stack-label { display: none; }\n  .cms-mob-accordion .cms-two-col { gap: 0; }\n\n  \/* Dark cards flat *\/\n  .cms-mob-accordion .cms-card-dark {\n    background: transparent;\n    border: none;\n    border-radius: 0;\n    padding: 0;\n  }\n  .cms-mob-accordion .cms-card-dark h4 { display: none; }\n}\n.elementor-section.py-5 {\n  padding-top: 0 !important;\n  padding-bottom: 0 !important;\n}\n\n.elementor-container.py-lg-5,\n.elementor-container.py-md-2 {\n  padding-top: 0 !important;\n  padding-bottom: 0 !important;\n}\n.elementor-container.my-2 {\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n}\n.elementor-widget-wrap.elementor-element-populated {\n  padding: 0 !important;\n}\n.cms-faq-list details.cms-faq:last-child {\n  border-bottom: none;\n}\n<\/style>\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     MOBILE ACCORDION SCRIPT\n     Converte cards, process steps, capabilities, stack e dark\n     cards em <details> em ecr\u00e3s \u2264 480px.\n     \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<script>\n(function () {\n  var BREAKPOINT = 480;\n\n  function getTitle(el) {\n    \/* Tenta extrair o t\u00edtulo do elemento de v\u00e1rias formas *\/\n    var h3 = el.querySelector('h3');\n    if (h3) return h3.textContent.trim();\n    var h4 = el.querySelector('h4');\n    if (h4) return h4.textContent.trim();\n    var num = el.querySelector('.cms-card-num');\n    if (num) return num.textContent.trim();\n    var lbl = el.querySelector('.cms-cap-label');\n    if (lbl) return lbl.textContent.trim();\n    var slbl = el.querySelector('.cms-stack-label');\n    if (slbl) return slbl.textContent.trim();\n    var pnum = el.querySelector('.cms-process-num');\n    if (pnum) {\n      var pcontent = el.querySelector('.cms-process-content h3');\n      return pcontent ? pnum.textContent.trim() + ' \u2014 ' + pcontent.textContent.trim() : pnum.textContent.trim();\n    }\n    return '\u2014';\n  }\n\n  function getBody(el) {\n    \/* Extrai o conte\u00fado em texto\/HTML *\/\n    var body = el.querySelector('.cms-card-body');\n    if (body) return body.innerHTML;\n\n    \/* Process item: pega no <p> dentro de .cms-process-content *\/\n    var pc = el.querySelector('.cms-process-content');\n    if (pc) {\n      var ps = pc.querySelectorAll('p');\n      if (ps.length) return Array.from(ps).map(function(p){ return p.outerHTML; }).join('');\n    }\n\n    \/* Capability row: pega no .cms-cap-body *\/\n    var cb = el.querySelector('.cms-cap-body');\n    if (cb) return cb.innerHTML;\n\n    \/* Stack group: pega nas tags *\/\n    var st = el.querySelector('.cms-stack-tags');\n    if (st) return st.outerHTML;\n\n    \/* Dark card: pega no <p> *\/\n    var dp = el.querySelector('p');\n    if (dp) return dp.outerHTML;\n\n    \/* Fallback: todo o innerHTML menos o h3\/h4\/num *\/\n    return el.innerHTML;\n  }\n\n  function buildAccordion(container) {\n    \/* Selecciona todos os elementos convert\u00edveis dentro do container *\/\n    var selectors = [\n      '.cms-card-grid-3 > .cms-card',\n      '.cms-card-grid-2 > .cms-card',\n      '.cms-process-item',\n      '.cms-capability-row',\n      '.cms-stack-group',\n      '.cms-card-dark'\n    ];\n\n    selectors.forEach(function(sel) {\n      container.querySelectorAll(sel).forEach(function(el) {\n        \/* J\u00e1 foi convertido *\/\n        if (el.dataset.mobileAccordion) return;\n        el.dataset.mobileAccordion = '1';\n\n        var title = getTitle(el);\n        var bodyHtml = getBody(el);\n\n        \/* Cria o <details> *\/\n        var details = document.createElement('details');\n        var summary = document.createElement('summary');\n        summary.className = 'cms-mob-summary';\n        summary.textContent = title;\n\n        var bodyDiv = document.createElement('div');\n        bodyDiv.className = 'cms-mob-body';\n        bodyDiv.innerHTML = bodyHtml;\n\n        details.appendChild(summary);\n        details.appendChild(bodyDiv);\n\n        \/* Substitui o elemento original *\/\n        el.parentNode.insertBefore(details, el);\n        el.style.display = 'none';\n        el.dataset.mobileHidden = '1';\n      });\n    });\n\n    container.classList.add('cms-mob-accordion');\n  }\n\n  function destroyAccordion(container) {\n    \/* Restaura os elementos originais *\/\n    container.querySelectorAll('[data-mobile-hidden=\"1\"]').forEach(function(el) {\n      el.style.display = '';\n      delete el.dataset.mobileHidden;\n      delete el.dataset.mobileAccordion;\n    });\n    container.querySelectorAll('details').forEach(function(d) {\n      if (d.querySelector('.cms-mob-summary')) d.remove();\n    });\n    container.classList.remove('cms-mob-accordion');\n  }\n\n  var activeBreakpoint = null;\n\n  function applyBreakpoint() {\n    var isMobile = window.innerWidth <= BREAKPOINT;\n\n    if (isMobile && activeBreakpoint !== 'mobile') {\n      activeBreakpoint = 'mobile';\n      document.querySelectorAll('.cms').forEach(buildAccordion);\n    } else if (!isMobile && activeBreakpoint === 'mobile') {\n      activeBreakpoint = 'desktop';\n      document.querySelectorAll('.cms').forEach(destroyAccordion);\n    }\n  }\n\n  \/* Corre no load e no resize *\/\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', applyBreakpoint);\n  } else {\n    applyBreakpoint();\n  }\n\n  var resizeTimer;\n  window.addEventListener('resize', function () {\n    clearTimeout(resizeTimer);\n    resizeTimer = setTimeout(applyBreakpoint, 150);\n  });\n})();\n<\/script>\n\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2e66b5c elementor-widget elementor-widget-html\" data-id=\"2e66b5c\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     SOFTWARE DEVELOPMENT \u2014 01 HERO\n     Fundo: branco\n     Yoast: H1 removido \u2014 usa o t\u00edtulo da p\u00e1gina WordPress como H1\n     \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div class=\"cms cms-section\">\n  <div class=\"cms-inner\">\n    <div class=\"cms-hero-grid\">\n      <div>\n        <span class=\"cms-eyebrow\">Desenvolvimento de Software Personalizado<\/span>\n        <h2 class=\"cms-h1\" style=\"font-size:clamp(2rem,5vw,3.25rem);font-weight:800;letter-spacing:-0.03em;margin-bottom:1.5rem;color:var(--cms-dark);\">\n          Software desenvolvido para<br><span style=\"color:var(--cms-blue);\">Empresas europeias<\/span>\n        <\/h2>\n        <p style=\"font-size:1.05rem;line-height:1.75;color:var(--cms-body);max-width:520px;\">\n          Entregamos desenvolvimento de software personalizado e cr\u00edtico para miss\u00f5es desde 2004. Aplica\u00e7\u00f5es empresariais, solu\u00e7\u00f5es m\u00f3veis, sistemas integrados com IA e plataformas de identidade digital para clientes em Portugal e na Europa.\n        <\/p>\n        <div class=\"cms-hero-actions\">\n          <a href=\"https:\/\/caixamagica.pt\/pt\/vamos-conversar\/\" class=\"cms-btn\">Iniciar um projeto<\/a>\n          <a href=\"https:\/\/caixamagica.pt\/pt\/casos-sucesso\/\" class=\"cms-btn-outline\">Ver casos de sucesso<\/a>\n        <\/div>\n      <\/div>\n      <div class=\"cms-hero-img\">\n        <img decoding=\"async\" src=\"https:\/\/caixamagica.pt\/wp-content\/uploads\/2025\/09\/Img_Software_Dev-1.png\" alt=\"Equipa de desenvolvimento de software \u00e0 medida na Caixa M\u00e1gica\">\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d0e54f7 elementor-widget elementor-widget-html\" data-id=\"d0e54f7\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     SOFTWARE DEVELOPMENT \u2014 02 AEO DEFINITION BLOCK\n     Fundo: #f3f6ff \u2014 define a cor da sec\u00e7\u00e3o Elementor como #f3f6ff\n     \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div class=\"cms cms-bleed cms-bg-light cms-section-xs\">\n  <div class=\"cms-inner\">\n    <div class=\"cms-aeo\">\n      <strong>Caixa M\u00e1gica Software \u00e9 uma empresa de desenvolvimento de software portuguesa.<\/strong>\n      A Caixa M\u00e1gica Software \u00e9 uma empresa de desenvolvimento de software \u00e0 medida, sediada em Lisboa, Portugal, fundada em 2004, com mais de 20 anos de experi\u00eancia e mais de 100 projetos entregues. Desenvolve aplica\u00e7\u00f5es empresariais, solu\u00e7\u00f5es m\u00f3veis, sistemas integrados com IA e plataformas de identidade digital para clientes europeus, com equipas nearshore dispon\u00edveis para a Alemanha, Reino Unido e outros mercados da UE.\n    <\/div>\n  <\/div>\n<\/div>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5c8aed9 elementor-widget elementor-widget-html\" data-id=\"5c8aed9\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     SOFTWARE DEVELOPMENT \u2014 03 WHAT WE BUILD\n     Fundo: branco\n     Yoast: keyphrase em H2, H3 com sin\u00f3nimos, texto vis\u00edvel com\n            transition words, sem consecutive sentences\n     \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div class=\"cms cms-bleed cms-bg-white cms-section\">\n  <div class=\"cms-inner\">\n    <span class=\"cms-eyebrow\">Servi\u00e7os<\/span>\n    <h2 class=\"cms-h2\">Servi\u00e7os de desenvolvimento de software personalizado<\/h2>\n    <p class=\"cms-lead\">Ao longo de mais de duas d\u00e9cadas, as nossas equipas de desenvolvimento de software \u00e0 medida entregaram solu\u00e7\u00f5es para alguns dos ambientes mais exigentes da Europa, desde infraestruturas de identidade nacional a plataformas empresariais que processam milh\u00f5es de transa\u00e7\u00f5es diariamente.<\/p>\n\n    <h3 style=\"font-size:1.1rem;font-weight:700;color:var(--cms-dark);margin-bottom:0.75rem;font-family:var(--cms-font);\">Software empresarial e m\u00f3vel<\/h3>\n    <p style=\"font-size:0.95rem;line-height:1.75;color:var(--cms-body);margin-bottom:1.5rem;\">A nossa pr\u00e1tica de desenvolvimento de software personalizado abrange todo o espectro das necessidades empresariais. Sistemas de back-office, automa\u00e7\u00e3o de fluxos de trabalho e plataformas de gest\u00e3o de processos de neg\u00f3cio s\u00e3o criados para estabilidade e auditabilidade. Adicionalmente, entregamos aplica\u00e7\u00f5es m\u00f3veis nativas e multiplataforma para Android e iOS, escolhendo entre React Native, Flutter, Kotlin e Swift com base no que o projeto realmente necessita, e n\u00e3o no que \u00e9 popular na atualidade.<\/p>\n\n    <h3 style=\"font-size:1.1rem;font-weight:700;color:var(--cms-dark);margin-bottom:0.75rem;font-family:var(--cms-font);\">Identidade digital, IA e arquitetura cloud<\/h3>\n    <p style=\"font-size:0.95rem;line-height:1.75;color:var(--cms-body);margin-bottom:2rem;\">Para al\u00e9m do desenvolvimento de aplica\u00e7\u00f5es, o nosso trabalho inclui sistemas de identidade digital em escala nacional, nomeadamente o middleware do Cart\u00e3o de Cidad\u00e3o Portugu\u00eas, utilizado por toda a popula\u00e7\u00e3o portuguesa. Al\u00e9m disso, constru\u00edmos software integrado com IA atrav\u00e9s do nosso AI Lab, arquiteturas cloud-native concebidas para manuten\u00e7\u00e3o a longo prazo e trabalhos de integra\u00e7\u00e3o de sistemas que ligam infraestruturas legadas a sistemas modernos. Cada uma destas \u00e1reas requer uma abordagem de engenharia diferente; como resultado, tratamo-las como disciplinas distintas em vez de varia\u00e7\u00f5es do mesmo servi\u00e7o.<\/p>\n\n    <div class=\"cms-card-grid-3\">\n      <div class=\"cms-card\">\n        <span class=\"cms-card-num\">01<\/span>\n        <h3>Aplica\u00e7\u00f5es Empresariais<\/h3>\n        <p>Sistemas complexos de back-office, automa\u00e7\u00e3o de fluxos de trabalho e plataformas de gest\u00e3o de processos de neg\u00f3cio desenvolvidas para estabilidade e auditabilidade. Entreg\u00e1mos software empresarial para operadores de telecomunica\u00e7\u00f5es, empresas de energia e institui\u00e7\u00f5es p\u00fablicas onde a engenharia tem de estar correta \u00e0 primeira tentativa.<\/p>\n      <\/div>\n      <div class=\"cms-card\">\n        <span class=\"cms-card-num\">02<\/span>\n        <h3>Solu\u00e7\u00f5es M\u00f3veis<\/h3>\n        <p>Aplica\u00e7\u00f5es nativas e multiplataforma para Android e iOS em React Native, Flutter, Kotlin e Swift. A abordagem \u00e9 sempre escolhida com base nos requisitos de desempenho, nas restri\u00e7\u00f5es da equipa e na experi\u00eancia do utilizador que o produto exige.<\/p>\n      <\/div>\n      <div class=\"cms-card\">\n        <span class=\"cms-card-num\">03<\/span>\n        <h3>Identidade Digital e Seguran\u00e7a<\/h3>\n        <p>Desenvolvemos o middleware para o Cart\u00e3o de Cidad\u00e3o Portugu\u00eas, infraestrutura de identidade nacional implementada em toda a popula\u00e7\u00e3o portuguesa e o sistema nacional de Certificado Digital Covid para a INCM. Poucas empresas de software na Europa t\u00eam este registo de entrega a n\u00edvel nacional.<\/p>\n      <\/div>\n      <div class=\"cms-card\">\n        <span class=\"cms-card-num\">04<\/span>\n        <h3>Sistemas Integrados com IA<\/h3>\n        <p>Software que integra machine learning, NLP e automa\u00e7\u00e3o de decis\u00f5es como um componente arquitet\u00f3nico central, constru\u00eddo em conjunto com o nosso AI Lab desde o in\u00edcio, e n\u00e3o adicionado posteriormente. A IA \u00e9 tratada como uma preocupa\u00e7\u00e3o de engenharia de primeira classe ao longo do ciclo de vida do projeto.<\/p>\n      <\/div>\n      <div class=\"cms-card\">\n        <span class=\"cms-card-num\">05<\/span>\n        <h3>Arquitetura Cloud-Native<\/h3>\n        <p>Software empresarial escal\u00e1vel, implement\u00e1vel no Azure ou AWS, concebido sem depend\u00eancia de fornecedor desde o in\u00edcio. Microsservi\u00e7os, contentores, infraestrutura como c\u00f3digo e padr\u00f5es orientados a eventos s\u00e3o padr\u00e3o, n\u00e3o adi\u00e7\u00f5es premium.<\/p>\n      <\/div>\n      <div class=\"cms-card\">\n        <span class=\"cms-card-num\">06<\/span>\n        <h3>Integra\u00e7\u00e3o de Sistemas<\/h3>\n        <p>Ligar infraestruturas legadas a sistemas modernos \u2014 APIs, middleware, pipelines de dados e arquiteturas orientadas a eventos. Muitos dos nossos compromissos mais valiosos envolvem organiza\u00e7\u00f5es com anos de sistemas cr\u00edticos para o neg\u00f3cio que j\u00e1 n\u00e3o comunicam de forma limpa.<\/p>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9359105 elementor-widget elementor-widget-html\" data-id=\"9359105\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     SOFTWARE DEVELOPMENT \u2014 04 HOW WE WORK\n     Fundo: #f3f6ff\n     Yoast: keyphrase em H2, H3 com sin\u00f3nimos, texto vis\u00edvel,\n            transition words fora dos <details>\n     \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div class=\"cms cms-bleed cms-bg-light cms-section\">\n  <div class=\"cms-inner\">\n    <div class=\"cms-two-col\">\n\n      <div>\n        <span class=\"cms-eyebrow\">Processo<\/span>\n        <h2 class=\"cms-h2\">Como funciona o nosso processo de desenvolvimento de software personalizado<\/h2>\n\n        <h3 style=\"font-size:1rem;font-weight:700;color:var(--cms-dark);margin-top:1.5rem;margin-bottom:0.6rem;font-family:var(--cms-font);\">Entrega \u00e1gil desde o segundo dia<\/h3>\n        <p style=\"font-size:0.95rem;line-height:1.75;color:var(--cms-body);\">Trabalhamos em sprints \u00e1geis com entregas reais no final de cada ciclo. Como resultado, os clientes veem software a funcionar a partir da segunda semana, e n\u00e3o um conjunto de diapositivos que prometem algo daqui a meses. Ao longo do projeto, tem acesso direto aos engenheiros que realizam o trabalho, e n\u00e3o a gestores de conta que repassam mensagens.<\/p>\n\n        <h3 style=\"font-size:1rem;font-weight:700;color:var(--cms-dark);margin-top:1.5rem;margin-bottom:0.6rem;font-family:var(--cms-font);\">Parceria de software de longo prazo<\/h3>\n        <p style=\"font-size:0.95rem;line-height:1.75;color:var(--cms-body);\">O desenvolvimento de software personalizado raramente termina no lan\u00e7amento. Consequentemente, o suporte p\u00f3s-entrega, os contratos de manuten\u00e7\u00e3o e o desenvolvimento cont\u00ednuo s\u00e3o partes integrantes de como trabalhamos com clientes a longo prazo. Al\u00e9m disso, os modelos de pre\u00e7o fixo desalinham incentivos \u2013 o fornecedor otimiza para a conclus\u00e3o do escopo em vez de resultados de neg\u00f3cio. O nosso modelo de sprint mant\u00e9m ambos os lados focados no que realmente importa.<\/p>\n      <\/div>\n\n      <div class=\"cms-process-list\">\n        <div class=\"cms-process-item\">\n          <div class=\"cms-process-num\">01<\/div>\n          <div class=\"cms-process-content\">\n            <h3>Descoberta \u2014 2 a 4 semanas<\/h3>\n            <p>Mapeamos os requisitos, auditamos os sistemas existentes, definimos a arquitetura e acordamos um cronograma realista. Os problemas mais dispendiosos no desenvolvimento de software s\u00e3o aqueles que ningu\u00e9m detetou no in\u00edcio \u2014 esta fase existe para os encontrar antes que custem dinheiro.<\/p>\n          <\/div>\n        <\/div>\n        <div class=\"cms-process-item\">\n          <div class=\"cms-process-num\">02<\/div>\n          <div class=\"cms-process-content\">\n            <h3>Entrega Sprint<\/h3>\n            <p>Sprints \u00e1geis com software funcional no final de cada ciclo. V\u00ea o progresso, d\u00e1 feedback e ajusta prioridades \u00e0 medida que o projeto evolui. Nunca fica preso a um \u00e2mbito que deixou de servir a sua situa\u00e7\u00e3o h\u00e1 tr\u00eas meses.<\/p>\n          <\/div>\n        <\/div>\n        <div class=\"cms-process-item\">\n          <div class=\"cms-process-num\">03<\/div>\n          <div class=\"cms-process-content\">\n            <h3>Garantia de Qualidade e Conformidade<\/h3>\n            <p>A testagem automatizada \u00e9 integrada desde o in\u00edcio. Para ambientes regulamentados, como o banc\u00e1rio, segurador e governamental, integramos adicionalmente o Qualigentic, a nossa plataforma de IA para QA, para produzir evid\u00eancias de auditoria em conformidade com DORA, Solvency II e PSD2.<\/p>\n          <\/div>\n        <\/div>\n        <div class=\"cms-process-item\">\n          <div class=\"cms-process-num\">04<\/div>\n          <div class=\"cms-process-content\">\n            <h3>Implementa\u00e7\u00e3o e suporte<\/h3>\n            <p>Gerimos a implementa\u00e7\u00e3o e permanecemos dispon\u00edveis ap\u00f3s o lan\u00e7amento. Para sistemas cr\u00edticos, oferecemos contratos de suporte com garantias SLA. Para equipas que assumem a responsabilidade pelo c\u00f3digo-fonte, fornecemos documenta\u00e7\u00e3o completa e uma transi\u00e7\u00e3o estruturada.<\/p>\n          <\/div>\n        <\/div>\n      <\/div>\n\n    <\/div>\n  <\/div>\n<\/div>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a46cd3b elementor-widget elementor-widget-html\" data-id=\"a46cd3b\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     SOFTWARE DEVELOPMENT \u2014 05 TECHNOLOGY STACK\n     Fundo: branco\n     Yoast: H2 com sin\u00f3nimo, par\u00e1grafo vis\u00edvel com keyphrase,\n            H3 interm\u00e9dio, transition words\n     \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div class=\"cms cms-bleed cms-bg-white cms-section\">\n  <div class=\"cms-inner\">\n    <span class=\"cms-eyebrow\">Tecnologia<\/span>\n    <h2 class=\"cms-h2\">Stack tecnol\u00f3gico para desenvolvimento de software<\/h2>\n    <p class=\"cms-lead\">Estas s\u00e3o as tecnologias que os nossos engenheiros utilizam em produ\u00e7\u00e3o, n\u00e3o uma lista de marketing. A stack \u00e9 escolhida por projeto com base nos requisitos de desempenho, infraestrutura do cliente e manutenibilidade a longo prazo.<\/p>\n\n    <h3 style=\"font-size:1rem;font-weight:700;color:var(--cms-dark);margin-bottom:0.6rem;font-family:var(--cms-font);\">Uma equipa de engenharia full-stack<\/h3>\n    <p style=\"font-size:0.95rem;line-height:1.75;color:var(--cms-body);margin-bottom:2rem;\">A nossa equipa de desenvolvimento de software personalizado abrange, internamente, as disciplinas de frontend, backend, mobile, cloud e AI. Como resultado, n\u00e3o h\u00e1 atrito nas transi\u00e7\u00f5es entre especialistas; a mesma equipa que concebe a arquitetura constr\u00f3i e implementa-a. Al\u00e9m disso, trabalhamos com todos os principais fornecedores de cloud e ambientes de implementa\u00e7\u00e3o, incluindo on-premise para clientes com requisitos rigorosos de resid\u00eancia de dados.<\/p>\n\n    <div class=\"cms-two-col\">\n      <div>\n        <div class=\"cms-stack-group\">\n          <span class=\"cms-stack-label\">Frontend<\/span>\n          <div class=\"cms-tags\">\n            <span class=\"cms-tag\">Angular<\/span><span class=\"cms-tag\">React<\/span><span class=\"cms-tag\">Vista<\/span><span class=\"cms-tag\">JavaScript<\/span><span class=\"cms-tag\">Three.js<\/span>\n          <\/div>\n        <\/div>\n        <div class=\"cms-stack-group\">\n          <span class=\"cms-stack-label\">Backend<\/span>\n          <div class=\"cms-tags\">\n            <span class=\"cms-tag\">Java<\/span><span class=\"cms-tag\">Python<\/span><span class=\"cms-tag\">.NET<\/span><span class=\"cms-tag\">Node.js<\/span><span class=\"cms-tag\">PHP<\/span><span class=\"cms-tag\">C \/ C++<\/span><span class=\"cms-tag\">C#<\/span>\n          <\/div>\n        <\/div>\n        <div class=\"cms-stack-group\">\n          <span class=\"cms-stack-label\">Telem\u00f3vel<\/span>\n          <div class=\"cms-tags\">\n            <span class=\"cms-tag\">React Native<\/span><span class=\"cms-tag\">Flutter<\/span><span class=\"cms-tag\">Kotlin<\/span><span class=\"cms-tag\">Swift<\/span><span class=\"cms-tag\">Android<\/span><span class=\"cms-tag\">iOS<\/span>\n          <\/div>\n        <\/div>\n      <\/div>\n      <div>\n        <div class=\"cms-stack-group\">\n          <span class=\"cms-stack-label\">Cloud &amp; DevOps<\/span>\n          <div class=\"cms-tags\">\n            <span class=\"cms-tag\">Azure<\/span><span class=\"cms-tag\">AWS<\/span><span class=\"cms-tag\">Docker<\/span><span class=\"cms-tag\">Kubernetes<\/span><span class=\"cms-tag\">Terraform<\/span><span class=\"cms-tag\">Kafka<\/span>\n          <\/div>\n        <\/div>\n        <div class=\"cms-stack-group\">\n          <span class=\"cms-stack-label\">Gest\u00e3o de Conte\u00fados<\/span>\n          <div class=\"cms-tags\">\n            <span class=\"cms-tag\">WordPress<\/span><span class=\"cms-tag\">Liferay<\/span><span class=\"cms-tag\">Drupal<\/span>\n          <\/div>\n        <\/div>\n        <div class=\"cms-stack-group\">\n          <span class=\"cms-stack-label\">IA e ML<\/span>\n          <div class=\"cms-tags\">\n            <span class=\"cms-tag\">Lhama<\/span><span class=\"cms-tag\">Mistral<\/span><span class=\"cms-tag\">APIs da OpenAI<\/span><span class=\"cms-tag\">PyTorch<\/span><span class=\"cms-tag\">LangChain<\/span>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9f92e68 elementor-widget elementor-widget-html\" data-id=\"9f92e68\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     SOFTWARE DEVELOPMENT \u2014 06 CLIENTS\n     Fundo: #f3f6ff\n     \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div class=\"cms cms-bleed cms-bg-blue cms-section cms-no-gap\">\n  <div class=\"cms-inner\">\n    <p style=\"font-size:0.72rem;font-weight:800;letter-spacing:0.12em;text-transform:uppercase;color:var(--cms-gray-5);margin-bottom:1.25rem;font-family:var(--cms-font);\">De confian\u00e7a em<\/p>\n    <div class=\"cms-clients\">\n      <span class=\"cms-client\">EDP<\/span>\n      <span class=\"cms-client\">NOS<\/span>\n      <span class=\"cms-client\">Worten<\/span>\n      <span class=\"cms-client\">Dolby<\/span>\n      <span class=\"cms-client\">BearingPoint<\/span>\n      <span class=\"cms-client\">Minist\u00e9rio da Justi\u00e7a<\/span>\n      <span class=\"cms-client\">INCM<\/span>\n      <span class=\"cms-client\">Ordem dos Advogados<\/span>\n    <\/div>\n  <\/div>\n<\/div>\n\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     SOFTWARE DEVELOPMENT \u2014 07 FAQ\n     Fundo: branco\n     Yoast: keyphrase x2, H2 com keyphrase, subheadings H3, transition words\n     \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div class=\"cms cms-bleed cms-bg-light cms-section\" style=\"margin-top:-2rem;margin-bottom: -2rem;\">\n  <div class=\"cms-inner\">\n    <span class=\"cms-eyebrow\">Perguntas Frequentes<\/span>\n    <h2 class=\"cms-h2\">Desenvolvimento de software \u00e0 medida \u2014 perguntas frequentes<\/h2>\n    <p class=\"cms-lead\">As perguntas que mais ouvimos dos clientes em Portugal, Alemanha e Reino Unido antes de iniciar um projeto.<\/p>\n\n    <div class=\"cms-faq-list\">\n      <details class=\"cms-faq\">\n        <summary>Quanto tempo demora um projeto de desenvolvimento de software personalizado?<\/summary>\n        <div class=\"cms-faq-body\"><p>Um MVP t\u00edpico demora 3-6 meses. Projetos de desenvolvimento de software personalizado para empresas demoram 6-18 meses, dependendo do \u00e2mbito. Em qualquer um dos casos, todos os projetos come\u00e7am com uma fase de descoberta de 2-4 semanas para definir requisitos, arquitetura e cronograma. Os clientes veem entregas funcionais a partir do segundo sprint \u2014 n\u00e3o relat\u00f3rios de progresso e gr\u00e1ficos de Gantt.<\/p><\/div>\n      <\/details>\n      <details class=\"cms-faq\">\n        <summary>A Caixa M\u00e1gica trabalha com clientes internacionais?<\/summary>\n        <div class=\"cms-faq-body\"><p>Sim. Trabalhamos com clientes em toda a Europa, com um forte historial na Alemanha e no Reino Unido, a par de Portugal. A equipa comunica em ingl\u00eas, portugu\u00eas e alem\u00e3o. Al\u00e9m disso, operamos no fuso hor\u00e1rio CET, que se sobrep\u00f5e totalmente aos hor\u00e1rios comerciais da DACH e do Reino Unido \u2014 a colabora\u00e7\u00e3o em tempo real funciona sem necessidade de contornar agendamentos.<\/p><\/div>\n      <\/details>\n      <details class=\"cms-faq\">\n        <summary>Qual \u00e9 a diferen\u00e7a entre um engajamento de projeto e servi\u00e7os nearshore?<\/summary>\n        <div class=\"cms-faq-body\"><p>Um envolvimento de projeto significa que assumimos toda a entrega \u2013 desde a defini\u00e7\u00e3o dos requisitos at\u00e9 \u00e0 implementa\u00e7\u00e3o e entrega. Os servi\u00e7os Nearshore, por outro lado, fornecem programadores dedicados que se integram na vossa estrutura de equipa existente e trabalham dentro dos vossos pr\u00f3prios processos. Ambos os modelos est\u00e3o dispon\u00edveis, e \u00e9 comum os clientes come\u00e7arem com um envolvimento de projeto e passarem para uma equipa Nearshore retida para desenvolvimento cont\u00ednuo de software personalizado.<\/p><\/div>\n      <\/details>\n      <details class=\"cms-faq\">\n        <summary>A Caixa M\u00e1gica serve as seguintes ind\u00fastrias: Administra\u00e7\u00e3o P\u00fablica, Finan\u00e7as, Telecomunica\u00e7\u00f5es, Energia e Seguros.<\/summary>\n        <div class=\"cms-faq-body\"><p>Setor p\u00fablico, servi\u00e7os financeiros, telecomunica\u00e7\u00f5es, energia e retalho. O nosso trabalho no setor p\u00fablico \u2014 o middleware do Cart\u00e3o de Cidad\u00e3o para o Minist\u00e9rio da Justi\u00e7a e o sistema nacional de Certificado Covid para a INCM \u2014 demonstra a nossa capacidade de operar \u00e0 escala nacional sob rigorosos requisitos de conformidade. Adicionalmente, o nosso trabalho comercial para a EDP, NOS, Worten, Dolby e BearingPoint aplica o mesmo rigor de engenharia a ambientes empresariais.<\/p><\/div>\n      <\/details>\n      <details class=\"cms-faq\">\n        <summary>Como \u00e9 que a Caixa M\u00e1gica lida com a qualidade e os testes de software?<\/summary>\n        <div class=\"cms-faq-body\"><p>Todos os projetos de desenvolvimento de software personalizado incluem testes automatizados desde o in\u00edcio \u2014 e n\u00e3o adicionados no final. Para clientes em ambientes regulamentados \u2014 banca, seguros, governo \u2014 integramos adicionalmente o Qualigentic, a nossa plataforma propriet\u00e1ria de QA com IA, que gera scripts de teste diretamente a partir dos requisitos e produz evid\u00eancias de conformidade de n\u00edvel de auditoria para DORA, Solvency II e PSD2.<\/p><\/div>\n      <\/details>\n      <details class=\"cms-faq\">\n        <summary>Oferecem instala\u00e7\u00e3o on-premise ou em nuvem privada?<\/summary>\n        <div class=\"cms-faq-body\"><p>Sim. Para clientes com requisitos rigorosos de resid\u00eancia de dados \u2014 norma no setor p\u00fablico e cada vez mais comum nos servi\u00e7os financeiros \u2014 suportamos implementa\u00e7\u00f5es on-premise e em nuvem privada. Isto inclui a nossa plataforma Qualigentic, onde as instala\u00e7\u00f5es on-premise utilizam modelos de c\u00f3digo aberto auto-hospedados e nenhum dado sai da infraestrutura do cliente, em qualquer condi\u00e7\u00e3o.<\/p><\/div>\n      <\/details>\n      <details class=\"cms-faq\">\n        <summary>Como iniciamos um projeto?<\/summary>\n        <div class=\"cms-faq-body\"><p>O primeiro passo \u00e9 uma chamada de 30 minutos para entendermos os seus requisitos, prazos e constrangimentos. A partir da\u00ed, realizamos uma fase de descoberta para definir o \u00e2mbito, a arquitetura e um plano de entrega realista. Pode marcar diretamente atrav\u00e9s da nossa p\u00e1gina de contactos ou contactar-nos atrav\u00e9s do email comercial@caixamagica.pt \u2014 respondemos em um dia \u00fatil.<\/p><\/div>\n      <\/details>\n    <\/div>\n  <\/div>\n<\/div>\n\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     SOFTWARE DEVELOPMENT \u2014 08 CTA BAND\n     Fundo: #2170F2\n     \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div class=\"cms cms-bleed cms-bg-blue cms-section cms-no-gap\">\n  <div class=\"cms-cta-inner\">\n    <h2 class=\"cms-h2 cms-h2-white\">Pronto para come\u00e7ar a construir?<\/h2>\n    <p>Diga-nos o que precisa. Responderemos num dia \u00fatil.<\/p>\n    <a href=\"https:\/\/caixamagica.pt\/pt\/vamos-conversar\/\" class=\"cms-btn-white\">Vamos conversar<\/a>\n  <\/div>\n<\/div>\n\n<script type=\"application\/ld+json\">{\n    \"@context\": \"https:\\\/\\\/schema.org\",\n    \"@graph\": [\n        {\n            \"@type\": \"WebPage\",\n            \"@id\": \"https:\\\/\\\/caixamagica.pt\\\/software-development\\\/#webpage\",\n            \"url\": \"https:\\\/\\\/caixamagica.pt\\\/software-development\\\/\",\n            \"inLanguage\": \"pt-PT\",\n            \"name\": \"Desenvolvimento de Software \\u00e0 Medida - Caixa M\\u00e1gica\",\n            \"description\": \"Engenharia de software especializada em solu\\u00e7\\u00f5es escal\\u00e1veis, integra\\u00e7\\u00e3o de sistemas e outsourcing de TI com metodologias \\u00e1geis.\",\n            \"breadcrumb\": {\n                \"@type\": \"BreadcrumbList\",\n                \"itemListElement\": [\n                    {\n                        \"@type\": \"ListItem\",\n                        \"position\": 1,\n                        \"name\": \"Home\",\n                        \"item\": \"https:\\\/\\\/caixamagica.pt\\\/\"\n                    },\n                    {\n                        \"@type\": \"ListItem\",\n                        \"position\": 2,\n                        \"name\": \"Desenvolvimento de Software\"\n                    }\n                ]\n            }\n        },\n        {\n            \"@type\": \"Service\",\n            \"name\": \"Servi\\u00e7os de Desenvolvimento de Software\",\n            \"serviceType\": \"Custom Software Development\",\n            \"provider\": {\n                \"@id\": \"https:\\\/\\\/caixamagica.pt\\\/#organization\"\n            },\n            \"description\": \"Desenvolvimento completo de software (End-to-End), desde a arquitetura cloud at\\u00e9 ao desenvolvimento web e mobile, com foco em tecnologias Open Source.\",\n            \"knowsAbout\": [\n                \"Agile Software Development\",\n                \"Cloud-native Architectures\",\n                \"Python\",\n                \"Java\",\n                \"React & Node.js\",\n                \"Microservices Architecture\",\n                \"System Integration\"\n            ],\n            \"areaServed\": {\n                \"@type\": \"Country\",\n                \"name\": [\n                    \"Portugal\",\n                    \"United Kingdom\",\n                    \"Germany\"\n                ]\n            },\n            \"hasOfferCatalog\": {\n                \"@type\": \"OfferCatalog\",\n                \"name\": \"Cat\\u00e1logo de Servi\\u00e7os de Software\",\n                \"itemListElement\": [\n                    {\n                        \"@type\": \"Offer\",\n                        \"itemOffered\": {\n                            \"@type\": \"Service\",\n                            \"name\": \"Web & Mobile Development\"\n                        }\n                    },\n                    {\n                        \"@type\": \"Offer\",\n                        \"itemOffered\": {\n                            \"@type\": \"Service\",\n                            \"name\": \"IT Outsourcing & Team Augmentation\"\n                        }\n                    },\n                    {\n                        \"@type\": \"Offer\",\n                        \"itemOffered\": {\n                            \"@type\": \"Service\",\n                            \"name\": \"Cloud & DevOps Services\"\n                        }\n                    }\n                ]\n            }\n        }\n    ]\n}<\/script>\n\n\n\n\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Custom Software Development Software built forEuropean enterprise We have been delivering mission-critical custom software development since 2004. Enterprise applications, mobile solutions, AI-integrated systems, and digital identity platforms for clients across Portugal and Europe. Start a project See our case studies What is Caixa M\u00e1gica Software? Caixa M\u00e1gica Software is a custom software development company based [&hellip;]<\/p>","protected":false},"author":6,"featured_media":8496,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"inline_featured_image":false,"footnotes":""},"class_list":["post-12242","page","type-page","status-publish","has-post-thumbnail","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Custom Software Development in Portugal | Caixa M\u00e1gica<\/title>\n<meta name=\"description\" content=\"We build custom software development from platforms to mobile. Agile development, full-cycle delivery, based in Lisbon. See our solutions.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/caixamagica.pt\/pt\/desenvolvimento-software\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Custom Software Development in Portugal | Caixa M\u00e1gica\" \/>\n<meta property=\"og:description\" content=\"We build custom software development from platforms to mobile. Agile development, full-cycle delivery, based in Lisbon. See our solutions.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/caixamagica.pt\/pt\/desenvolvimento-software\/\" \/>\n<meta property=\"og:site_name\" content=\"Caixa M\u00e1gica Software\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/CaixaMagicaSoftware\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-14T14:19:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/caixamagica.pt\/wp-content\/uploads\/2025\/09\/Img_Software_Dev-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"900\" \/>\n\t<meta property=\"og:image:height\" content=\"900\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tempo estimado de leitura\" \/>\n\t<meta name=\"twitter:data1\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/caixamagica.pt\/software-development\/\",\"url\":\"https:\/\/caixamagica.pt\/software-development\/\",\"name\":\"Custom Software Development in Portugal | Caixa M\u00e1gica\",\"isPartOf\":{\"@id\":\"https:\/\/caixamagica.pt\/#website\"},\"datePublished\":\"2025-09-26T13:38:50+00:00\",\"dateModified\":\"2026-07-14T14:19:21+00:00\",\"description\":\"We build custom software development from platforms to mobile. Agile development, full-cycle delivery, based in Lisbon. See our solutions.\",\"breadcrumb\":{\"@id\":\"https:\/\/caixamagica.pt\/software-development\/#breadcrumb\"},\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/caixamagica.pt\/software-development\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/caixamagica.pt\/software-development\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\/\/caixamagica.pt\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Software Development\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/caixamagica.pt\/#website\",\"url\":\"https:\/\/caixamagica.pt\/\",\"name\":\"Caixa M\u00e1gica Software\",\"description\":\"Caixa Magica Software create technological solutions in the areas of mobile, web, and automotive, with over 19 years of experience in developing for various market segments.\",\"publisher\":{\"@id\":\"https:\/\/caixamagica.pt\/#organization\"},\"alternateName\":\"CMS\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/caixamagica.pt\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-PT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/caixamagica.pt\/#organization\",\"name\":\"Caixa M\u00e1gica Software\",\"alternateName\":\"CMS\",\"url\":\"https:\/\/caixamagica.pt\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/caixamagica.pt\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/caixamagica.pt\/wp-content\/uploads\/2023\/09\/cropped-Favicon-CMS-v2.png\",\"contentUrl\":\"https:\/\/caixamagica.pt\/wp-content\/uploads\/2023\/09\/cropped-Favicon-CMS-v2.png\",\"width\":512,\"height\":512,\"caption\":\"Caixa M\u00e1gica Software\"},\"image\":{\"@id\":\"https:\/\/caixamagica.pt\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/CaixaMagicaSoftware\",\"https:\/\/www.instagram.com\/caixamagicasoftware\/\",\"https:\/\/www.linkedin.com\/company\/caixa-magica-software\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Desenvolvimento de Software \u00e0 Medida em Portugal | Caixa M\u00e1gica","description":"Constru\u00edmos desenvolvimento de software \u00e0 medida, desde plataformas a mobile. Desenvolvimento \u00e1gil, entrega de ciclo completo, baseados em Lisboa. Ver as nossas solu\u00e7\u00f5es.","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":"https:\/\/caixamagica.pt\/pt\/desenvolvimento-software\/","og_locale":"pt_PT","og_type":"article","og_title":"Custom Software Development in Portugal | Caixa M\u00e1gica","og_description":"We build custom software development from platforms to mobile. Agile development, full-cycle delivery, based in Lisbon. See our solutions.","og_url":"https:\/\/caixamagica.pt\/pt\/desenvolvimento-software\/","og_site_name":"Caixa M\u00e1gica Software","article_publisher":"https:\/\/www.facebook.com\/CaixaMagicaSoftware","article_modified_time":"2026-07-14T14:19:21+00:00","og_image":[{"width":900,"height":900,"url":"https:\/\/caixamagica.pt\/wp-content\/uploads\/2025\/09\/Img_Software_Dev-1.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Tempo estimado de leitura":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/caixamagica.pt\/software-development\/","url":"https:\/\/caixamagica.pt\/software-development\/","name":"Desenvolvimento de Software \u00e0 Medida em Portugal | Caixa M\u00e1gica","isPartOf":{"@id":"https:\/\/caixamagica.pt\/#website"},"datePublished":"2025-09-26T13:38:50+00:00","dateModified":"2026-07-14T14:19:21+00:00","description":"Constru\u00edmos desenvolvimento de software \u00e0 medida, desde plataformas a mobile. Desenvolvimento \u00e1gil, entrega de ciclo completo, baseados em Lisboa. Ver as nossas solu\u00e7\u00f5es.","breadcrumb":{"@id":"https:\/\/caixamagica.pt\/software-development\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/caixamagica.pt\/software-development\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/caixamagica.pt\/software-development\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/caixamagica.pt\/"},{"@type":"ListItem","position":2,"name":"Software Development"}]},{"@type":"WebSite","@id":"https:\/\/caixamagica.pt\/#website","url":"https:\/\/caixamagica.pt\/","name":"Caixa M\u00e1gica Software","description":"A Caixa M\u00e1gica Software cria solu\u00e7\u00f5es tecnol\u00f3gicas nas \u00e1reas mobile, web e autom\u00f3vel, com mais de 19 anos de experi\u00eancia no desenvolvimento para diversos segmentos de mercado.","publisher":{"@id":"https:\/\/caixamagica.pt\/#organization"},"alternateName":"CMS","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/caixamagica.pt\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pt-PT"},{"@type":"Organization","@id":"https:\/\/caixamagica.pt\/#organization","name":"Caixa M\u00e1gica Software","alternateName":"CMS","url":"https:\/\/caixamagica.pt\/","logo":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/caixamagica.pt\/#\/schema\/logo\/image\/","url":"https:\/\/caixamagica.pt\/wp-content\/uploads\/2023\/09\/cropped-Favicon-CMS-v2.png","contentUrl":"https:\/\/caixamagica.pt\/wp-content\/uploads\/2023\/09\/cropped-Favicon-CMS-v2.png","width":512,"height":512,"caption":"Caixa M\u00e1gica Software"},"image":{"@id":"https:\/\/caixamagica.pt\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/CaixaMagicaSoftware","https:\/\/www.instagram.com\/caixamagicasoftware\/","https:\/\/www.linkedin.com\/company\/caixa-magica-software"]}]}},"_links":{"self":[{"href":"https:\/\/caixamagica.pt\/pt\/wp-json\/wp\/v2\/pages\/12242","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/caixamagica.pt\/pt\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/caixamagica.pt\/pt\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/caixamagica.pt\/pt\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/caixamagica.pt\/pt\/wp-json\/wp\/v2\/comments?post=12242"}],"version-history":[{"count":123,"href":"https:\/\/caixamagica.pt\/pt\/wp-json\/wp\/v2\/pages\/12242\/revisions"}],"predecessor-version":[{"id":14297,"href":"https:\/\/caixamagica.pt\/pt\/wp-json\/wp\/v2\/pages\/12242\/revisions\/14297"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/caixamagica.pt\/pt\/wp-json\/wp\/v2\/media\/8496"}],"wp:attachment":[{"href":"https:\/\/caixamagica.pt\/pt\/wp-json\/wp\/v2\/media?parent=12242"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}