Project Management App Development: Common Questions
How do you handle real-time collaboration without data loss when multiple users edit the same task simultaneously?
Different field types require different conflict resolution strategies. Rich text fields (descriptions, comments) use Yjs CRDTs, a mathematically convergent data structure that merges concurrent edits from multiple clients without loss, so two users typing in the same paragraph simultaneously see a merged result, not one user's edit overwriting the other's. Status, date, and custom field changes use optimistic locking: the first writer wins and commits; the second writer receives the current state and a notification that their change conflicted, so they can decide whether to re-apply it. WebSocket presence data shows who is actively editing each field, which reduces simultaneous edit frequency significantly.
How does the Gantt chart perform with large projects (thousands of tasks)?
Gantt chart performance at scale requires treating the chart as a virtualised rendering problem, not a DOM rendering problem. The task list uses virtual scrolling: only the rows visible in the current viewport are rendered as DOM elements; rows outside the viewport exist as data in memory. The Gantt bars and dependency lines are rendered as SVG paths, not as positioned DOM elements, which allows the browser's SVG renderer to handle thousands of elements without the layout thrashing that DOM-heavy implementations suffer. The critical path and float calculations run as a background worker job, not on the main thread, so the UI stays responsive during recalculation.
How do you model the permission system for a PM tool that serves both internal teams and external clients?
The permission model is built as a three-level hierarchy: workspace (all projects), project (a specific project), and task (individual task or resource). Each level has a role assignment (Owner, Admin, Member, Guest/Client). Guests and client users have access scoped to the specific projects they are invited to, with an additional content filter that hides internal-only tasks (flagged as internal at task level) from client-visible views. The permission evaluation happens at the API layer for every request (there is no client-side permission check that could be bypassed) and is tested with an automated permission matrix test suite that exercises every combination of role and resource type.
What is the typical build timeline?
A foundational PM platform with task hierarchy, dependencies, Gantt view, and basic collaboration takes 20-26 weeks. Adding real-time collaboration (Yjs CRDTs + WebSocket presence) extends this to 26-32 weeks. Time tracking and billing integration adds 6-8 weeks. A construction or professional services domain model (RFI, submittal, or client portal workflows) adds 8-12 weeks of domain-specific work. The first sprint focuses on the data model and dependency graph; everything else (views, integrations, reporting) is built on top.
How does the engagement work?
Project management platform projects run on a dedicated team model. A typical team is 4-5 engineers, a product lead, and a delivery lead. Most clients start with a 2-week discovery sprint that maps the work hierarchy, permission model, and critical path requirements before sprint work begins. Teams are available within 21 days of contract signature. See how we work on our teams page, or get in touch to scope your project.