You are browsing as a guest. Sign up (or log in) to start making projects!

Vedant_Daga

@Vedant_Daga

Joined June 3rd, 2026

  • 13Devlogs
  • 5Projects
  • 1Ships
  • 15Votes
Hi everyone, my name's Vedant Daga and I'm a freshman and I love coding and have been coding since i was a 2nd grader. Look at some of my projects to see what I've been working on!!!
Open comments for this post

48m 29s logged

Devlog: getting ready to ship

Spent this session getting everything ready to ship. Turns out “it works on my machine” and “a random person can actually try it” are super different things lol.

Free preview so people can actually try it

Biggest problem was the whole site was locked behind a login. If someone clicked the link they just hit a sign in wall, which is basically the fastest way to make people leave. So I made the first two lessons (Unit 1 lesson 1 and 1.2) totally free, no account needed.

Now if your signed out:

  • The homepage loads like normal instead of throwing you to the login page
  • The free lessons open up so you can read them, run real Python in the browser, and take the quiz
  • Every other lesson has a little lock icon and sends you to login
  • Save and Check still ask you to sign in since those need an account (progress and the AI grading are tied to your user)

Best part is running code and the quizzes already worked without an account, so the free preview actually feels real and not just a teaser. Pretty happy with how that turned out.

Lock icons on the homepage

Added some logic so signed out people see a lock on the lessons they cant open yet, plus a “Free preview, sign in to unlock all lessons” message at the top. The free ones keep the normal arrow so its obvious which ones you can actually click.

Fixed the README

My old README was kinda lying at this point lol. It said “no server needed” and “all your data stays locally” which used to be true but isnt anymore now that I got Supabase doing accounts, progress syncing, and AI grading. So I rewrote the whole thing to actually match what the project does, threw the live demo link right at the top, and explained how the free preview works.

What I checked

  • Made sure my OpenAI key never got committed (its gitignored and the grading function reads it server side only)
  • Tested the signed out flow in an incognito window so I could see exactly what a new visitor sees

Feeling really good about where its at now. Basically just doing one last check over everything before I actually ship it!!!

Devlog: getting ready to ship

Spent this session getting everything ready to ship. Turns out “it works on my machine” and “a random person can actually try it” are super different things lol.

Free preview so people can actually try it

Biggest problem was the whole site was locked behind a login. If someone clicked the link they just hit a sign in wall, which is basically the fastest way to make people leave. So I made the first two lessons (Unit 1 lesson 1 and 1.2) totally free, no account needed.

Now if your signed out:

  • The homepage loads like normal instead of throwing you to the login page
  • The free lessons open up so you can read them, run real Python in the browser, and take the quiz
  • Every other lesson has a little lock icon and sends you to login
  • Save and Check still ask you to sign in since those need an account (progress and the AI grading are tied to your user)

Best part is running code and the quizzes already worked without an account, so the free preview actually feels real and not just a teaser. Pretty happy with how that turned out.

Lock icons on the homepage

Added some logic so signed out people see a lock on the lessons they cant open yet, plus a “Free preview, sign in to unlock all lessons” message at the top. The free ones keep the normal arrow so its obvious which ones you can actually click.

Fixed the README

My old README was kinda lying at this point lol. It said “no server needed” and “all your data stays locally” which used to be true but isnt anymore now that I got Supabase doing accounts, progress syncing, and AI grading. So I rewrote the whole thing to actually match what the project does, threw the live demo link right at the top, and explained how the free preview works.

What I checked

  • Made sure my OpenAI key never got committed (its gitignored and the grading function reads it server side only)
  • Tested the signed out flow in an incognito window so I could see exactly what a new visitor sees

Feeling really good about where its at now. Basically just doing one last check over everything before I actually ship it!!!

Replying to @Vedant_Daga

0
1
Open comments for this post

3h 21m 24s logged

DevLog #1 — Teaching a Raspberry Pi to Worry About My Plants

Why I Started This Project

I kept killing plants.

Not from neglect exactly. More from guessing wrong. Water too much, the roots rot. Water too little, the leaves curl. The problem isn’t that I don’t care. It’s that I have no idea what’s actually happening underground.

That’s what GardenBuddy is. A Raspberry Pi that watches your soil, temperature, humidity, and light in real time and tells you specifically what to do about it.

The Vision

Most plant monitors give you raw numbers. 48% soil moisture. 72°F.

Okay. Is that good? Should I water now or in three hours?

I wanted the system to answer that question directly.

Not just “your soil is at 48%” but “your plant is stable, humidity is the primary stressor right now, here’s what to do.”

That meant building two models, not one.

What I Built

The core is a double-model AI pipeline.

Model 1 is an LSTM classifier. It trains on your own sensor history. Looks at the last 30 readings (5 minutes of data) and classifies plant health as thriving, stable, stressed, or critical. Because it trains on your garden’s data specifically, it learns the dynamics of your setup rather than thresholds someone else picked.

Model 2 is a local LLM (Ollama, llama3.2:3b). It takes the LSTM’s structured output, the health class, the primary stressor, the confidence score, and writes two actionable sentences in plain English. It runs in a background thread every 30 seconds so it never blocks sensor polling.

The whole thing runs on your local network. No cloud. No API keys. No internet required.

Current features:

  • ✓ Live readings every 10 seconds: soil, temp, humidity, light
  • ✓ Rolling 5-minute history charts for each sensor
  • ✓ Garden Health Score (0-100) combining all four sensors
  • ✓ LSTM health classification with confidence and stress vector
  • ✓ Ollama-generated plain-English care advice
  • ✓ RGB LED on the Pi that goes green, amber, or red based on health score
  • ✓ InfluxDB writes for long-term history
  • ✓ Automated alerts for low soil, heat stress, and fungal risk

The Cleanup That Took Longer Than the Feature

After the AI pipeline landed, sensor_reader.py was 454 lines.

About 200 of those were fallback paths and stubs I had written “just in case the model wasn’t loaded” or “just in case Ollama timed out.” They made sense while I was building. They made the code unreadable once the system was stable.

Spent an entire session deleting them. Thirteen files touched, 219 lines removed, zero new functionality.

That cleanup felt like the project actually becoming real.

The Hardware Side

The physical setup is a Raspberry Pi 3B+ wired to a DHT22 for temperature and humidity, a capacitive soil moisture probe through an ADS1115 ADC over I2C, a photoresistor for light level, and an RGB LED that reflects the health score in real time.

Soil calibration is two constants you measure once: ADC reading in dry air and ADC reading fully submerged. Everything else derives from those.

Challenges

The hardest part was making the LLM feel useful rather than generic.

Early versions of the Ollama prompt just got handed raw sensor numbers. The responses came back vague. “Ensure adequate watering.” The model was reasoning about numbers without context for what they meant.

The fix was making the LSTM go first. Now Ollama receives structured signals: health class, primary stressor, confidence. The responses got specific immediately. The model has something to anchor to.

Looking Ahead

The foundation is working. Sensors are reading, the LSTM is classifying, Ollama is advising, the LED is changing color.

What’s missing is a trained model that has seen more than a few days of data, and a real test of the alerts under actual stress conditions. Planning to intentionally underwater and watch the score drop.

Apparently it’s doing fine.

DevLog #1 — Teaching a Raspberry Pi to Worry About My Plants

Why I Started This Project

I kept killing plants.

Not from neglect exactly. More from guessing wrong. Water too much, the roots rot. Water too little, the leaves curl. The problem isn’t that I don’t care. It’s that I have no idea what’s actually happening underground.

That’s what GardenBuddy is. A Raspberry Pi that watches your soil, temperature, humidity, and light in real time and tells you specifically what to do about it.

The Vision

Most plant monitors give you raw numbers. 48% soil moisture. 72°F.

Okay. Is that good? Should I water now or in three hours?

I wanted the system to answer that question directly.

Not just “your soil is at 48%” but “your plant is stable, humidity is the primary stressor right now, here’s what to do.”

That meant building two models, not one.

What I Built

The core is a double-model AI pipeline.

Model 1 is an LSTM classifier. It trains on your own sensor history. Looks at the last 30 readings (5 minutes of data) and classifies plant health as thriving, stable, stressed, or critical. Because it trains on your garden’s data specifically, it learns the dynamics of your setup rather than thresholds someone else picked.

Model 2 is a local LLM (Ollama, llama3.2:3b). It takes the LSTM’s structured output, the health class, the primary stressor, the confidence score, and writes two actionable sentences in plain English. It runs in a background thread every 30 seconds so it never blocks sensor polling.

The whole thing runs on your local network. No cloud. No API keys. No internet required.

Current features:

  • ✓ Live readings every 10 seconds: soil, temp, humidity, light
  • ✓ Rolling 5-minute history charts for each sensor
  • ✓ Garden Health Score (0-100) combining all four sensors
  • ✓ LSTM health classification with confidence and stress vector
  • ✓ Ollama-generated plain-English care advice
  • ✓ RGB LED on the Pi that goes green, amber, or red based on health score
  • ✓ InfluxDB writes for long-term history
  • ✓ Automated alerts for low soil, heat stress, and fungal risk

The Cleanup That Took Longer Than the Feature

After the AI pipeline landed, sensor_reader.py was 454 lines.

About 200 of those were fallback paths and stubs I had written “just in case the model wasn’t loaded” or “just in case Ollama timed out.” They made sense while I was building. They made the code unreadable once the system was stable.

Spent an entire session deleting them. Thirteen files touched, 219 lines removed, zero new functionality.

That cleanup felt like the project actually becoming real.

The Hardware Side

The physical setup is a Raspberry Pi 3B+ wired to a DHT22 for temperature and humidity, a capacitive soil moisture probe through an ADS1115 ADC over I2C, a photoresistor for light level, and an RGB LED that reflects the health score in real time.

Soil calibration is two constants you measure once: ADC reading in dry air and ADC reading fully submerged. Everything else derives from those.

Challenges

The hardest part was making the LLM feel useful rather than generic.

Early versions of the Ollama prompt just got handed raw sensor numbers. The responses came back vague. “Ensure adequate watering.” The model was reasoning about numbers without context for what they meant.

The fix was making the LSTM go first. Now Ollama receives structured signals: health class, primary stressor, confidence. The responses got specific immediately. The model has something to anchor to.

Looking Ahead

The foundation is working. Sensors are reading, the LSTM is classifying, Ollama is advising, the LED is changing color.

What’s missing is a trained model that has seen more than a few days of data, and a real test of the alerts under actual stress conditions. Planning to intentionally underwater and watch the score drop.

Apparently it’s doing fine.

Replying to @Vedant_Daga

0
3
Open comments for this post

3h 52m 12s logged

Deleted 24,000 Lines, Added a Python IDE, and Made AI Grade Your Code

Big update.

Since last time, the site went from 27 copy-pasted lesson pages to one dynamic page, got a real Python editor that runs in the browser, and now has an AI that checks your practice answers and gives you hints.

The Great Deletion

Every lesson used to be its own 907-line HTML file. 27 of them. All basically identical.

Changing one button meant changing it 27 times, which I was obviously never going to do.

So I merged them into one lesson.html that reads ?unit=2&lesson=3 from the URL and imports that lesson’s data.js dynamically.

29 files changed, 25 insertions(+), 24498 deletions(-)

Deleted 24,498 lines! Best commit ever.

The IDE

Next, I replaced the static code examples with an actual editor (CodeMirror) plus Python running in the browser through Pyodide.

No server, because the code runs on your own machine.

Then I added it to the practice questions too: every question gets its own mini IDE with Run + Save, and saves go to Supabase so your code is still there when you come back.

This took way more bug fixing than expected. There was a cursed '\n' error, the editor kept breaking when switching themes, and long lines ran off the screen until I added line wrapping.

Like 5 commits of just fixing the editor (help me).

The AI Checker

The big one. There is now a Check button next to Run that has gpt-4o-mini grade your code:

✗ Almost! Your scoreboard only prints one player.
  Hint: you need a second print() line for the second player.

The site is fully static, so I couldn’t just put an API key in the frontend (the whole internet would spend my credits).

Instead, the code and its output get sent to a Supabase Edge Function, which hides the key, checks that you’re logged in, and asks OpenAI for a strict JSON verdict: passed, feedback, hint.

I compared Gemini and Ollama first, but went with OpenAI because I have $5 of credits left from a previous grant.

And since I don’t want to overuse my credits: 5 checks per minute and 500 per day per user, 1,400 per day for the whole app.

Next up: grading notes per question so the AI knows exactly what each task wants, and maybe an admin dashboard to watch usage.

Deleted 24,000 Lines, Added a Python IDE, and Made AI Grade Your Code

Big update.

Since last time, the site went from 27 copy-pasted lesson pages to one dynamic page, got a real Python editor that runs in the browser, and now has an AI that checks your practice answers and gives you hints.

The Great Deletion

Every lesson used to be its own 907-line HTML file. 27 of them. All basically identical.

Changing one button meant changing it 27 times, which I was obviously never going to do.

So I merged them into one lesson.html that reads ?unit=2&lesson=3 from the URL and imports that lesson’s data.js dynamically.

29 files changed, 25 insertions(+), 24498 deletions(-)

Deleted 24,498 lines! Best commit ever.

The IDE

Next, I replaced the static code examples with an actual editor (CodeMirror) plus Python running in the browser through Pyodide.

No server, because the code runs on your own machine.

Then I added it to the practice questions too: every question gets its own mini IDE with Run + Save, and saves go to Supabase so your code is still there when you come back.

This took way more bug fixing than expected. There was a cursed '\n' error, the editor kept breaking when switching themes, and long lines ran off the screen until I added line wrapping.

Like 5 commits of just fixing the editor (help me).

The AI Checker

The big one. There is now a Check button next to Run that has gpt-4o-mini grade your code:

✗ Almost! Your scoreboard only prints one player.
  Hint: you need a second print() line for the second player.

The site is fully static, so I couldn’t just put an API key in the frontend (the whole internet would spend my credits).

Instead, the code and its output get sent to a Supabase Edge Function, which hides the key, checks that you’re logged in, and asks OpenAI for a strict JSON verdict: passed, feedback, hint.

I compared Gemini and Ollama first, but went with OpenAI because I have $5 of credits left from a previous grant.

And since I don’t want to overuse my credits: 5 checks per minute and 500 per day per user, 1,400 per day for the whole app.

Next up: grading notes per question so the AI knows exactly what each task wants, and maybe an admin dashboard to watch usage.

Replying to @Vedant_Daga

0
5
Open comments for this post

1h 34m 21s logged

Progress now saves to the cloud!!!

Ripped out localStorage and replaced it with Supabase so lesson completions are now tied to your account, not your browser. You can now sign in on any device and your progress is tracked there too.

I had to change 30 DIFFERENT FILES JUST TO ADD THIS, but hey its working properly now and its another BIG step towards making a full learning platform…you guys can now try it!!!!!!!

Progress now saves to the cloud!!!

Ripped out localStorage and replaced it with Supabase so lesson completions are now tied to your account, not your browser. You can now sign in on any device and your progress is tracked there too.

I had to change 30 DIFFERENT FILES JUST TO ADD THIS, but hey its working properly now and its another BIG step towards making a full learning platform…you guys can now try it!!!!!!!

Replying to @Vedant_Daga

0
4
Open comments for this post

3h 59m 58s logged

finally understanding what a schematic actually is

spent the last few hours in KiCad building my macropad

  • 9 Switches
  • Rotary Encoder (for volume)
  • RGB Backlights on each key
  • OLED Display
  • Seeed XIAO RP2040

Finished the schematic and started placing the components on the PCB (takes wayyyy to long to align everything properly)

The hardest part at least till now was realizing MX switch footprints have Edge.Cuts built INTO THEM….AND IT KEPT ON THROWING DRC Errors.

next up: routing all the traces together (going to take wayyy to long)

finally understanding what a schematic actually is

spent the last few hours in KiCad building my macropad

  • 9 Switches
  • Rotary Encoder (for volume)
  • RGB Backlights on each key
  • OLED Display
  • Seeed XIAO RP2040

Finished the schematic and started placing the components on the PCB (takes wayyyy to long to align everything properly)

The hardest part at least till now was realizing MX switch footprints have Edge.Cuts built INTO THEM….AND IT KEPT ON THROWING DRC Errors.

next up: routing all the traces together (going to take wayyy to long)

Replying to @Vedant_Daga

0
3
Open comments for this post

3h 24m 20s logged

PULSEFLOW AI IS FINALLY LIVE

Just deployed the full stack today (backend is on Render and frontend is on Vercel).

The backend was so easy to get running, only took 10ish mins. MIGHT have forgot that Optional wasn’t imported in the config.py.

The frontend was SO MUCH HARDER OMG! first, Vercel blocked the deploy three times because of Next.js 15.0.3 had security vulnerabilities. i just updated to 15.3.3 (this didnt work because it had its own CVE). after that i tried using next@lastest, but then i needed ESLint 9, which broke the entire dependency tree.

I used ^15 so npm resolves the latest patched 15.x without jumping major versions. Four deploys, two CVEs, one peer dependency conflict. ahhh this was painful

BUT, IT FINALLY WORKS SO IT WAS WORTH IT!!!!

(image shows it running on vercel)

PULSEFLOW AI IS FINALLY LIVE

Just deployed the full stack today (backend is on Render and frontend is on Vercel).

The backend was so easy to get running, only took 10ish mins. MIGHT have forgot that Optional wasn’t imported in the config.py.

The frontend was SO MUCH HARDER OMG! first, Vercel blocked the deploy three times because of Next.js 15.0.3 had security vulnerabilities. i just updated to 15.3.3 (this didnt work because it had its own CVE). after that i tried using next@lastest, but then i needed ESLint 9, which broke the entire dependency tree.

I used ^15 so npm resolves the latest patched 15.x without jumping major versions. Four deploys, two CVEs, one peer dependency conflict. ahhh this was painful

BUT, IT FINALLY WORKS SO IT WAS WORTH IT!!!!

(image shows it running on vercel)

Replying to @Vedant_Daga

0
5
Open comments for this post

3h 24m 9s logged

JUST ADDED UNITS 4, 5, 6, AND 7!!!!!!!!!

The course is officially 27 lessons in total. I also made an actual home page that lists every unit and lesson so it’s easier to use the course without having to open tons of random files.

My favorite part of everything was adding the lesson completion tracking. Basically each lesson has a “Mark as complete” button which then saves everything to a localStorage. No backend needed (thank god).. Also the homepage now shows all the finished lessons in green, and also has an overall progress bar showing how far someone is through all 27 lessons.

I MAY have spent way too much time trying to figure out why it kept showing an Error 404 when clicking through different lessons. I checked the JS, checked all the paths, and then rewrote all the href logic. Turns out a browser can’t handle spaces in folder names over file://. I just wrapped the path in encodeURI(). MAY have spent an hour tryna debug this but it works so yayyaya!!!

Gonna deploy to GitHub Pages so it’s a real URL, add a quiz score tracker so students can see how they’re doing across the whole course, and maybe create an account system so people can track everything, but its not fixed yet so keep looking

JUST ADDED UNITS 4, 5, 6, AND 7!!!!!!!!!

The course is officially 27 lessons in total. I also made an actual home page that lists every unit and lesson so it’s easier to use the course without having to open tons of random files.

My favorite part of everything was adding the lesson completion tracking. Basically each lesson has a “Mark as complete” button which then saves everything to a localStorage. No backend needed (thank god).. Also the homepage now shows all the finished lessons in green, and also has an overall progress bar showing how far someone is through all 27 lessons.

I MAY have spent way too much time trying to figure out why it kept showing an Error 404 when clicking through different lessons. I checked the JS, checked all the paths, and then rewrote all the href logic. Turns out a browser can’t handle spaces in folder names over file://. I just wrapped the path in encodeURI(). MAY have spent an hour tryna debug this but it works so yayyaya!!!

Gonna deploy to GitHub Pages so it’s a real URL, add a quiz score tracker so students can see how they’re doing across the whole course, and maybe create an account system so people can track everything, but its not fixed yet so keep looking

Replying to @Vedant_Daga

0
4
Open comments for this post

48m 45s logged

JUST FINISHED UNIT 3 AND MADE A PROPER README!!!!!!!!!

Just finished all 4 lessons for unit 3 today:

  • comparisons and booleans
  • if/else
  • elif chains
  • combining conditions with and/or/not

Each one is fully complete with a goal, explanation, an example code, practice questions, a quiz, and a project. the projects are actually pretty fun (BMI calculator, theme park entry checker, and even more…you should check the repo out frfr)

Also just added a full README to show the entire course, what it covers, what each lesson has, how the file system works, and a full breakdown of every single unit, every lesson, and every project.

Right now the course is sitting at 7 units, 27 lessons, 27 projects and 54 practice tasks total. Just finished unit 3, FOUR MORE TO GO!!!

JUST FINISHED UNIT 3 AND MADE A PROPER README!!!!!!!!!

Just finished all 4 lessons for unit 3 today:

  • comparisons and booleans
  • if/else
  • elif chains
  • combining conditions with and/or/not

Each one is fully complete with a goal, explanation, an example code, practice questions, a quiz, and a project. the projects are actually pretty fun (BMI calculator, theme park entry checker, and even more…you should check the repo out frfr)

Also just added a full README to show the entire course, what it covers, what each lesson has, how the file system works, and a full breakdown of every single unit, every lesson, and every project.

Right now the course is sitting at 7 units, 27 lessons, 27 projects and 54 practice tasks total. Just finished unit 3, FOUR MORE TO GO!!!

Replying to @Vedant_Daga

0
5
Open comments for this post

1h 3m 33s logged

JUST FINISHED UNIT TWO!!! also organized the files into a data.js file and a lesson.html file for each lesson. check my github for the latest updatesssssss

JUST FINISHED UNIT TWO!!! also organized the files into a data.js file and a lesson.html file for each lesson. check my github for the latest updatesssssss

Replying to @Vedant_Daga

0
4
Open comments for this post

31m 20s logged

JUST CREATED UNIT ONE!!!!!! just some basic print(), input(), different variables, and casting

JUST CREATED UNIT ONE!!!!!! just some basic print(), input(), different variables, and casting

Replying to @Vedant_Daga

0
4
Open comments for this post

35m 35s logged

Just created the entire lesson plan for my course and JUST LEARNED HOW TO USE FIGMA!!!! I’m lowk just used Figma for the website design

Just created the entire lesson plan for my course and JUST LEARNED HOW TO USE FIGMA!!!! I’m lowk just used Figma for the website design

Replying to @Vedant_Daga

0
7
Ship

I made a personal portfolio for me. I've always wanted to make a website, so i finally decided to start this project. Its a full-stack React web app that shows off my skills as a developer. It covers my projects, tech stack, education, and some fun non-tech hobbies like tennis and hiking. The toughest part was making it feel unique and what I wanted from my dream website. I added things like a word wheel, a really cool typewriter animations (my favorite part of everything" and tons of other animations and other effects.

I'm really super proud of the projects section. It shows some of the projects I'm most proud of like my LSTM models for analyzing stocks to an FRC robotics chatbot powered by RAG and Ollama, to my latest Hackathon Project for healthcare.

To check it out, just clone the repo and run `npm install` followed by `npm run dev`. It will load locally on your computer. Since everything is static, there's no backend to fuss over. You won't need any API keys or configurations either – it works right away out of the box.

  • 2 devlogs
  • 3h
Try project → See source code →
Open comments for this post

23m 48s logged

Added a README.md and got the MY FIRST PROJECT READY TO SHIP

Added a README.md and got the MY FIRST PROJECT READY TO SHIP

Replying to @Vedant_Daga

0
4
Open comments for this post

2h 7m 44s logged

updated tons of info and revised website looks

updated tons of info and revised website looks

Replying to @Vedant_Daga

0
2

Followers

Loading…