Today I started designing and building my simple tank robot. The goal is to create a small tracked robot controlled by an ESP32, with two TT gear motors powered through an L298N motor driver.
The base of the tank has been completed in CAD, along with the gears and treads. I have not finished designing the top section yet. Once the remaining CAD work is complete, I will print the top and continue assembling the robot.
Overall, this was a good start to the project. The mechanical design is progressing well, and the next milestone is completing the CAD model so assembly and programming can begin.
I wanted to build something that combined software, hardware, and creativity instead of making another website. I came up with SketchPrint, a project that transforms an Ender 3 3D printer into a pen plotter capable of drawing images, text, and artwork on paper.
The project started with researching how pen plotters work and figuring out how I could attach markers to the printer. I designed and printed different pen holder ideas before deciding on a design that securely holds a marker while still allowing the printer to move freely. I also researched different methods for supporting multiple pen colors and explored ideas like a rotating pen carousel.
Once the hardware concept was working, I started building the software. I created a React application that lets users upload images and prepares them for drawing. One of the biggest challenges was converting normal images into clean line art that the printer could actually draw. I experimented with multiple tracing libraries and eventually integrated image tracing into the application. I also spent a lot of time adjusting line thickness, scaling, and positioning so drawings would fit correctly on the page.
Another major challenge was generating G-code. Since the printer was originally designed to print plastic instead of draw with a marker, I had to learn how plotting G-code works and adapt it for pen movements. I tested different movement speeds, pen heights, and drawing paths while making sure the marker stayed on the paper without dragging or damaging it.
Throughout development I encountered many technical issues, including:
Solving these problems required reading documentation, debugging code, and testing many different approaches before finding solutions that worked reliably.
I’m most proud that SketchPrint combines mechanical design, software development, and electronics into one project. Instead of only building a website, I created a complete system that takes an uploaded image, processes it into line art, generates G-code, and prepares it for an Ender 3 to recreate with a marker.
Today I addeed a completely local AI model using Ollama. I researched local large language models and decided to integrate the Llama 3.2 3B model through Ollama.
llama3.2:3b model.ollama command by updating my system PATH.ollama serve again caused a port conflict.One of the biggest challenges was getting the backend running correctly. I accidentally tried to run server.js before creating the file, which caused a MODULE_NOT_FOUND error. After creating the server and installing the required packages, I was able to start it successfully.
Another challenge was that the AI initially hallucinated events like holidays and birthdays that weren’t actually on my calendar. To fix this, I rewrote the prompt to clearly instruct the model to only use the calendar events provided and never invent additional information.
I redesigned the AI briefing prompt so it now:
The AI summary feature now runs entirely on my own computer with:
The morning briefing is much more useful and feels like a real student assistant instead of a generic chatbot.
I focused on finishing the calendar management system for StudyOS. My goal was to make it possible to fully manage Google Calendar events without leaving the app.
The first major feature I completed was the New Event Modal. Users can now enter:
I originally built the modal using a standard HTML form, but I ran into issues where React would disconnect the form before it could submit. Instead of continuing to fight that problem, I redesigned the modal to use React state and button click handlers. This made creating events much more reliable.
After creating events worked, I added the ability to edit them.
Clicking an event now opens the same modal with all of the event information already filled in. Users can:
This required connecting the app to the Google Calendar Update and Delete API endpoints and refreshing the calendar after every change so the UI always stays up to date.
One feature I really wanted was support for multiple calendars.
Instead of always saving events in the primary calendar, the app now retrieves every calendar connected to the user’s Google account. A dropdown menu allows users to choose exactly where a new event should be saved.
Along the way I fixed several issues:
The calendar now supports:
I’m really happy with how this update turned out because the calendar has gone from being a read-only viewer to a fully functional event manager.
I focused on connecting more Google services to StudyOS and improving how calendar data is displayed.
I created a new Classroom page that automatically loads my Google Classroom courses and displays assignments from each class.
401 Unauthorized and 403 Permission Denied errors.I continued improving Gmail integration.
The calendar received several major improvements.
currentDate.This week, I worked on two of the biggest parts of StudyOS so far: the Calendar page and the Dashboard.
I started turning the Calendar page into something more useful than a simple event list. I added different views for Today, Week, and Month, making it easier to see upcoming events in different ways.
I also improved how events are displayed by adding:
These changes make the calendar feel much closer to a real productivity app.
I also redesigned the Dashboard to work more like a student command center.
One of the biggest improvements was turning the upcoming events section into a scrollable card. This keeps the dashboard clean even when there are lots of events and prevents long lists from stretching the page.
This new layout also leaves room for future dashboard widgets, such as:
Next, I plan to continue improving the Calendar page by adding:
After that, I’ll begin building more dashboard widgets to make StudyOS feel like a true all-in-one student workspace.
Today I upgraded StudyOS from a basic HTML/CSS/JavaScript project into a React (Vite) application, and then added Google Sign-In authentication. This was a major step toward turning StudyOS into a real student productivity platform instead of just a static UI.
StudyOS is designed as a Student Command Center, where students can eventually manage Gmail, Google Calendar, Drive, Classroom, and assignments all in one place.
I migrated the project into React using Vite to make it more scalable and closer to how real production apps are built.
Converted project from HTML/CSS/JS → React (Vite)
Broke UI into reusable components:
Sidebar
Header
Pages (Dashboard, Gmail, Calendar, etc.)
Implemented single-page navigation (no page reloads)
React makes it much easier to:
Manage multiple pages (like Gmail + Calendar + Drive)
Handle user login state
Build dynamic dashboards
After setting up React, I integrated Google Sign-In so users can log into StudyOS using their Google account.
Installed @react-oauth/google
Added JWT decoding to extract user info
Configured Google OAuth in React
Created login flow using Google Identity Services
Fixed OAuth issues including:
Displayed user profile after login:
Name
Profile picture
Restricted app access until user is signed in
Sidebar navigation between pages
Dashboard layout structure
Google Sign-In authentication system
User session state (logged in / logged out)
Profile display in header after login
Challenges
The biggest issue was Google OAuth configuration. I initially encountered:
Error 400: origin_mismatch
This happened because the correct localhost URLs were not added in the Google Cloud Console.
Fix
Added the following to Authorized JavaScript origins:
http://localhost:5173
After fixing this, Google Sign-In worked successfully.
Connect Google Calendar API (real events)
Connect Gmail API (inbox preview)
Connect Google Drive API (file access)
Build Assignment Workspace system
Add AI Daily Briefing (smart planning system)
Implement “Stay signed in” persistence
Improve UI with modern styling (glassmorphism + animations)
Time Spent: 45 minutes
Today I started building StudyOS, a student productivity app that combines Google Classroom, Gmail, Calendar, Drive, and other Google services into one place. My goal is to reduce the number of tabs students need to keep open and make staying organized much easier.
I spent some time deciding how I wanted the app to be organized. Instead of making another simple dashboard, I decided to build it like a Student Command Center where everything can eventually be managed from one place.
I’m really happy with the progress so far. Even though it’s only the first version, I now have a solid foundation to build on. Next I’ll start adding real functionality instead of placeholder content.
I have assembled the 12 key piano and I have adjusted code in the site to fit it I also have fixed many bugs and I’ve also made it have 2 modes. It has a Wi-Fi mode where you can connect to the site, but you can also use the site with your mouse and play or you can open it on your phone and use touchscreen. The second mode is the standalone mode which you can connect to a speaker to play with the board without using a device and I have fully enclosed the piano so you can transport it
added audio thats plays when keys are pressed connected to the keys and that
finished printing and assembling the mini version of the piano
Designed 12 key and 5 key pianos planning on adding more for electronic storage next
created simple webpage to receive esp32 signals from switches and a starter keyboard display taht shows what keys been pressed
ESP32 code that hosts a web server and sends piano key states to a browser.