Inspiration

Our inspiration came from a simple, shared frustration: the tyranny of the blinking cursor on a blank page. We realized that great ideas rarely begin as perfectly structured lists or linear documents. They start as a chaotic, beautiful web of interconnected thoughts, scribbles, and resources. When we looked at existing digital tools, we saw a major disconnect. They were either too rigid and confining, like documents and spreadsheets, or they were "infinite whiteboards" that quickly became slow and clunky, collapsing under the weight of their own content.

What it does

CanvasDesk is a digital space that feels as limitless and tactile as a physical corkboard but is backed by the power and speed of a modern web application. It’s a place where you can break free from linear formats and organize your ideas visually. Users can pin notes, drop in files, sketch out flowcharts with "hanging threads," and connect all these elements together without ever worrying about running out of space or seeing a drop in performance. It’s designed to be a high-performance, free-form environment for creative thinking, planning, and brainstorming.

How we built it

CanvasDesk was built using a modern, serverless stack to ensure scalability and low operational costs from day one. Our development process was facilitated by the Bolt.new AI environment, which allowed for rapid, intense iteration.

  • Backend and Authentication: We used Supabase to handle core user authentication and the main dashboard.
  • The Canvas: The core of the application is a high-performance canvas built with React and the Konva.js library.
  • AI Collaboration: We worked in partnership with the Bolt AI throughout the process. When we encountered difficult bugs, we would describe the problem, and the AI would provide analysis that helped us identify the root cause and refactor our code.
  • Final Architecture: Through this AI-human partnership, we settled on a robust "Monolithic Container" pattern, where a single component manages all state and logic to eliminate common React errors. For interactions, we implemented a "Hybrid Imperative-Declarative" model—using Konva's direct manipulation for fluid visuals and updating the React state once at the end of an action to ensure performance and stability.

Challenges we ran into

Our biggest challenge wasn't just writing code, but defining the right architecture for a complex, interactive application. We quickly ran into classic, difficult-to-solve bugs that plague high-performance React apps:

  • State Synchronization Errors: The internal state of our Konva canvas would constantly fall out of sync with our React component state, causing objects to jump to old positions or resize incorrectly.
  • Event Propagation Conflicts: Simple actions like dragging an object would "bubble up" and trigger a pan of the entire canvas, making the tool unusable.
  • The "Rendered more hooks..." Error: As we added features, we hit a fundamental wall with one of a React developer's most feared errors, which indicated a deep flaw in our component architecture and forced a major rethink.

Accomplishments that we're proud of

  • High-Performance Canvas: We successfully implemented a canvas that can handle thousands of objects with fluid drag, resize, and zoom functionality, pushing the limits of what's possible in a browser.
  • Solving Complex Bugs: We systematically diagnosed and solved persistent, difficult bugs related to state management and event handling in a complex React application.
  • Superior Architecture: We are proud of the final, stable architecture. By developing a professional-grade pattern that is both imperative and declarative, we definitively solved our performance and lag issues.
  • AI-Augmented Development: Most importantly, we are proud of our modern development process. We successfully used AI not just as a coder, but as an analytical partner to build a robust, professional-grade application in a fraction of the time it would traditionally take.

What we learned

  • Simplicity is Stability: Our most persistent bugs were solved by radically simplifying our component structure, not by adding more complex logic. A simple, well-designed architecture is more robust than a complex one.
  • The Right Tool for the Job: We learned to respect the strengths and weaknesses of our libraries. We embraced Konva's imperative nature for high-performance graphics while leveraging React's declarative power for predictable state consistency.
  • AI as a Partner, Not Just a Coder: We learned that the true power of AI in development is not just in writing code snippets, but in its ability to analyze, debug, and help refactor toward a superior architecture at an impossible speed for a human developer alone.

What's next for CanvasDesk

CanvasDesk is more than just the sum of its features; it's the product of a modern development process. Our next steps are focused on expanding its capabilities while maintaining the core promise of speed and simplicity.

  • Real-Time Collaboration: Introduce features for teams to work together on the same canvas simultaneously.
  • More Content Types: Expand the types of content that can be added to a canvas, including rich-text documents, embedded videos, and web links.
  • AI-Powered Organization: Leverage AI to help users automatically organize, cluster, and find insights within their chaotic canvases.
  • Templates: Create a library of pre-built templates for common use cases like project planning, user journey mapping, and brainstorming sessions.
  • User Feedback and Refinement: Open the platform to more users to gather feedback and continuously refine the core user experience.

Built With

Share this project:

Updates