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

JishnuDutta

@JishnuDutta

Joined June 4th, 2026

  • 13Devlogs
  • 5Projects
  • 2Ships
  • 0Votes
I am a very curious child who is fascinated by the world of tech. Btw, I'm 13.
Ship

After a lot of late nights, I finally finished **JishOS v1**!

JishOS is a browser-based desktop environment built with React. It has draggable and resizable windows, desktop widgets, a browser, notes app, and a Python IDE powered by Pyodide, so you can write and run Python entirely in your browserβ€”no backend required.

Some highlights:

* Custom window manager with dragging, resizing and focus management
* Monaco Editor for the Python IDE
* Interactive terminal
* `pip install` support for Pyodide packages
* Persistent package installation using LocalStorage
* Built-in Matplotlib support with a Plot Viewer
* Welcome app with a quick start guide
* Clock and calendar widgets

The most challenging part was definitely integrating Matplotlib. I wanted plots to behave like a desktop application instead of just appearing at the bottom of the page, so I ended up embedding the WebAgg plot viewer inside its own JishOS window.

There are still lots of ideas for future versions (a virtual filesystem, multiple Python files, a file explorer, projects, and more), but I wanted to ship a solid v1 instead of endlessly adding features.

I'd love to hear any feedback or ideas for future versions!

Try project β†’ See source code β†’
Open comments for this post

12h 37m 3s logged

JishOS Python IDE Becomes a Real IDE

This was one of the biggest development sessions for JishOS so far. The Python IDE went from a basic code runner to something that feels much closer to a real desktop IDE.

✨ New Features

🧩 Desktop Widgets

Introduced desktop widgets to enhance the operating system experience.

Features:

  • πŸ•’ Live digital clock
  • πŸ“… Interactive calendar
  • Seamlessly integrated with the desktop UI

🐍 Pyodide Integration

  • Embedded a full Python runtime using Pyodide.
  • Python now runs completely inside the browser.
  • No backend server required.

πŸ“ Monaco Editor

  • Integrated Monaco Editor.
  • Python syntax highlighting.
  • Larger font and cleaner editing experience.
  • Code is automatically saved using local storage.

πŸ’» Interactive Terminal

  • Terminal displays Python output.

  • Color-coded messages:

    • 🟒 Python output
    • πŸ”΄ Errors
    • 🟑 User commands
    • πŸ”΅ JishOS responses
  • Auto-scroll implemented.

  • Fixed several scrolling and layout bugs.

πŸ“¦ Package Manager

Implemented a lightweight package manager.

Supported command:

pip install <package>

Features:

  • Downloads packages using pyodide.loadPackage()
  • Remembers installed packages with LocalStorage
  • Prevents duplicate installations
  • Clean success/error messages

Successfully tested with:

  • numpy
  • pandas
  • matplotlib

πŸ“Š Plot Viewer

Added the first version of the Plot Viewer.

Current implementation:

  • Detects when Matplotlib creates figures.
  • Automatically opens a Plot Viewer window.
  • Embeds Matplotlib’s native WebAgg viewer inside JishOS.
  • Toolbar (zoom, pan, save) works.

This is considered a temporary v1 solution before moving to a custom renderer in a future version.

πŸ–₯ Window System Improvements

Improved the desktop window manager:

  • Better focus handling
  • More reliable resizing
  • Fixed several overflow issues
  • Better scrolling behavior for embedded applications

πŸ› Major Bugs Fixed

  • Fixed terminal scrollbar appearing too late.
  • Fixed Monaco editor overflowing its window.
  • Fixed terminal auto-scroll.
  • Fixed rounded Monaco container.
  • Fixed Pyodide loading issues.
  • Fixed duplicate package installation.
  • Fixed Plot Viewer DOM integration.

πŸ“š Things Learned

Today involved learning about:

  • Pyodide package loading
  • Browser virtual file systems
  • React refs
  • DOM manipulation
  • WebAgg backend
  • LocalStorage persistence
  • Component communication in React
  • Handling asynchronous Python execution

πŸ”œ Planned for Version 2

Instead of delaying the first release, these features have been postponed to v2:

  • πŸ“ Virtual filesystem
  • πŸ“„ Multiple files (main.py, main2.py, data.csv, notes.txt)
  • πŸ—‚ File Explorer
  • πŸ“‚ Folder support
  • πŸ’Ύ Projects
  • πŸ–Ό Custom Plot Viewer (PNG-based rendering)
  • πŸ–₯ Multiple Python projects

0
0
2
Open comments for this post

6h 3m 39s logged

Window Management Improvements

This update focused on making the JishOS desktop feel much closer to a real operating system.

What’s new:

  • πŸ–±οΈ Added window resizing from all four edges with minimum size limits.
  • πŸ“ Fixed windows resizing beyond the desktop boundaries.
  • πŸͺŸ Fixed newly opened windows occasionally appearing partially off-screen due to CSS positioning issues.
  • πŸ“ Implemented cascading window offsets so each new window opens slightly offset from the previous one.
  • 🎯 Added window focus, allowing a clicked window to move to the front of the stack.

This update significantly improves the overall desktop experience and lays the groundwork for future features like minimizing, maximizing, and window snapping.

0
0
1
Open comments for this post

6h 32m 41s logged

Progress Update (Past 2 Days) πŸš€
Over the past two days, I built the core desktop environment for JishOS, including:

πŸ–₯️ Desktop layout

πŸ“Œ Top bar

πŸͺŸ Reusable window component

πŸ“‚ Desktop icons

πŸ“ Notes app

πŸ–±οΈ Custom window dragging system built from scratch using React (no drag library)

Next, I’ll add localStorage support for notes, multiple named notes, improved window management, and more desktop applications.

0
0
2
Open comments for this post

8h 3m 53s logged

Day 6 β€” 26.06.2026: Designing the Top Case

Today I completed the design of the top case. I added all the required cutouts, including the Cherry MX switch openings, OLED display window, rotary encoder hole, USB Type-C opening, and the mounting holes. Most of the time was spent adjusting dimensions and fixing clearances, especially around the USB-C port, to make sure everything fit properly.

Note: The Lapse website was offline for most of the day, so although I worked for around 3 hours, only about 30 minutes of the session was recorded.

Time spent: 3 hrs

Lapse: Day 6


Day 7 β€” 27.06.2026: Heat-Set Inserts & Final Touches

Today I redesigned the mounting system to use M3 Γ— 5 Γ— 4 mm heat-set inserts. I updated all the standoffs, added chamfers to make installing the inserts easier, created counterbores for the screws, and rounded the outer corners of the enclosure to give the case a cleaner and more polished appearance.

Time spent: 2 hrs

Lapse: Day 7


Day 8 β€” 28.06.2026: Finalizing the Project & Shipping

Today I finished the enclosure by adding the final colours, refining the rounded corners, and making the last design adjustments. After completing the CAD work, I started learning CircuitPython and wrote a temporary firmware so the macropad would be functional for the initial build. With everything ready, I completed the documentation and submitted the project for shipping.

Time spent: 4.5 hrs

Lapse: Day 8


Full Development Journal

These updates cover only the final stages of the project. The complete development journal, including the PCB design, CAD iterations, troubleshooting, firmware progress, and the entire build process from the beginning, can be found here:

πŸ“– Full Journal: https://github.com/J1234D/ByteBoard/blob/main/JOURNAL.md

0
0
5
Open comments for this post

12h 16m 18s logged

πŸŽ›οΈ ByteBoard β€” RGB Macropad

Day 0 β€” 19.06.2026

I started ByteBoard after seeing my friend Sunrit Hazra build a macropad through Hack Club Blueprint. The project inspired me to design one completely from scratch while learning PCB design, electronics, firmware, and CAD along the way.

I began by studying the fundamentals of schematic design and PCB layout, creating a simple practice PCB before moving on to the real project.

Time spent: 3 hours

Day 1 β€” 20.06.2026

After that, I designed the complete schematic for the macropad, including a 3Γ—3 key matrix powered by the Seeed Studio XIAO RP2040, a rotary encoder, and a 0.91” OLED display.

Time spent: 5 hours

Day 2 β€” 21.06.2026

Once the schematic was complete, I designed the PCB, added SK6812 MINI-E RGB LEDs around each switch for underglow, placed the mounting holes, and routed the entire board. After several iterations and design rule checks, the PCB was successfully completed and exported.

Time spent: 8 hours

Day 3 β€” 22.06.2026

With the electronics finished, I started learning Autodesk Fusion to design the enclosure. After practicing with a small bracket model, I began creating the case for ByteBoard.

Time spent: 2 hours

Day 4 β€” 23.06.2026

I designed the bottom plate, added standoffs and walls, and fixed multiple clearance issues around the USB Type-C connector to ensure the board would fit and remain fully usable inside the enclosure.

Time spent: 7 hours

Day 5 β€” 25.06.2026

I continued refining the case design and resolving fitment issues to improve usability and structure.

Time spent: 3 hours

So far, I’ve spent over 28 hours on the project, learning both PCB design and mechanical CAD while documenting my progress through Hack Club Lapse timelapses. The next steps are to finish the enclosure, manufacture the PCB, solder all components, write the firmware, and assemble the final macropad.

Timelapses

0
0
2

Followers

Loading…