Home/Portfolio/Body Car Damage
05Mobile

Body Car Damage

A mobile-first web app, installable as a PWA, that classifies car body damage as minor, moderate, or severe with three CNN models side by side, rejects photos that are not a car, and points owners to the nearest body repair shops.

Visit Live Site

About The Project

Body Car Damage classifies how badly a car body is damaged, as minor, moderate, or severe, from a single photo. It began as an Android app and now runs as a mobile-first web app that installs on a phone as a Progressive Web App, so anyone with a browser can use it. The application is built with Django 5.2 on Python 3.11 with SQLite for storage, styled with Tailwind CSS v4 compiled by its standalone CLI so no Node.js toolchain is needed, and runs its models on LiteRT, the TensorFlow Lite runtime, instead of full TensorFlow to keep the server light.

At its core is a comparison. The same photo runs through three CNN models that differ only in their activation function (ReLU, tanh, and sigmoid), and the results appear side by side with each model's probability for every severity level and its inference time. The models were trained in a Python notebook on about 1,800 labeled photos across the three severity classes, with the dataset audited for exact and near-duplicate images using MD5 and perceptual hashes. Each uploaded photo is turned upright from its EXIF orientation and resized to 224×224 without cropping, the same way the training images were loaded, so a phone picture reaches the models in the same form as the dataset.

A classifier always splits its confidence across the damage classes, so on its own it cannot say that a photo is not a car at all. A separate gate model checks every photo first: a logistic regression on frozen MobileNetV2 features, trained with Caltech101 images as the negative class. On held-out data it accepted 99.7% of damage photos and rejected 99.8% of non-car photos. A rejected photo is turned away with a clear message before any damage model runs, and nothing is stored.

Two optional aids sit outside the comparison. An AI Analysis button sends the stored photo, stripped of EXIF so no GPS location leaves the server, to a vision language model through NVIDIA's API with an automatic fallback model, and returns a short Indonesian write-up of the damaged part, the type of damage, an estimated severity with its reason, and a suggested repair. Because an answer can take more than a minute, it runs in a background thread and the result card updates itself without a page reload. A nearest-workshop card lists the five body repair shops closest to the user's location from a directory of 3,469 workshops across 97 Indonesian cities, answered from the local database in milliseconds without calling any outside service.

Photos can come from a file upload, a phone camera, or a laptop webcam, and every classification is kept in a personal history while admins can review all records. Light and dark themes follow the device, every text pair is contrast-checked to at least 4.5:1, and an offline page appears when the connection drops. In production the app runs as a Docker container with Gunicorn and WhiteNoise behind Traefik and Cloudflare, and a public demo account on the login page lets visitors try it right away.

Tech Stack

DjangoTensorFlow LiteCNNPWADocker

Key Features

  • 01Side-by-side ReLU, Tanh & Sigmoid CNNs
  • 02Non-car Photo Rejection Gate
  • 03Camera, Webcam & Upload Capture
  • 04AI Damage Analysis via Vision LLM
  • 05Nearest Body Repair Shops
  • 06Installable PWA & Classification History

Project Info

Category
Mobile
Project Number
#05 of 24
Built By
Blatak Technology

Want Something Similar?

We can build a tailored solution for your business. Let us discuss your requirements and create something extraordinary together.