🚚 Door-Door Delivery — Home Delivery· 🛠️ Annual IT contracts from QAR 450/mo· 🚚 Free delivery on Bulk orders· +974 7445 3733·
Pages
🏠Home 🏢About 🏗️Projects ⚙️Solutions 🛒Shop 📞Contact
Products
💻Laptops 🖥️Computers 🔧Hardware 🎧Accessories CCTV Security Cameras 💿Software
Solutions
🌐IT Solutions & Networking ☁️Hosting 🎨Web Design 🧾POS Systems 🔑Digital Keys
WhatsApp us +974 7445 3733
IT Solutions & Services

Your complete IT partner

From a single laptop repair to a full office fit-out — we survey, supply, install, document and support. One team, one invoice, one phone number.

Get started

Request a service

Tell us what you need and we will survey the site, send a fixed written quote within 2 working hours, and schedule the appointment at your convenience.

01
Tell us the problemFill in the form with as much detail as you can — photos help.
02
We survey & quoteFree site visit within 24 hours. Fixed written quote within 2 working hours.
03
Pick your appointmentChoose a date and time that works for you — we come to you.
04
We install & hand overOur own team does the work, tests it, documents it and hands it over.
05
We track every stepYou get a ticket number and real-time status updates — by WhatsApp or right here on the site.
06
We stay after handoverAMC and support contracts mean the engineer who fitted your system is still the one you call next year.

Service Request

All fields with * are required. We respond within 2 working hours.

Preferred appointment

Or WhatsApp us directly: Send message

Request submitted

We will contact you within 2 working hours to confirm your appointment.

Confirm on WhatsApp

Track progress

Track your service

Got a ticket number? Follow the status of your project, repair or installation in real time.

What you can track

🌐
Network project Cabling, Wi-Fi, server room setup — full rollout status
💻
Laptop / Desktop repair Diagnosis, parts, repair stages with notifications
🧾
POS system install 3-4 day timeline: setup, config, testing, handover
🎨
Website project Design, development, review, launch stages
What we do

Services we deliver

Every service is delivered by our own team — no subcontractors, no surprises.

🌐

Networking & Cabling

Structured cabling, Wi-Fi mesh, firewalls, server rooms — surveyed, installed and documented to enterprise standard.

  • Cat6 / Fibre
  • Wi-Fi 6 mesh
  • Core switching
  • Server rooms
📷

CCTV & Security

IP cameras, NVRs, access control and intercom systems — designed for coverage, installed for reliability.

  • IP cameras
  • NVR systems
  • Access control
  • Intercom
🧾

POS Systems

Restaurant, retail and F&B point-of-sale — hardware, software, integration and staff training.

  • Aronium POS
  • Terminals
  • Receipt printers
  • Barcode scanners
☁️

Hosting & Email

Fast SSD hosting, business email on your domain, free SSL and daily backups — managed from Doha.

  • NVMe hosting
  • Business email
  • Free SSL
  • Daily backups
💻

Software Development

Custom POS, business tools, APIs and integrations — built by our in-house development team.

  • Custom POS
  • Business APIs
  • Integrations
  • Maintenance
🎨

Web Design

Professional websites, e-commerce and landing pages — designed, built and hosted under one roof.

  • Corporate sites
  • E-commerce
  • Landing pages
  • SEO
🛡️Warranty AvailableSelected products carry up to 6-month warranty
Fast ResponseQuotes within 2 working hours
🤝No subcontractorsOur own team does every job
📋Fixed written quoteNo surprises on the invoice

Ready to get started?

Tell us what you need — we will survey the site and send a fixed written quote.

/* ---- nav master (lang + search + glide) ---- */ (function(){ var lb=document.getElementById('langBtn'); if(lb){lb.onclick=function(){var rtl=document.documentElement.dir==='rtl';document.documentElement.dir=rtl?'ltr':'rtl';lb.textContent=rtl?'ع':'EN';};} var q=document.getElementById('q'); if(q){q.addEventListener('keydown',function(e){if(e.key==='Enter'){location.href='shop.html?q='+encodeURIComponent(q.value);}});} })(); /* ---------- nav: pill glides to the hovered item, parks on the active one ---------- */ (function(){ const nav=document.getElementById('navMain'), g=document.getElementById('navGlide'); if(!nav||!g) return; const park=()=>nav.querySelector('.nl.active')?.parentElement||null; function move(item,show){ if(!item){ g.classList.remove('show'); return; } const a=item.firstElementChild||item; g.style.left=item.offsetLeft+'px'; g.style.width=item.offsetWidth+'px'; g.classList.toggle('show',!!show); } /* the pill borrows the colour of whichever item it is sitting on */ function tintFrom(item){ const c=item&&(item.style.getPropertyValue('--nc')||'').trim(); g.style.setProperty('--nc', c||'#d8bc5a'); } const rest=()=>{const pk=park(); tintFrom(pk); move(pk,!!pk);}; nav.querySelectorAll('.navitem').forEach(it=>{ it.addEventListener('mouseenter',()=>{tintFrom(it);move(it,true)}); it.addEventListener('focusin',()=>{tintFrom(it);move(it,true)}); }); nav.addEventListener('mouseleave',rest); nav.addEventListener('focusout',e=>{ if(!nav.contains(e.relatedTarget)) rest(); }); addEventListener('resize',rest,{passive:true}); /* fonts settle after first paint — measure again so the pill lands true */ requestAnimationFrame(rest); setTimeout(rest,260); addEventListener('load',rest); })(); /* ---- minimal cart (this page lists no products) ---- */ (function(){ var cart=document.getElementById('cart'), scrim=document.getElementById('scrim'), open=document.getElementById('cartBtn'), close=document.getElementById('closeCart'); if(!cart||!scrim||!open) return; function show(on){cart.classList.toggle('open',on);scrim.classList.toggle('on',on);document.body.style.overflow=on?'hidden':'';} open.onclick=function(){show(!cart.classList.contains('open'));}; close.onclick=function(){show(false);}; scrim.onclick=function(){show(false);}; addEventListener('keydown',function(e){if(e.key==='Escape')show(false);}); })(); /* ---------- collapsible footer (Phase 38) ---------- */ (function(){ const grid=document.querySelector('footer .fgrid'); if(!grid) return; const cols=[...grid.children].filter(c=>c.querySelector('h5')&&c.querySelector('ul')); const phone=()=>matchMedia('(max-width:760px)').matches; cols.forEach(col=>{ col.classList.add('facc'); /* wrap the
  • s so the UL can stay a single animatable row while the links themselves lay out in 2 columns (see the Phase-42 CSS note) */ const ul=col.querySelector('ul'); if(ul && !ul.querySelector(':scope > .fcols')){ const box=document.createElement('div'); box.className='fcols'; while(ul.firstChild) box.appendChild(ul.firstChild); ul.appendChild(box); } const h=col.querySelector('h5'); h.setAttribute('role','button'); h.setAttribute('tabindex','0'); h.setAttribute('aria-expanded','false'); const toggle=()=>{ if(!phone()) return; /* desktop keeps everything open */ const open=col.classList.toggle('open'); h.setAttribute('aria-expanded',open); }; h.addEventListener('click',toggle); h.addEventListener('keydown',e=>{ if(e.key==='Enter'||e.key===' '){e.preventDefault();toggle();} }); }); /* "Get in touch" is the panel people actually want -- open it by default on mobile instead of making them hunt for the phone number. */ const contactCol=cols.find(c=>/get in touch/i.test((c.querySelector('h5')||{}).textContent||'')); if(contactCol){ contactCol.classList.add('open'); const ch=contactCol.querySelector('h5'); if(ch) ch.setAttribute('aria-expanded','true'); } /* returning to desktop must not leave content hidden */ const sync=()=>{ if(!phone()) cols.forEach(c=>{ c.classList.remove('open'); const h=c.querySelector('h5'); if(h) h.setAttribute('aria-expanded','true'); }); }; const syncMobile=()=>{ if(phone()&&contactCol&&!contactCol.classList.contains('open')){ contactCol.classList.add('open'); const ch=contactCol.querySelector('h5'); if(ch) ch.setAttribute('aria-expanded','true'); } }; addEventListener('resize',()=>{sync();syncMobile();}); sync(); syncMobile(); })(); /* ================= CURSOR FX ENGINE ================= Three trail modes, one canvas, one RAF loop. web — constellation: nodes spawn on the cursor path and link to each other + the pointer (network topology) dust — drifting embers with turbulence and inherited velocity circuit — PCB traces that snap to 90 degrees with a travelling data pulse and solder pads at every corner ==================================================== */ (function(){ const sw = document.getElementById('fxSwitch'); if (matchMedia('(pointer:coarse)').matches || matchMedia('(prefers-reduced-motion:reduce)').matches){ if(sw) sw.style.display='none'; return; } const dot=document.getElementById('curDot'), lbl=document.getElementById('curLbl'), cv=document.getElementById('trail'), ctx=cv.getContext('2d'); let W=innerWidth,H=innerHeight,dpr=1; function fit(){ dpr=Math.min(devicePixelRatio||1,2); W=innerWidth; H=innerHeight; cv.width=W*dpr; cv.height=H*dpr; cv.style.width=W+'px'; cv.style.height=H+'px'; ctx.setTransform(dpr,0,0,dpr,0,0); } fit(); addEventListener('resize',fit); /* soft sprite so we never pay for per-particle gradients */ function sprite(rgb){ const s=document.createElement('canvas'); s.width=s.height=64; const c=s.getContext('2d'), g=c.createRadialGradient(32,32,0,32,32,32); g.addColorStop(0, 'rgba('+rgb+',1)'); g.addColorStop(.28, 'rgba('+rgb+',.5)'); g.addColorStop(1, 'rgba('+rgb+',0)'); c.fillStyle=g; c.fillRect(0,0,64,64); return s; } let CG=getComputedStyle(document.documentElement).getPropertyValue('--g2-rgb').trim()||'236,214,140'; let CA=getComputedStyle(document.documentElement).getPropertyValue('--acc-rgb').trim()||'120,190,255'; let SP_GOLD=sprite(CG), SP_WHITE=sprite('255,255,255'), SP_BLUE=sprite(CA); addEventListener('themechange',()=>{ CG=getComputedStyle(document.documentElement).getPropertyValue('--g2-rgb').trim()||CG; CA=getComputedStyle(document.documentElement).getPropertyValue('--acc-rgb').trim()||CA; SP_GOLD=sprite(CG); SP_BLUE=sprite(CA); }); /* localStorage throws on opaque origins (sandboxed iframes, private mode) */ const store={ get(k){ try{ return localStorage.getItem(k); }catch(e){ return null; } }, set(k,v){ try{ localStorage.setItem(k,v); }catch(e){} } }; let MODE = store.get('mushabs-fx') || 'web'; let mx=W/2,my=H/2, pmx=mx,pmy=my, vx=0,vy=0; let dx=mx,dy=my, rx=mx,ry=my; const motes=[], nodes=[], verts=[], sparks=[]; let axis=0, anchor={x:mx,y:my}, pulse=0, tick=0; const rnd=(a,b)=>a+Math.random()*(b-a); /* ---------- input ---------- */ addEventListener('mousemove',e=>{ mx=e.clientX; my=e.clientY; document.body.classList.add('cur-on'); const t=e.target.closest('[data-cursor]'); if(t){ document.body.classList.add('cur-hot'); lbl.textContent=t.dataset.cursor; lbl.classList.add('has'); } else if(e.target.closest('a,button,input,.card,.plan,.svc-card')){ document.body.classList.add('cur-hot'); lbl.classList.remove('has'); } else { document.body.classList.remove('cur-hot'); lbl.classList.remove('has'); } },{passive:true}); addEventListener('mouseleave',()=>document.body.classList.remove('cur-on')); addEventListener('mouseup',()=>document.body.classList.remove('cur-down')); addEventListener('mousedown',()=>{ document.body.classList.add('cur-down'); for(let i=0;i<16;i++){ const a=Math.random()*6.283, s=rnd(1.4,5.2); sparks.push({x:mx,y:my,vx:Math.cos(a)*s,vy:Math.sin(a)*s,life:1,decay:rnd(.02,.045),r:rnd(.8,2)}); } }); /* ---------- switcher ---------- */ function paintSwitch(){ sw.querySelectorAll('button').forEach(b=>b.classList.toggle('on',b.dataset.fx===MODE)); } sw.addEventListener('click',e=>{ const b=e.target.closest('button'); if(!b) return; MODE=b.dataset.fx; store.set('mushabs-fx',MODE); motes.length=nodes.length=verts.length=0; anchor={x:mx,y:my}; paintSwitch(); }); paintSwitch(); /* ---------- emitters ---------- */ function emit(){ const speed=Math.hypot(vx,vy); if(MODE==='dust'){ const n = speed>1.2 ? Math.min(4,1+(speed/12|0)) : (Math.random()<.16?1:0); for(let i=0;i280) motes.splice(0,motes.length-280); } if(MODE==='web'){ if(speed>2.2 || (nodes.length<7 && Math.random()<.22)) nodes.push({ x:mx+rnd(-11,11), y:my+rnd(-11,11), vx:rnd(-.3,.3)+vx*.028, vy:rnd(-.3,.3)+vy*.028, life:1, decay:rnd(.007,.013), r:rnd(1,2.3), blue:Math.random()<.22 }); if(nodes.length>62) nodes.splice(0,nodes.length-62); } if(MODE==='circuit'){ const ax=mx-anchor.x, ay=my-anchor.y; if(Math.abs(ax)+Math.abs(ay)>30){ anchor = axis===0 ? {x:mx,y:anchor.y} : {x:anchor.x,y:my}; axis^=1; verts.push({x:anchor.x,y:anchor.y}); if(verts.length>48) verts.shift(); } } } /* ---------- renderers ---------- */ function drawDust(){ for(let i=motes.length-1;i>=0;i--){ const m=motes[i]; m.life-=m.decay; if(m.life<=0){ motes.splice(i,1); continue; } m.ph+=.055; m.x+=m.vx+Math.sin(m.ph)*.20; m.y+=m.vy-.055; /* embers drift upward */ m.vx*=.981; m.vy*=.981; const a=m.life*m.life, s=m.r*(8+ (1-m.life)*5); ctx.globalAlpha=a*.9; ctx.drawImage(m.w?SP_WHITE:SP_GOLD, m.x-s, m.y-s, s*2, s*2); } } function drawWeb(){ for(let i=nodes.length-1;i>=0;i--){ const n=nodes[i]; n.life-=n.decay; if(n.life<=0){ nodes.splice(i,1); continue; } n.x+=n.vx; n.y+=n.vy; n.vx*=.988; n.vy*=.988; } /* node-to-node links */ ctx.lineWidth=1; for(let i=0;i16900) continue; /* 130px */ const o=(1-Math.sqrt(d2)/130)*a.life*b.life; ctx.strokeStyle='rgba(var(--g-rgb),'+(o*.5)+')'; ctx.beginPath(); ctx.moveTo(a.x,a.y); ctx.lineTo(b.x,b.y); ctx.stroke(); } /* link back to the pointer */ const cdx=a.x-mx, cdy=a.y-my, cd2=cdx*cdx+cdy*cdy; if(cd2<28900){ /* 170px */ const o=(1-Math.sqrt(cd2)/170)*a.life; ctx.strokeStyle='rgba(var(--g2-rgb),'+(o*.62)+')'; ctx.lineWidth=1.2; ctx.beginPath(); ctx.moveTo(a.x,a.y); ctx.lineTo(mx,my); ctx.stroke(); ctx.lineWidth=1; } } /* nodes as tiny rotating diamonds */ for(const n of nodes){ const s=n.r*(1+n.life*.6), a=n.life*n.life; ctx.globalAlpha=a; ctx.drawImage(n.blue?SP_BLUE:SP_GOLD, n.x-s*5, n.y-s*5, s*10, s*10); ctx.globalAlpha=1; ctx.save(); ctx.translate(n.x,n.y); ctx.rotate(tick*.02+n.r); ctx.fillStyle = n.blue ? 'rgba('+CA+','+a+')' : 'rgba(var(--g2-rgb),'+a+')'; ctx.fillRect(-s*.62,-s*.62,s*1.24,s*1.24); ctx.restore(); } } function drawCircuit(){ if(verts.length<2) return; const L=verts.length; /* glow underlay + crisp trace */ for(let pass=0;pass<2;pass++){ ctx.lineWidth = pass===0 ? 5 : 1.6; ctx.lineCap='square'; ctx.lineJoin='miter'; for(let i=1;i1) pulse=0; const fi=pulse*(L-1), i0=Math.floor(fi), f=fi-i0; if(verts[i0] && verts[i0+1]){ const px=verts[i0].x+(verts[i0+1].x-verts[i0].x)*f, py=verts[i0].y+(verts[i0+1].y-verts[i0].y)*f; ctx.globalAlpha=.95; ctx.drawImage(SP_GOLD,px-11,py-11,22,22); ctx.globalAlpha=1; ctx.fillStyle='rgba('+CG+',1)'; ctx.fillRect(px-1.6,py-1.6,3.2,3.2); } } function drawSparks(){ for(let i=sparks.length-1;i>=0;i--){ const s=sparks[i]; s.life-=s.decay; if(s.life<=0){ sparks.splice(i,1); continue; } s.x+=s.vx; s.y+=s.vy; s.vx*=.93; s.vy=s.vy*.93+.05; const r=s.r*7*s.life; ctx.globalAlpha=s.life; ctx.drawImage(SP_GOLD,s.x-r,s.y-r,r*2,r*2); } } /* ---------- loop ---------- */ (function loop(){ tick++; vx=mx-pmx; vy=my-pmy; pmx=mx; pmy=my; dx+=(mx-dx)*.45; dy+=(my-dy)*.45; rx+=(mx-rx)*.16; ry+=(my-ry)*.16; dot.style.transform='translate('+dx+'px,'+dy+'px)'; lbl.style.transform='translate('+(rx+16)+'px,'+(ry+16)+'px)'; ctx.clearRect(0,0,W,H); ctx.globalCompositeOperation='lighter'; if(MODE!=='off'){ emit(); if(MODE==='dust') drawDust(); else if(MODE==='web') drawWeb(); else if(MODE==='circuit') drawCircuit(); } drawSparks(); ctx.globalAlpha=1; ctx.globalCompositeOperation='source-over'; requestAnimationFrame(loop); })(); /* magnetic buttons */ document.querySelectorAll('.btn,.icon-btn').forEach(b=>{ b.addEventListener('mousemove',e=>{ const r=b.getBoundingClientRect(); b.style.transform='translate('+((e.clientX-r.left-r.width/2)*.18)+'px,'+((e.clientY-r.top-r.height/2)*.28)+'px)'; }); b.addEventListener('mouseleave',()=>b.style.transform=''); }); })();