`).text().replace(/\s+/g, ' ').trim(); //-------------------------------- // Set Cookie Expiration //-------------------------------- // if (isNaN(NEW_COOKIE_EXPIRATION)) { // console.log(COOKIE_NAME + ' cookie expiration is set to default 7 days'); } else { COOKIE_EXPIRATION = NEW_COOKIE_EXPIRATION; // console.log(COOKIE_NAME +' cookie expiration is set to ' + NEW_COOKIE_EXPIRATION + ' days'); } //-------------------------------- // Check Cookie //-------------------------------- // checkCookie(COOKIE_NAME); if (getCookie(COOKIE_NAME)) { $alertMsg.removeClass('active').attr('aria-hidden', 'true'); } else { $alertMsg.addClass('active').attr('aria-hidden', 'false'); } //-------------------------------- // Close Message and Set Cookie //-------------------------------- // $alertMsgCloseBtn.click(function () { $alertMsg.removeClass('active').attr('aria-hidden', 'true'); setCookie(COOKIE_NAME, COOKIE_CONTENT, COOKIE_EXPIRATION); checkCookie(COOKIE_NAME); }); //-------------------------------- // Functions //-------------------------------- // function checkCookie(cname) { var match = getCookie(cname); if (match && match[1] !== COOKIE_CONTENT) { deleteCookie(cname); // console.log(cname + ' cookie has been cleared.'); } else if (match) { // console.log(cname + ' cookie is REMEMBERED on this browser.'); } else { // console.log(cname + ' cookie is NOT REMEMBERED on this browser.'); } } function setCookie(cname, cvalue, exdays) { var d = new Date(); d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); var expires = "expires=" + d.toUTCString(); document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; // console.log(cname + ' cookie was set to "' + cvalue + '", and will be expired on ' + expires); } function deleteCookie(cname) { document.cookie = cname +'=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;'; } function getCookie(cname) { return document.cookie.match(new RegExp("(?:^|; )" + cname + "=([^;]*)")); } })(); //----------------------------------------------------------- // // Search // //----------------------------------------------------------- // (function () { //-------------------------------- // Selectors //-------------------------------- // var $body = $('body'); var $openBtn = $('#tpl-8I0JO4-search-btn'); var $dialog = $('#tpl-8I0JO4-search-dialog'); var $closeBtn = $('#tpl-8I0JO4-search-close'); var $backdrop = $dialog.find('.search-dialog-backdrop'); var $searchInput = $dialog.find('input[name="q"]'); //-------------------------------- // Helper Functions //-------------------------------- // function openSearchForm() { $body.addClass('_overflow-hidden'); $openBtn.addClass("active").attr('aria-expanded', 'true'); $dialog.fadeIn(400).addClass("active").attr('aria-hidden', 'false'); $searchInput.focus(); } function closeSearchForm() { $body.removeClass('_overflow-hidden'); $openBtn.removeClass("active").attr('aria-expanded', 'false'); $dialog.fadeOut(400).removeClass("active").attr('aria-hidden', 'true'); $openBtn.focus(); } //-------------------------------- // Toggle Dialog //-------------------------------- // $openBtn.on('click', openSearchForm); $closeBtn.on('click', closeSearchForm); $backdrop.on('click', closeSearchForm); //-------------------------------- // Keyboard Trap //--------------------------------` // var $focusableEls = $dialog.find('a, button, :input, [tabindex]:not([tabindex="-1"])'); var $firstFocusable = $focusableEls.first(); var $lastFocusable = $focusableEls.last(); $dialog.on('keydown', function(e) { var activeElement = document.activeElement; switch (e.key) { case 'Tab': if (e.shiftKey && activeElement === $firstFocusable[0]) { e.preventDefault(); $lastFocusable.focus(); } else if (!e.shiftKey && activeElement === $lastFocusable[0]) { e.preventDefault(); $firstFocusable.focus(); } break; case 'Escape': e.preventDefault(); closeSearchForm(); break; } }); })(); //----------------------------------------------------------- // // Mobile Menu // //----------------------------------------------------------- // (function () { //-------------------------------- // Selectors //-------------------------------- // var $body = $('body'); var $burger = $('#tpl-8I0JO4-burger'); var $menu = $('#tpl-8I0JO4-mobile-menu'); var $menuCloseBtn = $('#tpl-8I0JO4-mobile-menu-close-btn'); var $menuBackdrop = $menu.find('.mobile-menu-backdrop'); var $nav = $menu.find('.mobile-menu-nav'); var $navA = $nav.find('li.has-children > a'); var $focusableEls = $menu.find('a, button, :input, [tabindex]:not([tabindex="-1"])'); var $firstFocusable = $focusableEls.first(); var $lastFocusable = $focusableEls.last(); //-------------------------------- // Initialization //-------------------------------- // // Append a plus symbol to // $navA.append(''); //-------------------------------- // Helper Functions //-------------------------------- // function active($ul, $li, $a) { $ul.slideDown().addClass('active'); $li.addClass('active'); $a.attr('aria-expanded', 'true'); } function inactive($ul, $li, $a) { $ul.slideUp().removeClass('active'); $li.removeClass('active'); $a.attr('aria-expanded', 'false'); } function openMenu() { $body.addClass('_overflow-hidden'); $burger.addClass('active').attr('aria-expanded', 'true'); $menu.addClass('active').attr('aria-hidden', 'false'); $menuBackdrop.fadeIn(400); setTimeout(function () { $menuCloseBtn.focus(); }, 100); } function closeMenu() { $body.removeClass('_overflow-hidden'); $burger.removeClass('active').attr('aria-expanded', 'false'); $menu.removeClass('active').attr('aria-hidden', 'true'); $menuBackdrop.fadeOut(400, function () { inactive( $nav.find('ul.active'), $nav.find('li.active'), $nav.find('a[aria-expanded=true]') ); }); $burger.focus(); } //-------------------------------- // Toggle Mobile Menu //-------------------------------- // $burger.on('click', function () { $burger.hasClass('active') ? closeMenu() : openMenu(); }); $menuCloseBtn.add($menuBackdrop).on('click', closeMenu); //-------------------------------- // Keyboard Trap //-------------------------------- // $menu.on('keydown', function(e) { switch (e.key) { case 'Tab': if (e.shiftKey && document.activeElement === $firstFocusable[0]) { e.preventDefault(); $lastFocusable.focus(); } else if (!e.shiftKey && document.activeElement === $lastFocusable[0]) { e.preventDefault(); $firstFocusable.focus(); } break; case 'Escape': closeMenu(); break; } }); //-------------------------------- // Toggle Children //-------------------------------- // $navA.on('click', function(e) { e.preventDefault(); var $this = $(this); var $thisLi = $this.closest('li.has-children'); var $thisUl = $this.next('ul'); var $activeChildUl = $thisUl.find('ul.active'); var $activeChildLi = $thisUl.find('li.active'); var $activeChildA = $thisUl.find('a[aria-expanded=true]'); var $activeSiblingLi = $thisLi.siblings('li.active'); var $activeSiblingChildUl = $activeSiblingLi.find('ul.active'); var $activeSiblingChildLi = $activeSiblingLi.find('li.active'); var $activeSiblingChildA =$activeSiblingLi.find('a[aria-expanded=true]'); if ($thisLi.hasClass('active')) { inactive($thisUl, $thisLi, $this); } else { active($thisUl, $thisLi, $this); } $activeSiblingLi.removeClass('active'); inactive($activeChildUl, $activeChildLi, $activeChildA); inactive($activeSiblingChildUl, $activeSiblingChildLi, $activeSiblingChildA); }); })(); //----------------------------------------------------------- // // Sticky Header & Scroll // //----------------------------------------------------------- // (function () { //-------------------------------- // Selectors //-------------------------------- // var $mainArea = $('#main-area'); var $header = $('#tpl-8I0JO4'); var $headerMain = $header.find('.header-main'); var $utilityBar = $header.find('.header-utility'); var $alertMsg = $('#tpl-8I0JO4-alert'); //-------------------------------- // Initialize Conditions //-------------------------------- // var HAS_UTILITY_BAR = $utilityBar.length > 0; var HAS_TOP_ALERT_MSG = $alertMsg.length && $alertMsg.hasClass('is-top active'); //-------------------------------- // Initialize Parameters //-------------------------------- // var SCROLL_TOP = 0; var MAIN_AREA_OFFSET = 0; var HEADER_MAIN_OFFSET = 0; //-------------------------------- // Execute functions by condition //-------------------------------- // if (HAS_UTILITY_BAR || HAS_TOP_ALERT_MSG) { toggleStickyScroll(); } else { toggleScroll(); } //-------------------------------- // Functions //-------------------------------- // function toggleStickyScroll() { $(window).on('scroll', function () { SCROLL_TOP = $(window).scrollTop(); MAIN_AREA_OFFSET = $mainArea.offset().top; HEADER_MAIN_OFFSET = $headerMain.offset().top; // Toggle .is-stuck class // if (SCROLL_TOP >= HEADER_MAIN_OFFSET) { $header.addClass('is-stuck'); } else { $header.removeClass('is-stuck'); } // Toggle .is-scrolled class // if (SCROLL_TOP >= MAIN_AREA_OFFSET) { $header.addClass('is-scrolled'); } else { $header.removeClass('is-scrolled'); } }); } function toggleScroll() { $header.addClass('is-stuck'); $(window).on('scroll', function () { SCROLL_TOP = $(window).scrollTop(); MAIN_AREA_OFFSET = $mainArea.offset().top; // Toggle .is-scrolled class // if (SCROLL_TOP >= MAIN_AREA_OFFSET) { $header.addClass('is-scrolled'); } else { $header.removeClass('is-scrolled'); } }); } })(); });

Build Lasting Change Together

Partner with EWB-USA on sustainable engineering solutions that equip communities to thrive for generations.

Explore

scroll down

Layer_1-0003.png

Designing Sustainable Solutions

Engineers Without Borders USA builds a better world through engineering projects that empower communities to meet their basic human needs. Our highly skilled volunteers work with communities to find appropriate solutions for their infrastructure needs.

a person holding a baby on her back

MAKE A DIFFERENCE NOW

With your support, we can continue to be on the frontlines and share our expertise to innovate, respond, and prepare communities to be resilient.

a person holding a metal pipe

VOLUNTEER TO ENGINEER CHANGE

Invest your time where it will have the most impact. By lending your passion and expertise, you help us build strong, sustainable communities around the world!

a group of men standing around a solar panel

OUR COMMITMENT TO SUSTAINABILITY

We build climate resilience into all of our projects.

PROJECTS AROUND THE WORLD

water

Help communities access safe and clean water, from sourcing to distribution.

civil works

Improve essential public infrastructure for communities, like roads drainage systems, dams, and erosion control.

sanitation

Improve community-wide health outcomes in communities through sustainable waste solutions and handwashing sites.

agriculture

Help communities thrive though improved farming and production capabilities like irrigation systems and harvest processing.

energy

Power resilience through consistent, sustainable energy for communities like solar power and biofuels.

structure

Connect communities with access to healthcare, economic opportunities, and education by constructing bridges, health clinics, and schools.

STRONGER TOGETHER

Engineers Without Borders USA (EWB-USA) is a nonprofit humanitarian organization established to support community-driven development programs worldwide through partnerships that design and implement sustainable engineering projects, while providing transformative experiences that enrich global perspectives and create responsible leaders.

1100 + Successful Projects

1000 + Community Partnerships

5 Million+ Beneficiaries of Ongoing Projects

10000 + Volunteers

Invest your time where it will have the most impact, by lending your passion and expertise, you help us build strong, sustainable communities around the world!

NEWS AND STORIES

CONNECT

Sign up for the EWB-USA newsletter to keep up on the latest.

Check Accessibility
'); const originalSize = $(".text-resize-test").css("font-size"); $(".text-resize-test").css("font-size", "200%"); if ($(".text-resize-test").css("font-size") !== originalSize) { $(".text-resize-test").addClass("highlight-issue").attr("aria-label", "Text resizing issue").each(function() { $(this).after('Text resizing issue. Ensure text can be resized up to 200% without loss of content or functionality.'); }); } $(".text-resize-test").remove(); } function checkResponsiveDesign() { if (!$("meta[name='viewport']").length) { $("head").append(''); } const viewportMeta = $("meta[name='viewport']").attr("content"); if (!viewportMeta.includes("width=device-width")) { $("meta[name='viewport']").addClass("highlight-issue").attr("aria-label", "Missing viewport settings").each(function() { $(this).after('Missing viewport settings. Ensure content is accessible on different screen sizes and orientations.'); }); } } function checkKeyboardNavigation() { $("*").on("keydown", function(e) { if (e.which === 9) { // Tab key pressed $(this).addClass("highlight-issue").attr("aria-label", "Keyboard navigation issue").each(function() { $(this).after('Keyboard navigation issue. Ensure all interactive elements are accessible via keyboard navigation.'); }); } }); } function checkFocusManagement() { $(":focus").each(function() { $(this).addClass("highlight-issue").attr("aria-label", "Focus management issue").each(function() { $(this).after('Focus management issue. Ensure focus is managed correctly and visually noticeable.'); }); }); } function checkNotifications() { $(".alert, .notification").each(function() { if (!$(this).attr("role")) { $(this).attr("role", "alert").addClass("highlight-issue").attr("aria-label", "Missing role attribute for notifications").each(function() { $(this).after('Missing role attribute for notifications. Ensure alerts and notifications are accessible and announced by screen readers.'); }); } }); } function checkDynamicContentUpdates() { const observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { if (mutation.addedNodes.length > 0) { $(mutation.addedNodes).each(function() { $(this).addClass("highlight-issue").attr("aria-label", "Dynamic content update").each(function() { $(this).after('Dynamic content update. Ensure updates to the content are announced to screen reader users.'); }); }); } }); }); observer.observe(document.body, { childList: true, subtree: true }); } function addSkipLink() { $("").attr("href", "#main-content").text("Skip to main content").prependTo("body"); } });
Working Links: ${working}
External Links: ${external}
Unset Links: ${unset}
`); } });
Check SEO
×

SEO Report

  • Placeholder issue 1: This is a test issue.
  • Placeholder issue 2: Another test issue.
Check Performance
×

Performance Report

  • Placeholder issue 1: This is a test issue.
  • Placeholder issue 2: Another test issue.