{"id":21,"date":"2026-10-25T17:07:05","date_gmt":"2026-10-25T14:07:05","guid":{"rendered":"https:\/\/qcoders.com\/how-we-work\/"},"modified":"2026-11-02T09:00:52","modified_gmt":"2026-11-02T07:00:52","slug":"how-we-work","status":"publish","type":"page","link":"https:\/\/qcoders.com\/ar\/how-we-work\/","title":{"rendered":"\u0637\u0631\u064a\u0642\u0629 \u0639\u0645\u0644\u0646\u0627"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"21\" class=\"elementor elementor-21\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4fba6ec0 e-con-full elementor-hidden-desktop elementor-hidden-tablet e-flex e-con e-parent\" data-id=\"4fba6ec0\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-56fcf9d4 elementor-widget elementor-widget-html\" data-id=\"56fcf9d4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- Qcoders phone page: how-we-work, direction A \"Clear timeline\". Shown on phones only; the desktop sections are hidden there.\n     Generated by website\/v2\/how-we-work-a\/build.py. -->\n<style>\n.qcm.qhw-m{--ink:#0A0E17;--step:#131A27;--raise:#161D2C;--line:#232C3D;--paper:#F6F5F0;--soft:#C9CED8;--mute:#A9AEB8;--volt:#C8F53B;\n  --pad:20px;--sec:72px;--sans:\"Readex Pro\",system-ui,sans-serif;--mono:\"JetBrains Mono\",ui-monospace,monospace;\n  display:block;background:var(--ink);color:var(--paper);font-family:var(--sans);font-size:16px;font-weight:400;line-height:1.5;letter-spacing:normal;text-align:left;\n  overflow-x:hidden;overflow-x:clip;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%}\n.qhw-m *,.qhw-m *::before,.qhw-m *::after{box-sizing:border-box}\n.qhw-m :is(h1,h2,h3,p,ul,ol,li,figure){margin:0;padding:0;font-family:inherit;color:inherit;font-style:normal;text-transform:none}\n.qhw-m :is(ul,ol){list-style:none}\n.qhw-m :is(p,li){text-wrap:pretty}\n.qhw-m img{display:block;max-width:100%;height:auto;border:0;border-radius:0;box-shadow:none}\n.qhw-m svg{display:block;flex:none}\n.qhw-m a{color:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent}\n.qhw-m a:focus-visible{outline:2px solid var(--volt);outline-offset:2px}\n.qhw-m section[id]{scroll-margin-top:72px}\n.qhw-m .label{font:500 12px\/1.4 var(--mono);letter-spacing:.02em;color:var(--volt)}\n.qhw-m .label[data-l]::before{content:attr(data-l)}\n.qhw-m .sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}\n.qhw-m .tag{position:absolute;left:10px;top:10px;z-index:2;padding:4px 7px;border-radius:4px;background:rgba(10,14,23,.86);color:var(--volt);font:500 11px\/1.3 var(--mono)}\n.qhw-m .hero{padding:28px var(--pad) 0}\n.qhw-m .h1{margin-top:12px;font-size:clamp(34px,10.2vw,44px);font-weight:600;line-height:1;letter-spacing:-.035em;color:var(--paper)}\n.qhw-m .h1 span{display:block}\n.qhw-m .h1 em{display:block;font-style:normal;color:var(--volt)}\n.qhw-m .lead{text-wrap:pretty;margin-top:16px;font-size:17px;line-height:1.45;color:var(--soft)}\n.qhw-m a.btn{display:flex;align-items:center;justify-content:center;gap:10px;height:54px;margin-top:24px;border-radius:999px;background:var(--volt);color:var(--ink);font-size:17px;font-weight:500}\n.qhw-m a.btn svg{width:22px;height:22px}\n.qhw-m a.jump{display:inline-flex;align-items:center;gap:8px;min-height:44px;margin-top:8px;color:var(--volt);font:500 13px\/1 var(--mono)}\n.qhw-m a.jump svg{width:16px;height:16px;transform:rotate(90deg)}\n.qhw-m .hero-pic{position:relative;margin:18px calc(var(--pad) * -1) 0;aspect-ratio:4\/3;overflow:hidden;background:var(--raise)}\n.qhw-m .hero-pic img,.qhw-m .pic img{width:100%;height:100%;object-fit:cover}\n.qhw-m .sh{padding:var(--sec) var(--pad) 0}\n.qhw-m .sh h2{margin-top:10px;font-size:30px;font-weight:600;line-height:1.06;letter-spacing:-.03em;text-wrap:balance}\n.qhw-m .sh .intro{margin-top:14px;font-size:16px;line-height:1.5;color:var(--mute)}\n.qhw-m .sh .intro a{color:var(--volt);text-decoration:underline;text-underline-offset:3px}\n.qhw-m .tl{margin-top:32px;padding:0 var(--pad)}\n.qhw-m .step{position:relative;display:grid;grid-template-columns:36px minmax(0,1fr);column-gap:14px;padding-bottom:60px}\n.qhw-m .step > *{grid-column:2;min-width:0}\n.qhw-m .step::before{content:\"\";position:absolute;left:16.5px;top:44px;bottom:8px;width:3px;border-radius:2px;background:var(--volt);transform-origin:top}\n.qhw-m .step .gate{grid-column:auto;grid-row:auto;position:absolute;left:50px;bottom:22px;font:500 11px\/1.3 var(--mono);letter-spacing:.02em;color:var(--mute);white-space:nowrap}\n\/* step 04: solid down to \"You get\" (handover and fix period are part of the job), then a short dashed tail: support is optional *\/\n.qhw-m .step:last-child{padding-bottom:40px}\n.qhw-m .step:last-child::before{bottom:40px}\n.qhw-m .step:last-child::after{content:\"\";position:absolute;left:16.5px;bottom:0;height:34px;width:3px;background:repeating-linear-gradient(180deg,var(--volt) 0 6px,transparent 6px 12px)}\n.qhw-m .step:last-child .gate{bottom:10px}\n.qhw-m .step .dot{grid-column:1;grid-row:1;align-self:center;display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:var(--volt);color:var(--ink);font:500 13px\/1 var(--mono)}\n.qhw-m .step h3{grid-row:1;align-self:center;font-size:32px;font-weight:600;line-height:1.05;letter-spacing:-.03em}\n.qhw-m .step .promise{margin-top:10px;font-size:18px;line-height:1.4;color:var(--paper);text-wrap:pretty}\n.qhw-m .step .pic{position:relative;display:block;margin-top:18px;aspect-ratio:4\/3;overflow:hidden;border-radius:10px;background:var(--raise)}\n.qhw-m .step a.pic .tag{display:inline-flex;align-items:center;gap:5px}\n.qhw-m .step a.pic .tag svg{width:13px;height:13px}\n.qhw-m .k{font:500 12px\/1.4 var(--mono);letter-spacing:.02em;color:var(--mute)}\n.qhw-m .do{margin-top:18px}\n.qhw-m .do ul,.qhw-m .get ul{display:grid;gap:8px;margin-top:8px}\n.qhw-m .do li{position:relative;padding-left:16px;font-size:15.5px;line-height:1.5;color:var(--soft)}\n.qhw-m .do li::before{content:\"\";position:absolute;left:0;top:.72em;width:8px;height:2px;background:var(--mute)}\n.qhw-m .get{margin-top:14px;padding:14px 14px 16px;border-left:2px solid var(--volt);background:rgba(200,245,59,.06)}\n.qhw-m .get .k{color:var(--volt)}\n.qhw-m .get li{position:relative;padding-left:22px;font-size:15.5px;line-height:1.45;color:var(--paper)}\n.qhw-m .get li::before{content:\"\";position:absolute;left:1px;top:.38em;width:10px;height:5.5px;border-left:2px solid var(--volt);border-bottom:2px solid var(--volt);transform:rotate(-45deg)}\n.qhw-m .qa{margin-top:28px;border-top:1px solid var(--line)}\n.qhw-m .qa > li{padding:22px var(--pad) 24px;border-bottom:1px solid var(--line)}\n.qhw-m .qa .t{font:500 12px\/1.4 var(--mono);letter-spacing:.02em;color:var(--volt)}\n.qhw-m .qa h3{margin-top:8px;font-size:22px;font-weight:500;line-height:1.2;letter-spacing:-.02em}\n.qhw-m .qa .a{margin-top:10px;font-size:16px;line-height:1.5;color:var(--soft)}\n.qhw-m .qa a.more{display:inline-flex;align-items:center;gap:8px;min-height:36px;margin-top:10px;color:var(--volt);font:500 13px\/1.3 var(--mono)}\n.qhw-m .qa a.more svg{width:16px;height:16px}\n\/* each group is one spec-table row: its name, then its tools, in one flow (inline, so the list keeps its semantics) *\/\n.qhw-m .tech{margin-top:24px;border-top:1px solid var(--line)}\n.qhw-m .tech > li{padding:14px var(--pad) 8px;border-bottom:1px solid var(--line);line-height:0}\n.qhw-m .tech h3{display:inline-block;min-width:64px;margin:0 6px 6px 0;font:500 13px\/29px var(--mono);letter-spacing:.02em;color:var(--volt);vertical-align:top}\n.qhw-m .chips{display:inline}\n.qhw-m .chips li{display:inline-block;margin:0 6px 6px 0;padding:5px 10px;border:1px solid #343F55;border-radius:99px;font-size:13px;line-height:17px;vertical-align:top}\n.qhw-m .volt{margin-top:var(--sec);padding:40px var(--pad);background:var(--volt);color:var(--ink)}\n.qhw-m .volt .label{color:var(--ink);opacity:.72}\n.qhw-m .volt .big{margin-top:12px;font-size:34px;font-weight:600;line-height:1.02;letter-spacing:-.035em;text-wrap:balance}\n.qhw-m .volt .nw{white-space:nowrap}\n.qhw-m .volt .qhw-cursor{display:inline-block;width:.42em;height:.78em;margin-left:.1em;vertical-align:-.04em;border-radius:3px;background:var(--ink)}\n.qhw-m .volt .more{margin-top:14px;font-size:17px;line-height:1.4}\n.qhw-m .cta{padding:var(--sec) var(--pad) 48px}\n.qhw-m .cta h2{margin-top:10px;font-size:34px;font-weight:600;line-height:1.02;letter-spacing:-.035em;text-wrap:balance}\n.qhw-m .cta .sub{margin-top:14px;font-size:17px;line-height:1.45;color:var(--soft)}\n.qhw-m .ask{margin-top:24px;font:500 12px\/1.4 var(--mono);letter-spacing:.02em;color:var(--mute)}\n.qhw-m .needs{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}\n.qhw-m .needs a{display:inline-flex;align-items:center;min-height:42px;padding:0 15px;border:1px solid rgba(200,245,59,.45);border-radius:99px;font-size:15px;font-weight:500}\n.qhw-m .needs a:active{background:var(--volt);color:var(--ink)}\n.qhw-m a.wa{display:flex;align-items:center;gap:14px;margin-top:22px;padding:18px;border-radius:18px;background:var(--volt);color:var(--ink)}\n.qhw-m .wa .ic{display:grid;place-items:center;flex:0 0 52px;height:52px;border-radius:14px;background:var(--ink);color:var(--volt)}\n.qhw-m .wa .ic svg{width:28px;height:28px}\n.qhw-m .wa b{display:block;font-size:20px;font-weight:600;line-height:1.1;letter-spacing:-.01em}\n.qhw-m .wa small{display:block;margin-top:3px;font-size:15px;font-weight:500}\n.qhw-m .wa .arr{width:22px;height:22px;margin-left:auto}\n.qhw-m a.alt{display:flex;align-items:center;justify-content:space-between;margin-top:12px;padding:16px 18px;border:1px solid var(--line);border-radius:14px}\n.qhw-m .alt small{display:block;font:500 12px\/1.4 var(--mono);color:var(--mute)}\n.qhw-m .alt b{display:block;margin-top:2px;font-weight:500}\n.qhw-m .alt svg{width:22px;height:22px;color:var(--volt)}\n.qhw-m .next{margin-top:28px;padding:20px 18px;border:1px solid var(--line);border-radius:14px;background:var(--step)}\n.qhw-m .next ul{display:grid;gap:10px;margin-top:14px}\n.qhw-m .next li{position:relative;padding-left:20px;font-size:16px;line-height:1.4}\n.qhw-m .next li::before{content:\"\";position:absolute;left:0;top:.68em;width:9px;height:2px;background:var(--volt)}\n.qhw-m .next .note{margin-top:16px;padding-top:14px;border-top:1px solid var(--line);font-size:14px;color:var(--mute)}\n.qhw-m .meta{margin-top:20px;font:500 12px\/1.5 var(--mono);color:var(--mute)}\n@media (prefers-reduced-motion:no-preference){\n  .qhw-m.js .rv{opacity:0;transform:translateY(22px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.2,1)}\n  .qhw-m.js .rv.in{opacity:1;transform:none}\n  .qhw-m.js .step.rv::before{transform:scaleY(0);transition:transform .9s cubic-bezier(.65,0,.35,1) .25s}\n  .qhw-m.js .step.rv.in::before{transform:none}\n  .qhw-m .hero .h1{animation:qhwmrise .8s cubic-bezier(.2,.7,.2,1) both}\n  .qhw-m .volt.in .qhw-cursor{animation:qhwmblink 1.1s steps(1) .9s 3}\n}\n@keyframes qhwmblink{50%{opacity:0}}\n@keyframes qhwmrise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}\n<\/style>\n<div class=\"qcm qhw-m\">\n<section class=\"hero\">\n  <p class=\"label\" data-l=\"\/\/ How we work\"><\/p>\n  <h1 class=\"h1\"><span>We listen first.<\/span> <em>Then we code.<\/em><\/h1>\n  <p class=\"lead\">Here is how we work, from your first message to life after launch. Four steps, a written plan before any code, and a fixed price for each stage.<\/p>\n  <a class=\"btn\" href=\"https:\/\/wa.me\/966507600156?text=Hi%20Qcoders%2C%20I%20found%20you%20on%20your%20website.\" target=\"_blank\" rel=\"noopener\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path fill=\"currentColor\" d=\"M12.04 2a9.9 9.9 0 0 0-8.5 15l-1.4 5 5.2-1.36A9.9 9.9 0 1 0 12.04 2Zm0 18.1a8.2 8.2 0 0 1-4.2-1.15l-.3-.18-3.08.8.82-3-.2-.31a8.2 8.2 0 1 1 6.96 3.84Zm4.5-6.14c-.25-.12-1.46-.72-1.69-.8-.23-.08-.39-.12-.55.12-.17.25-.64.8-.78.97-.14.16-.29.18-.53.06a6.7 6.7 0 0 1-3.37-2.94c-.25-.44.25-.41.72-1.36.08-.16.04-.3-.02-.43l-.76-1.83c-.2-.48-.4-.41-.55-.42h-.47a.9.9 0 0 0-.65.3 2.74 2.74 0 0 0-.85 2.04c0 1.2.87 2.37 1 2.53.12.16 1.72 2.63 4.17 3.69 1.55.67 2.16.73 2.93.61.47-.07 1.46-.6 1.66-1.17.2-.58.2-1.07.15-1.17-.07-.1-.23-.16-.47-.28Z\"\/><\/svg>Message us on WhatsApp<\/a>\n  <a class=\"jump\" href=\"#m-steps\">See the four steps<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/a>\n  <div class=\"hero-pic\"><img fetchpriority=\"high\" src=\"https:\/\/qcoders.com\/wp-content\/uploads\/2026\/10\/qc-ui-first-meeting-owner-explains-r133.webp\" width=\"1600\" height=\"1203\" decoding=\"async\" style=\"object-position:50% 50%\" alt=\"The questions we ask on the free first call, and a first WhatsApp message to Qcoders\"><span class=\"tag\" aria-hidden=\"true\">\/\/ you talk, we listen<\/span><\/div>\n<\/section>\n<section id=\"m-steps\">\n  <div class=\"sh\"><p class=\"label\"><span aria-hidden=\"true\">\/\/ <\/span>The four steps<\/p><h2>How we work, step by step<\/h2><p class=\"intro\">Every project follows the same four steps, whether it is a one-page website or a system for the whole company. At each step, you know what happens and what you get.<\/p><\/div>\n  <ol class=\"tl\"><li class=\"step rv\"><span class=\"dot\" aria-hidden=\"true\">01<\/span><h3><span class=\"sr\">Step 1: <\/span>Listen<\/h3><p class=\"promise\">We learn how your business runs before we suggest anything.<\/p><div class=\"pic\"><img loading=\"lazy\" src=\"https:\/\/qcoders.com\/wp-content\/uploads\/2026\/10\/qc-ui-phone-held-first-message-close-r133.webp\" width=\"1600\" height=\"1203\" loading=\"lazy\" decoding=\"async\" style=\"object-position:50% 74%\" alt=\"A WhatsApp chat with Qcoders: a first message, a voice note and a call set for tomorrow\"><span class=\"tag\" aria-hidden=\"true\">\/\/ a first message<\/span><\/div><div class=\"do\"><p class=\"k\"><span aria-hidden=\"true\">\/\/ <\/span>What happens<\/p><ul><li>You send a few lines or a voice note on WhatsApp.<\/li><li>We reply with a few questions, then set up a short call.<\/li><li>During the call, you tell us how orders, stock, customers and staff move today.<\/li><\/ul><\/div><div class=\"get\"><p class=\"k\"><span aria-hidden=\"true\">\/\/ <\/span>You get<\/p><ul><li>Our honest first reading of the problem, in plain words.<\/li><li>A free first call, with no obligation to continue.<\/li><\/ul><\/div><p class=\"gate\" aria-hidden=\"true\">\/\/ after the free call<\/p><\/li><li class=\"step rv\"><span class=\"dot\" aria-hidden=\"true\">02<\/span><h3><span class=\"sr\">Step 2: <\/span>Decide<\/h3><p class=\"promise\">You see the plan, the cost and the timeline before any work starts.<\/p><div class=\"pic\"><img loading=\"lazy\" src=\"https:\/\/qcoders.com\/wp-content\/uploads\/2026\/10\/qc-ui-two-partners-reading-proposal-r133.webp\" width=\"1600\" height=\"1203\" loading=\"lazy\" decoding=\"async\" style=\"object-position:62% 40%\" alt=\"A written plan with a fixed price for each stage, and free fixes after launch\"><span class=\"tag\" aria-hidden=\"true\">\/\/ the written proposal<\/span><\/div><div class=\"do\"><p class=\"k\"><span aria-hidden=\"true\">\/\/ <\/span>What happens<\/p><ul><li>We check if a ready-made tool is enough. If it is, we tell you.<\/li><li>If it isn't, we plan what to build first and what can wait.<\/li><li>You read the proposal and ask questions. Then we agree on it together.<\/li><\/ul><\/div><div class=\"get\"><p class=\"k\"><span aria-hidden=\"true\">\/\/ <\/span>You get<\/p><ul><li>A written proposal with the scope, stages, cost and timeline.<\/li><li>A fixed price for each stage, based on the agreed scope.<\/li><\/ul><\/div><p class=\"gate\" aria-hidden=\"true\">\/\/ once we agree on the plan<\/p><\/li><li class=\"step rv\"><span class=\"dot\" aria-hidden=\"true\">03<\/span><h3><span class=\"sr\">Step 3: <\/span>Build<\/h3><p class=\"promise\">We build in stages, so you see progress as we go.<\/p><a class=\"pic\" href=\"\/work\/booking-system\/\" aria-label=\"See the booking system project\"><img loading=\"lazy\" src=\"https:\/\/qcoders.com\/wp-content\/uploads\/2026\/10\/qc-ui-hands-laptop-booking-calendar-r133.webp\" width=\"1600\" height=\"1203\" loading=\"lazy\" decoding=\"async\" style=\"object-position:62% 50%\" alt=\"The online booking page of the booking system on a laptop\"><span class=\"tag\" aria-hidden=\"true\">\/\/ booking-system<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/span><\/a><div class=\"do\"><p class=\"k\"><span aria-hidden=\"true\">\/\/ <\/span>What happens<\/p><ul><li>Each stage ends with something that works.<\/li><li>Then you try it on your own phone or laptop and tell us what feels wrong.<\/li><li>We change it before the next stage, so a wrong turn is caught early.<\/li><\/ul><\/div><div class=\"get\"><p class=\"k\"><span aria-hidden=\"true\">\/\/ <\/span>You get<\/p><ul><li>Working software at the end of every stage.<\/li><li>Short updates you can read in a minute, in English, Arabic or Turkish.<\/li><\/ul><\/div><p class=\"gate\" aria-hidden=\"true\">\/\/ at launch<\/p><\/li><li class=\"step rv\"><span class=\"dot\" aria-hidden=\"true\">04<\/span><h3><span class=\"sr\">Step 4: <\/span>Stay<\/h3><p class=\"promise\">We hand it over, train your team, and stay if you want us to.<\/p><div class=\"pic\"><img loading=\"lazy\" src=\"https:\/\/qcoders.com\/wp-content\/uploads\/2026\/10\/qc-ui-clinic-two-staff-tablet-r133.webp\" width=\"1600\" height=\"1203\" loading=\"lazy\" decoding=\"async\" style=\"object-position:56% 35%\" alt=\"WhatsApp reminder settings of the booking system on a tablet and the client's upcoming visit on a phone\"><span class=\"tag\" aria-hidden=\"true\">\/\/ training your team<\/span><\/div><div class=\"do\"><p class=\"k\"><span aria-hidden=\"true\">\/\/ <\/span>What happens<\/p><ul><li>When the system is ready, we hand it over and train your team to use it.<\/li><li>For a period agreed in the proposal, we fix bugs in what we built at no extra cost.<\/li><li>Then, if you want, a support plan covers hosting, updates and fixes.<\/li><\/ul><\/div><div class=\"get\"><p class=\"k\"><span aria-hidden=\"true\">\/\/ <\/span>You get<\/p><ul><li>A team that knows the system.<\/li><li>The code, design files and accounts, yours after the final payment.<\/li><\/ul><\/div><p class=\"gate\" aria-hidden=\"true\">\/\/ optional support<\/p><\/li><\/ol>\n<\/section>\n<section class=\"volt rv\"><p class=\"label\"><span aria-hidden=\"true\">\/\/ <\/span>Our promise<\/p><p class=\"big\">No surprises at the <span class=\"nw\">end.<span class=\"qhw-cursor\" aria-hidden=\"true\"><\/span><\/span><\/p><p class=\"more\">You'll know the scope, the stages, the cost and the timeline before we write a line of code.<\/p><\/section>\n<section id=\"m-before-you-start\">\n  <div class=\"sh\"><p class=\"label\"><span aria-hidden=\"true\">\/\/ <\/span>Before you start<\/p><h2>Questions people ask before starting<\/h2><p class=\"intro\">Short answers about cost, time, changes and stopping. You'll find more on our FAQ page. <a href=\"\/faq\/\">Read the FAQ<\/a><\/p><\/div>\n  <ul class=\"qa\"><li class=\"rv\"><p class=\"t\"><span aria-hidden=\"true\">\/\/ <\/span>Cost to start<\/p><h3>What does it cost to start?<\/h3><p class=\"a\">Nothing. The first call is free, with no obligation to continue. There's no minimum project size.<\/p><a class=\"more\" href=\"\/faq\/#how-do-i-start-is-the-first-call-free\">More about the first call<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/a><\/li><li class=\"rv\"><p class=\"t\"><span aria-hidden=\"true\">\/\/ <\/span>Time<\/p><h3>How long will it take?<\/h3><p class=\"a\">It depends on the scope: how many screens and users, and which tools we connect. So the proposal gives a timeline for each stage. If something may take longer, we tell you early and explain why.<\/p><a class=\"more\" href=\"\/faq\/#how-long-does-a-software-project-take\">More on how long it takes<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/a><\/li><li class=\"rv\"><p class=\"t\"><span aria-hidden=\"true\">\/\/ <\/span>Changes<\/p><h3>What if we want to change something?<\/h3><p class=\"a\">You can give feedback at every stage, not only at the end. If you want something outside the agreed scope, we give you a price for it before we start. If the plan itself needs to change, we explain why and agree on it with you first.<\/p><a class=\"more\" href=\"\/faq\/#do-you-work-on-a-fixed-price-or-by-the-hour\">More on fixed prices<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/a><\/li><li class=\"rv\"><p class=\"t\"><span aria-hidden=\"true\">\/\/ <\/span>Stopping<\/p><h3>What if we want to stop?<\/h3><p class=\"a\">You can stop at the end of any stage. If you stop, you pay only for the work done so far, and we hand it over to you.<\/p><a class=\"more\" href=\"\/faq\/#what-if-we-want-to-stop-the-software-project\">More on stopping a project<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/a><\/li><\/ul>\n<\/section>\n<section id=\"m-tech-stack\">\n  <div class=\"sh\"><p class=\"label\"><span aria-hidden=\"true\">\/\/ <\/span>Tech stack<\/p><h2>Technologies we work with<\/h2><p class=\"intro\">We choose the tools for each project based on what it needs, not on trends. They include the tools behind the projects on our work page. <a href=\"\/work\/\">See our work<\/a><\/p><\/div>\n  <ul class=\"tech\"><li class=\"rv\"><h3 id=\"qhw-m-tech-web\">Web<\/h3><ul class=\"chips\" aria-labelledby=\"qhw-m-tech-web\"><li>Next.js<\/li><li>React<\/li><li>TypeScript<\/li><li>WordPress<\/li><li>Shopify<\/li><li>Figma (design)<\/li><\/ul><\/li><li class=\"rv\"><h3 id=\"qhw-m-tech-backend-and-data\">Backend and data<\/h3><ul class=\"chips\" aria-labelledby=\"qhw-m-tech-backend-and-data\"><li>Laravel (PHP)<\/li><li>Python (FastAPI)<\/li><li>PostgreSQL<\/li><li>PostGIS<\/li><li>Redis<\/li><li>WebSockets<\/li><li>Meilisearch<\/li><\/ul><\/li><li class=\"rv\"><h3 id=\"qhw-m-tech-integrations\">Integrations<\/h3><ul class=\"chips\" aria-labelledby=\"qhw-m-tech-integrations\"><li>WhatsApp Business API<\/li><li>SMS gateways<\/li><li>Stripe<\/li><li>Paymob<\/li><li>Courier and shipping APIs<\/li><li>Google Maps Platform<\/li><li>Mapbox<\/li><li>Cloud phone (VoIP)<\/li><li>Calendar files (ICS)<\/li><\/ul><\/li><li class=\"rv\"><h3 id=\"qhw-m-tech-mobile\">Mobile<\/h3><ul class=\"chips\" aria-labelledby=\"qhw-m-tech-mobile\"><li>Flutter<\/li><li>Firebase Cloud Messaging<\/li><li>Camera barcode scanning<\/li><\/ul><\/li><li class=\"rv\"><h3 id=\"qhw-m-tech-ai\">AI<\/h3><ul class=\"chips\" aria-labelledby=\"qhw-m-tech-ai\"><li>OpenAI API<\/li><li>Claude API<\/li><li>pgvector<\/li><li>Tesseract OCR<\/li><\/ul><\/li><li class=\"rv\"><h3 id=\"qhw-m-tech-cloud\">Cloud<\/h3><ul class=\"chips\" aria-labelledby=\"qhw-m-tech-cloud\"><li>AWS<\/li><li>DigitalOcean<\/li><li>Docker<\/li><\/ul><\/li><\/ul>\n<\/section>\n<section class=\"cta\" id=\"m-start\">\n  <p class=\"label\"><span aria-hidden=\"true\">\/\/ <\/span>Contact<\/p>\n  <h2>Tell us what takes your time<\/h2>\n  <p class=\"sub\">Pick what you need, then we'll write the first message for you. No tech words needed.<\/p>\n  <p class=\"ask\" id=\"qhw-m-need\">What do you need?<\/p>\n  <ul class=\"needs\" aria-labelledby=\"qhw-m-need\"><li><a href=\"https:\/\/wa.me\/966507600156?text=Hi%20Qcoders%2C%20I%20found%20you%20on%20your%20website.%20I%20need%20a%20website.\" target=\"_blank\" rel=\"noopener\">Website<\/a><\/li><li><a href=\"https:\/\/wa.me\/966507600156?text=Hi%20Qcoders%2C%20I%20found%20you%20on%20your%20website.%20I%20need%20an%20online%20store.\" target=\"_blank\" rel=\"noopener\">Online store<\/a><\/li><li><a href=\"https:\/\/wa.me\/966507600156?text=Hi%20Qcoders%2C%20I%20found%20you%20on%20your%20website.%20I%20need%20a%20mobile%20app.\" target=\"_blank\" rel=\"noopener\">App<\/a><\/li><li><a href=\"https:\/\/wa.me\/966507600156?text=Hi%20Qcoders%2C%20I%20found%20you%20on%20your%20website.%20I%20need%20a%20business%20system.\" target=\"_blank\" rel=\"noopener\">Business system<\/a><\/li><li><a href=\"https:\/\/wa.me\/966507600156?text=Hi%20Qcoders%2C%20I%20found%20you%20on%20your%20website.%20I%20need%20an%20AI%20assistant.\" target=\"_blank\" rel=\"noopener\">AI<\/a><\/li><li><a href=\"https:\/\/wa.me\/966507600156?text=Hi%20Qcoders%2C%20I%20found%20you%20on%20your%20website.%20I%20need%20help%20deciding.\" target=\"_blank\" rel=\"noopener\">Not sure yet<\/a><\/li><\/ul>\n  <a class=\"wa\" href=\"https:\/\/wa.me\/966507600156?text=Hi%20Qcoders%2C%20I%20found%20you%20on%20your%20website.\" target=\"_blank\" rel=\"noopener\"><span class=\"ic\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path fill=\"currentColor\" d=\"M12.04 2a9.9 9.9 0 0 0-8.5 15l-1.4 5 5.2-1.36A9.9 9.9 0 1 0 12.04 2Zm0 18.1a8.2 8.2 0 0 1-4.2-1.15l-.3-.18-3.08.8.82-3-.2-.31a8.2 8.2 0 1 1 6.96 3.84Zm4.5-6.14c-.25-.12-1.46-.72-1.69-.8-.23-.08-.39-.12-.55.12-.17.25-.64.8-.78.97-.14.16-.29.18-.53.06a6.7 6.7 0 0 1-3.37-2.94c-.25-.44.25-.41.72-1.36.08-.16.04-.3-.02-.43l-.76-1.83c-.2-.48-.4-.41-.55-.42h-.47a.9.9 0 0 0-.65.3 2.74 2.74 0 0 0-.85 2.04c0 1.2.87 2.37 1 2.53.12.16 1.72 2.63 4.17 3.69 1.55.67 2.16.73 2.93.61.47-.07 1.46-.6 1.66-1.17.2-.58.2-1.07.15-1.17-.07-.1-.23-.16-.47-.28Z\"\/><\/svg><\/span><span><b>Chat on WhatsApp<\/b><small>+966 50 760 0156<\/small><\/span><span class=\"arr\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/span><\/a>\n  <a class=\"alt\" href=\"mailto:info@qcoders.com\"><span><small>\/\/ Email<\/small><b>info@qcoders.com<\/b><\/span><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/a>\n  <div class=\"next\"><p class=\"label\"><span aria-hidden=\"true\">\/\/ <\/span>Step 01, Listen<\/p><ul><li>You send a few lines about your business.<\/li><li>We reply with a few questions.<\/li><li>Then we set up a short call. The first call is free.<\/li><\/ul><p class=\"note\">Then step 02, Decide: your written proposal.<\/p><\/div>\n  <p class=\"meta\">Available 24\/7 \u00b7 English \u00b7 <span lang=\"ar\" dir=\"rtl\">\u0627\u0644\u0639\u0631\u0628\u064a\u0629<\/span> \u00b7 <span lang=\"tr\">T\u00fcrk\u00e7e<\/span><\/p>\n<\/section>\n<\/div>\n<script>(function(){document.querySelectorAll('.qhw-m:not([data-qhw])').forEach(function(r){r.setAttribute('data-qhw','1');\nif(!('IntersectionObserver' in window))return;r.classList.add('js');\nvar io=new IntersectionObserver(function(es){es.forEach(function(e){if(e.isIntersecting){e.target.classList.add('in');io.unobserve(e.target);}});},{rootMargin:'0px 0px -8% 0px',threshold:0.08});\nr.querySelectorAll('.rv').forEach(function(e){io.observe(e);});});})();<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-12d2bc30 e-con-full elementor-hidden-mobile e-flex e-con e-parent\" data-id=\"12d2bc30\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2fd924cd elementor-widget elementor-widget-html\" data-id=\"2fd924cd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- How we work (direction A), section 1: Opener on Ink. The page's one h1; the intro carries the focus keyphrase \"how we work\".\n     One Elementor HTML widget (container: full width, padding 0, gap 0, no motion effects). Generated by website\/v2\/how-we-work-a\/build.py: edit the words there, then run the build. -->\n<style>\n.qhw{--ink:#0A0E17;--step:#131A27;--raise:#161D2C;--line:#273044;--paper:#F6F5F0;--soft:#C9CED8;--mute:#9AA3B2;\n  --volt:#C8F53B;--volt-hi:#D6F86B;--m:clamp(1rem,.4rem + 2vw,2rem);--max:100rem;--gut:clamp(.75rem,.4rem + 1.2vw,1.5rem);\n  --sans:\"Readex Pro\",\"Segoe UI\",Tahoma,system-ui,sans-serif;--mono:\"JetBrains Mono\",Consolas,\"Courier New\",monospace;\n  --t-head:clamp(2rem,1.45rem + 2.3vw,3.5rem);--t-lead:clamp(1.1875rem,1.05rem + .45vw,1.5rem);\n  --t-body:clamp(1rem,.96rem + .12vw,1.0625rem);--sec:clamp(4rem,2.5rem + 3.5vw,6rem);--hdr:76px;\n  display:block;position:relative;margin:0;padding:var(--sec) 0;background:var(--bg,#0A0E17);color:var(--paper);\n  font-family:var(--sans);font-size:var(--t-body);font-weight:400;line-height:1.55;letter-spacing:normal;text-align:left;\n  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:clip;scroll-margin-top:var(--hdr)}\n@media (max-width:767px){.qhw{--hdr:64px}}\n.qhw *,.qhw *::before,.qhw *::after{box-sizing:border-box}\n.qhw :is(h1,h2,h3,h4,p,ul,ol,li,figure,blockquote){margin:0;padding:0;font-family:inherit;color:inherit;font-style:normal;text-transform:none;word-spacing:normal}\n.qhw :is(ul,ol){list-style:none}\n.qhw :is(p,li){text-wrap:pretty}\n.qhw img{display:block;max-width:100%;height:auto;border:0;border-radius:0;box-shadow:none}\n.qhw svg{display:block;flex:none}\n.qhw ::selection{background:var(--volt);color:var(--ink)}\n.qhw .qhw-wrap{width:100%;max-width:var(--max);margin-inline:auto;padding-inline:var(--m)}\n.qhw .qhw-label{font-family:var(--mono);font-size:.875rem;font-weight:500;line-height:1.4;letter-spacing:.02em;color:var(--volt)}\n.qhw .qhw-h2{margin-top:1rem;font-size:var(--t-head);font-weight:500;line-height:1.04;letter-spacing:-.03em;color:var(--paper);text-wrap:balance}\n.qhw .qhw-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}\n.qhw .qhw-head{display:grid;gap:1.25rem}\n.qhw .qhw-head__intro{max-width:46ch;color:var(--mute);text-wrap:pretty}\n.qhw .qhw-head__intro > * + *{margin-top:.75rem}\n@media (min-width:60rem){\n  .qhw .qhw-head{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gut);align-items:end}\n  .qhw .qhw-head > :first-child{grid-column:1\/span 7}\n  .qhw .qhw-head__intro{grid-column:9\/-1}\n}\n.qhw a.qhw-btn{display:inline-flex;align-items:center;justify-content:center;gap:.6em;min-height:3.25rem;padding:0 1.75rem;border:0;border-radius:999px;\n  background:var(--volt);color:var(--ink);font:500 var(--t-body)\/1 var(--sans);letter-spacing:-.005em;text-decoration:none;white-space:nowrap;\n  transition:background-color .2s ease,transform .15s ease;-webkit-tap-highlight-color:transparent}\n.qhw a.qhw-btn svg{width:1.2em;height:1.2em}\n.qhw a.qhw-btn:hover{background:var(--volt-hi);color:var(--ink)}\n.qhw a.qhw-btn:active{transform:scale(.97)}\n.qhw a.qhw-link{color:var(--volt);font-weight:400;text-decoration:underline;text-decoration-thickness:.07em;text-underline-offset:.22em}\n.qhw a.qhw-link:hover{color:var(--volt);text-decoration-thickness:.14em}\n.qhw a:focus-visible{outline:3px solid var(--volt);outline-offset:3px}\n.qhw .qhw-actions{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 2rem}\n.qhw .qhw-pic{position:relative;overflow:hidden;background:var(--raise)}\n.qhw .qhw-pic > img{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:cover}\n.qhw .qhw-tag{position:absolute;left:.75rem;top:.75rem;z-index:2;padding:.3rem .55rem;border-radius:4px;background:rgba(10,14,23,.86);\n  color:var(--volt);font:500 .75rem\/1.3 var(--mono);letter-spacing:.02em}\n\n.qhw.qhw-open{--bg:var(--ink);--pt:clamp(3rem,1.5rem + 4vw,5.5rem);padding-top:var(--pt)}\n.qhw.qhw-open .qhw-open__grid{display:grid;gap:2.5rem}\n.qhw.qhw-open .qhw-open__h1{margin:1rem 0 0 -.04em;font-size:clamp(2.75rem,1rem + 4.4vw,5.75rem);font-weight:500;line-height:.98;letter-spacing:-.035em;color:var(--paper)}\n.qhw.qhw-open .qhw-open__h1 > span{display:block}\n.qhw.qhw-open .qhw-open__h1 > .qhw-volt{color:var(--volt)}\n.qhw.qhw-open .qhw-open__lead{margin-top:1.5rem;max-width:38ch;text-wrap:pretty;font-size:var(--t-lead);line-height:1.4;letter-spacing:-.01em;color:var(--soft)}\n.qhw.qhw-open .qhw-actions{margin-top:2.25rem}\n.qhw.qhw-open .qhw-open__pic{aspect-ratio:4\/3}\n@media (min-width:60rem){\n  .qhw.qhw-open .qhw-open__grid{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gut);align-items:center}\n  .qhw.qhw-open .qhw-open__text{grid-column:1\/span 6;padding:clamp(.5rem,-1rem + 2.5vw,2.5rem) var(--gut) clamp(.5rem,-1rem + 2.5vw,2.5rem) 0}\n  \/* the photo fills the section's height and runs to the screen's right edge, like the Services hero *\/\n  .qhw.qhw-open .qhw-open__pic{grid-column:7\/-1;align-self:stretch;aspect-ratio:auto;min-height:30rem;\n    margin:calc(-1 * var(--pt)) calc(-1 * (var(--m) + max(0px, (100vw - var(--max)) \/ 2))) calc(-1 * var(--sec)) 0}\n  .qhw.qhw-open .qhw-open__pic .qhw-tag{left:1.25rem;top:1.25rem}\n}\n<\/style>\n<section class=\"qhw qhw-open\" aria-labelledby=\"qhw-h1\">\n  <div class=\"qhw-wrap qhw-open__grid\">\n    <div class=\"qhw-open__text\">\n      <p class=\"qhw-label\"><span aria-hidden=\"true\">\/\/ <\/span>How we work<\/p>\n      <div class=\"qhw-open__h1\" id=\"qhw-h1\" role=\"heading\" aria-level=\"1\"><span>We listen first.<\/span> <span class=\"qhw-volt\">Then we code.<\/span><\/div>\n      <p class=\"qhw-open__lead\">Here is how we work, from your first message to life after launch. Four steps, a written plan before any code, and a fixed price for each stage.<\/p>\n      <div class=\"qhw-actions\">\n        <a class=\"qhw-btn\" href=\"https:\/\/wa.me\/966507600156?text=Hi%20Qcoders%2C%20I%20found%20you%20on%20your%20website.\" target=\"_blank\" rel=\"noopener\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path fill=\"currentColor\" d=\"M12.04 2a9.9 9.9 0 0 0-8.5 15l-1.4 5 5.2-1.36A9.9 9.9 0 1 0 12.04 2Zm0 18.1a8.2 8.2 0 0 1-4.2-1.15l-.3-.18-3.08.8.82-3-.2-.31a8.2 8.2 0 1 1 6.96 3.84Zm4.5-6.14c-.25-.12-1.46-.72-1.69-.8-.23-.08-.39-.12-.55.12-.17.25-.64.8-.78.97-.14.16-.29.18-.53.06a6.7 6.7 0 0 1-3.37-2.94c-.25-.44.25-.41.72-1.36.08-.16.04-.3-.02-.43l-.76-1.83c-.2-.48-.4-.41-.55-.42h-.47a.9.9 0 0 0-.65.3 2.74 2.74 0 0 0-.85 2.04c0 1.2.87 2.37 1 2.53.12.16 1.72 2.63 4.17 3.69 1.55.67 2.16.73 2.93.61.47-.07 1.46-.6 1.66-1.17.2-.58.2-1.07.15-1.17-.07-.1-.23-.16-.47-.28Z\"\/><\/svg>Message us on WhatsApp<\/a>\n        <a class=\"qhw-link\" href=\"#steps\">See the four steps<\/a>\n      <\/div>\n    <\/div>\n    <div class=\"qhw-pic qhw-open__pic\">\n      <img fetchpriority=\"high\" src=\"https:\/\/qcoders.com\/wp-content\/uploads\/2026\/10\/qc-ui-first-meeting-owner-explains-r100.webp\"\n           width=\"1600\" height=\"1600\" fetchpriority=\"high\" decoding=\"async\" style=\"object-position:50% 50%\"\n           alt=\"The questions we ask on the free first call, and a first WhatsApp message to Qcoders\">\n      <span class=\"qhw-tag\" aria-hidden=\"true\">\/\/ you talk, we listen<\/span>\n    <\/div>\n  <\/div>\n<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1a2a6f4d e-con-full elementor-hidden-mobile e-flex e-con e-parent\" data-id=\"1a2a6f4d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3df578ae elementor-widget elementor-widget-html\" data-id=\"3df578ae\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- How we work (direction A), section 2: the four steps as one Volt timeline, on the step ground. From 75rem the steps stand side by side and their rows line up (CSS subgrid); below, the line runs down the left. The dashed end is support after launch, which is optional.\n     One Elementor HTML widget (container: full width, padding 0, gap 0, no motion effects). Generated by website\/v2\/how-we-work-a\/build.py: edit the words there, then run the build. -->\n<style>\n.qhw{--ink:#0A0E17;--step:#131A27;--raise:#161D2C;--line:#273044;--paper:#F6F5F0;--soft:#C9CED8;--mute:#9AA3B2;\n  --volt:#C8F53B;--volt-hi:#D6F86B;--m:clamp(1rem,.4rem + 2vw,2rem);--max:100rem;--gut:clamp(.75rem,.4rem + 1.2vw,1.5rem);\n  --sans:\"Readex Pro\",\"Segoe UI\",Tahoma,system-ui,sans-serif;--mono:\"JetBrains Mono\",Consolas,\"Courier New\",monospace;\n  --t-head:clamp(2rem,1.45rem + 2.3vw,3.5rem);--t-lead:clamp(1.1875rem,1.05rem + .45vw,1.5rem);\n  --t-body:clamp(1rem,.96rem + .12vw,1.0625rem);--sec:clamp(4rem,2.5rem + 3.5vw,6rem);--hdr:76px;\n  display:block;position:relative;margin:0;padding:var(--sec) 0;background:var(--bg,#0A0E17);color:var(--paper);\n  font-family:var(--sans);font-size:var(--t-body);font-weight:400;line-height:1.55;letter-spacing:normal;text-align:left;\n  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:clip;scroll-margin-top:var(--hdr)}\n@media (max-width:767px){.qhw{--hdr:64px}}\n.qhw *,.qhw *::before,.qhw *::after{box-sizing:border-box}\n.qhw :is(h1,h2,h3,h4,p,ul,ol,li,figure,blockquote){margin:0;padding:0;font-family:inherit;color:inherit;font-style:normal;text-transform:none;word-spacing:normal}\n.qhw :is(ul,ol){list-style:none}\n.qhw :is(p,li){text-wrap:pretty}\n.qhw img{display:block;max-width:100%;height:auto;border:0;border-radius:0;box-shadow:none}\n.qhw svg{display:block;flex:none}\n.qhw ::selection{background:var(--volt);color:var(--ink)}\n.qhw .qhw-wrap{width:100%;max-width:var(--max);margin-inline:auto;padding-inline:var(--m)}\n.qhw .qhw-label{font-family:var(--mono);font-size:.875rem;font-weight:500;line-height:1.4;letter-spacing:.02em;color:var(--volt)}\n.qhw .qhw-h2{margin-top:1rem;font-size:var(--t-head);font-weight:500;line-height:1.04;letter-spacing:-.03em;color:var(--paper);text-wrap:balance}\n.qhw .qhw-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}\n.qhw .qhw-head{display:grid;gap:1.25rem}\n.qhw .qhw-head__intro{max-width:46ch;color:var(--mute);text-wrap:pretty}\n.qhw .qhw-head__intro > * + *{margin-top:.75rem}\n@media (min-width:60rem){\n  .qhw .qhw-head{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gut);align-items:end}\n  .qhw .qhw-head > :first-child{grid-column:1\/span 7}\n  .qhw .qhw-head__intro{grid-column:9\/-1}\n}\n.qhw a.qhw-btn{display:inline-flex;align-items:center;justify-content:center;gap:.6em;min-height:3.25rem;padding:0 1.75rem;border:0;border-radius:999px;\n  background:var(--volt);color:var(--ink);font:500 var(--t-body)\/1 var(--sans);letter-spacing:-.005em;text-decoration:none;white-space:nowrap;\n  transition:background-color .2s ease,transform .15s ease;-webkit-tap-highlight-color:transparent}\n.qhw a.qhw-btn svg{width:1.2em;height:1.2em}\n.qhw a.qhw-btn:hover{background:var(--volt-hi);color:var(--ink)}\n.qhw a.qhw-btn:active{transform:scale(.97)}\n.qhw a.qhw-link{color:var(--volt);font-weight:400;text-decoration:underline;text-decoration-thickness:.07em;text-underline-offset:.22em}\n.qhw a.qhw-link:hover{color:var(--volt);text-decoration-thickness:.14em}\n.qhw a:focus-visible{outline:3px solid var(--volt);outline-offset:3px}\n.qhw .qhw-actions{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 2rem}\n.qhw .qhw-pic{position:relative;overflow:hidden;background:var(--raise)}\n.qhw .qhw-pic > img{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:cover}\n.qhw .qhw-tag{position:absolute;left:.75rem;top:.75rem;z-index:2;padding:.3rem .55rem;border-radius:4px;background:rgba(10,14,23,.86);\n  color:var(--volt);font:500 .75rem\/1.3 var(--mono);letter-spacing:.02em}\n\n.qhw.qhw-tl{--bg:var(--step)}\n\/* a faint blueprint sheet behind the steps: the homepage's dot grid, fading out down the section *\/\n.qhw.qhw-tl::before{content:\"\";position:absolute;inset:0;pointer-events:none;\n  background-image:radial-gradient(circle,rgba(246,245,240,.075) 1.2px,transparent 1.7px),\n    linear-gradient(rgba(246,245,240,.028) 1px,transparent 1px),linear-gradient(90deg,rgba(246,245,240,.028) 1px,transparent 1px);\n  background-size:44px 44px,176px 176px,176px 176px;background-position:-22px -22px,0 0,0 0;\n  -webkit-mask-image:linear-gradient(180deg,#000 0,rgba(0,0,0,.35) 45%,transparent 85%);mask-image:linear-gradient(180deg,#000 0,rgba(0,0,0,.35) 45%,transparent 85%)}\n.qhw.qhw-tl > .qhw-wrap{position:relative}\n.qhw.qhw-tl .qhw-tl__list{--dot:2.5rem;--cg:clamp(1.5rem,.5rem + 2vw,2.5rem);--tail:3rem;margin-top:clamp(2.5rem,1.5rem + 3vw,4.5rem)}\n.qhw.qhw-tl .qhw-step{position:relative;display:grid;grid-template-columns:var(--dot) minmax(0,1fr);column-gap:1.25rem;padding-bottom:4rem}\n.qhw.qhw-tl .qhw-step > *{grid-column:2;min-width:0}\n.qhw.qhw-tl .qhw-step > .qhw-step__stop{grid-column:1;grid-row:1}\n.qhw.qhw-tl .qhw-step > .qhw-step__name{grid-row:1}\n.qhw.qhw-tl .qhw-step::before{content:\"\";position:absolute;left:calc(var(--dot) \/ 2 - 1.5px);top:calc(var(--dot) + .5rem);bottom:.5rem;width:3px;border-radius:2px;background:var(--volt);transform-origin:top}\n\/* step 04: the handover and the fix period are part of the job (solid line); only the support after it is optional (dashed tail) *\/\n.qhw.qhw-tl .qhw-step:last-child{padding-bottom:var(--tail)}\n.qhw.qhw-tl .qhw-step:last-child::before{bottom:var(--tail)}\n.qhw.qhw-tl .qhw-step:last-child::after{content:\"\";position:absolute;left:calc(var(--dot) \/ 2 - 1.5px);bottom:0;height:calc(var(--tail) - .375rem);width:3px;\n  background:repeating-linear-gradient(180deg,var(--volt) 0 6px,transparent 6px 12px);transform-origin:top}\n.qhw.qhw-tl .qhw-step > .qhw-step__gate{grid-column:auto;grid-row:auto}  \/* positioned against the whole step, not its grid column *\/\n.qhw.qhw-tl .qhw-step__gate{position:absolute;left:calc(var(--dot) + 1.25rem);bottom:1.5rem;font:500 .75rem\/1.3 var(--mono);letter-spacing:.02em;color:var(--mute);white-space:nowrap}\n.qhw.qhw-tl .qhw-step:last-child .qhw-step__gate{bottom:.875rem}\n.qhw.qhw-tl .qhw-step__stop{position:relative;height:var(--dot);display:flex;align-items:center}\n.qhw.qhw-tl .qhw-step__dot{position:relative;z-index:1;display:grid;place-items:center;width:var(--dot);height:var(--dot);border-radius:50%;background:var(--volt);color:var(--ink);\n  font:500 .875rem\/1 var(--mono);letter-spacing:0}\n.qhw.qhw-tl .qhw-step__name{align-self:center;font-size:clamp(1.875rem,1.1rem + 1.5vw,2.75rem);font-weight:500;line-height:1.05;letter-spacing:-.03em;color:var(--paper)}\n.qhw.qhw-tl .qhw-step__promise{margin-top:.75rem;max-width:32ch;font-size:clamp(1.0625rem,.98rem + .3vw,1.25rem);line-height:1.4;letter-spacing:-.01em;color:var(--paper);text-wrap:pretty}\n.qhw.qhw-tl .qhw-step__pic{margin-top:1.5rem;aspect-ratio:4\/3}\n.qhw.qhw-tl a.qhw-step__pic{display:block;color:inherit;text-decoration:none}\n.qhw.qhw-tl a.qhw-step__pic > img{transition:transform .7s cubic-bezier(.16,1,.3,1)}\n.qhw.qhw-tl a.qhw-step__pic:hover > img{transform:scale(1.035)}\n.qhw.qhw-tl a.qhw-step__pic .qhw-tag{display:inline-flex;align-items:center;gap:.4em}\n.qhw.qhw-tl a.qhw-step__pic .qhw-tag svg{width:1.1em;height:1.1em}\n.qhw.qhw-tl .qhw-step__k{font:500 .8125rem\/1.4 var(--mono);letter-spacing:.02em;color:var(--mute)}\n.qhw.qhw-tl .qhw-step__do{margin-top:1.5rem}\n.qhw.qhw-tl .qhw-step__do ul,.qhw.qhw-tl .qhw-step__get ul{display:grid;gap:.5rem;margin-top:.625rem}\n.qhw.qhw-tl .qhw-step__do li{position:relative;padding-left:1.125rem;font-size:1rem;line-height:1.5;color:var(--soft)}\n.qhw.qhw-tl .qhw-step__do li::before{content:\"\";position:absolute;left:0;top:.72em;width:.5rem;height:2px;background:var(--mute)}\n.qhw.qhw-tl .qhw-step__get{margin-top:1.25rem;padding:1rem 1.125rem 1.125rem;border-left:2px solid var(--volt);background:rgba(200,245,59,.06)}\n.qhw.qhw-tl .qhw-step__get .qhw-step__k{color:var(--volt)}\n.qhw.qhw-tl .qhw-step__get li{position:relative;padding-left:1.5rem;font-size:1rem;line-height:1.45;color:var(--paper)}\n.qhw.qhw-tl .qhw-step__get li::before{content:\"\";position:absolute;left:.1rem;top:.38em;width:.65rem;height:.36rem;border-left:2px solid var(--volt);border-bottom:2px solid var(--volt);transform:rotate(-45deg)}\n@media (min-width:40rem) and (max-width:74.99rem){\n  .qhw.qhw-tl .qhw-step{grid-template-columns:var(--dot) minmax(0,1fr) minmax(0,1fr)}\n  .qhw.qhw-tl .qhw-step > .qhw-step__name,.qhw.qhw-tl .qhw-step > .qhw-step__promise{grid-column:2\/-1}\n  .qhw.qhw-tl .qhw-step > .qhw-step__pic{grid-column:2;grid-row:3\/span 2;align-self:start}\n  .qhw.qhw-tl .qhw-step > .qhw-step__do{grid-column:3;grid-row:3}\n  .qhw.qhw-tl .qhw-step > .qhw-step__get{grid-column:3;grid-row:4;align-self:start}\n}\n@media (min-width:75rem){\n  .qhw.qhw-tl .qhw-tl__list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(6,auto);column-gap:var(--cg)}\n  .qhw.qhw-tl .qhw-step,.qhw.qhw-tl .qhw-step:last-child{grid-row:span 6;grid-template-rows:subgrid;grid-template-columns:minmax(0,1fr);padding:0}\n  .qhw.qhw-tl .qhw-step > *,.qhw.qhw-tl .qhw-step > .qhw-step__stop,.qhw.qhw-tl .qhw-step > .qhw-step__name{grid-column:1;grid-row:auto}\n  .qhw.qhw-tl .qhw-step::before,.qhw.qhw-tl .qhw-step:last-child::after{display:none}\n  \/* the line from one step to the next, with ruler ticks under it (the homepage's blueprint rulers) *\/\n  .qhw.qhw-tl .qhw-step__stop::after{content:\"\";position:absolute;left:calc(var(--dot) + .625rem);right:calc(-1 * var(--cg) + .625rem);top:50%;height:12px;margin-top:-1.5px;\n    background:linear-gradient(var(--volt),var(--volt)) 0 0\/100% 3px no-repeat,\n      repeating-linear-gradient(90deg,rgba(246,245,240,.3) 0 1px,transparent 1px 44px) 0 100%\/100% 7px no-repeat,\n      repeating-linear-gradient(90deg,rgba(246,245,240,.16) 0 1px,transparent 1px 11px) 0 100%\/100% 4px no-repeat;transform-origin:left}\n  .qhw.qhw-tl .qhw-step:last-child .qhw-step__stop::after{right:0;\n    background:repeating-linear-gradient(90deg,var(--volt) 0 10px,transparent 10px 18px) 0 0\/100% 3px no-repeat,\n      repeating-linear-gradient(90deg,rgba(246,245,240,.3) 0 1px,transparent 1px 44px) 0 100%\/100% 7px no-repeat,\n      repeating-linear-gradient(90deg,rgba(246,245,240,.16) 0 1px,transparent 1px 11px) 0 100%\/100% 4px no-repeat}\n  .qhw.qhw-tl .qhw-step__gate,.qhw.qhw-tl .qhw-step:last-child .qhw-step__gate{left:auto;right:0;bottom:auto;top:calc(var(--dot) \/ 2 - 1.625rem)}\n  .qhw.qhw-tl .qhw-step__name{margin-top:1.5rem;align-self:end}\n  .qhw.qhw-tl .qhw-step__promise{align-self:start}\n  .qhw.qhw-tl .qhw-step__get{align-self:stretch}\n}\n@media screen and (prefers-reduced-motion:no-preference){\n  .qhw.qhw-tl.qhw-js .qhw-step__dot{transition:transform .5s cubic-bezier(.34,1.56,.64,1) calc(var(--i) * .22s),opacity .3s ease calc(var(--i) * .22s)}\n  .qhw.qhw-tl.qhw-js .qhw-step::before,.qhw.qhw-tl.qhw-js .qhw-step::after,.qhw.qhw-tl.qhw-js .qhw-step__stop::after{transition:transform .8s cubic-bezier(.65,0,.35,1) calc(var(--i) * .22s + .15s)}\n  .qhw.qhw-tl.qhw-js .qhw-step > :not(.qhw-step__stop){transition:opacity .6s ease calc(var(--i) * .22s + .1s),transform .9s cubic-bezier(.16,1,.3,1) calc(var(--i) * .22s + .1s)}\n  .qhw.qhw-tl.qhw-js .qhw-tl__list:not(.is-in) .qhw-step__dot{transform:scale(.3);opacity:0}\n  .qhw.qhw-tl.qhw-js .qhw-tl__list:not(.is-in) .qhw-step::before,.qhw.qhw-tl.qhw-js .qhw-tl__list:not(.is-in) .qhw-step::after{transform:scaleY(0)}\n  .qhw.qhw-tl.qhw-js .qhw-tl__list:not(.is-in) .qhw-step__stop::after{transform:scaleX(0)}\n  .qhw.qhw-tl.qhw-js .qhw-tl__list:not(.is-in) .qhw-step > :not(.qhw-step__stop){opacity:0;transform:translate3d(0,18px,0)}\n}\n<\/style>\n<section class=\"qhw qhw-tl\" id=\"steps\" aria-labelledby=\"qhw-tl-h\">\n  <div class=\"qhw-wrap\">\n    <div class=\"qhw-head\"><div><p class=\"qhw-label\"><span aria-hidden=\"true\">\/\/ <\/span>The four steps<\/p><h2 class=\"qhw-h2\" id=\"qhw-tl-h\">How we work, step by step<\/h2><\/div><div class=\"qhw-head__intro\"><p>Every project follows the same four steps, whether it is a one-page website or a system for the whole company. At each step, you know what happens and what you get.<\/p><\/div><\/div>\n    <ol class=\"qhw-tl__list\">\n    <li class=\"qhw-step\" style=\"--i:0\">\n      <div class=\"qhw-step__stop\" aria-hidden=\"true\"><span class=\"qhw-step__dot\">01<\/span><\/div>\n      <h3 class=\"qhw-step__name\"><span class=\"qhw-sr\">Step 1: <\/span>Listen<\/h3>\n      <p class=\"qhw-step__promise\">We learn how your business runs before we suggest anything.<\/p>\n      <div class=\"qhw-pic qhw-step__pic\"><img loading=\"lazy\" src=\"https:\/\/qcoders.com\/wp-content\/uploads\/2026\/10\/qc-ui-phone-held-first-message-close-r133.webp\" width=\"1600\" height=\"1203\" loading=\"lazy\" decoding=\"async\" style=\"object-position:50% 74%\" alt=\"A WhatsApp chat with Qcoders: a first message, a voice note and a call set for tomorrow\"><span class=\"qhw-tag\" aria-hidden=\"true\">\/\/ a first message<\/span><\/div>\n      <div class=\"qhw-step__do\"><p class=\"qhw-step__k\"><span aria-hidden=\"true\">\/\/ <\/span>What happens<\/p><ul><li>You send a few lines or a voice note on WhatsApp.<\/li><li>We reply with a few questions, then set up a short call.<\/li><li>During the call, you tell us how orders, stock, customers and staff move today.<\/li><\/ul><\/div>\n      <div class=\"qhw-step__get\"><p class=\"qhw-step__k\"><span aria-hidden=\"true\">\/\/ <\/span>You get<\/p><ul><li>Our honest first reading of the problem, in plain words.<\/li><li>A free first call, with no obligation to continue.<\/li><\/ul><\/div>\n      <p class=\"qhw-step__gate\" aria-hidden=\"true\">\/\/ after the free call<\/p>\n    <\/li>\n    <li class=\"qhw-step\" style=\"--i:1\">\n      <div class=\"qhw-step__stop\" aria-hidden=\"true\"><span class=\"qhw-step__dot\">02<\/span><\/div>\n      <h3 class=\"qhw-step__name\"><span class=\"qhw-sr\">Step 2: <\/span>Decide<\/h3>\n      <p class=\"qhw-step__promise\">You see the plan, the cost and the timeline before any work starts.<\/p>\n      <div class=\"qhw-pic qhw-step__pic\"><img loading=\"lazy\" src=\"https:\/\/qcoders.com\/wp-content\/uploads\/2026\/10\/qc-ui-two-partners-reading-proposal-r133.webp\" width=\"1600\" height=\"1203\" loading=\"lazy\" decoding=\"async\" style=\"object-position:62% 40%\" alt=\"A written plan with a fixed price for each stage, and free fixes after launch\"><span class=\"qhw-tag\" aria-hidden=\"true\">\/\/ the written proposal<\/span><\/div>\n      <div class=\"qhw-step__do\"><p class=\"qhw-step__k\"><span aria-hidden=\"true\">\/\/ <\/span>What happens<\/p><ul><li>We check if a ready-made tool is enough. If it is, we tell you.<\/li><li>If it isn't, we plan what to build first and what can wait.<\/li><li>You read the proposal and ask questions. Then we agree on it together.<\/li><\/ul><\/div>\n      <div class=\"qhw-step__get\"><p class=\"qhw-step__k\"><span aria-hidden=\"true\">\/\/ <\/span>You get<\/p><ul><li>A written proposal with the scope, stages, cost and timeline.<\/li><li>A fixed price for each stage, based on the agreed scope.<\/li><\/ul><\/div>\n      <p class=\"qhw-step__gate\" aria-hidden=\"true\">\/\/ once we agree on the plan<\/p>\n    <\/li>\n    <li class=\"qhw-step\" style=\"--i:2\">\n      <div class=\"qhw-step__stop\" aria-hidden=\"true\"><span class=\"qhw-step__dot\">03<\/span><\/div>\n      <h3 class=\"qhw-step__name\"><span class=\"qhw-sr\">Step 3: <\/span>Build<\/h3>\n      <p class=\"qhw-step__promise\">We build in stages, so you see progress as we go.<\/p>\n      <a class=\"qhw-pic qhw-step__pic\" href=\"\/work\/booking-system\/\" aria-label=\"See the booking system project\"><img loading=\"lazy\" src=\"https:\/\/qcoders.com\/wp-content\/uploads\/2026\/10\/qc-ui-hands-laptop-booking-calendar-r133.webp\" width=\"1600\" height=\"1203\" loading=\"lazy\" decoding=\"async\" style=\"object-position:62% 50%\" alt=\"The online booking page of the booking system on a laptop\"><span class=\"qhw-tag\" aria-hidden=\"true\">\/\/ booking-system<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/span><\/a>\n      <div class=\"qhw-step__do\"><p class=\"qhw-step__k\"><span aria-hidden=\"true\">\/\/ <\/span>What happens<\/p><ul><li>Each stage ends with something that works.<\/li><li>Then you try it on your own phone or laptop and tell us what feels wrong.<\/li><li>We change it before the next stage, so a wrong turn is caught early.<\/li><\/ul><\/div>\n      <div class=\"qhw-step__get\"><p class=\"qhw-step__k\"><span aria-hidden=\"true\">\/\/ <\/span>You get<\/p><ul><li>Working software at the end of every stage.<\/li><li>Short updates you can read in a minute, in English, Arabic or Turkish.<\/li><\/ul><\/div>\n      <p class=\"qhw-step__gate\" aria-hidden=\"true\">\/\/ at launch<\/p>\n    <\/li>\n    <li class=\"qhw-step\" style=\"--i:3\">\n      <div class=\"qhw-step__stop\" aria-hidden=\"true\"><span class=\"qhw-step__dot\">04<\/span><\/div>\n      <h3 class=\"qhw-step__name\"><span class=\"qhw-sr\">Step 4: <\/span>Stay<\/h3>\n      <p class=\"qhw-step__promise\">We hand it over, train your team, and stay if you want us to.<\/p>\n      <div class=\"qhw-pic qhw-step__pic\"><img loading=\"lazy\" src=\"https:\/\/qcoders.com\/wp-content\/uploads\/2026\/10\/qc-ui-clinic-two-staff-tablet-r133.webp\" width=\"1600\" height=\"1203\" loading=\"lazy\" decoding=\"async\" style=\"object-position:56% 35%\" alt=\"WhatsApp reminder settings of the booking system on a tablet and the client's upcoming visit on a phone\"><span class=\"qhw-tag\" aria-hidden=\"true\">\/\/ training your team<\/span><\/div>\n      <div class=\"qhw-step__do\"><p class=\"qhw-step__k\"><span aria-hidden=\"true\">\/\/ <\/span>What happens<\/p><ul><li>When the system is ready, we hand it over and train your team to use it.<\/li><li>For a period agreed in the proposal, we fix bugs in what we built at no extra cost.<\/li><li>Then, if you want, a support plan covers hosting, updates and fixes.<\/li><\/ul><\/div>\n      <div class=\"qhw-step__get\"><p class=\"qhw-step__k\"><span aria-hidden=\"true\">\/\/ <\/span>You get<\/p><ul><li>A team that knows the system.<\/li><li>The code, design files and accounts, yours after the final payment.<\/li><\/ul><\/div>\n      <p class=\"qhw-step__gate\" aria-hidden=\"true\">\/\/ optional support<\/p>\n    <\/li>\n    <\/ol>\n  <\/div>\n<\/section>\n<script>(function(){document.querySelectorAll('.qhw-tl:not([data-qhw])').forEach(function(s){s.setAttribute('data-qhw','1');\nvar l=s.querySelector('.qhw-tl__list');if(!l||!('IntersectionObserver' in window)||(window.matchMedia&&matchMedia('(prefers-reduced-motion: reduce)').matches)||document.body.classList.contains('elementor-editor-active'))return;\ns.classList.add('qhw-js');var io=new IntersectionObserver(function(es){es.forEach(function(e){if(e.isIntersecting){l.classList.add('is-in');io.disconnect();}});},{threshold:0.12});io.observe(l);});})();<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-680b43e3 e-con-full elementor-hidden-mobile e-flex e-con e-parent\" data-id=\"680b43e3\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-38f57e15 elementor-widget elementor-widget-html\" data-id=\"38f57e15\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- How we work (direction A), section 3: the Volt band right after the four steps, the page's one promise.\n     One Elementor HTML widget (container: full width, padding 0, gap 0, no motion effects). Generated by website\/v2\/how-we-work-a\/build.py: edit the words there, then run the build. -->\n<style>\n.qhw{--ink:#0A0E17;--step:#131A27;--raise:#161D2C;--line:#273044;--paper:#F6F5F0;--soft:#C9CED8;--mute:#9AA3B2;\n  --volt:#C8F53B;--volt-hi:#D6F86B;--m:clamp(1rem,.4rem + 2vw,2rem);--max:100rem;--gut:clamp(.75rem,.4rem + 1.2vw,1.5rem);\n  --sans:\"Readex Pro\",\"Segoe UI\",Tahoma,system-ui,sans-serif;--mono:\"JetBrains Mono\",Consolas,\"Courier New\",monospace;\n  --t-head:clamp(2rem,1.45rem + 2.3vw,3.5rem);--t-lead:clamp(1.1875rem,1.05rem + .45vw,1.5rem);\n  --t-body:clamp(1rem,.96rem + .12vw,1.0625rem);--sec:clamp(4rem,2.5rem + 3.5vw,6rem);--hdr:76px;\n  display:block;position:relative;margin:0;padding:var(--sec) 0;background:var(--bg,#0A0E17);color:var(--paper);\n  font-family:var(--sans);font-size:var(--t-body);font-weight:400;line-height:1.55;letter-spacing:normal;text-align:left;\n  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:clip;scroll-margin-top:var(--hdr)}\n@media (max-width:767px){.qhw{--hdr:64px}}\n.qhw *,.qhw *::before,.qhw *::after{box-sizing:border-box}\n.qhw :is(h1,h2,h3,h4,p,ul,ol,li,figure,blockquote){margin:0;padding:0;font-family:inherit;color:inherit;font-style:normal;text-transform:none;word-spacing:normal}\n.qhw :is(ul,ol){list-style:none}\n.qhw :is(p,li){text-wrap:pretty}\n.qhw img{display:block;max-width:100%;height:auto;border:0;border-radius:0;box-shadow:none}\n.qhw svg{display:block;flex:none}\n.qhw ::selection{background:var(--volt);color:var(--ink)}\n.qhw .qhw-wrap{width:100%;max-width:var(--max);margin-inline:auto;padding-inline:var(--m)}\n.qhw .qhw-label{font-family:var(--mono);font-size:.875rem;font-weight:500;line-height:1.4;letter-spacing:.02em;color:var(--volt)}\n.qhw .qhw-h2{margin-top:1rem;font-size:var(--t-head);font-weight:500;line-height:1.04;letter-spacing:-.03em;color:var(--paper);text-wrap:balance}\n.qhw .qhw-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}\n.qhw .qhw-head{display:grid;gap:1.25rem}\n.qhw .qhw-head__intro{max-width:46ch;color:var(--mute);text-wrap:pretty}\n.qhw .qhw-head__intro > * + *{margin-top:.75rem}\n@media (min-width:60rem){\n  .qhw .qhw-head{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gut);align-items:end}\n  .qhw .qhw-head > :first-child{grid-column:1\/span 7}\n  .qhw .qhw-head__intro{grid-column:9\/-1}\n}\n.qhw a.qhw-btn{display:inline-flex;align-items:center;justify-content:center;gap:.6em;min-height:3.25rem;padding:0 1.75rem;border:0;border-radius:999px;\n  background:var(--volt);color:var(--ink);font:500 var(--t-body)\/1 var(--sans);letter-spacing:-.005em;text-decoration:none;white-space:nowrap;\n  transition:background-color .2s ease,transform .15s ease;-webkit-tap-highlight-color:transparent}\n.qhw a.qhw-btn svg{width:1.2em;height:1.2em}\n.qhw a.qhw-btn:hover{background:var(--volt-hi);color:var(--ink)}\n.qhw a.qhw-btn:active{transform:scale(.97)}\n.qhw a.qhw-link{color:var(--volt);font-weight:400;text-decoration:underline;text-decoration-thickness:.07em;text-underline-offset:.22em}\n.qhw a.qhw-link:hover{color:var(--volt);text-decoration-thickness:.14em}\n.qhw a:focus-visible{outline:3px solid var(--volt);outline-offset:3px}\n.qhw .qhw-actions{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 2rem}\n.qhw .qhw-pic{position:relative;overflow:hidden;background:var(--raise)}\n.qhw .qhw-pic > img{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:cover}\n.qhw .qhw-tag{position:absolute;left:.75rem;top:.75rem;z-index:2;padding:.3rem .55rem;border-radius:4px;background:rgba(10,14,23,.86);\n  color:var(--volt);font:500 .75rem\/1.3 var(--mono);letter-spacing:.02em}\n\n.qhw.qhw-promise{--bg:var(--volt);color:var(--ink);padding-block:clamp(3.5rem,2rem + 3.5vw,6rem)}\n.qhw.qhw-promise ::selection{background:var(--ink);color:var(--volt)}\n.qhw.qhw-promise .qhw-label{color:var(--ink);opacity:.72}\n.qhw.qhw-promise .qhw-promise__grid{display:grid;gap:1.5rem}\n.qhw.qhw-promise .qhw-promise__say{margin-top:.75rem;font-size:clamp(2.5rem,1.2rem + 4vw,5rem);font-weight:500;line-height:1;letter-spacing:-.035em;color:var(--ink);text-wrap:balance}\n.qhw.qhw-promise .qhw-nowrap{white-space:nowrap}\n\/* the homepage's block cursor, in Ink on Volt: it blinks three times, then stays *\/\n.qhw.qhw-promise .qhw-cursor{display:inline-block;width:.42em;height:.78em;margin-left:.1em;vertical-align:-.04em;border-radius:3px;background:var(--ink)}\n.qhw.qhw-promise .qhw-promise__more{max-width:30ch;text-wrap:pretty;font-size:var(--t-lead);line-height:1.35;letter-spacing:-.01em;color:var(--ink)}\n@media (min-width:60rem){\n  .qhw.qhw-promise .qhw-promise__grid{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gut);align-items:end}\n  .qhw.qhw-promise .qhw-promise__grid > :first-child{grid-column:1\/span 7}\n  .qhw.qhw-promise .qhw-promise__more{grid-column:9\/-1}\n}\n@media screen and (prefers-reduced-motion:no-preference){\n  .qhw.qhw-promise .qhw-cursor{animation:qhw-blink 1.1s steps(1) .8s 3}\n}\n@keyframes qhw-blink{50%{opacity:0}}\n<\/style>\n<section class=\"qhw qhw-promise\">\n  <div class=\"qhw-wrap qhw-promise__grid\">\n    <div><p class=\"qhw-label\"><span aria-hidden=\"true\">\/\/ <\/span>Our promise<\/p><p class=\"qhw-promise__say\">No surprises at the <span class=\"qhw-nowrap\">end.<span class=\"qhw-cursor\" aria-hidden=\"true\"><\/span><\/span><\/p><\/div>\n    <p class=\"qhw-promise__more\">You'll know the scope, the stages, the cost and the timeline before we write a line of code.<\/p>\n  <\/div>\n<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-719ba0c9 e-con-full elementor-hidden-mobile e-flex e-con e-parent\" data-id=\"719ba0c9\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5002246a elementor-widget elementor-widget-html\" data-id=\"5002246a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- How we work (direction A), section 4: questions people ask before starting, on Ink. Short answers from the FAQ, each linking to that question on the FAQ page.\n     One Elementor HTML widget (container: full width, padding 0, gap 0, no motion effects). Generated by website\/v2\/how-we-work-a\/build.py: edit the words there, then run the build. -->\n<style>\n.qhw{--ink:#0A0E17;--step:#131A27;--raise:#161D2C;--line:#273044;--paper:#F6F5F0;--soft:#C9CED8;--mute:#9AA3B2;\n  --volt:#C8F53B;--volt-hi:#D6F86B;--m:clamp(1rem,.4rem + 2vw,2rem);--max:100rem;--gut:clamp(.75rem,.4rem + 1.2vw,1.5rem);\n  --sans:\"Readex Pro\",\"Segoe UI\",Tahoma,system-ui,sans-serif;--mono:\"JetBrains Mono\",Consolas,\"Courier New\",monospace;\n  --t-head:clamp(2rem,1.45rem + 2.3vw,3.5rem);--t-lead:clamp(1.1875rem,1.05rem + .45vw,1.5rem);\n  --t-body:clamp(1rem,.96rem + .12vw,1.0625rem);--sec:clamp(4rem,2.5rem + 3.5vw,6rem);--hdr:76px;\n  display:block;position:relative;margin:0;padding:var(--sec) 0;background:var(--bg,#0A0E17);color:var(--paper);\n  font-family:var(--sans);font-size:var(--t-body);font-weight:400;line-height:1.55;letter-spacing:normal;text-align:left;\n  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:clip;scroll-margin-top:var(--hdr)}\n@media (max-width:767px){.qhw{--hdr:64px}}\n.qhw *,.qhw *::before,.qhw *::after{box-sizing:border-box}\n.qhw :is(h1,h2,h3,h4,p,ul,ol,li,figure,blockquote){margin:0;padding:0;font-family:inherit;color:inherit;font-style:normal;text-transform:none;word-spacing:normal}\n.qhw :is(ul,ol){list-style:none}\n.qhw :is(p,li){text-wrap:pretty}\n.qhw img{display:block;max-width:100%;height:auto;border:0;border-radius:0;box-shadow:none}\n.qhw svg{display:block;flex:none}\n.qhw ::selection{background:var(--volt);color:var(--ink)}\n.qhw .qhw-wrap{width:100%;max-width:var(--max);margin-inline:auto;padding-inline:var(--m)}\n.qhw .qhw-label{font-family:var(--mono);font-size:.875rem;font-weight:500;line-height:1.4;letter-spacing:.02em;color:var(--volt)}\n.qhw .qhw-h2{margin-top:1rem;font-size:var(--t-head);font-weight:500;line-height:1.04;letter-spacing:-.03em;color:var(--paper);text-wrap:balance}\n.qhw .qhw-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}\n.qhw .qhw-head{display:grid;gap:1.25rem}\n.qhw .qhw-head__intro{max-width:46ch;color:var(--mute);text-wrap:pretty}\n.qhw .qhw-head__intro > * + *{margin-top:.75rem}\n@media (min-width:60rem){\n  .qhw .qhw-head{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gut);align-items:end}\n  .qhw .qhw-head > :first-child{grid-column:1\/span 7}\n  .qhw .qhw-head__intro{grid-column:9\/-1}\n}\n.qhw a.qhw-btn{display:inline-flex;align-items:center;justify-content:center;gap:.6em;min-height:3.25rem;padding:0 1.75rem;border:0;border-radius:999px;\n  background:var(--volt);color:var(--ink);font:500 var(--t-body)\/1 var(--sans);letter-spacing:-.005em;text-decoration:none;white-space:nowrap;\n  transition:background-color .2s ease,transform .15s ease;-webkit-tap-highlight-color:transparent}\n.qhw a.qhw-btn svg{width:1.2em;height:1.2em}\n.qhw a.qhw-btn:hover{background:var(--volt-hi);color:var(--ink)}\n.qhw a.qhw-btn:active{transform:scale(.97)}\n.qhw a.qhw-link{color:var(--volt);font-weight:400;text-decoration:underline;text-decoration-thickness:.07em;text-underline-offset:.22em}\n.qhw a.qhw-link:hover{color:var(--volt);text-decoration-thickness:.14em}\n.qhw a:focus-visible{outline:3px solid var(--volt);outline-offset:3px}\n.qhw .qhw-actions{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 2rem}\n.qhw .qhw-pic{position:relative;overflow:hidden;background:var(--raise)}\n.qhw .qhw-pic > img{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:cover}\n.qhw .qhw-tag{position:absolute;left:.75rem;top:.75rem;z-index:2;padding:.3rem .55rem;border-radius:4px;background:rgba(10,14,23,.86);\n  color:var(--volt);font:500 .75rem\/1.3 var(--mono);letter-spacing:.02em}\n\n.qhw.qhw-qa{--bg:var(--ink)}\n.qhw.qhw-qa .qhw-qa__grid{display:grid;gap:var(--gut);margin-top:clamp(2.5rem,1.5rem + 2.5vw,4rem)}\n@media (min-width:48rem){.qhw.qhw-qa .qhw-qa__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}\n.qhw.qhw-qa .qhw-q{display:flex;flex-direction:column;padding:clamp(1.5rem,1rem + 1.3vw,2.5rem);background:var(--step);border-top:2px solid var(--line)}\n.qhw.qhw-qa .qhw-q__tag{font:500 .8125rem\/1.4 var(--mono);letter-spacing:.02em;color:var(--volt)}\n.qhw.qhw-qa .qhw-q__q{margin-top:.75rem;font-size:clamp(1.375rem,1.15rem + .6vw,1.75rem);font-weight:500;line-height:1.2;letter-spacing:-.02em;color:var(--paper);text-wrap:balance}\n.qhw.qhw-qa .qhw-q__a{margin-top:.875rem;max-width:54ch;color:var(--soft);text-wrap:pretty}\n.qhw.qhw-qa a.qhw-q__more{display:inline-flex;align-items:center;gap:.5rem;align-self:flex-start;margin-top:auto;padding-top:1.5rem;\n  color:var(--volt);font:500 .875rem\/1.4 var(--mono);letter-spacing:.01em;text-decoration:none}\n.qhw.qhw-qa a.qhw-q__more:hover{color:var(--volt);text-decoration:underline;text-underline-offset:.25em}\n.qhw.qhw-qa a.qhw-q__more svg{width:1rem;height:1rem;transition:transform .2s ease}\n.qhw.qhw-qa a.qhw-q__more:hover svg{transform:translateX(3px)}\n<\/style>\n<section class=\"qhw qhw-qa\" id=\"before-you-start\" aria-labelledby=\"qhw-qa-h\">\n  <div class=\"qhw-wrap\">\n    <div class=\"qhw-head\"><div><p class=\"qhw-label\"><span aria-hidden=\"true\">\/\/ <\/span>Before you start<\/p><h2 class=\"qhw-h2\" id=\"qhw-qa-h\">Questions people ask before starting<\/h2><\/div><div class=\"qhw-head__intro\"><p>Short answers about cost, time, changes and stopping. You'll find more on our FAQ page.<\/p><p><a class=\"qhw-link\" href=\"\/faq\/\">Read the FAQ<\/a><\/p><\/div><\/div>\n    <div class=\"qhw-qa__grid\">\n      <article class=\"qhw-q\">\n        <p class=\"qhw-q__tag\"><span aria-hidden=\"true\">\/\/ <\/span>Cost to start<\/p>\n        <h3 class=\"qhw-q__q\">What does it cost to start?<\/h3>\n        <p class=\"qhw-q__a\">Nothing. The first call is free, with no obligation to continue. There's no minimum project size.<\/p>\n        <a class=\"qhw-q__more\" href=\"\/faq\/#how-do-i-start-is-the-first-call-free\">More about the first call<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/a>\n      <\/article>\n      <article class=\"qhw-q\">\n        <p class=\"qhw-q__tag\"><span aria-hidden=\"true\">\/\/ <\/span>Time<\/p>\n        <h3 class=\"qhw-q__q\">How long will it take?<\/h3>\n        <p class=\"qhw-q__a\">It depends on the scope: how many screens and users, and which tools we connect. So the proposal gives a timeline for each stage. If something may take longer, we tell you early and explain why.<\/p>\n        <a class=\"qhw-q__more\" href=\"\/faq\/#how-long-does-a-software-project-take\">More on how long it takes<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/a>\n      <\/article>\n      <article class=\"qhw-q\">\n        <p class=\"qhw-q__tag\"><span aria-hidden=\"true\">\/\/ <\/span>Changes<\/p>\n        <h3 class=\"qhw-q__q\">What if we want to change something?<\/h3>\n        <p class=\"qhw-q__a\">You can give feedback at every stage, not only at the end. If you want something outside the agreed scope, we give you a price for it before we start. If the plan itself needs to change, we explain why and agree on it with you first.<\/p>\n        <a class=\"qhw-q__more\" href=\"\/faq\/#do-you-work-on-a-fixed-price-or-by-the-hour\">More on fixed prices<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/a>\n      <\/article>\n      <article class=\"qhw-q\">\n        <p class=\"qhw-q__tag\"><span aria-hidden=\"true\">\/\/ <\/span>Stopping<\/p>\n        <h3 class=\"qhw-q__q\">What if we want to stop?<\/h3>\n        <p class=\"qhw-q__a\">You can stop at the end of any stage. If you stop, you pay only for the work done so far, and we hand it over to you.<\/p>\n        <a class=\"qhw-q__more\" href=\"\/faq\/#what-if-we-want-to-stop-the-software-project\">More on stopping a project<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/a>\n      <\/article>\n    <\/div>\n  <\/div>\n<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1ced72c6 e-con-full elementor-hidden-mobile e-flex e-con e-parent\" data-id=\"1ced72c6\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3c25666 elementor-widget elementor-widget-html\" data-id=\"3c25666\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- How we work (direction A), section 5: tech stack on the step ground, 6 groups, 32 tools from website\/elementor\/make_extra.py TECH (checked there against the case studies).\n     One Elementor HTML widget (container: full width, padding 0, gap 0, no motion effects). Generated by website\/v2\/how-we-work-a\/build.py: edit the words there, then run the build. -->\n<style>\n.qhw{--ink:#0A0E17;--step:#131A27;--raise:#161D2C;--line:#273044;--paper:#F6F5F0;--soft:#C9CED8;--mute:#9AA3B2;\n  --volt:#C8F53B;--volt-hi:#D6F86B;--m:clamp(1rem,.4rem + 2vw,2rem);--max:100rem;--gut:clamp(.75rem,.4rem + 1.2vw,1.5rem);\n  --sans:\"Readex Pro\",\"Segoe UI\",Tahoma,system-ui,sans-serif;--mono:\"JetBrains Mono\",Consolas,\"Courier New\",monospace;\n  --t-head:clamp(2rem,1.45rem + 2.3vw,3.5rem);--t-lead:clamp(1.1875rem,1.05rem + .45vw,1.5rem);\n  --t-body:clamp(1rem,.96rem + .12vw,1.0625rem);--sec:clamp(4rem,2.5rem + 3.5vw,6rem);--hdr:76px;\n  display:block;position:relative;margin:0;padding:var(--sec) 0;background:var(--bg,#0A0E17);color:var(--paper);\n  font-family:var(--sans);font-size:var(--t-body);font-weight:400;line-height:1.55;letter-spacing:normal;text-align:left;\n  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:clip;scroll-margin-top:var(--hdr)}\n@media (max-width:767px){.qhw{--hdr:64px}}\n.qhw *,.qhw *::before,.qhw *::after{box-sizing:border-box}\n.qhw :is(h1,h2,h3,h4,p,ul,ol,li,figure,blockquote){margin:0;padding:0;font-family:inherit;color:inherit;font-style:normal;text-transform:none;word-spacing:normal}\n.qhw :is(ul,ol){list-style:none}\n.qhw :is(p,li){text-wrap:pretty}\n.qhw img{display:block;max-width:100%;height:auto;border:0;border-radius:0;box-shadow:none}\n.qhw svg{display:block;flex:none}\n.qhw ::selection{background:var(--volt);color:var(--ink)}\n.qhw .qhw-wrap{width:100%;max-width:var(--max);margin-inline:auto;padding-inline:var(--m)}\n.qhw .qhw-label{font-family:var(--mono);font-size:.875rem;font-weight:500;line-height:1.4;letter-spacing:.02em;color:var(--volt)}\n.qhw .qhw-h2{margin-top:1rem;font-size:var(--t-head);font-weight:500;line-height:1.04;letter-spacing:-.03em;color:var(--paper);text-wrap:balance}\n.qhw .qhw-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}\n.qhw .qhw-head{display:grid;gap:1.25rem}\n.qhw .qhw-head__intro{max-width:46ch;color:var(--mute);text-wrap:pretty}\n.qhw .qhw-head__intro > * + *{margin-top:.75rem}\n@media (min-width:60rem){\n  .qhw .qhw-head{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gut);align-items:end}\n  .qhw .qhw-head > :first-child{grid-column:1\/span 7}\n  .qhw .qhw-head__intro{grid-column:9\/-1}\n}\n.qhw a.qhw-btn{display:inline-flex;align-items:center;justify-content:center;gap:.6em;min-height:3.25rem;padding:0 1.75rem;border:0;border-radius:999px;\n  background:var(--volt);color:var(--ink);font:500 var(--t-body)\/1 var(--sans);letter-spacing:-.005em;text-decoration:none;white-space:nowrap;\n  transition:background-color .2s ease,transform .15s ease;-webkit-tap-highlight-color:transparent}\n.qhw a.qhw-btn svg{width:1.2em;height:1.2em}\n.qhw a.qhw-btn:hover{background:var(--volt-hi);color:var(--ink)}\n.qhw a.qhw-btn:active{transform:scale(.97)}\n.qhw a.qhw-link{color:var(--volt);font-weight:400;text-decoration:underline;text-decoration-thickness:.07em;text-underline-offset:.22em}\n.qhw a.qhw-link:hover{color:var(--volt);text-decoration-thickness:.14em}\n.qhw a:focus-visible{outline:3px solid var(--volt);outline-offset:3px}\n.qhw .qhw-actions{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 2rem}\n.qhw .qhw-pic{position:relative;overflow:hidden;background:var(--raise)}\n.qhw .qhw-pic > img{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:cover}\n.qhw .qhw-tag{position:absolute;left:.75rem;top:.75rem;z-index:2;padding:.3rem .55rem;border-radius:4px;background:rgba(10,14,23,.86);\n  color:var(--volt);font:500 .75rem\/1.3 var(--mono);letter-spacing:.02em}\n\n.qhw.qhw-tech{--bg:var(--step)}\n.qhw.qhw-tech .qhw-tech__groups{display:grid;gap:var(--gut);margin-top:clamp(2.5rem,1.5rem + 2.5vw,4rem)}\n@media (min-width:40rem){.qhw.qhw-tech .qhw-tech__groups{grid-template-columns:repeat(2,minmax(0,1fr))}}\n@media (min-width:64rem){.qhw.qhw-tech .qhw-tech__groups{grid-template-columns:repeat(3,minmax(0,1fr))}}\n.qhw.qhw-tech .qhw-tech__group{display:block;padding:clamp(1.5rem,1.1rem + 1vw,2rem);background:var(--ink);border:1px solid var(--line)}\n.qhw.qhw-tech .qhw-tech__name{font-size:1.375rem;font-weight:500;line-height:1.2;letter-spacing:-.015em;color:var(--paper)}\n.qhw.qhw-tech .qhw-tech__line{margin-top:.5rem;font-size:.9375rem;line-height:1.5;color:var(--mute)}\n.qhw.qhw-tech .qhw-chips{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.25rem}\n.qhw.qhw-tech .qhw-chips li{padding:.45rem .8rem;border:1px solid #343F55;border-radius:999px;background:rgba(246,245,240,.03);font-size:.9375rem;line-height:1.25;color:var(--paper)}\n<\/style>\n<section class=\"qhw qhw-tech\" id=\"tech-stack\" aria-labelledby=\"qhw-tech-h\">\n  <div class=\"qhw-wrap\">\n    <div class=\"qhw-head\"><div><p class=\"qhw-label\"><span aria-hidden=\"true\">\/\/ <\/span>Tech stack<\/p><h2 class=\"qhw-h2\" id=\"qhw-tech-h\">Technologies we work with<\/h2><\/div><div class=\"qhw-head__intro\"><p>We choose the tools for each project based on what it needs, not on trends. They include the tools behind the projects on our work page.<\/p><p><a class=\"qhw-link\" href=\"\/work\/\">See our work<\/a><\/p><\/div><\/div>\n    <ul class=\"qhw-tech__groups\">\n      <li class=\"qhw-tech__group\">\n        <h3 class=\"qhw-tech__name\" id=\"qhw-tech-web\">Web<\/h3>\n        <p class=\"qhw-tech__line\">Websites, online stores and admin screens that work on phone and desktop. We design in Figma, and build on WordPress or Shopify when a ready-made platform fits better.<\/p>\n        <ul class=\"qhw-chips\" aria-labelledby=\"qhw-tech-web\"><li>Next.js<\/li><li>React<\/li><li>TypeScript<\/li><li>WordPress<\/li><li>Shopify<\/li><li>Figma (design)<\/li><\/ul>\n      <\/li>\n      <li class=\"qhw-tech__group\">\n        <h3 class=\"qhw-tech__name\" id=\"qhw-tech-backend-and-data\">Backend and data<\/h3>\n        <p class=\"qhw-tech__line\">The engine behind your system: data, search, queues and live updates.<\/p>\n        <ul class=\"qhw-chips\" aria-labelledby=\"qhw-tech-backend-and-data\"><li>Laravel (PHP)<\/li><li>Python (FastAPI)<\/li><li>PostgreSQL<\/li><li>PostGIS<\/li><li>Redis<\/li><li>WebSockets<\/li><li>Meilisearch<\/li><\/ul>\n      <\/li>\n      <li class=\"qhw-tech__group\">\n        <h3 class=\"qhw-tech__name\" id=\"qhw-tech-integrations\">Integrations<\/h3>\n        <p class=\"qhw-tech__line\">Connections to the tools your business already uses.<\/p>\n        <ul class=\"qhw-chips\" aria-labelledby=\"qhw-tech-integrations\"><li>WhatsApp Business API<\/li><li>SMS gateways<\/li><li>Stripe<\/li><li>Paymob<\/li><li>Courier and shipping APIs<\/li><li>Google Maps Platform<\/li><li>Mapbox<\/li><li>Cloud phone (VoIP)<\/li><li>Calendar files (ICS)<\/li><\/ul>\n      <\/li>\n      <li class=\"qhw-tech__group\">\n        <h3 class=\"qhw-tech__name\" id=\"qhw-tech-mobile\">Mobile<\/h3>\n        <p class=\"qhw-tech__line\">Apps for Android and iPhone from one set of code, including push notifications and camera barcode scanning.<\/p>\n        <ul class=\"qhw-chips\" aria-labelledby=\"qhw-tech-mobile\"><li>Flutter<\/li><li>Firebase Cloud Messaging<\/li><li>Camera barcode scanning<\/li><\/ul>\n      <\/li>\n      <li class=\"qhw-tech__group\">\n        <h3 class=\"qhw-tech__name\" id=\"qhw-tech-ai\">AI<\/h3>\n        <p class=\"qhw-tech__line\">Assistants that answer from your own files, pull text out of documents and summarize calls.<\/p>\n        <ul class=\"qhw-chips\" aria-labelledby=\"qhw-tech-ai\"><li>OpenAI API<\/li><li>Claude API<\/li><li>pgvector<\/li><li>Tesseract OCR<\/li><\/ul>\n      <\/li>\n      <li class=\"qhw-tech__group\">\n        <h3 class=\"qhw-tech__name\" id=\"qhw-tech-cloud\">Cloud<\/h3>\n        <p class=\"qhw-tech__line\">Hosting, deployment and backups, so your system keeps running.<\/p>\n        <ul class=\"qhw-chips\" aria-labelledby=\"qhw-tech-cloud\"><li>AWS<\/li><li>DigitalOcean<\/li><li>Docker<\/li><\/ul>\n      <\/li>\n    <\/ul>\n  <\/div>\n<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-cbb6033 e-con-full elementor-hidden-mobile e-flex e-con e-parent\" data-id=\"cbb6033\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-30477452 elementor-widget elementor-widget-html\" data-id=\"30477452\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- How we work (direction A), section 6: the closing call to action on Ink. Each need is a plain WhatsApp link with the first message written for the visitor (no script needed).\n     One Elementor HTML widget (container: full width, padding 0, gap 0, no motion effects). Generated by website\/v2\/how-we-work-a\/build.py: edit the words there, then run the build. -->\n<style>\n.qhw{--ink:#0A0E17;--step:#131A27;--raise:#161D2C;--line:#273044;--paper:#F6F5F0;--soft:#C9CED8;--mute:#9AA3B2;\n  --volt:#C8F53B;--volt-hi:#D6F86B;--m:clamp(1rem,.4rem + 2vw,2rem);--max:100rem;--gut:clamp(.75rem,.4rem + 1.2vw,1.5rem);\n  --sans:\"Readex Pro\",\"Segoe UI\",Tahoma,system-ui,sans-serif;--mono:\"JetBrains Mono\",Consolas,\"Courier New\",monospace;\n  --t-head:clamp(2rem,1.45rem + 2.3vw,3.5rem);--t-lead:clamp(1.1875rem,1.05rem + .45vw,1.5rem);\n  --t-body:clamp(1rem,.96rem + .12vw,1.0625rem);--sec:clamp(4rem,2.5rem + 3.5vw,6rem);--hdr:76px;\n  display:block;position:relative;margin:0;padding:var(--sec) 0;background:var(--bg,#0A0E17);color:var(--paper);\n  font-family:var(--sans);font-size:var(--t-body);font-weight:400;line-height:1.55;letter-spacing:normal;text-align:left;\n  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:clip;scroll-margin-top:var(--hdr)}\n@media (max-width:767px){.qhw{--hdr:64px}}\n.qhw *,.qhw *::before,.qhw *::after{box-sizing:border-box}\n.qhw :is(h1,h2,h3,h4,p,ul,ol,li,figure,blockquote){margin:0;padding:0;font-family:inherit;color:inherit;font-style:normal;text-transform:none;word-spacing:normal}\n.qhw :is(ul,ol){list-style:none}\n.qhw :is(p,li){text-wrap:pretty}\n.qhw img{display:block;max-width:100%;height:auto;border:0;border-radius:0;box-shadow:none}\n.qhw svg{display:block;flex:none}\n.qhw ::selection{background:var(--volt);color:var(--ink)}\n.qhw .qhw-wrap{width:100%;max-width:var(--max);margin-inline:auto;padding-inline:var(--m)}\n.qhw .qhw-label{font-family:var(--mono);font-size:.875rem;font-weight:500;line-height:1.4;letter-spacing:.02em;color:var(--volt)}\n.qhw .qhw-h2{margin-top:1rem;font-size:var(--t-head);font-weight:500;line-height:1.04;letter-spacing:-.03em;color:var(--paper);text-wrap:balance}\n.qhw .qhw-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}\n.qhw .qhw-head{display:grid;gap:1.25rem}\n.qhw .qhw-head__intro{max-width:46ch;color:var(--mute);text-wrap:pretty}\n.qhw .qhw-head__intro > * + *{margin-top:.75rem}\n@media (min-width:60rem){\n  .qhw .qhw-head{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gut);align-items:end}\n  .qhw .qhw-head > :first-child{grid-column:1\/span 7}\n  .qhw .qhw-head__intro{grid-column:9\/-1}\n}\n.qhw a.qhw-btn{display:inline-flex;align-items:center;justify-content:center;gap:.6em;min-height:3.25rem;padding:0 1.75rem;border:0;border-radius:999px;\n  background:var(--volt);color:var(--ink);font:500 var(--t-body)\/1 var(--sans);letter-spacing:-.005em;text-decoration:none;white-space:nowrap;\n  transition:background-color .2s ease,transform .15s ease;-webkit-tap-highlight-color:transparent}\n.qhw a.qhw-btn svg{width:1.2em;height:1.2em}\n.qhw a.qhw-btn:hover{background:var(--volt-hi);color:var(--ink)}\n.qhw a.qhw-btn:active{transform:scale(.97)}\n.qhw a.qhw-link{color:var(--volt);font-weight:400;text-decoration:underline;text-decoration-thickness:.07em;text-underline-offset:.22em}\n.qhw a.qhw-link:hover{color:var(--volt);text-decoration-thickness:.14em}\n.qhw a:focus-visible{outline:3px solid var(--volt);outline-offset:3px}\n.qhw .qhw-actions{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 2rem}\n.qhw .qhw-pic{position:relative;overflow:hidden;background:var(--raise)}\n.qhw .qhw-pic > img{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:cover}\n.qhw .qhw-tag{position:absolute;left:.75rem;top:.75rem;z-index:2;padding:.3rem .55rem;border-radius:4px;background:rgba(10,14,23,.86);\n  color:var(--volt);font:500 .75rem\/1.3 var(--mono);letter-spacing:.02em}\n\n.qhw.qhw-start{--bg:var(--ink)}\n.qhw.qhw-start .qhw-start__grid{display:grid;gap:3rem}\n.qhw.qhw-start .qhw-start__sub{margin-top:1.25rem;max-width:34ch;font-size:var(--t-lead);line-height:1.4;letter-spacing:-.01em;color:var(--soft)}\n.qhw.qhw-start .qhw-start__ask{margin-top:2rem;font:500 .8125rem\/1.4 var(--mono);letter-spacing:.02em;color:var(--mute)}\n.qhw.qhw-start .qhw-needs{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.75rem}\n.qhw.qhw-start .qhw-needs a{display:inline-flex;align-items:center;min-height:2.75rem;padding:0 1.1rem;border:1px solid rgba(200,245,59,.45);border-radius:999px;\n  color:var(--paper);font-size:1rem;font-weight:400;line-height:1;text-decoration:none;transition:background-color .2s ease,color .2s ease,border-color .2s ease}\n.qhw.qhw-start .qhw-needs a:hover{background:var(--volt);border-color:var(--volt);color:var(--ink)}\n.qhw.qhw-start .qhw-actions{margin-top:2rem}\n.qhw.qhw-start .qhw-start__meta{margin-top:1.5rem;font:500 .8125rem\/1.5 var(--mono);letter-spacing:.02em;color:var(--mute)}\n.qhw.qhw-start .qhw-next{padding:clamp(1.75rem,1.2rem + 1.4vw,2.75rem);background:var(--step);border:1px solid var(--line)}\n.qhw.qhw-start .qhw-next__list{display:grid;gap:.875rem;margin-top:1.25rem}\n.qhw.qhw-start .qhw-next__list li{position:relative;padding-left:1.375rem;font-size:1.125rem;line-height:1.4;color:var(--paper)}\n.qhw.qhw-start .qhw-next__list li::before{content:\"\";position:absolute;left:0;top:.68em;width:.625rem;height:2px;background:var(--volt)}\n.qhw.qhw-start .qhw-next__note{margin-top:1.75rem;padding-top:1.25rem;border-top:1px solid var(--line);font-size:.9375rem;color:var(--mute)}\n@media (min-width:60rem){\n  .qhw.qhw-start .qhw-start__grid{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gut);align-items:center}\n  .qhw.qhw-start .qhw-start__main{grid-column:1\/span 7}\n  .qhw.qhw-start .qhw-next{grid-column:9\/-1}\n}\n<\/style>\n<section class=\"qhw qhw-start\" id=\"start\" aria-labelledby=\"qhw-start-h\">\n  <div class=\"qhw-wrap qhw-start__grid\">\n    <div class=\"qhw-start__main\">\n      <p class=\"qhw-label\"><span aria-hidden=\"true\">\/\/ <\/span>Contact<\/p>\n      <h2 class=\"qhw-h2\" id=\"qhw-start-h\">Tell us what takes your time<\/h2>\n      <p class=\"qhw-start__sub\">Pick what you need, then we'll write the first message for you. No tech words needed.<\/p>\n      <p class=\"qhw-start__ask\" id=\"qhw-need\">What do you need?<\/p>\n      <ul class=\"qhw-needs\" aria-labelledby=\"qhw-need\"><li><a href=\"https:\/\/wa.me\/966507600156?text=Hi%20Qcoders%2C%20I%20found%20you%20on%20your%20website.%20I%20need%20a%20website.\" target=\"_blank\" rel=\"noopener\">Website<\/a><\/li><li><a href=\"https:\/\/wa.me\/966507600156?text=Hi%20Qcoders%2C%20I%20found%20you%20on%20your%20website.%20I%20need%20an%20online%20store.\" target=\"_blank\" rel=\"noopener\">Online store<\/a><\/li><li><a href=\"https:\/\/wa.me\/966507600156?text=Hi%20Qcoders%2C%20I%20found%20you%20on%20your%20website.%20I%20need%20a%20mobile%20app.\" target=\"_blank\" rel=\"noopener\">App<\/a><\/li><li><a href=\"https:\/\/wa.me\/966507600156?text=Hi%20Qcoders%2C%20I%20found%20you%20on%20your%20website.%20I%20need%20a%20business%20system.\" target=\"_blank\" rel=\"noopener\">Business system<\/a><\/li><li><a href=\"https:\/\/wa.me\/966507600156?text=Hi%20Qcoders%2C%20I%20found%20you%20on%20your%20website.%20I%20need%20an%20AI%20assistant.\" target=\"_blank\" rel=\"noopener\">AI<\/a><\/li><li><a href=\"https:\/\/wa.me\/966507600156?text=Hi%20Qcoders%2C%20I%20found%20you%20on%20your%20website.%20I%20need%20help%20deciding.\" target=\"_blank\" rel=\"noopener\">Not sure yet<\/a><\/li><\/ul>\n      <div class=\"qhw-actions\">\n        <a class=\"qhw-btn\" href=\"https:\/\/wa.me\/966507600156?text=Hi%20Qcoders%2C%20I%20found%20you%20on%20your%20website.\" target=\"_blank\" rel=\"noopener\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path fill=\"currentColor\" d=\"M12.04 2a9.9 9.9 0 0 0-8.5 15l-1.4 5 5.2-1.36A9.9 9.9 0 1 0 12.04 2Zm0 18.1a8.2 8.2 0 0 1-4.2-1.15l-.3-.18-3.08.8.82-3-.2-.31a8.2 8.2 0 1 1 6.96 3.84Zm4.5-6.14c-.25-.12-1.46-.72-1.69-.8-.23-.08-.39-.12-.55.12-.17.25-.64.8-.78.97-.14.16-.29.18-.53.06a6.7 6.7 0 0 1-3.37-2.94c-.25-.44.25-.41.72-1.36.08-.16.04-.3-.02-.43l-.76-1.83c-.2-.48-.4-.41-.55-.42h-.47a.9.9 0 0 0-.65.3 2.74 2.74 0 0 0-.85 2.04c0 1.2.87 2.37 1 2.53.12.16 1.72 2.63 4.17 3.69 1.55.67 2.16.73 2.93.61.47-.07 1.46-.6 1.66-1.17.2-.58.2-1.07.15-1.17-.07-.1-.23-.16-.47-.28Z\"\/><\/svg>Message us on WhatsApp<\/a>\n        <a class=\"qhw-link\" href=\"mailto:info@qcoders.com\">info@qcoders.com<\/a>\n      <\/div>\n      <p class=\"qhw-start__meta\">Available 24\/7 \u00b7 English \u00b7 <span lang=\"ar\" dir=\"rtl\">\u0627\u0644\u0639\u0631\u0628\u064a\u0629<\/span> \u00b7 <span lang=\"tr\">T\u00fcrk\u00e7e<\/span><\/p>\n    <\/div>\n    <aside class=\"qhw-next\" aria-labelledby=\"qhw-next-h\">\n      <p class=\"qhw-label\" id=\"qhw-next-h\"><span aria-hidden=\"true\">\/\/ <\/span>Step 01, Listen<\/p>\n      <ul class=\"qhw-next__list\"><li>You send a few lines about your business.<\/li><li>We reply with a few questions.<\/li><li>Then we set up a short call. The first call is free.<\/li><\/ul>\n      <p class=\"qhw-next__note\">Then step 02, Decide: your written proposal.<\/p>\n    <\/aside>\n  <\/div>\n<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>We listen first. Then we code. Here is how we work, from your first message to life after launch. Four steps, a written plan before any code, and a fixed price for each stage. Message us on WhatsApp See the four steps \/\/ you talk, we listen \/\/ The four steps How we work, step [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-21","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How we work: 4 steps from first call to launch | Qcoders<\/title>\n<meta name=\"description\" content=\"How we work at Qcoders: listen, decide, build and stay. A written plan and a fixed price per stage before any code, and support after launch.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/qcoders.com\/ar\/how-we-work\/\" \/>\n<meta property=\"og:locale\" content=\"ar_AR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How we work: 4 steps from first call to launch | Qcoders\" \/>\n<meta property=\"og:description\" content=\"How we work at Qcoders: listen, decide, build and stay. A written plan and a fixed price per stage before any code, and support after launch.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/qcoders.com\/ar\/how-we-work\/\" \/>\n<meta property=\"og:site_name\" content=\"Qcoders\" \/>\n<meta property=\"article:modified_time\" content=\"2026-11-02T07:00:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/qcoders.com\/wp-content\/uploads\/2026\/10\/qc-ui-first-meeting-owner-explains-r133.webp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"11 \u062f\u0642\u064a\u0642\u0629\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/qcoders.com\\\/how-we-work\\\/\",\"url\":\"https:\\\/\\\/qcoders.com\\\/how-we-work\\\/\",\"name\":\"How we work: 4 steps from first call to launch | Qcoders\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/qcoders.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/qcoders.com\\\/how-we-work\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/qcoders.com\\\/how-we-work\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/qcoders.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/qc-ui-first-meeting-owner-explains-r133.webp\",\"datePublished\":\"2026-10-25T14:07:05+00:00\",\"dateModified\":\"2026-11-02T07:00:52+00:00\",\"description\":\"How we work at Qcoders: listen, decide, build and stay. A written plan and a fixed price per stage before any code, and support after launch.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/qcoders.com\\\/how-we-work\\\/#breadcrumb\"},\"inLanguage\":\"ar\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/qcoders.com\\\/how-we-work\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ar\",\"@id\":\"https:\\\/\\\/qcoders.com\\\/how-we-work\\\/#primaryimage\",\"url\":\"https:\\\/\\\/qcoders.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/qc-ui-first-meeting-owner-explains-r133.webp\",\"contentUrl\":\"https:\\\/\\\/qcoders.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/qc-ui-first-meeting-owner-explains-r133.webp\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/qcoders.com\\\/how-we-work\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/qcoders.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How we work\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/qcoders.com\\\/#website\",\"url\":\"https:\\\/\\\/qcoders.com\\\/\",\"name\":\"Qcoders\",\"description\":\"Code that runs your business.\",\"publisher\":{\"@id\":\"https:\\\/\\\/qcoders.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/qcoders.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ar\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/qcoders.com\\\/#organization\",\"name\":\"Qcoders\",\"url\":\"https:\\\/\\\/qcoders.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ar\",\"@id\":\"https:\\\/\\\/qcoders.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/qcoders.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/qcoders-logo-qcoders-2026.png\",\"contentUrl\":\"https:\\\/\\\/qcoders.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/qcoders-logo-qcoders-2026.png\",\"width\":2000,\"height\":398,\"caption\":\"Qcoders\"},\"image\":{\"@id\":\"https:\\\/\\\/qcoders.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How we work: 4 steps from first call to launch | Qcoders","description":"How we work at Qcoders: listen, decide, build and stay. A written plan and a fixed price per stage before any code, and support after launch.","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:\/\/qcoders.com\/ar\/how-we-work\/","og_locale":"ar_AR","og_type":"article","og_title":"How we work: 4 steps from first call to launch | Qcoders","og_description":"How we work at Qcoders: listen, decide, build and stay. A written plan and a fixed price per stage before any code, and support after launch.","og_url":"https:\/\/qcoders.com\/ar\/how-we-work\/","og_site_name":"Qcoders","article_modified_time":"2026-11-02T07:00:52+00:00","og_image":[{"url":"https:\/\/qcoders.com\/wp-content\/uploads\/2026\/10\/qc-ui-first-meeting-owner-explains-r133.webp","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"11 \u062f\u0642\u064a\u0642\u0629"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/qcoders.com\/how-we-work\/","url":"https:\/\/qcoders.com\/how-we-work\/","name":"How we work: 4 steps from first call to launch | Qcoders","isPartOf":{"@id":"https:\/\/qcoders.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/qcoders.com\/how-we-work\/#primaryimage"},"image":{"@id":"https:\/\/qcoders.com\/how-we-work\/#primaryimage"},"thumbnailUrl":"https:\/\/qcoders.com\/wp-content\/uploads\/2026\/10\/qc-ui-first-meeting-owner-explains-r133.webp","datePublished":"2026-10-25T14:07:05+00:00","dateModified":"2026-11-02T07:00:52+00:00","description":"How we work at Qcoders: listen, decide, build and stay. A written plan and a fixed price per stage before any code, and support after launch.","breadcrumb":{"@id":"https:\/\/qcoders.com\/how-we-work\/#breadcrumb"},"inLanguage":"ar","potentialAction":[{"@type":"ReadAction","target":["https:\/\/qcoders.com\/how-we-work\/"]}]},{"@type":"ImageObject","inLanguage":"ar","@id":"https:\/\/qcoders.com\/how-we-work\/#primaryimage","url":"https:\/\/qcoders.com\/wp-content\/uploads\/2026\/10\/qc-ui-first-meeting-owner-explains-r133.webp","contentUrl":"https:\/\/qcoders.com\/wp-content\/uploads\/2026\/10\/qc-ui-first-meeting-owner-explains-r133.webp"},{"@type":"BreadcrumbList","@id":"https:\/\/qcoders.com\/how-we-work\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/qcoders.com\/"},{"@type":"ListItem","position":2,"name":"How we work"}]},{"@type":"WebSite","@id":"https:\/\/qcoders.com\/#website","url":"https:\/\/qcoders.com\/","name":"Qcoders","description":"\u0628\u0631\u0645\u062c\u064a\u0627\u062a \u062a\u0634\u063a\u0651\u0644 \u0623\u0639\u0645\u0627\u0644\u0643.","publisher":{"@id":"https:\/\/qcoders.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/qcoders.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ar"},{"@type":"Organization","@id":"https:\/\/qcoders.com\/#organization","name":"Qcoders","url":"https:\/\/qcoders.com\/","logo":{"@type":"ImageObject","inLanguage":"ar","@id":"https:\/\/qcoders.com\/#\/schema\/logo\/image\/","url":"https:\/\/qcoders.com\/wp-content\/uploads\/2026\/10\/qcoders-logo-qcoders-2026.png","contentUrl":"https:\/\/qcoders.com\/wp-content\/uploads\/2026\/10\/qcoders-logo-qcoders-2026.png","width":2000,"height":398,"caption":"Qcoders"},"image":{"@id":"https:\/\/qcoders.com\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/qcoders.com\/ar\/wp-json\/wp\/v2\/pages\/21","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/qcoders.com\/ar\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/qcoders.com\/ar\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/qcoders.com\/ar\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/qcoders.com\/ar\/wp-json\/wp\/v2\/comments?post=21"}],"version-history":[{"count":31,"href":"https:\/\/qcoders.com\/ar\/wp-json\/wp\/v2\/pages\/21\/revisions"}],"predecessor-version":[{"id":1099,"href":"https:\/\/qcoders.com\/ar\/wp-json\/wp\/v2\/pages\/21\/revisions\/1099"}],"wp:attachment":[{"href":"https:\/\/qcoders.com\/ar\/wp-json\/wp\/v2\/media?parent=21"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}