Skip to content

Latest commit

 

History

History
78 lines (52 loc) · 4.29 KB

File metadata and controls

78 lines (52 loc) · 4.29 KB

Capstone proposal - CodeBoard: Visual Brainstorming + Live Coding

Problem framing

I have noticed and realized through personal experiences that developers who are working together remotely are lacking an application / service where they are able to exercise both visual and textual communcation at the same time. This application aims to solve that problem. Activities like pair programming, technical interviews and even if you are simply working together with a friend on an coding assignment is made a lot easier if you are able to draw and sketch ideas and write code at the same time side by side.

Current tools that are popular require developers to switch between multiple apps, one for sketches and the visualization aspect and another for the live coding portion. CodeBoard aims to unify both the whiteboard and code editor in a browser based workspace.

Stakeholders and empty chair

Primary Users:

  • Developers pair programming
  • Technical interviews (interviewer and interviewee)
  • CS students on group projects of assignments
  • Technical CS teachers and tutors

Data and privacy

Data Collected:

  • Session content: whiteboard strokes, code, execution output
  • Presence: cursor position, active users
  • Metadata: timestamps, user actions etc.

Privacy Approach:

  • No storage unless explicitly saved by the user
  • No authentication required (can use without an account)
  • Encrypted Websocket connections

Constraints and trade-offs

Constraints:

  • API Gateway WebSocket limit: 10k connections per region
  • Potential API latency or limits
  • How to handle simultaneous users trying to do / edit the same
  • Cost is a big constraint here, we want to maintain a free level in terms of pricing.
  • Due to the limitation of time and resources we may have to skip things like code compilation, user accounts, mobile access etc.

Trade-offs:

  • Multi-region vs single-region deployment: Multi-region reduces latency globally but increases complexity and cost → Start single-region, expand if usage justifies
  • Real-time cursor updates vs cost: Sending every cursor movement is expensive → Batch cursor updates every 100ms to reduce Lambda invocations
  • Persistent storage vs fully anonoymous sessions: Storing all sessions enables history but increases storage costs → Default to anonoymous with optional user-initiated exports
  • Seamless conflict resolution vs session size limits: Supporting unlimited simultaneous users is ideal but performance degrades → Cap sessions at small amount of users (3-4) for reliable performance.
  • Rich features vs development time: Things like video, chat and mobile support would be valuable adds a lot of complexity → Focus on core whiteboard + code sync due to time constraints.
  • Tradeoffs between using Websocket vs other approaches: I think that while it's defintely possible to use another approach, the most obvious one that comes to mind immediately is a polling approach where we continuously check for updates. However this approach is likely too expensive and would most defintely increase latency in a meaningful way that it would be felt by the user, decreasing user experience. I think that this is not worth the tradeoff and Websocket is still the best option here for this application even it it means an increase in security risk, although we can try to mitigate or reduce that risk via other security systems if necessary.

Intended claims (summary)

What I'll build: A browser-based collaborative workspace that unifies whiteboard and code editor, eliminating the need to switch between multiple apps when working remotely.

Technical demonstration:

  • Real-time synchronization of whiteboard strokes and code edits between users
  • WebSocket-based communication using API Gateway and Lambda
  • Session management with DynamoDB

Cloud-native patterns:

  • Serverless architecture (no server management required)
  • Encrypted WebSocket connections for secure real-time collaboration
  • Anonymous sessions with optional user-initiated exports

Value delivered:

  • Single workspace for visual and textual communication
  • No installation required (browser-based)
  • Free tier to keep it accessible

Success measured by:

  • Functional real-time sync between multiple users
  • Handling simultaneous edits without breaking
  • Maintaining low cost to support free tier pricing