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

Ved

@Ved

Joined May 31st, 2026

  • 12Devlogs
  • 9Projects
  • 3Ships
  • 30Votes
I'm Ved, a student, developer, and electronics enthusiast from India. I enjoy building embedded systems, IoT projects, and software applications that solve real-world problems. I'm participating in Stardance to learn new skills, create ambitious projects, and connect with other makers.
Ship Changes requested

# InkFlow

> A modern infinite whiteboard application built with **Python** and **PySide6**.

---

## πŸš€ Project Status

InkFlow is currently in active development. The foundation of the application has been built, focusing on creating a scalable architecture that will support multiple drawing tools and future features.

---

# Features Implemented till date

## Pen Tool

* Smooth freehand drawing
* Rounded stroke caps
* Rounded joins for natural handwriting
* Adjustable pen width
* Automatic stroke creation using `QPainterPath`

---

## β€’ Single Click Dot Drawing

InkFlow automatically detects when the mouse is clicked without movement and draws a perfectly centered filled dot instead of creating an empty stroke.

---

## Infinite Canvas

The application currently provides a large virtual drawing area using `QGraphicsScene`, allowing users to freely move around while drawing.

Current scene size:

```text
5000 Γ— 5000 px
```

This will later evolve into a dynamically expanding infinite canvas.

---

## Panning

Navigate around the canvas using:

* Middle Mouse Button + Drag
* Hold **Space** + Left Mouse Drag

The camera moves independently of the drawing system, allowing a smooth workflow similar to professional whiteboard applications.

---

## Zoom

Implemented mouse-wheel zoom with:

* Zoom centered around the mouse cursor
* Geometric zoom progression
* Minimum zoom limit
* Maximum zoom limit

This provides smooth navigation without distortion.

---

# Architecture

One of the major goals of InkFlow is maintaining a clean and extensible architecture.

Instead of placing all functionality inside a single `Canvas` class, responsibilities have been separated.

```
MainWindow
β”‚
└── Canvas
β”‚
β”œβ”€β”€ Camera (Pan & Zoom)
β”œβ”€β”€ Scene Management
└── Tool System
β”‚
└── Active Tool
```

---

## Tool System

InkFlow has a modular tool architecture, which makes it easier to maintain.

Current hierarchy:

```
BaseTool
β”‚
└── PenTool
```

Each tool is responsible for implementing its own:

* Mouse Press
* Mouse Move
* Mouse Release

This allows future tools to be added without modifying the core canvas.

---

## Tool Registry

Canvas maintains a registry of available tools.

Example:

```python
self.tools = {
"pen": PenTool(self)
}
```

The active tool is simply a reference to one of these objects.

```python
self.active_tool = self.tools["pen"]
```

This makes switching tools straightforward while preserving each tool's internal state.

---

# Current Project Structure

```
InkFlow/
β”‚
β”œβ”€β”€ main.py
β”‚
β”œβ”€β”€ ui/
β”‚ β”œβ”€β”€ main_window.py
β”‚ └── canvas.py
β”‚
β”œβ”€β”€ tools/
β”‚ β”œβ”€β”€ base_tool.py
β”‚ └── pen_tool.py
β”‚
└── assets/
```

---

# Current Development Goals

* Build a modular tool system
* Keep the codebase clean and scalable
* Separate UI logic from drawing logic
* Prepare the project for future expansion

---

# Planned Features

The following features are planned for future versions:

* Tool Toolbar
* Eraser Tool
* Rectangle Tool
* Circle Tool
* Line Tool
* Arrow Tool
* Text Tool
* Selection Tool
* Color Picker
* Brush Size Controls
* Undo / Redo
* Layers
* Infinite Dynamic Canvas
* Save / Load Projects
* Export to PNG
* Export to PDF
* Keyboard Shortcuts
* Custom Themes

---

# Design Philosophy

InkFlow is being designed with long-term maintainability in mind.

Instead of building features as one large class, the project follows an object-oriented architecture where each component has a single responsibility.

This approach makes adding new tools and features significantly easier while keeping the codebase organized and maintainable.

---
Controls:-
Panning = Mouse scroll wheel button
= space bar + mouse left click button

Drawing = left mouse button

  • 3 devlogs
  • 4h
Try project β†’ See source code β†’
Open comments for this post

54m 34s logged

Devlog #3 - Improved the code formatting

I divided the the working of the code into different pipelines
I also added new folders to organize everything I added the folders UI and tools to organize the pipelines

I divided the tools from the main Canvas.py to sub scripts in the Tools Folder, like base_tool.py and pen_tool.py
Then in canvas.py I added a simple method to check the current active tool and how to call it actively.

0
0
3
Open comments for this post

1h 4m 58s logged

Devlog #2 - making it Pan and Zoom and Adding infinite space

I implemented infinite panning, precision scroll-wheel zooming, and smoother pen aesthetics along with Infinite Canvas

Challenges and Solutions

The problem I faced was that

It was difficult to add support for both space bar and left click(of the mouse) 
being pressed at the same time

So to solve it I introduced 3 variables self.panning = False, self.pan_start = None and self.space_pressed = False

then while checking for the key press, we check for space bar and set the variable self.space_pressed to true
and then while checking for the mouse press event we set the variable self.panning to True
And then finally in the mouse move event we actually pan in the canvas by moving the camera

self.horizontalScrollBar().setValue(Β self.horizontalScrollBar().value() - int(delta.x()))Β  Β  Β 
self.verticalScrollBar().setValue(self.verticalScrollBar().value() - int(delta.y()))
0
0
3
Open comments for this post

2h 12m 57s logged

Devlog #1 - Making it Click, Draw lines & Dots

Today I created a window on the screen that scales nicely to the user’s monitor and created a responsive digital canvas on which you can draw Lines and dots till now

The Problem and solution

I faced a problem that didn’t let me draw dots the problem was:-

clicking on the canvas without dragging the mouse left absolutely nothing on the screen.
The path-drawing logic expected continuous cursor updates to generate lines. 
Tapping the screen to place a single dot was functionally invisible.

So I introduced a self.has_moved variable which is set to False by default and when the user presses the left button and moves the mouse it is set to True
then we run a Check in the release event that if has_moved = False then it draws a dot otherwise it draws a line using self.last_point and self.current_point

0
0
3
Open comments for this post

1h 30m logged

Devlog #1 - Designing the PCB

PCB design

Today I created and Finished the PCB designing

Challenges

One challenge I faced today was unavailability of Footprints and Symbols of modules, my lot of time went into finding suitable footprints and symbols
Also another challenge was finding the optimal placement of the components

0
0
4
Open comments for this post

44m 49s logged

PocketVault Devlog #3 – Firmware Foundation & Repository Setup

Today I shifted focus from hardware design to software development and project organization.

With the PCB design complete and enclosure designs in progress, it was time to start building the firmware that will power PocketVault.

Firmware Project Setup

I created the initial PlatformIO project for PocketVault using VS Code.

The project is configured for the RP2040 platform and will eventually support:

  • OLED user interface
  • Rotary encoder navigation
  • USB HID password typing
  • Master PIN protection
  • Offline password storage

The firmware architecture is kept simple to make future development easier.

Project Structure

To keep the code organized from the beginning, I created separate configuration files for different parts of the project.
Current structure:

PocketVault/
 |── include/
 |    Β  β”œβ”€β”€ config.hβ”‚ Β  
 |      β”œβ”€β”€ vault.h Β  
 |      └── settings.h
 |── src/
 |      └── main.cpp
 |── platformio.ini
 |── README.md

File Responsibilities

  • config.h β†’ Hardware configuration and firmware settings
  • vault.h β†’ Password entry definitions
  • settings.h β†’ Future settings menu definitions
  • main.cpp β†’ Core application logic

GitHub Repository

I prepared the repository for public development by:

  • Creating a README
  • Adding a proper .gitignore
  • Organizing project files* Preparing documentation
    The goal is to make it easy for anyone to clone the project and build it using PlatformIO.

Documentation

I also created:

  • README.md
  • BOM.md
  • Wiring.md

These documents cover:

  • Project overview
  • Bill of Materials
  • Wiring information
  • Build instructions
  • Future roadmap

Challenges

One issue encountered was PlatformIO board support.

The Seeed Studio XIAO RP2040 board definition was unavailable in the current PlatformIO installation, so development is temporarily targeting the Raspberry Pi Pico board definition since both use the RP2040 microcontroller.

This allows firmware development to continue while maintaining compatibility with the final hardware.


0
0
1
Open comments for this post

1h 10m 1s logged

PocketVault Devlog #2 – Designing the Enclosure

After completing the first PCB revision for PocketVault, I shifted my focus to the physical design of the device. Today was all about creating the enclosure and turning the project into something that actually feels like a finished product though I don’t plan to include it in the first ship because of the complexity

What I Worked On

CAD Design

I created the first CAD model for the PocketVault enclosure.

Component Integration

Using the PCB dimensions as a reference, I designed mounting features for the PCB

Challenges

During the design I faced many problems in it as I did not know to design 3D cad models

0
0
3
Open comments for this post

2h 17m 24s logged

PocketVault Devlog #1 – PCB Design Complete

Today was a big step for PocketVault.

What I Worked On

PCB Design

I completed the first PCB revision for PocketVault in KiCad.

The board currently includes:

  • Seeed Studio XIAO RP2040
  • 128Γ—64 SSD1306 OLED display
  • Rotary encoder with push button for navigation
  • Mounting holes for enclosure integration
  • Custom board outline designed for the PocketVault form factor

Interface Design

The entire user interface will be controlled using a rotary encoder:

  • Rotate to navigate menus
  • Press to select options
  • OLED display for viewing entries and settings

This approach keeps the device compact while avoiding the need for a keyboard or touchscreen.

0
0
3
Ship

StarOS

StarOS is a browser-based desktop environment built using vanilla HTML, CSS, and JavaScript.

The project recreates the feel of a desktop operating system inside a web browser, complete with draggable windows, desktop icons, a live clock, and built-in applications.

Current apps include:

* ⭐ Star Notes
* πŸ“– Wikipedia
* πŸ“‡ Contacts
* 🌀️ Weather

One of the biggest challenges was building a reusable window system that supports dragging, opening, and closing multiple applications. Along the way I learned more about DOM manipulation, event handling, UI design, and organizing larger JavaScript projects.

StarOS is still growing, and I plan to add more applications such as a calculator, settings app, file explorer, and music player.

GitHub:
https://github.com/VedDevs/StarOS

Built with:

* HTML
* CSS
* JavaScript

This was a fun project that taught me a lot about building interactive web applications from scratch.

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

39m 24s logged

Added Contacts app

I added a Contacts App which allows users to contact me
I also Refined the UI and Code

0
0
13
Open comments for this post

1h 18m 5s logged

Created Wikipedia and updated the UI

i finally added the wikipedia functionality, Updated The UI and made a logo for the OS
also I used added the favicon to the StarOS

0
0
7
Open comments for this post

2h 13m 38s logged

Completed the Tutorial

I have Finally Completed the tutorial for WebOS and made the most basic OS for the future

0
0
5
Ship

πŸ” CompVault

CompVault is a browser-based password manager built with HTML, CSS, and JavaScript.

The project started as a simple login screen and evolved into a feature-rich password management application. It provides a clean interface for storing, managing, searching, importing, and exporting passwords directly in the browser.

> ⚠️ This project is intended for learning and educational purposes.

✨ Features

Password Management

- βž• Add passwords
- ✏️ Edit passwords
- πŸ—‘οΈ Delete passwords
- πŸ” Search passwords

Security & Access

-πŸ”‘ Master password protection
- πŸ‘οΈ Show / Hide passwords
- πŸ“‹ Copy passwords to clipboard

Productivity

- 🎲 Random password generator
- πŸ“€ Export vault to JSON
- πŸ“₯ Import vault from JSON

User Experience

- πŸŒ™ Dark / Light theme
- πŸ’Ύ Local Storage persistence
- πŸ“± Responsive interface

πŸ› οΈ Built With

- HTML5
- CSS3
- JavaScript (Vanilla)

No frameworks or external libraries were used.

πŸ§ͺ Testing

1. Master Password
* Open https://compvault.netlify.app
* Create a master password
* Refresh the page
* Verify the same password unlocks the vault

2. Password Management

* Add a password
* Edit a password
* Delete a password

3. Search

* Search by website name
* Search by username

4. Password Generator

* Generate a random password
* Verify it appears in the password field

5. Show / Hide

* Reveal a password
* Hide it again

6. Copy Password

* Copy a password
* Paste it elsewhere to verify

7. Theme Switching

* Switch themes
* Refresh the page
* Verify the selected theme persists

8. Import / Export

* Export the vault
* Delete entries
* Import the exported file
* Verify data restoration

9. Persistence

* Add several passwords
* Refresh the page
* Verify all entries remain

Expected Result

All features should function correctly and data should persist between browser sessions.

πŸ€– AI Usage Declaration

Artificial intelligence tools were used during the development of this project as learning and productivity aids.

AI was primarily used to:

* Explain programming concepts
* Assist with debugging
* Suggest improvements and features
* Review code and provide feedback
* Help draft documentation

Made with ❀️ by Ved.

  • 1 devlog
  • 1h
  • 2.08x multiplier
  • 3 Stardust
Try project β†’ See source code β†’
Open comments for this post

1h 26m 23s logged

CompVault Development Log

I completed the first full version of CompVault, a password manager built using HTML, CSS, and JavaScript.
The project started as a simple login page with a fixed master password. Once the basic vault was functional, I gradually expanded the application by adding new features and enhancing the user experience.

Features Implemented

  • Master password protection
  • Ability to add passwords
  • Option to edit passwords
  • Capability to delete passwords
  • Search functionality
  • Show / Hide passwords
  • Option to copy passwords to the clipboard
  • Random password generator
  • Dark / Light theme switcher
  • Export the vault to JSON format
  • Import the vault from JSON format
  • Data persistence using Local Storage

Challenges Faced
One of the first challenges was figuring out how to display saved passwords on the page dynamically.
Initially, passwords were stored in a JavaScript array. I learned how to render data into HTML using template literals and update the page whenever changes were made.

Another challenge was ensuring that data was same between sessions.
I used Local Storage to solve this issue, which allowed the vault to retain saved passwords even after refreshing the page.

As more features were added, organizing the code became increasingly important.
Creating reusable functions like renderPasswords() and saveVault() made the application easier to manage and extend.

What I Learned
Through this project, I gained hands-on experience with:

  • Manipulating the Document Object Model (DOM)
  • Handling user events
  • Using Local Storage for data persistence
  • Rendering dynamic user interfaces
  • Performing Create, Read, Update, and Delete (CRUD) operations
  • Importing and exporting files
  • Creating responsive and visually appealing designs
  • Organizing and structuring a project effectively

Project Status
CompVault v1 is now complete and fully functional as a local, browser-based password manager.

Future Improvements
Although the application works well, I plan to add several features in future versions:

  • Password encryption using the Web Crypto API
  • Password strength analysis
  • Cloud synchronization
  • Support for multiple user accounts
  • Auto-lock functionality
  • Enhanced mobile experience

Reflection
This project began as a simple experiment and quickly evolved into one of the most comprehensive web applications I have ever built.
It was an excellent opportunity to practice JavaScript, improve my problem-solving abilities, and understand how various components of a web application work together. Overall, CompVault was both an enjoyable and educational experience, and it has significantly strengthened my ability to build more complex software projects in the future.

0
0
1

Followers

Loading…