Online Family Tree Platform
We developed a web platform for building family trees, searching for relatives, and working with family history data.Client
A company with over 15 years of experience in urban data digitization works with large public datasets, including structured data related to burial sites.
Over time, this naturally led to the idea of turning that data into a separate product focused on genealogy and family history.
Unlike traditional family tree tools, the idea was not limited to visualizing relationships. The product was envisioned as a broader platform where users could search for people, explore real-world records, connect with relevant organizations, and access related services.
Challenges
We had to build a two-sided platform where the family tree was not an add-on, but a core part of the system.
The platform needed to connect end users with service providers. This part was well within our usual scope: separate accounts for different roles, provider search, payment integrations. But the core challenge was elsewhere.
It wasn’t enough to visualize relationships. What we needed was a model that preserves the logic of family relationships, remains understandable to users, and stays stable as the structure grows.

Tight timelines and budget constraints
This directly influenced architectural decisions. We had to plan for scalability and flexibility from the start, while avoiding unnecessary complexity that would slow down delivery.

Complex interactive interface
At its core, the tree is a system of nodes and connections. But beyond formal relationships, the system needed to account for real-life scenarios: incomplete data, disconnected branches, and missing information.
It wasn’t enough to render the structure. The tree had to remain readable as it evolved, so users could understand how people were connected, move across branches, and add new relationships without breaking its overall logic.
How We Solved the Core Challenges
Task #1. Generation visualization
To model relationships, we used a graph structure: nodes represent people, and connections between them are represented as edges.
However, defining relationships alone was not enough. When we tried to render the tree on a 2D plane, the structure started to break down. Connections overlapped, generations shifted, and the overall logic became hard to follow.
To address this, we implemented a custom layout and node positioning logic that preserves generational hierarchy and maintains structural consistency as new elements are added.
Task #2. Complex scenarios
Another challenge was handling non-standard family structures: adoption, multiple marriages, missing parents, and other edge cases.
In these scenarios, relationships overlap and distort the structure of the tree. Without clear rules, the model quickly becomes inconsistent and difficult to interpret.
To address this, we defined explicit rules for how relationships are built and displayed, ensuring that the tree remains readable and logically consistent even as the structure becomes more complex.
Task #3. Custom UI/UX
React Flow was chosen as a base tool, but its capabilities are not sufficient for this level of structural complexity.
As a result, a significant part of the logic and components had to be implemented from scratch, including node and edge behavior as well as interaction scenarios.
Task #4. Search and scalability
The system was designed to support future growth, including integration with external data sources, an increasing number of users, and increasing complexity of tree structures.
The architecture was built to support this expansion without requiring changes to core processes as load increased and new usage scenarios emerged.
Task #5. Cross-user matching
We implemented a mechanism for identifying matches across trees created by different users.
The system analyzes available data such as names, dates, and other available attributes, and suggests potential matches when a person is not present in the current user’s tree.
This makes it easier to expand the tree and helps uncover potential connections between families.
Summary. Tree functionality
– Relative search based on multiple parameters, including partial data.
– Relationship degree calculation.
– Unlimited number of people within a single tree.
– Inviting relatives to collaborate on the tree.
– Merging entire branches across family trees of different users.
– Uploading and storing documents (photos, videos, scans) associated with a person, family, or event.
– Creating digital photo albums with commenting functionality.
– Searching for burial locations with associated data, including photos and coordinates.
– Flexible privacy settings for controlling access to information.
Technologies
Backend
Golang
Frontend
React
Database
ClickHouse
Database
PostgreSQL
Library
React Flow
Message Broker
NATS
Result
The project was completed in 10 months. The first four months were spent working through user scenarios, building prototypes, and preparing a detailed technical specification document. This helped us work through complex system logic early and avoid critical changes during development.
The development phase took another six months. Given the complexity of the system and the amount of custom logic involved, this was a tight timeline for delivery.
As a result, we delivered a full-featured web platform with search functionality, two types of user accounts (for end users and administrators), and a core system component, the family tree functionality.
From a technical perspective, the client received not just a standalone product, but a foundation for further product development: a platform that supports integration with new data sources, expanding user scenarios, and scaling the business model without reworking core processes.
Visual materials in this case have been adapted. The interface logic remains unchanged, while all data and images have been modified to protect personal information.
from early prototypes to the release of the full product.
end users and service providers.
What happens next:
Having received and processed your request, we will reach you shortly to detail your project needs.
After examining requirements, our analysts and developers devise a project proposal with the scope of works, team size, time and cost estimates.
We arrange a meeting with you to discuss the offer and come to an agreement.
We sign a contract and start working on your project as quickly as possible.