Sector(s)

Team Members

Project Team

  • Erik Britt-Webb, Founder, GreatAlbum
  • Olena Vertepa, Project Manager
  • Marianna Ivanenko, UI/UX
  • Anna Storozhuk, UI/UX
  • Alina Tcacenco, QA
  • Aysel Aysel, QA
  • Vlad Bondar, JS Developer

Visit the site

Visit the site

Organizations Involved

Back to top

About GreatAlbum

GreatAlbum is a platform aimed at helping groups consolidate, organize, share and relive their shared experiences through  media from various services like Google Photos, Apple Photos, Facebook, Instagram, YouTube etc. It allows users to organize thousands of photos across hundreds of events, share those events with specific groups, and capture related stories and discussions. The service emphasizes secure sharing within each album, organizing media automatically into events based on dates and locations, and enabling the browsing of media by event, type, individual, or place. It also reminds members of events/media “on this day” in history - often spanning decades in time. 

Back to top

About iTech4Web

iTech4Web specializes in web development and CMS projects, focusing on sectors like non-profits, education, healthcare, and corporate entities. We provide tailored turnkey solutions to enhance digital presence and user engagement. Our approach includes Drupal expertise, clear delivery, personalized service, responsive management, ethical partnerships, and creating user-friendly, visually appealing websites. We are recognized for our Drupal services, certified Acquia developers, and agile, client-oriented methods. We support projects across different languages and timezones.

Back to top
Describe the project (goals, requirements and outcome)

The project’s goals were to build the actual application for GreatAlbum, which aimed at resolving the common challenges associated with managing and sharing personal media within different groups of people.

Back to top

Situation & Challenge

The founder of GreatAlbum had been nurturing the idea for the GreatAlbum application for about 20 years. Finally, around four years ago, the founder started developing the project with the help of an India-based web development studio. In approximately two years, they were able to build the skeleton of the project with a basic content structure.

However, due to a lack of deep understanding of Drupal, the former team became stuck when it came to implementing core project functionalities through a reliable DevOps process, such as synchronization with external services (particularly the Google Photos API), notifications, user experience, etc.

iTech4Web was initially contracted to develop the Google Photos API synchronization module. Later, the project was fully handed over to iTech4Web to implement a robust and reliable DevOps methodology and to complete the remaining functionality, such as:

  • Site Notifications (On-Site, Emails)
  • Media Navigation and Editing
  • Media Cluster Recognition
  • Merging Events
  • Moving events from one album to another
  • On This Day functionality 
  • Improving the UI/UX, including optimizing the app for mobile use
  • Improving the legacy code and bug fixing
Back to top

What we Did

Google Photo API:

iTech4Web began work on the project starting with the Google Photos API synchronization module. This task was challenging not only because of the client's requirement for a specific Google Photos search interface but also due to the need to import and keep track of Google Photos metadata, such as mediaItemID and AlbumID. This was essential to ensure that if media items and albums were imported again during subsequent synchronizations, they would update existing media in GreatAlbum and not duplicate it. The import process is described from a user perspective in this blog post.

One of the unforeseen challenges was importing large numbers of photos efficiently. After communicating with the client, iTech4Web decided to utilize the Drupal Queue API for executing the import processes. Given that multiple users could import tens of thousands of photos at a time, and due to the nature of the Drupal Queue API, we had to create two queues: the first queue informs the system that a particular user wishes to import photos from a specific time period or album, which then creates items in the second queue. The second queue actually conducts the import of Google Photos items, converts them into media items, and stores the relevant metadata for future reference.

During this project, GreatAlbum applied and became an approved Google Photos Partner, which enabled much larger limits in Google API interactions. This partnership was crucial in handling the substantial volume of data imported from Google Photos.
 

Media Navigation, User Content Editing, UI/UX improvements and mobile version of the application:

iTech4Web expended significant effort to enhance the legacy application, focusing particularly on improving its look, feel, and functionality compared to when the project was first received, especially the mobile version.

Media Cluster Recognition:

The next significant functionality iTech4Web implemented was Media Cluster Recognition (MCR). More information about the logic can be found here. Our approach involved engaging a highly skilled PHP developer to write the core of the MCR and then integrate it with Drupal Media.

Merging and moving events:

Once large numbers of media has been imported and organized into events, users must be able to merge events when two or more actually represent a single event, and be able tomove events with related media from one group (album) to another. iTech4Web implemented this functionality in a manner similar to that used for Google Photo Importing. We employ two separate queues: the first queue item describes the user's intention to perform an Event Merge/Move action and creates queue items for the second queue, which contains a list of all the Event media items that need to be moved or merged.

“On This day” functionality: 

The iTech4Web development team also implemented the 'On This Day' functionality. This feature consists of daily notifications that send emails using triggered OpenSocial notifications according to the user's timezone settings. We also added pages where users can filter Events and Media that were created or imported by them, or shared with them, on this month/day in past years. We implemented a single service to perform the 'On This Day' content calculations, allowing the logic to be easily extended from one central place. Additionally, complex HTML notifications were set up to support this feature, enhancing user engagement through personalized marketing layouts.

Improving and encapsulating the legacy code:

One of the biggest challenges for us was dealing with the existing custom legacy code for which the client had already paid the former team. Many lines of code were not necessarily needed and could have been easily simplified. We faced a choice: to rebuild all the code or to retain it, make slight improvements to fix all PHP warnings, and encapsulate it in custom classes for later review and refactoring. iTech4Web chose the second option to save the client's budget, planning to return to the improvements later.

Continuous Delivery and Continuous Deployment (CI/CD):

Apart from the listed functionalities, iTech4Web also set up the Continuous Integration and Continuous Deployment processes using GitLab CI, enhancing the development cycle by adding Quality Assurance and Project Management resources to the project.

Establish the software development process:

iTech4Web also assisted the client in improving the development process by introducing a dedicated Project Manager role, establishing agile methodology with sprint-based release cycles, and implementing project code versioning.

Web servers and infrastructure:

iTech4Web set up the staging and production server infrastructure for GreatAlbum using self-hosted web servers to reduce infrastructure costs. Previously, the application was hosted on AWS servers, which was not cost-effective for this project.

Back to top
Why Drupal was chosen

Drupal, and particularly the OpenSocial distribution, was chosen because the founder was familiar with Drupal, and the OpenSocial distribution was promising for the content structure. Additionally, OpenSocial has a built-in extendable notification framework.

Image

Technical Specifications

Drupal version:

Key modules/theme/distribution used: