Our Services


VideoAncestry.com

Today, more than ever before, we have the ability to build new tomorrows. Beyond our physical limits, we can impart to future generations the things that were significant in our lives. VideoAncestry just has one task on hand. We'll make sure you can convey information that is significant to you.

We wish to include everyone in this wonderful endeavour by offering limited free services as we grow. Sign Up!

Why Audio?

Written notes can be less immersive and expressive than audio messages. They are able to accurately capture the mood and passion of the occasion, which can aid to vividly recall the recollection in a way that written notes might not.

When someone is on the run or in a circumstance where they don't have access to a pen and paper, audio messages may be simpler to create than written notes.

If the recipient is unable to read or write, audio messages may be more practical to review afterwards. To jog their memory of the event, they only need to listen to the recording.Sign Up!

Build your legacy.

Important family records, such birth certificates, marriage licenses, and military records, can give a person useful information about their family history and assist to tell the tale of their ancestors. Keeping these records can help future generations understand this history.

Information needed for legal or financial reasons may be found in important family documents. A will may be required to determine how to transfer a person's assets after death, for instance, while a birth certificate may be required to apply for a passport or driver's license. By storing them, you may make sure that they are accessible when you need them.

Important family papers may be at risk of destruction or loss as a result of accidents, natural catastrophes, or other unforeseen circumstances.Sign Up!

Motivation


A few days before I lost my mother, my eldest sister left me a voicemail to say I needed to call her. Another message was from my mother asking if I made it home safely. Those precious messages were lost. Today they are both gone. I have to build something to change that for someone else.

Keith M.

  • Chief Bridge Builder
  • Forever Dreamer

You are something incredible to someone you haven't even met, let us introduce you to generations.

VideoAncestry is a globally diverse storage project, designed with 100 year+ storage goals.

Sign Up!
// Using modern JavaScript features const handlePreloaderImages = () => { const preloaders = document.querySelectorAll('.preloader img.fullwidth'); const loadImage = (img) => { return new Promise((resolve, reject) => { if (img.complete) { resolve(img); } else { img.onload = () => resolve(img); img.onerror = reject; } }); }; const processImage = async (img) => { try { await loadImage(img); img.classList.add('loaded'); // Optional: Remove the shimmer effect const preloader = img.closest('.preloader'); preloader.classList.add('loading-complete'); } catch (error) { console.error('Image failed to load:', error); img.closest('.preloader').classList.add('loading-error'); } }; // Process all preloader images preloaders.forEach(processImage); // Optional: Intersection Observer for lazy loading const observeImages = () => { const imageObserver = new IntersectionObserver((entries, observer) => { entries.forEach(entry => { if (entry.isIntersecting) { const img = entry.target; img.src = img.dataset.src; processImage(img); observer.unobserve(img); } }); }, { rootMargin: '50px 0px', threshold: 0.01 }); document.querySelectorAll('.preloader img[data-src]').forEach(img => { imageObserver.observe(img); }); }; // Initialize lazy loading if needed if ('IntersectionObserver' in window) { observeImages(); } }; // Initialize when DOM is ready if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', handlePreloaderImages); } else { handlePreloaderImages(); } // Add this temporarily to check for legacy preloader usage document.addEventListener('DOMContentLoaded', function() { const legacyPreloaders = document.querySelectorAll('.preloader:not(.modern)'); if (legacyPreloaders.length > 0) { console.warn(`Found ${legacyPreloaders.length} legacy preloaders. Please update to new version.`); legacyPreloaders.forEach(preloader => { const path = []; let element = preloader; while (element) { path.unshift(element.tagName + (element.id ? '#' + element.id : '') + (element.className ? '.' + element.className.split(' ').join('.') : '')); element = element.parentElement; } console.log('Legacy preloader found in:', path.join(' > ')); }); } });