AI · IoT Full-stack
Doctor-Green
Doctor-Green is a smart-farm platform that brings crop-disease diagnosis and IoT environment control onto a single web platform, so both live on one screen. I planned and built the whole pipeline solo, from sensor to dashboard.
It grew out of a VGG16 plant-disease-diagnosis app I built with team MAKENEW, which won the Excellence Award at the 2024 ICT·SW Women's Start-up Competition. That model never reached usable accuracy, so in 2026 I rebuilt the project as a full smart-farm platform and restarted the diagnosis model from the data up.
The IoT half runs today. ESP32 sensor nodes post environment data directly to Supabase over Wi-Fi, no relay server, and a Next.js web app visualizes it with 5-second polling. Actuators such as LEDs and fans are controlled through a desired-state pattern: the app only writes the target state, the ESP32 polls it and drives the hardware, and optimistic UI absorbs the round-trip delay. It is deployed on Vercel as a live demo.
The diagnosis model is still at the data stage. AI Hub blocks downloads from non-Korean IPs, so I wrote a Windows-side downloader that calls their API directly, merges the split archives, restores Korean filenames, and converts the JSON labels to YOLO-format boxes. From 5 disease classes × 1,000 images I extracted 39.9K lesion crops (train 32.2K / val 4,326 / test 3,408) using a group-aware stratified split, so crops from the same source photo never straddle train and validation. Training the crop classifier, ConvNeXt-Tiny or EfficientNetV2-S, is the next step; there are no results yet.
Highlights
- Data flow built end to end: ESP32 posting directly to Supabase over Wi-Fi → Next.js dashboard on 5-second polling.
- Desired-state actuator control (LED, fan): the app writes target state, the device polls and applies it, optimistic UI covers the latency.
- Worked around AI Hub's non-Korean-IP download block with a Windows-side downloader I wrote: direct API calls, split-archive merge, Korean filename restore, and JSON → YOLO-format label conversion.
- Built the training set myself: 39.9K lesion crops (train 32.2K / val 4,326 / test 3,408) across 5 disease classes, with a group-aware stratified split so crops from one photo never cross the train/validation boundary.
- Classifier training is the next step (ConvNeXt-Tiny / EfficientNetV2-S). The 2024 VGG16 attempt never reached usable accuracy, so the model is being rebuilt from the data up.
- Next.js 16 + TypeScript + Tailwind web app deployed on Vercel as a live demo.
Architecture
How the app is structured: screens, roles, and data flow.
This site keeps anonymous visit statistics. Privacy

