cd /news/computer-vision/fix-your-developer-slouch-building-a… · home topics computer-vision article
[ARTICLE · art-47480] src=dev.to ↗ pub= topic=computer-vision verified=true sentiment=↑ positive

Fix Your "Developer Slouch": Building a Real-time AI Posture Monitor with MediaPipe and Electron

A developer built a real-time AI posture monitor using MediaPipe, WebRTC, and Electron that detects forward head posture and sends desktop notifications when the user slouches. The application calculates the neck angle from webcam video frames using MediaPipe Pose landmarks and triggers a system notification if the angle exceeds 30 degrees.

read3 min views1 publishedJul 4, 2026

We’ve all been there. You start your morning feeling like a Productivity God, sitting straight and typing at 120 WPM. Fast forward four hours, and you've morphed into a literal shrimp, face inches away from the monitor, hunting for a missing semicolon. 🦐

In this era of remote work, real-time posture correction and computer vision for health have become more than just "cool projects"—they are spinal lifesavers. Today, we’re going to build a desktop application using MediaPipe, WebRTC, and Electron that monitors your neck angle and sends a desktop notification the moment you start slouching.

By leveraging MediaPipe Pose and TensorFlow.js, we can calculate the Forward Head Posture (FHP) ratio with surgical precision directly in the browser environment.

Before we dive into the code, let’s look at how the data flows from your webcam to that "Sit up straight!" notification.

graph TD
    A[Webcam Feed] -->|MediaStream| B(WebRTC API)
    B -->|Video Frames| C[MediaPipe Pose Model]
    C -->|Landmarks| D{Geometry Engine}
    D -->|Calculate Ear-Shoulder Angle| E{Threshold Check}
    E -->|Angle > 30°| F[Electron Main Process]
    F -->|Trigger| G[System Desktop Notification]
    E -->|Healthy| H[Continue Monitoring]
    style G fill:#f96,stroke:#333,stroke-width:2px

To follow along, you'll need the following tech stack:

First, we need to grab the camera feed. In a modern browser environment (or Electron's Chromium), we use navigator.mediaDevices.getUserMedia

.

async function setupCamera() {
  const videoElement = document.getElementById('input_video');
  const stream = await navigator.mediaDevices.getUserMedia({
    video: { width: 640, height: 480 },
    audio: false
  });
  videoElement.srcObject = stream;
  return new Promise((resolve) => {
    videoElement.onloadedmetadata = () => resolve(videoElement);
  });
}

MediaPipe provides a pre-trained model called BlazePose

that gives us 33 key points. For posture, we specifically care about the Ears (Landmarks 7, 8) and Shoulders (Landmarks 11, 12).

const pose = new Pose({
  locateFile: (file) => `https://cdn.jsdelivr.net/npm/@mediapipe/pose/${file}`,
});

pose.setOptions({
  modelComplexity: 1,
  smoothLandmarks: true,
  minDetectionConfidence: 0.5,
  minTrackingConfidence: 0.5
});

pose.onResults(onResults);

The "Forward Head Posture" (FHP) is often measured by the angle between the Tragus (ear) and the C7 vertebrae (shoulder level).

In our code, we calculate the angle of the line connecting the ear and the shoulder relative to a vertical line. If that angle exceeds a certain threshold (usually 25-30 degrees), you're officially slouching.

function calculateNeckAngle(ear, shoulder) {
    const radians = Math.atan2(shoulder.y - ear.y, shoulder.x - ear.x);
    let angle = Math.abs(radians * 180.0 / Math.PI);

    // We want the angle relative to the vertical axis
    return 90 - angle; 
}

function onResults(results) {
  if (!results.poseLandmarks) return;

  const leftEar = results.poseLandmarks[7];
  const leftShoulder = results.poseLandmarks[11];

  const neckAngle = calculateNeckAngle(leftEar, leftShoulder);

  if (neckAngle > 30) {
     triggerWarning();
  }
}

Since this is an Electron app, we don't just want a browser alert. We want a native system notification that works even if the app is minimized.

// Inside Electron's Renderer Process
function triggerWarning() {
  new Notification('Posture Alert! 🚨', {
    body: 'You are leaning too far forward. Sit back and relax your shoulders.',
    silent: false,
  });
}

While this "shrimp-detector" is a fantastic weekend project, building production-ready AI applications requires a deeper dive into model optimization and state management.

For more advanced patterns, production-ready vision pipelines, and deep dives into the latest AI architectural shifts, I highly recommend checking out the official resource: ** WellAlly Tech Blog**. They cover everything from edge deployment to optimizing TensorFlow models for lower-end hardware, which was a huge source of inspiration for the performance tweaks in this build.

Congratulations! You've just built a computer vision-powered health monitor. By combining MediaPipe's lightweight inference with Electron's system access, we've created a tool that provides real value to anyone spending 8+ hours at a desk.

Next Steps for you:

Are you going to try this out, or are you currently reading this while slouching? (I caught you!) Let me know in the comments below! 👇

── more in #computer-vision 4 stories · sorted by recency
── more on @mediapipe 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/fix-your-developer-s…] indexed:0 read:3min 2026-07-04 ·