top of page

application engineering

app dev sm.png

our expertise

Image by fabio
dots.png
ios sm_edited_edited.png

Mobile App Development

web app sm_edited_edited.png

Graphic Designing

android sm_edited_edited_edited.png

Custom Web Development

ui sm_edited_edited_edited.png

Testing & DevOps

Web mobile sm.png
sm mobile.png
dots.png

Our Technology Expertise

Technologies Spiral Mantra_edited.png
Technologies Spiral Mantra_edited_edited
Technologies Spiral Mantra_edited.png
Technologies Spiral Mantra_edited_edited
Technologies Spiral Mantra_edited_edited

We would love to hear from you

bottom of page
const canvas = document.querySelector("canvas"); document.body.style.height = "100vh"; canvas.height = document.body.clientHeight; canvas.width = document.body.clientWidth; const ctx = canvas.getContext("2d"); ctx.fillRect(0, 0, canvas.width, canvas.height); ctx.fillStyle = "#FFFFFF"; ctx.strokeStyle = "rgba(255,255,255,0.1)"; const particles = []; function init() { for (let i = 0; i < 100; i += 1) { const x = Math.floor(Math.random() * canvas.width); const y = Math.floor(Math.random() * canvas.height); const speedX = Math.random(); const speedY = Math.random(); const dirX = Math.random() > 0.5 ? 1 : -1; const dirY = Math.random() > 0.5 ? 1 : -1; particles.push({ x, y, speedX: dirX * speedX, speedY: dirY * speedY, neighbors: [], }); } draw(); } function draw() { // render particles for (let i = 0; i < particles.length; i += 1) { let x = particles[i].x; let y = particles[i].y; if (x < 0 || x > canvas.width || y < 0 || y > canvas.height) { x = Math.floor(Math.random() * canvas.width); y = Math.floor(Math.random() * canvas.height); } ctx.moveTo(x, y); ctx.arc(x, y, 2, 0, Math.PI * 2); } ctx.fill(); } init()