Published:10.04.2025
Project insights from our Tech Lead

We recently sat down with Evgeniy, our talented Tech Lead, to discuss his role in a project focused on modernizing a museum's digital presence. The goal? To create a more engaging and user-friendly experience for visitors. In this interview, Evgeniy shares insights into the project's challenges, the solutions his team implemented, and how the new digital experience is set to elevate the museum's connection with its audience.
Q: Could you walk us through the key phases and milestones of the project? How did you ensure the project stayed on track over an extended timeline?
The project was divided into two major phases, each with distinct milestones and objectives.
The initial development phase was focused on laying the foundation for the project. During this period, we prioritized business and requirements analysis, prototyping, and the development of the Minimum Viable Product (MVP). A significant amount of time was dedicated to evaluating key functionalities, such as integrating search features with Algolia and migrating CSV data into the WordPress database. These steps were essential to ensure that the museum’s digital presence met its initial expectations and set the stage for future enhancements.
The refinement phase came after gathering feedback from both stakeholders and users. In this phase, we concentrated on refining the design, integrating payment systems (Classy and Accesso), and fine-tuning the platform to ensure seamless functionality across all systems. The culmination of this phase was the successful website launch in March, 2025.
To ensure the project stayed on track across this extended timeline, we implemented robust project management processes. We adopted agile methodologies to facilitate continuous iteration and feedback, holding regular meetings and internal sprints to keep the momentum going. Close collaboration with the museum's team also allowed us to quickly address any emerging challenges and adapt to the evolving needs of the project.
Q: One of the major challenges in this project was migrating large datasets from CSV to the WordPress database. What were the key obstacles, and how did you overcome them?
Migrating large CSV datasets into the WordPress database was indeed a significant challenge due to the volume and complexity of the data—specifically, the 3,500 rows we needed to handle. Initially, we considered manual migration methods, but quickly realized that such an approach would be impractical given the scale of the task. We needed a more efficient and automated solution.
To solve this, we developed custom JavaScript (JS) scripts designed to parse the CSV rows, map them into the correct Advanced Custom Fields (ACF) structure, and generate SQL queries for seamless data transfer. The final step involved using PHPMyAdmin to load the data directly into the WordPress database
One of the biggest obstacles we faced during this process was ensuring data integrity throughout the migration. Any error during the transfer could potentially disrupt the content management system, causing significant issues. To mitigate this risk, we conducted multiple rounds of rigorous testing. This allowed us to validate the migration process, ensuring that all fields were mapped accurately and that the data was parsed and imported correctly without any discrepancies.
Q: What challenges did you encounter while integrating Algolia, and how did you optimize it for search speed and accuracy?
Integrating Algolia was crucial to enhancing the search functionality, allowing users to quickly find people, medals, and conflicts. One of the main challenges we faced was ensuring that the search was not only fast but also accurate, given the wide range of data points that users would be searching for.
To address this, we focused on optimizing the indexing process within Algolia. We developed a custom solution to ensure that Algolia's records were updated in real time whenever content was added or modified in the WordPress backend. This integration was achieved through a custom WordPress plugin, which sent API requests to Algolia every time new data was introduced or updated. By implementing this approach, we were able to maintain both the speed and accuracy of the search functionality, providing users with the best possible experience when navigating the site.
Q: The decision to use WordPress as a headless CMS played a pivotal role in the project. What advantages did this architecture offer, and what challenges did you face in customizing WordPress?
Opting for WordPress as a headless CMS provided significant flexibility, allowing us to build a custom frontend while retaining the robust content management features that WordPress is known for. By decoupling the frontend from the backend, we were able to optimize the user experience without being constrained by WordPress’s traditional templating system, which often limits customization.
However, there were challenges in configuring WordPress to function effectively as a headless CMS. One major hurdle was ensuring smooth communication between the backend and frontend. We utilized Advanced Custom Fields (ACF) and GraphQL to create dynamic page assemblies, but this required extensive configuration and optimization. It was essential that content could be retrieved and displayed efficiently without delays. Additionally, we needed to maintain a balance of flexibility, enabling the museum's team to update content with ease—without relying on developers for every change.
Q: What challenges did you encounter, and how did you ensure a seamless integration process?
Integrating third-party systems like Classy, Accesso, and Salesforce was essential for streamlining ticket sales, membership subscriptions, and data management. The primary challenge was ensuring that these systems could communicate smoothly with the website’s architecture, especially since some integrations required custom solutions.
For instance, integrating the payment systems involved developing custom API connections to ensure secure transactions while maintaining a seamless user experience. Additionally, synchronizing Salesforce was critical to allow the museum’s team to track ticket and membership sales in real time. To ensure flawless synchronization, we carefully tested the integration, addressing any issues related to data consistency and real-time updates. This attention to detail ensured that all external systems worked in harmony with the website, providing both the museum team and visitors with a smooth and reliable experience.
Q: Could you explain the caching strategies you used with Next.js and how they contributed to the overall performance?
From the outset, caching and performance optimization were top priorities, especially given the website's rich content and dynamic features. To ensure fast page load times, we leveraged Next.js’s static generation to pre-render pages at build time. This meant that content was ready to be served to users almost instantaneously, greatly enhancing the user experience.
In addition to static generation, we implemented backend-level caching to optimize response times for data-driven content. This dual-layer approach ensured that both static and dynamic parts of the website were cached efficiently. As a result, the website achieved near-instant page load times, which was particularly beneficial for visitors exploring the museum's history-rich content. By balancing both static and dynamic caching, we ensured that users could access the site quickly without sacrificing performance.
Q: There were QA challenges and last-minute feature requests from the client. How did you manage client expectations?
Managing client expectations is always a delicate balance, particularly with a complex project like this. Given the limited time the client had to review the site before launch, we made sure to establish clear expectations early on. Regular communication was key—frequent status updates allowed us to address issues as they arose, ensuring that the client remained informed throughout the process.
To mitigate the impact of last-minute requests, we worked closely with the client to prioritize features that were essential for the launch. Non-critical requests were deferred to later phases, which helped us stay focused on the most important deliverables. This approach ensured that the project stayed on track and that the core features of the website were polished and ready for launch.
Additionally, we implemented a code freeze one week before launch. During this period, no new code changes were allowed to be introduced to the project. This freeze helped stabilize the codebase, ensuring that everything was thoroughly tested and ready for a smooth deployment.