AirWrite Studio - Devlog
AirWrite Studio is a hands-free digital canvas built using Python, PyQt6, and MediaPipe. The idea behind the project is to allow users to draw, erase, select, and manipulate objects on a digital canvas entirely through hand gestures detected via a webcam.
The core structure of the application is now functional. The project currently includes the main application window, canvas rendering system, tracking modules, UI components, and asset management. Real-time hand tracking is handled through MediaPipe landmark detection, which is then translated into different canvas actions.
Several gesture interactions are already implemented. Users can draw using a thumb-and-index pinch gesture, erase using a fist gesture, select objects using a pointing gesture, and drag or scale objects using multi-finger gestures. An open palm acts as a neutral or stop state to reduce accidental interactions.
A major focus during development has been making gesture controls feel natural and stable. Small hand movements, lighting changes, and different webcam qualities often create false triggers or unstable tracking, so additional smoothing and gesture filtering logic has been added to improve consistency during real-time interaction.
The canvas system already supports freehand drawing, object movement, shape recognition, and undo/redo architecture. Smart shape snapping can detect rough circles, rectangles, triangles, and straight lines and convert them into cleaner geometry automatically.
Additional drawing tools have also been added, including:
- highlighter mode
- laser pointer mode
- grid templates
- customizable pen settings
- dark themed UI styling
The project also includes the architecture for OCR text conversion and offline voice command support. OCR integration pathways are connected for future editable text workflows, while the voice command system is being developed using Vosk through the tracking/voice_commander.py module.
The repository is currently organized into separate modules for better maintainability:
-
main.pyhandles application startup -
canvas/contains rendering, serialization, export, and shape recognition systems -
tracking/contains hand tracking, gesture detection, smoothing, and voice command modules -
ui/contains interface components such as the sidebar, camera widget, and notifications -
assets/stores speech models and hand tracking resources
Recent development work focused on stabilizing gesture interactions, improving the canvas workflow, refining the UI layout, and integrating voice command resources. Documentation was also added through the README.md file to explain installation, features, and project usage.
One of the biggest challenges so far has been balancing responsiveness with stability. Gesture systems need to react quickly without triggering unintended actions from natural hand movement. Maintaining smooth performance while simultaneously handling camera input, landmark processing, UI rendering, and drawing operations has also required ongoing optimization.
The next stage of development will focus on:
- finalizing gesture calibration
- completing OCR text conversion workflows
- adding full PNG, PDF, SVG, and
.airexport support - polishing onboarding and status indicators
- adding automated tests for serialization and gesture classification
Future improvements may also include a dedicated requirements-dev.txt, release tracking through a CHANGELOG.md, and additional development tooling for testing and formatting.
The project has now reached a stage where the core systems are functional and connected together. Most upcoming work will focus on refinement, optimization, and improving overall usability.
Which is usually the phase where software projects politely reveal twice as many problems as originally expected.
Comments 0
No comments yet. Be the first!
Sign in to join the conversation.