NovaStage
A shared canvas for planning roadmaps and AWS architecture.
- Problem
- A shared canvas must handle competing edits and unreliable AI-generated diagrams.
- My role
- Designed and built the full-stack application, collaboration model, graph validation, and tests.
- Result
- A public planning tool combining roadmaps and AWS architecture that I and other users continue to use.
What I delivered
NovaStage brings project milestones and AWS architecture onto one shared canvas, with live collaboration, AI-assisted generation, and deterministic rules for who can edit, what can connect, and how a diagram takes shape.
When two teammates edit the same canvas
A guided explanation of the implemented workflow.
One teammate starts editing a milestone.
An atomic database claim gives that editor ownership. Competing requests are serialized against the node row.
The problem
Drawing boxes was the easy part. Two collaborators could edit the same milestone, a disconnected browser could leave a stale claim, and an AI response could look convincing while containing broken dependencies or impossible nesting. I wanted a canvas that stayed useful through those failures: clear ownership, recoverable saves, valid graphs, and project access enforced in the database.
From a prompt to a shared canvas
Describe the intent
A prompt and the current canvas give the pipeline context for a roadmap, AWS architecture, or both.
Generate structure
Gemini decomposes the request and returns typed nodes, boundaries, and connections. Coordinates belong to the layout engine.
Check the graph
Workflow dependencies are repaired locally. Invalid AWS topology triggers a retry, then rejection if it is still structurally unusable.
Place and collaborate
Deterministic layout places the accepted graph. PostgreSQL persists it; Supabase Broadcast carries live interaction events.
Engineering decisions
One editor at a time, without abandoned locks
Milestone editing uses exclusive PostgreSQL claims. The claim procedure locks the node row with SELECT FOR UPDATE before checking ownership and expiry, so competing requests are handled in sequence. Five-minute claims renew through heartbeats, with a Redis TTL key alongside the database state. If an editor disconnects, the claim expires; if someone else needs the node now, they can request a handoff that the holder grants or declines.
Explore the implementation : One editor at a time, without abandoned locksMake collaboration feel immediate
Supabase Broadcast carries cursor, drag, checkpoint and claim events while PostgreSQL stores the canvas state. Edits appear optimistically, with a fresh server snapshot used to recover from failed saves or reconnections. Remote cursors interpolate between packets with requestAnimationFrame, briefly extrapolate movement during delays, and fade when their presence becomes stale. The interaction feels continuous without treating every cursor packet as a database write.
Treat AI output as a proposal
The pipeline separates prompt decomposition, structured generation and deterministic validation. For roadmaps, local repair removes invalid or duplicate edges, breaks dependency cycles with depth-first search, and reconnects isolated milestones. AWS architecture has a different acceptance rule: duplicate resource IDs, unknown services and dangling connections trigger one regeneration attempt, then fail without applying an unusable result. The application checks the model's output before allowing it to change the canvas.
Explore the implementation : Treat AI output as a proposalMake AWS diagrams readable by construction
The model describes topology; the application chooses geometry. Containment normalization resolves conflicting parent references, breaks nesting cycles and removes empty boundaries. Dagre lays out groups from the inside out using actual card dimensions and connections across boundaries. Infrastructure updates retain their canvas anchor. Orthogonal connections route around service cards, using a visibility graph when a direct path is obstructed, so a valid architecture is also easier to follow.
Explore the implementation : Make AWS diagrams readable by constructionMore engineering decisions
Find the next useful piece of work
Release Pulse turns roadmap dependencies into planning feedback. It derives readiness from completed checkpoints, ranks blockers by unfinished descendants, and uses Kahn's topological traversal to find the dependency path with the most remaining work. Instead of leaving users to inspect every connection, the canvas surfaces blocked milestones and work that can move forward.
Explore the implementation : Find the next useful piece of workEnforce access in the API and database
API routes verify the session and project membership before loading or changing canvas data. PostgreSQL row-level security applies membership checks to nodes, checkpoints, edges and claim requests. SECURITY DEFINER membership helpers avoid recursive policy checks, and edit operations also check claim ownership. This keeps the permission boundary in the data path, including when a request bypasses the visible interface.
Explore the implementation : Enforce access in the API and databasePut AWS architecture beside the roadmap
The canvas distinguishes milestones, AWS services, groups and annotations. Infrastructure nodes carry service metadata and can sit inside nested boundaries such as VPC groups. Connections distinguish dependencies from data flows, network links and events. I added this because I wanted to plan AWS Task Manager's roadmap and infrastructure in the same workspace.
Bound generation and request usage
AI generation acquires a project-level database lock, checks the user's quota, and releases the lock when the request finishes. Failed generation restores consumed quota. Authentication actions use Upstash Redis sliding-window limits, with a process-memory fallback when Redis is unavailable. These controls address overlapping generation requests and repeated sensitive actions.
Vitest covers graph behavior, collaboration, permissions, and AI generation; GitHub Actions runs automated checks.
Delivered outcomes
- Built a public planning tool that I and other users continue to use
- Combined roadmaps and AWS architecture in one collaborative canvas
- Added readiness analysis and blocker ranking to help users identify next steps
Let’s talk engineering
Have a role or project in mind?
I’m available for remote software & cloud engineering roles and B2B contracts.
Email me View résumé ↗Explore another project
AWS serverless infrastructure & OIDC deployment →