CINXE.COM

DevFest  |  Google for Developers

<!doctype html> <html lang="en" dir="ltr"> <head> <meta name="google-signin-client-id" content="721724668570-nbkv1cfusk7kk4eni4pjvepaus73b13t.apps.googleusercontent.com"> <meta name="google-signin-scope" content="profile email https://www.googleapis.com/auth/developerprofiles https://www.googleapis.com/auth/developerprofiles.award"> <meta property="og:site_name" content="Google for Developers"> <meta property="og:type" content="website"><meta name="theme-color" content="#fff"><meta charset="utf-8"> <meta content="IE=Edge" http-equiv="X-UA-Compatible"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="manifest" href="/_pwa/developers/manifest.json" crossorigin="use-credentials"> <link rel="preconnect" href="//www.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.googleapis.com" crossorigin> <link rel="preconnect" href="//apis.google.com" crossorigin> <link rel="preconnect" href="//www.google-analytics.com" crossorigin><link rel="stylesheet" href="//fonts.googleapis.com/css?family=Google+Sans:400,500|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"> <link rel="stylesheet" href="//fonts.googleapis.com/css2?family=Material+Icons&family=Material+Symbols+Outlined&display=block"><link rel="stylesheet" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/css/app.css"> <link rel="shortcut icon" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/favicon-new.png"> <link rel="apple-touch-icon" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/touchicon-180-new.png"><link rel="canonical" href="https://developers.google.com/community/devfest"><link rel="search" type="application/opensearchdescription+xml" title="Google for Developers" href="https://developers.google.com/s/opensearch.xml"> <link rel="alternate" hreflang="en" href="https://developers.google.com/community/devfest" /><link rel="alternate" hreflang="x-default" href="https://developers.google.com/community/devfest" /><link rel="alternate" hreflang="ar" href="https://developers.google.com/community/devfest?hl=ar" /><link rel="alternate" hreflang="bn" href="https://developers.google.com/community/devfest?hl=bn" /><link rel="alternate" hreflang="zh-Hans" href="https://developers.google.com/community/devfest?hl=zh-cn" /><link rel="alternate" hreflang="zh-Hant" href="https://developers.google.com/community/devfest?hl=zh-tw" /><link rel="alternate" hreflang="fa" href="https://developers.google.com/community/devfest?hl=fa" /><link rel="alternate" hreflang="fr" href="https://developers.google.com/community/devfest?hl=fr" /><link rel="alternate" hreflang="de" href="https://developers.google.com/community/devfest?hl=de" /><link rel="alternate" hreflang="he" href="https://developers.google.com/community/devfest?hl=he" /><link rel="alternate" hreflang="hi" href="https://developers.google.com/community/devfest?hl=hi" /><link rel="alternate" hreflang="id" href="https://developers.google.com/community/devfest?hl=id" /><link rel="alternate" hreflang="it" href="https://developers.google.com/community/devfest?hl=it" /><link rel="alternate" hreflang="ja" href="https://developers.google.com/community/devfest?hl=ja" /><link rel="alternate" hreflang="ko" href="https://developers.google.com/community/devfest?hl=ko" /><link rel="alternate" hreflang="pl" href="https://developers.google.com/community/devfest?hl=pl" /><link rel="alternate" hreflang="pt-BR" href="https://developers.google.com/community/devfest?hl=pt-br" /><link rel="alternate" hreflang="ru" href="https://developers.google.com/community/devfest?hl=ru" /><link rel="alternate" hreflang="es-419" href="https://developers.google.com/community/devfest?hl=es-419" /><link rel="alternate" hreflang="th" href="https://developers.google.com/community/devfest?hl=th" /><link rel="alternate" hreflang="tr" href="https://developers.google.com/community/devfest?hl=tr" /><link rel="alternate" hreflang="vi" href="https://developers.google.com/community/devfest?hl=vi" /><title>DevFest &nbsp;|&nbsp; Google for Developers</title> <meta property="og:title" content="DevFest &nbsp;|&nbsp; Google for Developers"><meta name="description" content="DevFest is a global, decentralized tech conference hosted by the Google Developer Groups (GDG) community. "> <meta property="og:description" content="DevFest is a global, decentralized tech conference hosted by the Google Developer Groups (GDG) community. "><meta property="og:url" content="https://developers.google.com/community/devfest"><meta property="og:image" content="https://developers.google.com/community/devfest/images/devfest-social.png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="675"><meta property="og:locale" content="en"><meta name="twitter:card" content="summary"><meta name="twitter:image" content="https://developers.google.com/static/community/devfest/images/devfest-social.png"><script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Article", "headline": "" } </script> <link rel="stylesheet" href="/extras.css"></head> <body class="devfest" template="landing" theme="white" type="article" layout="full" concierge='hide' pending> <devsite-progress type="indeterminate" id="app-progress"></devsite-progress> <section class="devsite-wrapper"> <devsite-cookie-notification-bar></devsite-cookie-notification-bar><devsite-header role="banner"> <div class="devsite-header--inner nocontent"> <div class="devsite-top-logo-row-wrapper-wrapper"> <div class="devsite-top-logo-row-wrapper"> <div class="devsite-top-logo-row"> <button type="button" id="devsite-hamburger-menu" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Navigation menu button" visually-hidden aria-label="Open menu"> </button> <div class="devsite-product-name-wrapper"> <a href="/" class="devsite-site-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Site logo" track-type="globalNav" track-name="googleForDevelopers" track-metadata-position="nav" track-metadata-eventDetail="nav"> <picture> <img src="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/lockup-new.svg" class="devsite-site-logo" alt="Google for Developers"> </picture> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> </li> </ul> </span> </div> <div class="devsite-top-logo-row-middle"> <div class="devsite-header-upper-tabs"> <devsite-tabs class="upper-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Upper tabs"> <tab class="devsite-dropdown devsite-dropdown-full "> <a href="https://developers.google.com/products" track-metadata-eventdetail="https://developers.google.com/products" class="devsite-tabs-content gc-analytics-event products-dropdown-tab" track-type="nav" track-metadata-position="nav - products" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Products" track-name="products" > Products </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Products" track-type="nav" track-metadata-eventdetail="https://developers.google.com/products" track-metadata-position="nav - products" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Products" track-name="products" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column products-dropdown"> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://developers.google.com/products/developer-platforms-and-os?category=DevsiteMarketingPlatformsAndOperatingSystems" class="devsite-products-category" track-type="nav" track-metadata-eventdetail="https://developers.google.com/products/developer-platforms-and-os?category=DevsiteMarketingPlatformsAndOperatingSystems" track-metadata-position="nav - products" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Platforms and Operating Systems </div> </a> </li> <li class="devsite-nav-item"> <a href="//developer.android.com" track-type="nav" track-metadata-eventdetail="//developer.android.com" track-metadata-position="nav - products" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-icon-container" size="medium" > <picture> <img class="devsite-nav-item-icon" alt="" src="//developer.android.com/static/images/android-logo.svg" srcset=" //developer.android.com/static/images/android-logo.svg" sizes="100vw" loading="lazy" > </picture> </div> <div class="devsite-nav-item-title"> Android → </div> </a> </li> <li class="devsite-nav-item"> <a href="//ai.google.dev/" track-type="nav" track-metadata-eventdetail="//ai.google.dev/" track-metadata-position="nav - products" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-icon-container" size="medium" > <picture> <img class="devsite-nav-item-icon" alt="" src="https://developers.google.com/static/site-assets/logo-google-g.svg" srcset=" /static/site-assets/logo-google-g.svg" sizes="100vw" loading="lazy" > </picture> </div> <div class="devsite-nav-item-title"> Google AI → </div> </a> </li> <li class="devsite-nav-item"> <a href="//developer.chrome.com" track-type="nav" track-metadata-eventdetail="//developer.chrome.com" track-metadata-position="nav - products" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-icon-container" size="medium" > <picture> <img class="devsite-nav-item-icon" alt="" src="https://developers.google.com/static/homepage-assets/images/chromeos-logo.svg" srcset=" /static/homepage-assets/images/chromeos-logo.svg" sizes="100vw" loading="lazy" > </picture> </div> <div class="devsite-nav-item-title"> Chrome → </div> </a> </li> <li class="devsite-nav-item"> <a href="//cloud.google.com/developers" track-type="nav" track-metadata-eventdetail="//cloud.google.com/developers" track-metadata-position="nav - products" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-icon-container" size="medium" > <picture> <img class="devsite-nav-item-icon" alt="" src="//gstatic.com/images/branding/product/2x/google_cloud_64dp.png" srcset=" //gstatic.com/images/branding/product/2x/google_cloud_64dp.png" sizes="100vw" loading="lazy" > </picture> </div> <div class="devsite-nav-item-title"> Google Cloud → </div> </a> </li> <li class="devsite-nav-item"> <a href="//firebase.google.com" track-type="nav" track-metadata-eventdetail="//firebase.google.com" track-metadata-position="nav - products" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-icon-container" size="medium" > <picture> <img class="devsite-nav-item-icon" alt="" src="https://developers.google.com/_static/firebase/images/icon.svg" srcset=" /_static/firebase/images/icon.svg" sizes="100vw" loading="lazy" > </picture> </div> <div class="devsite-nav-item-title"> Firebase → </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column products-dropdown"> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://developers.google.com/products/frameworks-ides-and-sdks?category=DevsiteMarketingIdesFrameworksAndSdks" class="devsite-products-category" track-type="nav" track-metadata-eventdetail="https://developers.google.com/products/frameworks-ides-and-sdks?category=DevsiteMarketingIdesFrameworksAndSdks" track-metadata-position="nav - products" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Frameworks, IDEs, and SDKs </div> </a> </li> <li class="devsite-nav-item"> <a href="//developer.android.com/jetpack" track-type="nav" track-metadata-eventdetail="//developer.android.com/jetpack" track-metadata-position="nav - products" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-icon-container" size="medium" > <picture> <img class="devsite-nav-item-icon" alt="" src="//developer.android.com/static/images/spot-icons/jetpack-compose.svg" srcset=" //developer.android.com/static/images/spot-icons/jetpack-compose.svg" sizes="100vw" loading="lazy" > </picture> </div> <div class="devsite-nav-item-title"> Jetpack Compose → </div> </a> </li> <li class="devsite-nav-item"> <a href="//developer.android.com/studio" track-type="nav" track-metadata-eventdetail="//developer.android.com/studio" track-metadata-position="nav - products" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-icon-container" size="medium" > <picture> <img class="devsite-nav-item-icon" alt="" src="//developer.android.com/static/images/android-logo.svg" srcset=" //developer.android.com/static/images/android-logo.svg" sizes="100vw" loading="lazy" > </picture> </div> <div class="devsite-nav-item-title"> Android Studio → </div> </a> </li> <li class="devsite-nav-item"> <a href="//flutter.dev" track-type="nav" track-metadata-eventdetail="//flutter.dev" track-metadata-position="nav - products" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-icon-container" size="medium" > <picture> <img class="devsite-nav-item-icon" alt="" src="https://developers.google.com/static/site-assets/logo-flutter.svg" srcset=" /static/site-assets/logo-flutter.svg" sizes="100vw" loading="lazy" > </picture> </div> <div class="devsite-nav-item-title"> Flutter → </div> </a> </li> <li class="devsite-nav-item"> <a href="//idx.dev/" track-type="nav" track-metadata-eventdetail="//idx.dev/" track-metadata-position="nav - products" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-icon-container" size="medium" > <picture> <img class="devsite-nav-item-icon" alt="" src="https://developers.google.com/static/products/images/project-idx.png" srcset="https://developers.google.com/static/products/images/project-idx_36.png 36w, https://developers.google.com/static/products/images/project-idx_48.png 48w, https://developers.google.com/static/products/images/project-idx_72.png 72w, https://developers.google.com/static/products/images/project-idx_96.png 96w, https://developers.google.com/static/products/images/project-idx_480.png 480w, https://developers.google.com/static/products/images/project-idx_720.png 720w, https://developers.google.com/static/products/images/project-idx_856.png 856w, https://developers.google.com/static/products/images/project-idx_960.png 960w, https://developers.google.com/static/products/images/project-idx_1440.png 1440w, https://developers.google.com/static/products/images/project-idx_1920.png 1920w, https://developers.google.com/static/products/images/project-idx_2880.png 2880w" sizes="100vw" loading="lazy" > </picture> </div> <div class="devsite-nav-item-title"> Project IDX → </div> </a> </li> <li class="devsite-nav-item"> <a href="//makersuite.google.com/" track-type="nav" track-metadata-eventdetail="//makersuite.google.com/" track-metadata-position="nav - products" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-icon-container" size="medium" > <picture> <img class="devsite-nav-item-icon" alt="" src="https://developers.google.com/static/focus/images/ai-studio-icon.png" srcset="https://developers.google.com/static/focus/images/ai-studio-icon_36.png 36w, https://developers.google.com/static/focus/images/ai-studio-icon_48.png 48w, https://developers.google.com/static/focus/images/ai-studio-icon_72.png 72w, https://developers.google.com/static/focus/images/ai-studio-icon_96.png 96w, https://developers.google.com/static/focus/images/ai-studio-icon_480.png 480w, https://developers.google.com/static/focus/images/ai-studio-icon_720.png 720w, https://developers.google.com/static/focus/images/ai-studio-icon_856.png 856w, https://developers.google.com/static/focus/images/ai-studio-icon_960.png 960w, https://developers.google.com/static/focus/images/ai-studio-icon_1440.png 1440w, https://developers.google.com/static/focus/images/ai-studio-icon_1920.png 1920w, https://developers.google.com/static/focus/images/ai-studio-icon_2880.png 2880w" sizes="100vw" loading="lazy" > </picture> </div> <div class="devsite-nav-item-title"> Google AI Studio → </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column products-dropdown"> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://developers.google.com/products/services-and-integrations?category=DevsiteMarketingServicesAndIntegrations" class="devsite-products-category" track-type="nav" track-metadata-eventdetail="https://developers.google.com/products/services-and-integrations?category=DevsiteMarketingServicesAndIntegrations" track-metadata-position="nav - products" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Services and Integrations </div> </a> </li> <li class="devsite-nav-item"> <a href="//ai.google.dev/gemini-api/docs" track-type="nav" track-metadata-eventdetail="//ai.google.dev/gemini-api/docs" track-metadata-position="nav - products" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-icon-container" size="medium" > <picture> <img class="devsite-nav-item-icon" alt="" src="https://developers.google.com/static/focus/images/gemini-icon.png" srcset="https://developers.google.com/static/focus/images/gemini-icon_36.png 36w, https://developers.google.com/static/focus/images/gemini-icon_48.png 48w, https://developers.google.com/static/focus/images/gemini-icon_72.png 72w, https://developers.google.com/static/focus/images/gemini-icon_96.png 96w, https://developers.google.com/static/focus/images/gemini-icon_480.png 480w, https://developers.google.com/static/focus/images/gemini-icon_720.png 720w, https://developers.google.com/static/focus/images/gemini-icon_856.png 856w, https://developers.google.com/static/focus/images/gemini-icon_960.png 960w, https://developers.google.com/static/focus/images/gemini-icon_1440.png 1440w, https://developers.google.com/static/focus/images/gemini-icon_1920.png 1920w, https://developers.google.com/static/focus/images/gemini-icon_2880.png 2880w" sizes="100vw" loading="lazy" > </picture> </div> <div class="devsite-nav-item-title"> Gemini API → </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/privacy-sandbox" track-type="nav" track-metadata-eventdetail="https://developers.google.com/privacy-sandbox" track-metadata-position="nav - products" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-icon-container" size="medium" > <picture> <img class="devsite-nav-item-icon" alt="" src="https://developers.google.com/static/privacy-sandbox/assets/images/privacy-sandbox-logo.svg" srcset=" /static/privacy-sandbox/assets/images/privacy-sandbox-logo.svg" sizes="100vw" loading="lazy" > </picture> </div> <div class="devsite-nav-item-title"> Privacy Sandbox → </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/identity" track-type="nav" track-metadata-eventdetail="https://developers.google.com/identity" track-metadata-position="nav - products" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-icon-container" size="medium" > <picture> <img class="devsite-nav-item-icon" alt="" src="https://developers.google.com/static/site-assets/logo-google-g.svg" srcset=" /static/site-assets/logo-google-g.svg" sizes="100vw" loading="lazy" > </picture> </div> <div class="devsite-nav-item-title"> Identity </div> </a> </li> <li class="devsite-nav-item"> <a href="//checks.google.com/" track-type="nav" track-metadata-eventdetail="//checks.google.com/" track-metadata-position="nav - products" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-icon-container" size="medium" > <picture> <img class="devsite-nav-item-icon" alt="" src="https://developers.google.com/static/checks/images/Checks_Icon.png" srcset="https://developers.google.com/static/checks/images/Checks_Icon_36.png 36w, https://developers.google.com/static/checks/images/Checks_Icon_48.png 48w, https://developers.google.com/static/checks/images/Checks_Icon_72.png 72w, https://developers.google.com/static/checks/images/Checks_Icon_96.png 96w, https://developers.google.com/static/checks/images/Checks_Icon_480.png 480w, https://developers.google.com/static/checks/images/Checks_Icon_720.png 720w, https://developers.google.com/static/checks/images/Checks_Icon_856.png 856w, https://developers.google.com/static/checks/images/Checks_Icon_960.png 960w, https://developers.google.com/static/checks/images/Checks_Icon_1440.png 1440w, https://developers.google.com/static/checks/images/Checks_Icon_1920.png 1920w, https://developers.google.com/static/checks/images/Checks_Icon_2880.png 2880w" sizes="100vw" loading="lazy" > </picture> </div> <div class="devsite-nav-item-title"> Checks → </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/workspace" track-type="nav" track-metadata-eventdetail="https://developers.google.com/workspace" track-metadata-position="nav - products" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-icon-container" size="medium" > <picture> <img class="devsite-nav-item-icon" alt="" src="https://developers.google.com/static/site-assets/logo-google-g.svg" srcset=" /static/site-assets/logo-google-g.svg" sizes="100vw" loading="lazy" > </picture> </div> <div class="devsite-nav-item-title"> Google Workspace </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column products-dropdown"> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://developers.google.com/products/growth-and-monetization?category=DevsiteMarketingGrowthAndMonetization" class="devsite-products-category" track-type="nav" track-metadata-eventdetail="https://developers.google.com/products/growth-and-monetization?category=DevsiteMarketingGrowthAndMonetization" track-metadata-position="nav - products" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Growth and Monetization </div> </a> </li> <li class="devsite-nav-item"> <a href="//developer.android.com/distribute/" track-type="nav" track-metadata-eventdetail="//developer.android.com/distribute/" track-metadata-position="nav - products" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-icon-container" size="medium" > <picture> <img class="devsite-nav-item-icon" alt="" src="//gstatic.com/images/branding/product/2x/play_prism_64dp.png" srcset=" //gstatic.com/images/branding/product/2x/play_prism_64dp.png" sizes="100vw" loading="lazy" > </picture> </div> <div class="devsite-nav-item-title"> Google Play → </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/admob" track-type="nav" track-metadata-eventdetail="https://developers.google.com/admob" track-metadata-position="nav - products" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-icon-container" size="medium" > <picture> <img class="devsite-nav-item-icon" alt="" src="//gstatic.com/images/branding/product/2x/admob_36dp.png" srcset=" //gstatic.com/images/branding/product/2x/admob_36dp.png" sizes="100vw" loading="lazy" > </picture> </div> <div class="devsite-nav-item-title"> Google AdMob </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/google-ads" track-type="nav" track-metadata-eventdetail="https://developers.google.com/google-ads" track-metadata-position="nav - products" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-icon-container" size="medium" > <picture> <img class="devsite-nav-item-icon" alt="" src="https://developers.google.com/static/homepage-assets/images/google-ads.svg" srcset=" /static/homepage-assets/images/google-ads.svg" sizes="100vw" loading="lazy" > </picture> </div> <div class="devsite-nav-item-title"> Google Ads </div> </a> </li> <li class="devsite-nav-item"> <a href="//developer.chrome.com/docs/extensions" track-type="nav" track-metadata-eventdetail="//developer.chrome.com/docs/extensions" track-metadata-position="nav - products" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-icon-container" size="medium" > <picture> <img class="devsite-nav-item-icon" alt="" src="https://developers.google.com/static/homepage-assets/images/chromeos-logo.svg" srcset=" /static/homepage-assets/images/chromeos-logo.svg" sizes="100vw" loading="lazy" > </picture> </div> <div class="devsite-nav-item-title"> Chrome Extensions → </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/search" track-type="nav" track-metadata-eventdetail="https://developers.google.com/search" track-metadata-position="nav - products" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-icon-container" size="medium" > <picture> <img class="devsite-nav-item-icon" alt="" src="https://developers.google.com/static/search/images/google-search-central-logo.svg" srcset=" /static/search/images/google-search-central-logo.svg" sizes="100vw" loading="lazy" > </picture> </div> <div class="devsite-nav-item-title"> Google Search Central </div> </a> </li> </ul> </div> </div> </div> </tab> <tab > <a href="https://developers.google.com/events" track-metadata-eventdetail="https://developers.google.com/events" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - events" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Events" track-name="events" > Events </a> </tab> <tab > <a href="https://developers.google.com/learn" track-metadata-eventdetail="https://developers.google.com/learn" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - learn" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Learn" track-name="learn" aria-label="Learning Catalog" > Learn </a> </tab> <tab class="devsite-dropdown devsite-active "> <a href="https://developers.google.com/community" track-metadata-eventdetail="https://developers.google.com/community" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - community" track-metadata-module="primary nav" aria-label="Community, selected" data-category="Site-Wide Custom Events" data-label="Tab: Community" track-name="community" > Community </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Community" track-type="nav" track-metadata-eventdetail="https://developers.google.com/community" track-metadata-position="nav - community" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Community" track-name="community" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>Communities</li> <li class="devsite-nav-item"> <a href="https://developers.google.com/community/gdg" track-type="nav" track-metadata-eventdetail="https://developers.google.com/community/gdg" track-metadata-position="nav - community" track-metadata-module="tertiary nav" track-metadata-module_headline="communities" tooltip > <div class="devsite-nav-item-title"> Google Developer Groups </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/community/gdsc" track-type="nav" track-metadata-eventdetail="https://developers.google.com/community/gdsc" track-metadata-position="nav - community" track-metadata-module="tertiary nav" track-metadata-module_headline="communities" tooltip > <div class="devsite-nav-item-title"> Google Developer Student Clubs </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/womentechmakers" track-type="nav" track-metadata-eventdetail="https://developers.google.com/womentechmakers" track-metadata-position="nav - community" track-metadata-module="tertiary nav" track-metadata-module_headline="communities" tooltip > <div class="devsite-nav-item-title"> Women Techmakers </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>Programs</li> <li class="devsite-nav-item"> <a href="https://developers.google.com/community/accelerators" track-type="nav" track-metadata-eventdetail="https://developers.google.com/community/accelerators" track-metadata-position="nav - community" track-metadata-module="tertiary nav" track-metadata-module_headline="programs" tooltip > <div class="devsite-nav-item-title"> Accelerator </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/community/experts" track-type="nav" track-metadata-eventdetail="https://developers.google.com/community/experts" track-metadata-position="nav - community" track-metadata-module="tertiary nav" track-metadata-module_headline="programs" tooltip > <div class="devsite-nav-item-title"> Google Developer Experts </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/community/tec" track-type="nav" track-metadata-eventdetail="https://developers.google.com/community/tec" track-metadata-position="nav - community" track-metadata-module="tertiary nav" track-metadata-module_headline="programs" tooltip > <div class="devsite-nav-item-title"> Tech Equity Collective </div> </a> </li> </ul> </div> </div> </div> </tab> <tab > <a href="https://developers.google.com/profile/u/me/dashboard" track-metadata-eventdetail="https://developers.google.com/profile/u/me/dashboard" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - developer program" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Developer Program" track-name="developer program" > Developer Program </a> </tab> <tab > <a href="https://developers.googleblog.com" track-metadata-eventdetail="https://developers.googleblog.com" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - blog" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Blog" track-name="blog" > Blog </a> </tab> </nav> </devsite-tabs> </div> <devsite-search enable-signin enable-search enable-suggestions enable-query-completion project-name="DevFest" tenant-name="Google for Developers" project-scope="/community/devfest" url-scoped="https://developers.google.com/s/results/community/devfest" > <form class="devsite-search-form" action="https://developers.google.com/s/results" method="GET"> <div class="devsite-search-container"> <button type="button" search-open class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Open search"></button> <div class="devsite-searchbox"> <input aria-activedescendant="" aria-autocomplete="list" aria-label="Search" aria-expanded="false" aria-haspopup="listbox" autocomplete="off" class="devsite-search-field devsite-search-query" name="q" placeholder="Search" role="combobox" type="text" value="" > <div class="devsite-search-image material-icons" aria-hidden="true"> </div> <div class="devsite-search-shortcut-icon-container" aria-hidden="true"> <kbd class="devsite-search-shortcut-icon">/</kbd> </div> </div> </div> </form> <button type="button" search-close class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Close search"></button> </devsite-search> </div> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="de" >Deutsch</a> </li> <li role="presentation"> <a role="menuitem" lang="es" >Español</a> </li> <li role="presentation"> <a role="menuitem" lang="es_419" >Español – América Latina</a> </li> <li role="presentation"> <a role="menuitem" lang="fr" >Français</a> </li> <li role="presentation"> <a role="menuitem" lang="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="it" >Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pl" >Polski</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br" >Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="vi" >Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ru" >Русский</a> </li> <li role="presentation"> <a role="menuitem" lang="he" >עברית</a> </li> <li role="presentation"> <a role="menuitem" lang="ar" >العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="fa" >فارسی</a> </li> <li role="presentation"> <a role="menuitem" lang="hi" >हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="bn" >বাংলা</a> </li> <li role="presentation"> <a role="menuitem" lang="th" >ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw" >中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> <devsite-user enable-profiles fp-auth id="devsite-user"> <span class="button devsite-top-button" aria-hidden="true" visually-hidden>Sign in</span> </devsite-user> </div> </div> </div> <div class="devsite-collapsible-section "> <div class="devsite-header-background"> <div class="devsite-doc-set-nav-row"> <devsite-tabs class="lower-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Lower tabs"> <tab class="devsite-active"> <a href="https://developers.google.com/community/devfest" track-metadata-eventdetail="https://developers.google.com/community/devfest" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - devfest" track-metadata-module="primary nav" aria-label="DevFest, selected" data-category="Site-Wide Custom Events" data-label="Tab: DevFest" track-name="devfest" > DevFest </a> </tab> <tab > <a href="https://developers.google.com/community/devfest/faq" track-metadata-eventdetail="https://developers.google.com/community/devfest/faq" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - faq" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: FAQ" track-name="faq" > FAQ </a> </tab> </nav> </devsite-tabs> </div> </div> </div> </div> </devsite-header> <devsite-book-nav scrollbars hidden> <div class="devsite-book-nav-filter" hidden> <span class="filter-list-icon material-icons" aria-hidden="true"></span> <input type="text" placeholder="Filter" aria-label="Type to filter" role="searchbox"> <span class="filter-clear-button hidden" data-title="Clear filter" aria-label="Clear filter" role="button" tabindex="0"></span> </div> <nav class="devsite-book-nav devsite-nav nocontent" aria-label="Side menu"> <div class="devsite-mobile-header"> <button type="button" id="devsite-close-nav" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Close navigation" aria-label="Close navigation"> </button> <div class="devsite-product-name-wrapper"> <a href="/" class="devsite-site-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Site logo" track-type="globalNav" track-name="googleForDevelopers" track-metadata-position="nav" track-metadata-eventDetail="nav"> <picture> <img src="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/lockup-new.svg" class="devsite-site-logo" alt="Google for Developers"> </picture> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> </li> </ul> </span> </div> </div> <div class="devsite-book-nav-wrapper"> <div class="devsite-mobile-nav-top"> <ul class="devsite-nav-list"> <li class="devsite-nav-item"> <a href="/products" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Products" track-name="products" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Products" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Products </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Products" track-name="products" > <span class="devsite-nav-text" tooltip menu="Products"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Products"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/events" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Events" track-name="events" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Events" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Events </span> </a> </li> <li class="devsite-nav-item"> <a href="/learn" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Learn" track-name="learn" aria-label="Learning Catalog" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Learn" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Learn </span> </a> </li> <li class="devsite-nav-item"> <a href="/community" class="devsite-nav-title gc-analytics-event devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Tab: Community" track-name="community" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Community" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Community </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Community" track-name="community" > <span class="devsite-nav-text" tooltip menu="Community"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Community"> </span> </span> </li> </ul> <ul class="devsite-nav-responsive-tabs"> <li class="devsite-nav-item"> <a href="/community/devfest" class="devsite-nav-title gc-analytics-event devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Tab: DevFest" track-name="devfest" data-category="Site-Wide Custom Events" data-label="Responsive Tab: DevFest" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > DevFest </span> </a> </li> <li class="devsite-nav-item"> <a href="/community/devfest/faq" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: FAQ" track-name="faq" data-category="Site-Wide Custom Events" data-label="Responsive Tab: FAQ" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > FAQ </span> </a> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/profile/u/me/dashboard" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Developer Program" track-name="developer program" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Developer Program" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Developer Program </span> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.googleblog.com" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Blog" track-name="blog" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Blog" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Blog </span> </a> </li> </ul> </div> <div class="devsite-mobile-nav-bottom"> <ul class="devsite-nav-list" menu="Products" aria-label="Side menu" hidden> <li class="devsite-nav-item"> <a href="/products/developer-platforms-and-os?category=DevsiteMarketingPlatformsAndOperatingSystems" class="devsite-products-category" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Platforms and Operating Systems" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Platforms and Operating Systems </span> </a> </li> <li class="devsite-nav-item"> <a href="//developer.android.com" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android →" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android → </span> </a> </li> <li class="devsite-nav-item"> <a href="//ai.google.dev/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google AI →" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Google AI → </span> </a> </li> <li class="devsite-nav-item"> <a href="//developer.chrome.com" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Chrome →" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Chrome → </span> </a> </li> <li class="devsite-nav-item"> <a href="//cloud.google.com/developers" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Cloud →" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Google Cloud → </span> </a> </li> <li class="devsite-nav-item"> <a href="//firebase.google.com" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Firebase →" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Firebase → </span> </a> </li> <li class="devsite-nav-item"> <a href="/products/frameworks-ides-and-sdks?category=DevsiteMarketingIdesFrameworksAndSdks" class="devsite-products-category" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Frameworks, IDEs, and SDKs" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Frameworks, IDEs, and SDKs </span> </a> </li> <li class="devsite-nav-item"> <a href="//developer.android.com/jetpack" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Jetpack Compose →" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Jetpack Compose → </span> </a> </li> <li class="devsite-nav-item"> <a href="//developer.android.com/studio" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android Studio →" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android Studio → </span> </a> </li> <li class="devsite-nav-item"> <a href="//flutter.dev" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Flutter →" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Flutter → </span> </a> </li> <li class="devsite-nav-item"> <a href="//idx.dev/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Project IDX →" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Project IDX → </span> </a> </li> <li class="devsite-nav-item"> <a href="//makersuite.google.com/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google AI Studio →" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Google AI Studio → </span> </a> </li> <li class="devsite-nav-item"> <a href="/products/services-and-integrations?category=DevsiteMarketingServicesAndIntegrations" class="devsite-products-category" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Services and Integrations" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Services and Integrations </span> </a> </li> <li class="devsite-nav-item"> <a href="//ai.google.dev/gemini-api/docs" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Gemini API →" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Gemini API → </span> </a> </li> <li class="devsite-nav-item"> <a href="/privacy-sandbox" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Privacy Sandbox →" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Privacy Sandbox → </span> </a> </li> <li class="devsite-nav-item"> <a href="/identity" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Identity" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Identity </span> </a> </li> <li class="devsite-nav-item"> <a href="//checks.google.com/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Checks →" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Checks → </span> </a> </li> <li class="devsite-nav-item"> <a href="/workspace" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Workspace" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Google Workspace </span> </a> </li> <li class="devsite-nav-item"> <a href="/products/growth-and-monetization?category=DevsiteMarketingGrowthAndMonetization" class="devsite-products-category" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Growth and Monetization" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Growth and Monetization </span> </a> </li> <li class="devsite-nav-item"> <a href="//developer.android.com/distribute/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Play →" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Google Play → </span> </a> </li> <li class="devsite-nav-item"> <a href="/admob" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google AdMob" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Google AdMob </span> </a> </li> <li class="devsite-nav-item"> <a href="/google-ads" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Ads" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Google Ads </span> </a> </li> <li class="devsite-nav-item"> <a href="//developer.chrome.com/docs/extensions" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Chrome Extensions →" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Chrome Extensions → </span> </a> </li> <li class="devsite-nav-item"> <a href="/search" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Search Central" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Google Search Central </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Community" aria-label="Side menu" hidden> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Communities </span> </span> </li> <li class="devsite-nav-item"> <a href="/community/gdg" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Developer Groups" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Google Developer Groups </span> </a> </li> <li class="devsite-nav-item"> <a href="/community/gdsc" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Developer Student Clubs" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Google Developer Student Clubs </span> </a> </li> <li class="devsite-nav-item"> <a href="/womentechmakers" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Women Techmakers" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Women Techmakers </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Programs </span> </span> </li> <li class="devsite-nav-item"> <a href="/community/accelerators" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Accelerator" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Accelerator </span> </a> </li> <li class="devsite-nav-item"> <a href="/community/experts" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Developer Experts" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Google Developer Experts </span> </a> </li> <li class="devsite-nav-item"> <a href="/community/tec" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Tech Equity Collective" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Tech Equity Collective </span> </a> </li> </ul> </div> </div> </nav> </devsite-book-nav> <section id="gc-wrapper"> <main role="main" class="devsite-main-content" > <devsite-content> <article class="devsite-article"><style> /* Styles inlined from /community/devfest/devfest.css */ /* ---------------------------------------- Variables. ---------------------------------------- */ .devfest-homepage-header > div > div { --devfest-homepage-header-margin-left: 740px; --devfest-homepage-header-width: 500px; margin-bottom: 50px; } .devfest-about-header > div > div { --devfest-homepage-header-margin-left: 740px; --devfest-homepage-header-width: 800px; } .devfest-homepage-header h3, .devfest-about-description h3, .devfest-faq-description h3 { --devfest-homepage-header-font: 500 72px 'Google Sans'; } .devfest-quote-carousel { --devfest-quote-carousel-height: 590px; } .devfest-quote-carousel-slide { --devfest-quote-carousel-slide-background: #fdd663; --devfest-quote-carousel-slide-flex-direction: row; --devfest-quote-carousel-slide-gap: 60px; } .devfest-quote-carousel-quote { --devfest-quote-carousel-quote-width: 50%; } .devfest-quote-carousel-image-container { --devfest-quote-carousel-image-height: 406px; --devfest-quote-carousel-image-width: 592px; } .devfest-quote-carousel-caption { --devfest-quote-carousel-caption-font: 500 32px/40px 'Google Sans'; } .devfest-homepage-header { --devfest-homepage-header-background: url(/community/devfest/images/devfest-header-left.svg) no-repeat top left, url(/community/devfest/images/devfest-header-right.svg) no-repeat top right; --devfest-homepage-header-background-padding-top: 40px; } .devfest-about-header { --devfest-about-header-background: url(/community/devfest/images/devfest-about-background-left.svg) no-repeat top left / auto 436px, url(/community/devfest/images/devfest-about-background-right.svg) no-repeat top right / auto 450px; --devfest-homepage-header-background-padding-top: 40px; } .networking-row-cards { --networking-row-cards-grid: auto-flow / 1fr 1fr 1fr; } .devfest-connect-cards-container > ul { --devfest-connect-cards-container-grid: auto-flow / 1fr 1fr 1fr; } .devfest-connect-cards-filters { --devfest-connect-cards-filters-grid: auto-flow / calc(calc(100% - 17px) / 3 * 2) 1fr; } .devfest-connect-cards-dropdown-filters { --devfest-connect-cards-dropdown-filters-grid: auto-flow / 1fr 1fr 1fr; } @media screen and (max-width: 1750px) { .devfest-homepage-header { --devfest-homepage-header-background: url(/community/devfest/images/devfest-header-left.svg) no-repeat top left; } } @media screen and (min-width: 1750px) { .devfest-homepage-header-item > div:first-child { margin-left: 100px; } .devfest-homepage-header-item > div:last-child { margin-right: 100px; } } @media screen and (min-width: 1051px) and (max-width: 1620px) { .devfest-homepage-header { padding-inline: 80px; } } @media screen and (max-width: 1525px) { .devfest-quote-carousel-image-container { --devfest-quote-carousel-image-height: 28vw; --devfest-quote-carousel-image-width: 28vw; } .devfest-about-header { --devfest-about-header-background: url(/community/devfest/images/devfest-about-background-left.svg) no-repeat top left / auto 436px; } } @media screen and (max-width: 1370px) { .devfest-about-header { --devfest-about-header-background: url(/community/devfest/images/devfest-about-header-mobile.svg) no-repeat top left, url(/community/devfest/images/devfest-about-background-right.svg) no-repeat top right; --devfest-homepage-header-background-padding-top: 390px; } .devfest-faq-header { --devfest-faq-header-background: url(/community/devfest/images/devfest-faq-header-mobile.svg) no-repeat top left, url(/community/devfest/images/devfest-faq-background-right-small.svg) no-repeat top right; --devfest-homepage-header-background-padding-top: 390px; } .devfest-about-description { padding-bottom: 0 !important; } .devfest-faq-description { padding-bottom: 12vw !important; } .devfest-homepage-header > div > div { --devfest-homepage-header-margin-left: 10%; } .devfest-about-header > div > div, .devfest-faq-header > div > div { --devfest-homepage-header-margin-left: 10%; --devfest-homepage-header-width: 100%; } } @media screen and (max-width: 1230px) { .devfest-connect-cards-filters { --devfest-connect-cards-filters-grid: auto-flow / 1fr 1fr; } } @media screen and (max-width: 1200px) { } @media screen and (max-width: 1050px) { .devfest-homepage-header { --devfest-homepage-header-background: url(/community/devfest/images/devfest-tablet-left.png) no-repeat top left / contain, url(/community/devfest/images/devfest-tablet-right.svg) no-repeat top 20vw right; --devfest-homepage-header-background-padding-top: 2vw; } .devfest-homepage-header-item { display: flex !important; flex-direction: column; } .devfest-homepage-header-item > div:first-child, .devfest-homepage-header-item > div:last-child { width: 60% !important; } .devfest-about-header { --devfest-about-header-background: url(/community/devfest/images/devfest-about-background-right.svg) no-repeat top 28.8vw right, url(/community/devfest/images/devfest-about-header-mobile.svg) no-repeat top left / 100% auto; --devfest-homepage-header-background-padding-top: 44vw; } .devfest-homepage-header > div > div { --devfest-homepage-header-margin-left: 10%; } .devfest-connect-cards-container > ul { --devfest-connect-cards-container-grid: auto-flow / 1fr 1fr; } } @media screen and (max-width: 990px) { .devfest-connect-cards-filters { --devfest-connect-cards-filters-grid: auto-flow / 1fr; } } @media screen and (max-width: 960px) { .devfest-quote-carousel-slide { --devfest-quote-carousel-slide-background: #fdd663; --devfest-quote-carousel-slide-flex-direction: column; --devfest-quote-carousel-slide-gap: 8px; } .devfest-quote-carousel-quote { --devfest-quote-carousel-quote-width: 75%; text-align: center; } .devfest-quote-carousel-image { width: 88%; margin: auto; display: block; } .devfest-quote-carousel-image-container { --devfest-quote-carousel-image-height: 406px; --devfest-quote-carousel-image-width: 592px; } .devfest-quote-carousel { --devfest-quote-carousel-height: 800px; } .devfest-quote-carousel-caption { --devfest-quote-carousel-caption-font: 500 32px/40px 'Google Sans'; text-align: center; } } @media screen and (max-width: 840px) { .dgc-web-ecosystem-card img { padding: 24px; } .networking-row-cards { --networking-row-cards-grid: "title title" ". ."; } .devfest-about-header { --devfest-about-header-background: url(/community/devfest/images/devfest-about-background-right.svg) no-repeat top 30.5vw right, url(/community/devfest/images/devfest-about-header-mobile.svg) no-repeat top left / 100% auto; --devfest-homepage-header-background-padding-top: 47vw; } .devfest-faq-header { --devfest-faq-header-background: url(/community/devfest/images/devfest-faq-background-right.svg) no-repeat top 30.5vw right / 68%, url(/community/devfest/images/devfest-faq-header-mobile.svg) no-repeat top left / 100% auto; --devfest-homepage-header-background-padding-top: 47vw; } .devfest-about-header > div > div { --devfest-homepage-header-margin-left: 0; --devfest-homepage-header-width: 60%; } .devfest-faq-header > div > div { --devfest-homepage-header-margin-left: 0; --devfest-homepage-header-width: 60%; } .devfest-homepage-header > div > div { --devfest-homepage-header-margin-left: 40px; --devfest-homepage-header-width: 68%; } .devfest-homepage-header h3, .devfest-about-description h3, .devfest-faq-description h3 { --devfest-homepage-header-font: 500 48px 'Google Sans'; } .devfest-homepage-header-item { flex-direction: column-reverse !important; } } @media screen and (max-width: 840px) and (min-width: 601px) { .networking-row-title-card { grid-area: title; } } @media screen and (min-width: 826px) { .devfest-countdown .devsite-countdown-label { margin-top: 8px; } } @media screen and (max-width: 750px) { .devfest-homepage-header { --devfest-homepage-header-background: url(/community/devfest/images/devfest-mobile-left.svg) no-repeat top left / contain, url(/community/devfest/images/devfest-mobile-right.svg) no-repeat top 30vw right; --devfest-homepage-header-background-padding-top: 48vw; } .devfest-homepage-header-item { align-items: flex-start !important; margin-top: 0 !important; } .devfest-homepage-header-item > div:first-child { width: 100% !important; } .devfest-homepage-header-item > div:last-child { width: 70% !important; } } @media screen and (max-width: 600px) { .devfest-about-header { --devfest-homepage-header-background: url(/community/devfest/images/devfest-about-background-right.svg) no-repeat top 30vw right / 30%, url(/community/devfest/images/devfest-about-header-mobile.svg) no-repeat top left / 100% auto; } .devfest-faq-header { --devfest-faq-header-background: url(/community/devfest/images/devfest-faq-background-right.svg) no-repeat top 30vw right / 72%, url(/community/devfest/images/devfest-faq-header-mobile.svg) no-repeat top left / 100% auto; } .devfest-quote-carousel { --devfest-quote-carousel-height: 128vw } .devfest-quote-carousel-caption { --devfest-quote-carousel-caption-font: 500 4.8vw/5.6vw 'Google Sans'; text-align: left; } .devfest-quote-carousel-image-container { --devfest-quote-carousel-image-height: 62vw; --devfest-quote-carousel-image-width: 100vw; } .devfest-quote-carousel-quote { text-align: left; } .networking-row-cards { --networking-row-cards-grid: auto-flow / 1fr; } .devfest-connect-cards-container > ul { --devfest-connect-cards-container-grid: auto-flow / 1fr; } .devfest-connect-cards-dropdown-filters { --devfest-connect-cards-dropdown-filters-grid: auto-flow / 1fr; } } @media screen and (max-width: 430px) { .devfest-quote-carousel { --devfest-quote-carousel-height: 140vw } } /* ---------------------------------------- Rules and references. ---------------------------------------- */ /* Devfest Homepage Header */ .devfest-homepage-header { background: var(--devfest-homepage-header-background); padding-top: var(--devfest-homepage-header-background-padding-top); } .devfest-about-header { padding-top: var(--devfest-homepage-header-background-padding-top); } .devfest-faq-header { padding-top: var(--devfest-homepage-header-background-padding-top); } .devfest-about-header > div, .devfest-faq-header > div { margin: 0; } .devfest-about-header > div > div, .devfest-faq-header > div > div { display: flex; flex-direction: column; margin-left: var(--devfest-homepage-header-margin-left); width: var(--devfest-homepage-header-width); } .devfest-homepage-header-item { margin-top: 200px; } .devfest-homepage-header .devsite-landing-row-item-description { height: 100%; } .devfest-homepage-header h3 { color: var(--tenant-primary-text-color) !important; font: var(--devfest-homepage-header-font) !important; pointer-events: none; } .devfest-about-description h3 { font: var(--devfest-homepage-header-font) !important; } .devfest-faq-description h3 { font: var(--devfest-homepage-header-font) !important; } .devfest-header-links { list-style: none; padding: 0; } .devfest-header-link { margin: 0; } .devfest-header-link a { align-items: center; border-bottom: 1px solid #4285f4; color: var(--tenant-primary-text-color); display: flex; font: 500 14px 'Google Sans'; justify-content: space-between; padding: 14px 12px 14px 0; } .devfest-header-link a:hover span { transform: translate(5px, 0); transition: .5s ease; } .devfest-header-link span { color: #1a73e8; transition: .5s ease; } /* Devfest countdown row */ .devfest-countdown { background: url(/community/devfest/images/countdown-background.webp) no-repeat bottom center black !important; padding: 26px !important; } .devfest-countdown .devsite-countdown-box { background: var(--tenant-background-1); } .devfest-countdown .devsite-countdown-label { font: 400 24px 'Roboto Mono'; } .devfest-countdown .devsite-countdown-days .devsite-countdown-label { color: #1a73e8; } .devfest-countdown .devsite-countdown-hours .devsite-countdown-label { color: #ea4335; } .devfest-countdown .devsite-countdown-minutes .devsite-countdown-label { color: #fbbc04; } .devfest-countdown .devsite-countdown-seconds .devsite-countdown-label { color: #34a853; } /* Devfest connect with developers section */ .devfest-connect h3 a, .past-sessions h3, .devfest-expectations-row h2, .devfest-find-gdg h3 a, .devfest-badges-row h2 { color: var(--tenant-primary-text-color); font: 400 40px 'Google Sans' !important; /* Force correct font for headings */ } .devfest-connect figure { pointer-events: none; } .devfest-connect img { left: 15%; margin-top: 24px; position: relative; width: 75%; } .devfest-connect-cards input[type="text"] { background: url(/community/devfest/images/devfest-connect-search-icon.svg) no-repeat center left 20px transparent; color: var(--tenant-secondary-text-color); font: 500 16px 'Google Sans'; padding: 16px 54px; } .devfest-connect-cards .devsite-filter-clear-button { align-self: center; font-size: 20px; padding-inline-end: 20px; } .devfest-connect-cards-filters { display: grid; gap: 32px; grid: var(--devfest-connect-cards-filters-grid); } .devfest-connect-cards-dropdown-filters { grid: var(--devfest-connect-cards-dropdown-filters-grid); display: grid; } .devfest-connect-cards-dropdown-filters .devsite-select button { background: var(--tenant-background-1); height: 54px; min-width: -webkit-fill-available; width: -webkit-fill-available; } .devfest-connect-cards-dropdown-filters .devsite-select button .devsite-select-toggle-label { color: var(--tenant-secondary-text-color); font: 500 16px 'Google Sans'; } .devfest-connect-cards .devsite-pagination-page-numbers-controls { display: flex; justify-content: center; margin-top: 40px; } .devfest-connect-cards .devsite-pagination-page-numbers-controls .devsite-pagination-page-number { align-items: center; color: var(--tenant-primary-text-color); display: flex; font: 500 16px 'Google Sans'; height: 28px; justify-content: center; text-decoration: none; width: 28px; } .devfest-connect-cards .devsite-pagination-page-numbers-controls .devsite-pagination-page-number[selected] { background: #d2e3fc; border-radius: 50%; } .color-scheme--dark .devfest-connect-cards .devsite-pagination-page-numbers-controls .devsite-pagination-page-number[selected] { background: #185abc; } .devfest-connect, .devfest-connect-cards { background: var(--tenant-background-2) !important; } .devfest-connect-card { background: var(--tenant-background-1); border-radius: 8px; border: var(--tenant-primary-border); list-style: none; padding: 35px 24px 18px; } .devfest-connect-cards-container > ul { display: grid; gap: 0 32px; grid: var(--devfest-connect-cards-container-grid); list-style: none; margin-top: 14px; padding: 0; } .devfest-connect-card label { font: 500 11px 'Roboto'; margin-bottom: 10px; text-transform: uppercase; } .devfest-connect-card h3 { font: 500 20px 'Google Sans'; margin-bottom: 0; } .devfest-connect-card p { color: var(--tenant-secondary-text-color); font: 400 16px 'Google Sans'; margin-block: 4px 26px; } .devfest-connect-card-tags { display: flex; flex-wrap: wrap; gap: 4px; padding: 10px 0; } .devfest-connect-card-tag { background: var(--tenant-background-2); border-radius: 4px; font: 500 11px 'Google Sans'; list-style: none; padding: 1px 8px; text-transform: uppercase; margin: 2px 0; } /* Past sessions row */ .past-sessions { margin-top: 40px; } .past-sessions img { left: 32%; position: relative; width: 150px; } .devfest .dgc-web-ecosystem-cards .devsite-landing-row-item, .past-sessions-cards .devsite-landing-row-item { border: 2px solid black; border-radius: 16px; } .past-sessions-cards { padding-bottom: 80px; } .past-sessions-cards .devsite-landing-row-item { gap: 8px; } .past-sessions-cards .devsite-landing-row-item .devsite-landing-row-item-media { border-bottom: 2px solid black; } .past-sessions-cards h3 { font: 400 24px/32px 'Google Sans'; margin-bottom: 16px; } .past-sessions-cards h3 + div { color: var(--tenant-secondary-text-color); font: 400 16px 'Google Sans'; } .past-session-date { font: 500 14px 'Google Sans'; margin-bottom: 16px; } @media screen and (min-width: 840px) { .past-sessions h3 + div { margin-right: -50% } } @media screen and (max-width: 840px) { .past-sessions { margin-top: 16px; } .past-sessions img { display: none; } .past-sessions .devsite-landing-row-item { grid-template-columns: 1fr; } .past-sessions-cards .devsite-landing-row-group { grid: auto-flow/repeat(1,1fr); } } @media screen and (max-width: 600px) { .past-sessions .devsite-landing-row-item-media+.devsite-landing-row-item-description { margin: 0; } } /* Resources */ .dgc-about-web-ecosystem-cards { margin-top: 40px; } .dgc-web-ecosystem-cards { padding-block: 40px; } .dgc-web-ecosystem-cards header h2 { font: 400 40px 'Google Sans'; } .dgc-web-ecosystem-card { flex-direction: row-reverse; } .dgc-web-ecosystem-card > div:first-child { align-self: center; padding: 30px; width: 50%; } .dgc-web-ecosystem-card h3 > a { color: var(--tenant-primary-text-color) !important; font: 400 24px 'Google Sans'; } .dgc-web-ecosystem-card h3 + div { font: 400 18px 'Roboto'; } .dgc-web-ecosystem-card .material-icons { margin: 0 !important; } /* Network, learn, grow row */ .networking-row-cards { display: grid; gap: 32px; grid: var(--networking-row-cards-grid); margin-block: 40px; } .networking-row-title-card { display: flex; flex-direction: column; justify-content: space-between; } .networking-row-title-card h3 { font: 400 40px 'Google Sans'; margin-block: 0 25px; } .networking-row-title-card p { font: 400 16px 'Google Sans'; } .networking-row-stat-card { align-items: center; background: #cbf0f8; border: 2px solid black; border-radius: 16px; display: flex; flex-direction: column; padding: 35px 20px 10px; } .networking-row-stat-card h4 { font: 700 64px 'Google Sans'; } .networking-row-stat-card p { font: 400 32px 'Google Sans'; text-align: center; } @media screen and (max-width: 840px) { .networking-row-cards { margin-top: 24px; } } /* Devfest Homepage "What is DevFest" Section */ /* [1] Forces page headers to be 700 weight and 64px */ .devfest-description h3, .devfest-faq h2 { font: 700 64px 'Google Sans' !important; /* [1] */ } .devfest-description h3 a { color: var(--tenant-primary-text-color); } .devfest-about-description div, .devfest-description div, .devfest-recap-description div, .devfest-speakers-description { font-family: 'Google Sans'; } .devfest-description { padding-block: 40px; } /* Devfest Homepage Map */ .devfest-map-section { background: #cbf0f8; padding-block: 80px; } .devfest-map-section h2 { font: 400 40px 'Google Sans'; } .devfest-map-section h2 + div { max-width: 100%; width: 100%; } /* Devfest Homepage Carousel section */ .devfest-quote-carousel-row { background: #fdd663 !important; /* Ensure the correct bg color is rendered */ padding-bottom: 0; } .devfest-quote-carousel-row > .devsite-landing-row-inner { margin: 0; min-width: 100%; padding: 0; } .devfest-quote-carousel { height: var(--devfest-quote-carousel-height); list-style-type: none; margin: 0; overflow: hidden; padding: 0; position: relative; } .devfest-quote-carousel-slide { animation: carousel 40s linear infinite; background: var(--devfest-quote-carousel-slide-background); height: 100%; margin: 0; padding-block: 60px; position: absolute; transform: translateX(100%); width: 100%; } .devfest-quote-carousel-slide > div { align-items: center; background: var(--devfest-quote-carousel-slide-background); display: flex; flex-direction: var(--devfest-quote-carousel-slide-flex-direction); gap: var(--devfest-quote-carousel-slide-gap); height: 100%; margin: auto; max-width: 1440px; position: relative; width: 100%; } @media screen and (max-width: 1520px) { .devfest-quote-carousel-slide > div { padding-inline: 24px; } } @media screen and (max-width: 600px) { .devfest-quote-carousel-slide > div { padding-inline: 16px; } } .devfest-open-quote { left: 0; position: absolute; top: 20px; } .devfest-close-quote { bottom: 20px; position: absolute; right: 24px; } .devfest-close-quote-mobile, .devfest-close-quote-tablet { display: none; position: absolute; } .devfest-quote-carousel-image-container { height: 100%; max-height: var(--devfest-quote-carousel-image-height); max-width: var(--devfest-quote-carousel-image-width); position: relative; width: auto; } @media screen and (max-width: 960px) { .devfest-open-quote { left: 60px; top: -16px; } .devfest-close-quote { display: none; } .devfest-close-quote-tablet { bottom: 0; display: block; right: 0; } .devfest-quote-carousel-image-container { width: 100%; } } .devfest-close-quote-mobile { display: none; } @media screen and (max-width: 600px) { .devfest-quote-carousel-image { padding-inline: unset; width: 100%; } .devfest-open-quote { left: 16px !important; /* Force correct left spacing */ width: 16vw; } .devfest-close-quote-mobile { bottom: -12vw; display: block; right: 0; width: 16vw; } .devfest-close-quote-tablet { display: none; } .devfest-quote-carousel-slide { padding-block: 40px; } } .devfest-quote-carousel-image { height: 100%; width: auto; } .devfest-quote-carousel > li:nth-child(1) .devfest-quote-carousel-image { margin-left: 83px; } .devfest-quote-carousel > li:nth-child(1) .devfest-open-quote, .devfest-quote-carousel > li:nth-child(2) .devfest-open-quote { left: 60px; } .devfest-quote-carousel > li:nth-child(2) .devfest-quote-carousel-image { margin-left: 6px; max-width: 586px; } .devfest-quote-carousel > li:nth-child(4) .devfest-quote-carousel-image { margin-left: 140px; max-width: 410px; } .devfest-quote-carousel > li:nth-child(4) .devfest-open-quote { left: 40px; } @media screen and (max-width: 1525px) { .devfest-quote-carousel .devfest-open-quote { left: 24px !important; /* Force spacing to be same for all slides */ } .devfest-quote-carousel-image-container { height: unset; width: unset; } /* [1] Forces same margin for all slide imgs */ /* [2] Forces same max width for all slide imgs */ .devfest-quote-carousel .devfest-quote-carousel-image { margin-left: auto !important; /* [1] */ max-height: var(--devfest-quote-carousel-image-height); max-width: var(--devfest-quote-carousel-image-width) !important; /* [2] */ } } @media screen and (max-width: 960px) { .devfest-quote-carousel-image-container { height: 100%; max-width: 100%; width: 100%; } .devfest-quote-carousel .devfest-open-quote { left: 24px !important;; /* Force correct left spacing */ } } @media screen and (max-width: 600px) { .devfest-quote-carousel .devfest-open-quote { left: 16px !important;; /* Force correct left spacing */ } .devfest-quote-carousel-image, .devfest-quote-carousel-image-container { height: unset; width: unset; } } .devfest-quote-carousel-quote { background: unset; padding: unset; max-width: 823px; } .devfest-quote-carousel-speaker { font: 400 18px/24px 'Google Sans'; } .devfest-quote-carousel-speaker span { font: 500 18px/24px 'Google Sans'; } /* [1] Forces carousel color to be off-black */ /* [2] Forces carousel header to be 700 weight and 32px */ /* [3] Forces carousel caption to have 0 top margin */ .devfest-quote-carousel-caption { color: #202124 !important; /* [1] */ font: var(--devfest-quote-carousel-caption-font) !important; /* [2] */ margin-top: 0 !important; /* [3] */ max-width: 702px; } .devfest-quote-carousel-caption-container { position: relative; } .devfest-quote-carousel > li:nth-child(1) { animation-delay: 0s, 40s; animation-duration: 40s; animation-iteration-count: 1, infinite; animation-name: first-picture, carousel; transform: translateX(0%); } .devfest-quote-carousel > li:nth-child(2) { animation-delay: Calc(40s * .25); } .devfest-quote-carousel > li:nth-child(3) { animation-delay: Calc(40s * .50); } .devfest-quote-carousel > li:nth-child(4) { animation-delay: Calc(40s * .75); } @keyframes first-picture { 0% { transform: translateX(0%); } 3.5%, 25% { transform: translateX(0); } 28.5%, 100% { transform: translateX(-100%); } } @keyframes carousel { 0% { transform: translateX(100%); } 3.5%, 25% { transform: translateX(0); } 28.5%, 100% { transform: translateX(-100%); } } /* Devfest Homepage Badges section */ .devfest-badges-row { background-color: #29b6f6; } .devfest-badges-row h3 { font: 500 24px 'Roboto'; margin-bottom: 10px; } .devfest-badges-row p { font-family: 'Google Sans'; margin-top: 0; padding: 0 15% 10px; text-align: center; } .devfest-badges-row img { height: 342px; width: fit-content; } .devfest-badges-row.about-row img { height: 100px; } .devfest-badges-row .devsite-landing-row-item { box-shadow: 0 1px 3px 1px #3C404326; display: flex; gap: 0; height: 100%; margin: auto; max-width: 708px; padding-block: 20px; } .devfest-badge-availability { align-self: center; background: #f1f3f4; border-radius: 20px; display: none; font: 500 12px 'Roboto'; letter-spacing: .8px; margin: 5px 10px 45px; padding: 7px 32px; text-transform: uppercase; } .color-scheme--dark .devfest-badge-availability { background: #474747; } .devfest-badge-opaque { opacity: .5; } /* Devfest Homepage "Stay Connected" section */ /* [1] Forces stay connected row to have 40px top padding */ .devfest-stay-connected-row { background: #fdd663; padding: 40px 0 0 !important; /* [1] */ } .devfest-stay-connected-row .devsite-landing-row-header-text { background: url(/community/devfest/images/left-scallops.png) no-repeat left 28px, url(/community/devfest/images/right-scallops.png) no-repeat right 28px; width: 100%; max-width: 640px; margin: auto; } @media screen and (max-width: 960px) { .devfest-stay-connected-row .devsite-landing-row-header-text { background: url(/community/devfest/images/left-scallops.png) no-repeat left top, url(/community/devfest/images/right-scallops.png) no-repeat right top; } } @media screen and (max-width: 600px) { .devfest-stay-connected-row .devsite-landing-row-header-text { background: unset; } } .devfest-stay-connected-row h2 { font: 400 40px 'Google Sans'; margin-top: 28px; } .devfest-stay-connected-row .devsite-landing-row-description { font: 400 18px/30px 'Google Sans'; margin-top: 8px; } .devfest-stay-connected-row img { margin: 24px 8px 60px; vertical-align: middle; width: 40px; } .color-scheme--dark .devfest-stay-connected-row img { filter: invert(.8); } .devfest-stay-connected-row a { background: none !important; /* Prevent background after click / visit */ text-decoration: none !important; /* Force text decoration to be none */ } /* Devfest About page */ .devfest-about-header { background: var(--devfest-about-header-background); } .devfest-about-description { padding-bottom: 82px; } .devfest-faq-description { padding-bottom: 260px; } .devfest-expectations-item h3 { font: 700 24px 'Google Sans'; } .devfest-expectations-item > div:first-child { display: flex; } .devfest-expectations-item img { margin: 16px 0 0 16px; max-height: 100px; } .dgc-about-logo-garden { margin-top: 40px; } .dgc-logo-garden.dgc-ecosystem-logo-garden h2 { font: 400 40px 'Google Sans'; } .dgc-ecosystem-logo-garden + .dgc-logo-garden-cta { padding-top: 0; } .dgc-ecosystem-logo-garden .devsite-landing-row-item:not( .dgc-logo-garden-card) { background: var(--tenant-background-1); border-radius: 10px; } .dgc-ecosystem-logo-garden .devsite-landing-row-item:not( .dgc-logo-garden-card) > a { margin-bottom: auto; } .dgc-logo-garden-card { padding: 8px 32px 25px; } .dgc-logo-garden-card p:first-of-type { font-size: 18px; font-weight: 700; } .dgc-logo-garden .devsite-landing-row-item-custom-image-icon { max-height: 64px; width: 64px; } .dgc-logo-garden-cta { padding-bottom: 64px; } .devfest-find-gdg h3 a { color: var(--tenant-primary-text-color); } .devfest-find-gdg h3 + div { font: 400 18px 'Roboto'; } /* Devfest FAQ page */ .devfest-faq-header { background: var(--devfest-faq-header-background); } .devfest-faq-label { background: #f1f3f4; padding-bottom: 0; } .devsite-landing-row.devfest-faq-label .devsite-landing-row-inner { background: url(/community/devfest/images/faq-top.png) no-repeat 380px 0, #f1f3f4; } .devsite-landing-row.devfest-faq-label h3 { font: 500 72px/70px 'Google Sans'; margin-bottom: 0; } .devfest-faq { background: #f1f3f4; padding: 40px 24px; } .devfest-faq .devsite-landing-row-inner { background: #fdd663; border: 2px solid black; border-radius: 24px; max-width: 1440px; padding: 28px 112px 64px; } .devfest-faq devsite-expandable:not(.devfest-faq devsite-expandable:last-of-type) { border-bottom: 2px solid black; padding-bottom: 35px; } .devfest-faq devsite-expandable a.exw-control:active, .devfest-faq devsite-expandable a.exw-control:focus, .devfest-faq devsite-expandable a.exw-control:hover { color: black; } /* [1] Forces FAQ question header to have 0 bottom margin */ .devfest-faq h3 { align-items: center; display: flex; justify-content: space-between; margin-bottom: 0 !important; /* [1] */ } /* [1] Removes default expandable button */ .devfest-faq h3::before { content: none !important; /* [1] */ } .devfest-faq h3::after { content: 'expand_more'; font: 400 48px 'Material Icons'; } .devfest-faq devsite-expandable[expanded] h3::after { content: 'expand_less'; } .devfest-faq devsite-expandable div { background: white; border: 2px solid black; border-radius: 24px; margin-top: 16px; padding: 24px; } .devfest-faq p { margin-bottom: 0; } .devsite-landing-row.devfest-faq-bottom { background: #f1f3f4; padding-top: 0; } .devsite-landing-row.devfest-faq-bottom .devsite-landing-row-inner { background: url(/community/devfest/images/faq-bottom.png) no-repeat center, #f1f3f4; height: 66px; } @media screen and (max-width: 1440px) { .devfest-faq .devsite-landing-row-inner { padding: 1vw 4vw 4vw; } } @media screen and (max-width: 1200px) { .devsite-landing-row.devfest-faq-bottom .devsite-landing-row-inner { background-position: left; margin-left: 24px; } } @media screen and (max-width: 840px) { .devsite-landing-row.devfest-faq-label .devsite-landing-row-inner { background: url(/community/devfest/images/faq-top.png) no-repeat 264px 0, #f1f3f4; } .devfest-faq .devsite-landing-row-inner { padding: 16px 24px 44px; } } @media screen and (max-width: 600px) { .devsite-landing-row.devfest-faq-label .devsite-landing-row-inner { background: url(/community/devfest/images/faq-top.png) no-repeat 16px 88px, #f1f3f4; height: 152px; } .devfest-faq { padding: 32px 24px; } .devsite-landing-row.devfest-faq-bottom .devsite-landing-row-inner { background-position: -256px; margin-bottom: 24px; } } .gdg-badge .devsite-landing-row-item-description { margin-block: auto !important; /* Force centered vertical alignment */ } .gdg-badge h3, .gdg-badge h3 a { color: black !important; /* Force black color text */ font: 400 24px/32px 'Google Sans'; } .gdg-badge .devsite-landing-row-item-description-content { max-width: 708px; } .gdg-badge .devsite-landing-row-item-buttons { margin: auto; } .gdg-badge figure a { background: white; } .devsite-landing-row-item.gdg-badge { width: 100%; } .devfest-header-banner, .devfest-header-banner .devsite-landing-row-inner { padding: 0; } .devfest-header-banner { background: #f1f3f4; max-width: 100%; } .devfest-header-banner .devsite-landing-row-inner { margin: auto; max-width: 1520px; } .devfest-header-banner img.header-banner-tablet, .devfest-header-banner img.header-banner-mobile { display: none; } @media screen and (max-width: 840px) { .devfest-header-banner img.header-banner-desktop { display: none; } .devfest-header-banner img.header-banner-tablet { display: block; } .gdg-badge figure a { height: 34vw; } .devfest-badges-row img { height: auto; width: 89%; } .devfest-badges-row .attendee-badge img { width: 76%; } } @media screen and (max-width: 600px) { .devfest-header-banner img.header-banner-desktop, .devfest-header-banner img.header-banner-tablet { display: none; } .devfest-header-banner img.header-banner-mobile { display: block; } .gdg-badge figure a { height: 76vw; } } .devfest-hero-row { background: #f1f3f4; padding-block: 20px 60px; } .devfest-hero-row .devsite-landing-row-inner { background: url(/community/devfest/images/left-side-hero.png) no-repeat center left 16px, url(/community/devfest/images/right-side-hero.png) no-repeat center right 16px, #f1f3f4; background-size: auto, 578px; height: fit-content; width: 100%; } .devfest-hero-row .devsite-landing-row-header { margin-left: 216px; } .devfest-hero-row h2 { font: 500 64px/74px 'Google Sans'; max-width: 535px; width: 54%; } .devfest-hero-row .devsite-landing-row-description { max-width: 628px; width: 54%; } .devfest-hero-row.faq-hero { padding-block: 20px; } .devfest-hero-row.faq-hero .devsite-landing-row-inner { background: url(/community/devfest/images/faq-left.png) no-repeat center left 16px, url(/community/devfest/images/faq-right.png) no-repeat center right 16px, #f1f3f4; background-size: auto 236px; height: 287px; } .devfest-hero-row.faq-hero .devsite-landing-row-header { align-items: center; display: flex; height: 100%; margin-left: 284px; } .devfest-hero-row.faq-hero h2 { font: 500 156px/120px 'Google Sans'; } .devfest-hero-row.faq-hero .devsite-landing-row-description { font: 400 20px/23px 'Google Sans'; margin-left: 4px; max-width: 590px; text-align: center; } .dgc-web-ecosystem-cards.solutions img { max-width: 150px; } .solutions .dgc-web-ecosystem-card > div:first-child { min-width: 148px; padding: 16px; width: 26%; } @media screen and (max-width: 1560px) { .devfest-hero-row.faq-hero .devsite-landing-row-inner { background-size: auto 17vw; height: 20vw; } .devfest-hero-row.faq-hero .devsite-landing-row-header { margin-left: 20.3vw; } .devfest-hero-row.faq-hero h2 { font: 500 8.4vw/7vw 'Google Sans'; } .devfest-hero-row.faq-hero .devsite-landing-row-description { font: 400 1.4vw/1.6vw 'Google Sans'; max-width: 30vw; } } @media screen and (max-width: 1200px) { .devfest-hero-row.faq-hero { display: none; } .devfest-header-banner.faq-banner img.header-banner-tablet { display: block; } } @media screen and (max-width: 600px) { .devfest-header-banner.faq-banner img.header-banner-tablet { display: none; } } @media screen and (max-width: 1520px) { .devfest-hero-row .devsite-landing-row-inner { background-size: auto 17vw; } .devfest-hero-row .devsite-landing-row-header { margin-left: 14vw; } } @media screen and (max-width: 840px) { .devfest-hero-row { padding-block: 20px 40px; } .devfest-hero-row .devsite-landing-row-inner { background: url(/community/devfest/images/left-side-hero-tablet.png) no-repeat top left 62px, url(/community/devfest/images/right-side-hero-tablet.png) no-repeat top right 24px, #f1f3f4; background-size: 28vw auto, 48vw auto; margin-top: -20px; } .devfest-hero-row .devsite-landing-row-header { margin-left: unset; padding-top: 16vw; } .devfest-hero-row h2 { font: 500 7.2vw/8.4vw 'Google Sans'; } .devfest-hero-row .devsite-landing-row-description { max-width: unset; width: 100%; } .devfest-map-section { margin-bottom: 0; padding-block: 40px; } .past-sessions-cards { padding-bottom: 40px; } .networking-row { padding-block: 10px; } .dgc-web-ecosystem-cards.solutions .devsite-landing-row-inner { padding-top: 40px; } .dgc-web-ecosystem-cards.solutions .devsite-landing-row-item { flex-direction: row-reverse; } .dgc-web-ecosystem-cards.solutions .devsite-landing-row-item .devsite-landing-row-item-media { margin: auto; padding: 0; } .dgc-web-ecosystem-cards.solutions .devsite-landing-row-item-image { width: 150px; } .dgc-web-ecosystem-cards.solutions .devsite-landing-row-item-description { padding-right: 0 !important; /* Force 0 right padding */ } .dgc-web-ecosystem-cards.solutions img { padding: 16px; } } @media screen and (max-width: 600px) { .devfest-hero-row .devsite-landing-row-inner { background: url(/community/devfest/images/devfest-hero-mobile.png) no-repeat top center, #f1f3f4; background-size: 96% auto; } .devfest-hero-row .devsite-landing-row-header { padding-top: 50vw; } .devfest-hero-row h2 { font: 500 10vw/11vw 'Google Sans'; width: 100%; } .dgc-web-ecosystem-cards.solutions .devsite-landing-row-item { display: flex; } } </style> <div class="devsite-article-meta nocontent" role="navigation"> <ul class="devsite-breadcrumb-list" aria-label="Breadcrumb"> <li class="devsite-breadcrumb-item "> <a href="https://developers.google.com/" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="Google for Developers" > Google for Developers </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developers.google.com/products" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="2" track-type="globalNav" track-name="breadcrumb" track-metadata-position="2" track-metadata-eventdetail="" > Products </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developers.google.com/community/devfest" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="3" track-type="globalNav" track-name="breadcrumb" track-metadata-position="3" track-metadata-eventdetail="DevFest" > DevFest </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developers.google.com/community" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="4" track-type="globalNav" track-name="breadcrumb" track-metadata-position="4" track-metadata-eventdetail="" > Community </a> </li> </ul> </div> <devsite-feature-tooltip ack-key="AckCollectionsBookmarkTooltipDismiss" analytics-category="Site-Wide Custom Events" analytics-action-show="Callout Profile displayed" analytics-action-close="Callout Profile dismissed" analytics-label="Create Collection Callout" class="devsite-page-bookmark-tooltip nocontent" dismiss-button="true" id="devsite-collections-dropdown" dismiss-button-text="Dismiss" close-button-text="Got it"> <devsite-bookmark></devsite-bookmark> <span slot="popout-heading"> Stay organized with collections </span> <span slot="popout-contents"> Save and categorize content based on your preferences. </span> </devsite-feature-tooltip> <devsite-toc class="devsite-nav" depth="2" devsite-toc-embedded disabled> </devsite-toc> <div class="devsite-article-body clearfix devsite-no-page-title"> <section class="devsite-landing-row devsite-landing-row-1-up devfest-header-banner" background="grey" header-position="top" > <div class="devsite-landing-row-inner"> <div class="devsite-landing-row-html"> <img src="/static/community/devfest/images/header-banner.png" alt="DevFest header banner" class="header-banner-desktop"> <img src="/static/community/devfest/images/header-banner-tablet.png" alt="DevFest header banner" class="header-banner-tablet"> <img src="/static/community/devfest/images/header-banner-mobile.png" alt="DevFest header banner" class="header-banner-mobile"> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-1-up devfest-hero-row" background="white" header-position="top" > <div class="devsite-landing-row-inner"> <header class="devsite-landing-row-header" > <div class="devsite-landing-row-header-text"> <h2 id="join-us-for-devfest-2024" data-text="Join us for DevFest 2024" tabindex="0"> Join us for DevFest 2024 </h2> <div class="devsite-landing-row-description"> DevFest 2024 is here, and this year's focus on Responsible AI couldn't be more timely. Join us as we explore the importance of developing technologies that enhance productivity without causing harm. Let's shape a future where AI serves humanity responsibly. Find a DevFest near you and get ready for an unforgettable experience. </div> </div> </header> </div> </section> <section class="devsite-landing-row devsite-landing-row-1-up devsite-landing-row-100 devfest-map-section" background="white" header-position="top" > <div class="devsite-landing-row-inner"> <header class="devsite-landing-row-header" > <div class="devsite-landing-row-header-text"> <h2 id="span-idfind-a-gdg-communityfind-a-devfest-near-youspan" data-text="Find a DevFest near you " tabindex="0"> <span id="find-a-gdg-community">Find a DevFest near you</span> </h2> </div> </header> <div class="devsite-landing-row-group"> <div class="devsite-landing-row-item" description-position="bottom" > <devsite-iframe><iframe src="https://developers.google.com/frame/community/devfest/index_ec4feb9a3a2b94181e721121026b6796a202bf354af0cf9df71e45493777c7a7.frame" class="framebox inherit-locale " allow="clipboard-write https://developers-dot-devsite-v2-prod.appspot.com" allowfullscreen is-upgraded></iframe></devsite-iframe> </div> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-3-up devsite-landing-row-cards devsite-landing-row-padding-small devsite-landing-row-no-image-background devfest-badges-row dgc-web-ecosystem-cards about-row" background="white" header-position="top" > <div class="devsite-landing-row-inner"> <header class="devsite-landing-row-header" > <div class="devsite-landing-row-header-text"> <h2 id="what-to-expect-at-a-devfest" data-text="What to expect at a DevFest" tabindex="0"> What to expect at a DevFest </h2> </div> </header> <div class="devsite-landing-row-group"> <div class="devsite-landing-row-item gdg-badge" description-position="bottom" > <div class="devsite-landing-row-item-media "> <figure class="devsite-landing-row-item-image"> <picture> <img alt="" src="https://developers.google.com/static/community/devfest/images/content.svg" srcset="https://developers.google.com/static/community/devfest/images/content.svg" sizes="(max-width: 840px) 50vw, 464px" loading="lazy" > </picture> </figure> </div> <div class="devsite-landing-row-item-description" > <div class="devsite-landing-row-item-body"> <h3 id="technical-content" data-text="Technical content" class="hide-from-toc no-link" tabindex="0"> Technical content </h3> <div class="devsite-landing-row-item-description-content"> Worldwide events hosted by the Google Developer Groups community, featuring Googlers and Google Developer Experts. </div> </div> </div> </div> <div class="devsite-landing-row-item gdg-badge" description-position="bottom" > <div class="devsite-landing-row-item-media "> <figure class="devsite-landing-row-item-image"> <picture> <img alt="" src="https://developers.google.com/static/community/devfest/images/workshops.svg" srcset="https://developers.google.com/static/community/devfest/images/workshops.svg" sizes="(max-width: 840px) 50vw, 464px" loading="lazy" > </picture> </figure> </div> <div class="devsite-landing-row-item-description" > <div class="devsite-landing-row-item-body"> <h3 id="workshops" data-text="Workshops" class="hide-from-toc no-link" tabindex="0"> Workshops </h3> <div class="devsite-landing-row-item-description-content"> Full-day workshops, hands-on experiences, hacking and debugging events, all centered on your favorite Google technologies. </div> </div> </div> </div> <div class="devsite-landing-row-item gdg-badge" description-position="bottom" > <div class="devsite-landing-row-item-media "> <figure class="devsite-landing-row-item-image"> <picture> <img alt="" src="https://developers.google.com/static/community/devfest/images/networking.svg" srcset="https://developers.google.com/static/community/devfest/images/networking.svg" sizes="(max-width: 840px) 50vw, 464px" loading="lazy" > </picture> </figure> </div> <div class="devsite-landing-row-item-description" > <div class="devsite-landing-row-item-body"> <h3 id="networking" data-text="Networking" class="hide-from-toc no-link" tabindex="0"> Networking </h3> <div class="devsite-landing-row-item-description-content"> Panel discussions, Q&A sessions, meetup groups, project showcases, coding workshops, mentorship sessions, and more. </div> </div> </div> </div> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-1-up devsite-landing-row-hero devsite-landing-row-50 devsite-landing-row-no-image-background past-sessions" header-position="top" > <div class="devsite-landing-row-inner"> <div class="devsite-landing-row-group"> <div class="devsite-landing-row-item" description-position="bottom" > <div class="devsite-landing-row-item-media "> <figure class="devsite-landing-row-item-image"> <picture> <img alt="" src="https://developers.google.com/static/community/devfest/images/scallops.png" srcset="https://developers.google.com/static/community/devfest/images/scallops_36.png 36w,https://developers.google.com/static/community/devfest/images/scallops_48.png 48w,https://developers.google.com/static/community/devfest/images/scallops_72.png 72w,https://developers.google.com/static/community/devfest/images/scallops_96.png 96w,https://developers.google.com/static/community/devfest/images/scallops_480.png 480w,https://developers.google.com/static/community/devfest/images/scallops_720.png 720w,https://developers.google.com/static/community/devfest/images/scallops_856.png 856w,https://developers.google.com/static/community/devfest/images/scallops_960.png 960w,https://developers.google.com/static/community/devfest/images/scallops_1440.png 1440w,https://developers.google.com/static/community/devfest/images/scallops_1920.png 1920w,https://developers.google.com/static/community/devfest/images/scallops_2880.png 2880w" sizes="(max-width: 600px) 100vw, (max-width: 840px) 50vw, 708px" loading="lazy" > </picture> </figure> </div> <div class="devsite-landing-row-item-description" > <div class="devsite-landing-row-item-body"> <h3 id="watch-videos-from-devfest-2023" data-text="Watch videos from DevFest 2023" class="hide-from-toc no-link" tabindex="0"> Watch videos from DevFest 2023 </h3> <div class="devsite-landing-row-item-description-content"> Relive some of the moments from DevFest, including hot tech topics from 2023 and inspiring talks from the global developer community. </div> </div> </div> </div> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-3-up devsite-landing-row-cards past-sessions-cards" header-position="top" > <div class="devsite-landing-row-inner"> <div class="devsite-landing-row-group"> <div class="devsite-landing-row-item" description-position="bottom" > <div class="devsite-landing-row-item-media "> <devsite-video autohide="1" showinfo="0" video-id="I-YQpEK7rqc" ></devsite-video> </div> <div class="devsite-landing-row-item-description" > <div class="devsite-landing-row-item-body"> <h3 id="prototyping-apps-with-project-idx-firebase-extensions-and-the-palm-api" data-text="Prototyping apps with Project IDX, Firebase extensions and the PaLM API" class="hide-from-toc no-link" tabindex="0"> Prototyping apps with Project IDX, Firebase extensions and the PaLM API </h3> <div class="devsite-landing-row-item-description-content"> <p class="past-session-date">November 2023</p> In this video, Ali Satter and Vikas Anand generally speak to Generative AI and LLMs. They breeze through the definitions of these terms, and dive into how you can use Project IDX to create apps, specifically when integrating Firebase extensions and using the PaLM API. <ul class="devfest-connect-card-tags"> <li class="devfest-connect-card-tag">Firebase</li> </ul> </div> </div> </div> </div> <div class="devsite-landing-row-item" description-position="bottom" > <div class="devsite-landing-row-item-media "> <devsite-video autohide="1" showinfo="0" video-id="83gvHDm-2AI" ></devsite-video> </div> <div class="devsite-landing-row-item-description" > <div class="devsite-landing-row-item-body"> <h3 id="the-llm-landscape" data-text="The LLM Landscape" class="hide-from-toc no-link" tabindex="0"> The LLM Landscape </h3> <div class="devsite-landing-row-item-description-content"> <p class="past-session-date">October 2023</p> In this day and age, Generative AI and Large Language Models (LLMs) are a hot topic of conversation within the developer sphere. In this video, Mark Ryan - from Google Cloud - gives an overview of where LLMs were a year ago, summarizes the major developments, and speaks to the developments coming up in the next twelve months! <ul class="devfest-connect-card-tags"> <li class="devfest-connect-card-tag">AI</li> <li class="devfest-connect-card-tag">Cloud</li> </ul> </div> </div> </div> </div> <div class="devsite-landing-row-item" description-position="bottom" > <div class="devsite-landing-row-item-media "> <devsite-video autohide="1" showinfo="0" video-id="GaWj8_O7R_8" ></devsite-video> </div> <div class="devsite-landing-row-item-description" > <div class="devsite-landing-row-item-body"> <h3 id="mlops-x-generative-ai-best-practices" data-text="MLOps x Generative AI best practices" class="hide-from-toc no-link" tabindex="0"> MLOps x Generative AI best practices </h3> <div class="devsite-landing-row-item-description-content"> <p class="past-session-date">October 2023</p> Why do we need MLOps? In this video, Divya Jain - Engineering Director Of Core ML at Google - speaks to the many facets of MLOps. Specifically, she details why MLOps is important, limitations of Generative AI and best practices when creating an application with it. In addition, they will give us a refresh of TFX and how to best use it. <ul class="devfest-connect-card-tags"> <li class="devfest-connect-card-tag">AI</li> </ul> </div> </div> </div> </div> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-1-up devsite-landing-row-hero devfest-quote-carousel-row" header-position="top" > <div class="devsite-landing-row-inner"> <div class="devsite-landing-row-html"> <ul id="devfest-carousel" class="devfest-quote-carousel"> <li class="devfest-quote-carousel-slide"> <div style="position: relative;"> <img class="devfest-open-quote" src="/static/community/devfest/images/open-quote.png" alt="Open quote""> <div class="devfest-quote-carousel-image-container"> <img class="devfest-quote-carousel-image" src="/static/community/devfest/images/pollard.png" alt="Kanchana Patlolla, portrait"> <img class="devfest-close-quote-tablet" src="/static/community/devfest/images/close-quote.png" alt="Close quote"> </div> <blockquote class="devfest-quote-carousel-quote"> <div class="devfest-quote-carousel-caption-container"> <h2 class="devfest-quote-carousel-caption" id="devfest-is-a-fantastic-opportunity-to-meet-some-amazing-developers-and-find-out-the-latest-news-about-how-to-use-google-technologies." data-text="DevFest is a fantastic opportunity to meet some amazing developers and find out the latest news about how to use Google technologies. " tabindex="-1">DevFest is a fantastic opportunity to meet some amazing developers and find out the latest news about how to use Google technologies. </h2> <img class="devfest-close-quote-mobile" src="/static/community/devfest/images/close-quote.png" alt="Close quote"> </div> <span class="devfest-quote-carousel-speaker"><span>Barry Pollard,</span><br> Web Performance Developer Advocate </span> </blockquote> <img class="devfest-close-quote" src="/static/community/devfest/images/close-quote.png" alt="Close quote"> </div> </li> <li class="devfest-quote-carousel-slide"> <div style="position: relative;"> <img class="devfest-open-quote" src="/static/community/devfest/images/open-quote.png" alt="Open quote""> <div class="devfest-quote-carousel-image-container"> <img class="devfest-quote-carousel-image" src="/static/community/devfest/images/greco.png" alt="Kanchana Patlolla, portrait"> <img class="devfest-close-quote-tablet" src="/static/community/devfest/images/close-quote.png" alt="Close quote"> </div> <blockquote class="devfest-quote-carousel-quote"> <div class="devfest-quote-carousel-caption-container"> <h2 class="devfest-quote-carousel-caption" id="some-awesome-new-features-were-launched-for-building-solutions-on-the-google-workspace-platform.-devfest-is-a-fantastic-opportunity-to-learn-all-about-them" data-text="Some awesome new features were launched for building solutions on the Google Workspace Platform. DevFest is a fantastic opportunity to learn all about them! " tabindex="-1">Some awesome new features were launched for building solutions on the Google Workspace Platform. DevFest is a fantastic opportunity to learn all about them! </h2> <img class="devfest-close-quote-mobile" src="/static/community/devfest/images/close-quote.png" alt="Close quote"> </div> <span class="devfest-quote-carousel-speaker"><span>Chanel Greco,</span><br> Google Workspace Developer Advocate </span> </blockquote> <img class="devfest-close-quote" src="/static/community/devfest/images/close-quote.png" alt="Close quote"> </div> </li> <li class="devfest-quote-carousel-slide"> <div style="position: relative;"> <img class="devfest-open-quote" src="/static/community/devfest/images/open-quote.png" alt="Open quote""> <div class="devfest-quote-carousel-image-container"> <img class="devfest-quote-carousel-image" src="/static/community/devfest/images/srivastav.png" alt="Kanchana Patlolla, portrait"> <img class="devfest-close-quote-tablet" src="/static/community/devfest/images/close-quote.png" alt="Close quote"> </div> <blockquote class="devfest-quote-carousel-quote"> <div class="devfest-quote-carousel-caption-container"> <h2 class="devfest-quote-carousel-caption" id="devfest-is-an-amazing-way-to-learn-about-the-best-developer-tools-that-google-has-to-offer.-it-is-also-a-great-way-to-connect-and-network-with-fellow-professionals." data-text="DevFest is an amazing way to learn about the best developer tools that Google has to offer. It is also a great way to connect and network with fellow professionals. " tabindex="-1">DevFest is an amazing way to learn about the best developer tools that Google has to offer. It is also a great way to connect and network with fellow professionals. </h2> <img class="devfest-close-quote-mobile" src="/static/community/devfest/images/close-quote.png" alt="Close quote"> </div> <span class="devfest-quote-carousel-speaker"><span>Prakhar Srivastav,</span><br> Software Engineer </span> </blockquote> <img class="devfest-close-quote" src="/static/community/devfest/images/close-quote.png" alt="Close quote"> </div> </li> <li class="devfest-quote-carousel-slide"> <div style="position: relative;"> <img class="devfest-open-quote" src="/static/community/devfest/images/open-quote.png" alt="Open quote""> <div class="devfest-quote-carousel-image-container"> <img class="devfest-quote-carousel-image" src="/static/community/devfest/images/patlolla.png" alt="Kanchana Patlolla, portrait"> <img class="devfest-close-quote-tablet" src="/static/community/devfest/images/close-quote.png" alt="Close quote"> </div> <blockquote class="devfest-quote-carousel-quote"> <div class="devfest-quote-carousel-caption-container"> <h2 class="devfest-quote-carousel-caption" id="it-is-an-exciting-time-in-technology-where-an-unprecedented-change-is-being-adopted.-devfest-showcases-an-opportunity-to-learn,-share-and-grow." data-text="It is an exciting time in technology where an unprecedented change is being adopted. DevFest showcases an opportunity to learn, share and grow. " tabindex="-1">It is an exciting time in technology where an unprecedented change is being adopted. DevFest showcases an opportunity to learn, share and grow. </h2> <img class="devfest-close-quote-mobile" src="/static/community/devfest/images/close-quote.png" alt="Close quote"> </div> <span class="devfest-quote-carousel-speaker"><span>Kanchana Patlolla,</span><br> Innovation Program Lead </span> </blockquote> <img class="devfest-close-quote" src="/static/community/devfest/images/close-quote.png" alt="Close quote"> </div> </li> </ul> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-1-up networking-row" background="grey" header-position="top" > <div class="devsite-landing-row-inner"> <div class="devsite-landing-row-html"> <div class="networking-row-cards"> <div class="networking-row-title-card"> <div> <h3 id="learn,-explore,-connect" data-text="Learn, explore, connect" tabindex="-1">Learn, explore, connect</h3> <p>DevFest 2023 was a huge success, with over 650,000 devs joining together from around the world. In 2024, we’re aiming even higher as we explore the confluence of bold and ethical AI. </p> </div> <img src="/static/community/devfest/images/networking-graphic.png" alt="Networking graphic"> </div> <div class="networking-row-stat-card"> <img src="/static/community/devfest/images/globe.svg" alt="Attendees image"> <h4 id="650k+" data-text="650K+" tabindex="-1">650K+</h4> <p>devs reached</p> </div> <div class="networking-row-stat-card"> <img src="/static/community/devfest/images/asterisk.svg" alt="Number of DevFests image"> <h4 id="670+" data-text="670+" tabindex="-1">670+</h4> <p>events</p> </div> </div> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-2-up devsite-landing-row-cards devsite-landing-row-padding-small devsite-landing-row-no-image-background devfest-badges-row dgc-web-ecosystem-cards" background="white" header-position="top" > <div class="devsite-landing-row-inner"> <header class="devsite-landing-row-header" > <div class="devsite-landing-row-header-text"> <h2 id="earnable-badges" data-text="Earnable badges" tabindex="0"> Earnable badges </h2> </div> </header> <div class="devsite-landing-row-group"> <div class="devsite-landing-row-item gdg-badge" description-position="bottom" > <div class="devsite-landing-row-item-media "> <figure class="devsite-landing-row-item-image"> <a href="https://developers.google.com/profile/badges/community/gdg/member"> <picture> <img alt="" src="https://developers.google.com/static/community/devfest/images/gdg-blue.png" srcset="https://developers.google.com/static/community/devfest/images/gdg-blue_36.png 36w,https://developers.google.com/static/community/devfest/images/gdg-blue_48.png 48w,https://developers.google.com/static/community/devfest/images/gdg-blue_72.png 72w,https://developers.google.com/static/community/devfest/images/gdg-blue_96.png 96w,https://developers.google.com/static/community/devfest/images/gdg-blue_480.png 480w,https://developers.google.com/static/community/devfest/images/gdg-blue_720.png 720w,https://developers.google.com/static/community/devfest/images/gdg-blue_856.png 856w,https://developers.google.com/static/community/devfest/images/gdg-blue_960.png 960w,https://developers.google.com/static/community/devfest/images/gdg-blue_1440.png 1440w,https://developers.google.com/static/community/devfest/images/gdg-blue_1920.png 1920w,https://developers.google.com/static/community/devfest/images/gdg-blue_2880.png 2880w" sizes="(max-width: 600px) 100vw, (max-width: 840px) 50vw, 708px" loading="lazy" > </picture> </a> </figure> </div> <div class="devsite-landing-row-item-description" > <div class="devsite-landing-row-item-body"> <h3 id="join-a-gdg" data-text="Join a GDG" class="hide-from-toc no-link" tabindex="0"> <a href="https://developers.google.com/profile/badges/community/gdg/member"> Join a GDG </a> </h3> <div class="devsite-landing-row-item-description-content"> Earn this badge when you join a Google Developer Group </div> </div> </div> </div> <div class="devsite-landing-row-item gdg-badge attendee-badge" description-position="bottom" > <div class="devsite-landing-row-item-media "> <figure class="devsite-landing-row-item-image"> <a href="https://developers.google.com/profile/badges/events/community/devfest/2024/attendee"> <picture> <img alt="" src="https://developers.google.com/static/community/devfest/images/devfest-pink.png" srcset="https://developers.google.com/static/community/devfest/images/devfest-pink_36.png 36w,https://developers.google.com/static/community/devfest/images/devfest-pink_48.png 48w,https://developers.google.com/static/community/devfest/images/devfest-pink_72.png 72w,https://developers.google.com/static/community/devfest/images/devfest-pink_96.png 96w,https://developers.google.com/static/community/devfest/images/devfest-pink_480.png 480w,https://developers.google.com/static/community/devfest/images/devfest-pink_720.png 720w,https://developers.google.com/static/community/devfest/images/devfest-pink_856.png 856w,https://developers.google.com/static/community/devfest/images/devfest-pink_960.png 960w,https://developers.google.com/static/community/devfest/images/devfest-pink_1440.png 1440w,https://developers.google.com/static/community/devfest/images/devfest-pink_1920.png 1920w,https://developers.google.com/static/community/devfest/images/devfest-pink_2880.png 2880w" sizes="(max-width: 600px) 100vw, (max-width: 840px) 50vw, 708px" loading="lazy" > </picture> </a> </figure> </div> <div class="devsite-landing-row-item-description" > <div class="devsite-landing-row-item-body"> <h3 id="devfest-2024-attendee" data-text="DevFest 2024 attendee" class="hide-from-toc no-link" tabindex="0"> <a href="https://developers.google.com/profile/badges/events/community/devfest/2024/attendee"> DevFest 2024 attendee </a> </h3> <div class="devsite-landing-row-item-description-content"> Earn this badge when you attend a DevFest </div> </div> </div> </div> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-2-up devsite-landing-row-cards devsite-landing-row-no-image-background dgc-web-ecosystem-cards solutions" background="grey" header-position="top" > <div class="devsite-landing-row-inner"> <header class="devsite-landing-row-header" > <div class="devsite-landing-row-header-text"> <h2 id="find-helpful-solutions-and-resources" data-text="Find helpful solutions and resources" tabindex="0"> Find helpful solutions and resources </h2> </div> </header> <div class="devsite-landing-row-group"> <div class="devsite-landing-row-item dgc-web-ecosystem-card" description-position="bottom" > <div class="devsite-landing-row-item-media "> <figure class="devsite-landing-row-item-image"> <a href="https://developers.google.com/focus/mobile-app-development" data-category="DevFest homepage helpful solutions" data-label="Mobile solution" > <picture> <img alt="" src="https://developers.google.com/static/community/devfest/images/solutions-mobile.png" srcset="https://developers.google.com/static/community/devfest/images/solutions-mobile_36.png 36w,https://developers.google.com/static/community/devfest/images/solutions-mobile_48.png 48w,https://developers.google.com/static/community/devfest/images/solutions-mobile_72.png 72w,https://developers.google.com/static/community/devfest/images/solutions-mobile_96.png 96w,https://developers.google.com/static/community/devfest/images/solutions-mobile_480.png 480w,https://developers.google.com/static/community/devfest/images/solutions-mobile_720.png 720w,https://developers.google.com/static/community/devfest/images/solutions-mobile_856.png 856w,https://developers.google.com/static/community/devfest/images/solutions-mobile_960.png 960w,https://developers.google.com/static/community/devfest/images/solutions-mobile_1440.png 1440w,https://developers.google.com/static/community/devfest/images/solutions-mobile_1920.png 1920w,https://developers.google.com/static/community/devfest/images/solutions-mobile_2880.png 2880w" sizes="(max-width: 600px) 100vw, (max-width: 840px) 50vw, 708px" loading="lazy" > </picture> </a> </figure> </div> <div class="devsite-landing-row-item-description" > <div class="devsite-landing-row-item-body"> <h3 id="mobile" data-text="Mobile" class="hide-from-toc no-link" tabindex="0"> <a href="https://developers.google.com/focus/mobile-app-development" data-category="DevFest homepage helpful solutions" data-label="Mobile solution" > Mobile </a> </h3> <div class="devsite-landing-row-item-description-content"> Develop for a range of audiences and form factors. </div> <div class="devsite-landing-row-item-buttons"> <a href="https://developers.google.com/focus/mobile-app-development" class="button button-primary " data-label="Mobile solution" data-category="DevFest homepage helpful solutions" >Get started <span class="material-icons" aria-hidden="true" translate="no">arrow_forward</span></a> </div> </div> </div> </div> <div class="devsite-landing-row-item dgc-web-ecosystem-card" description-position="bottom" > <div class="devsite-landing-row-item-media "> <figure class="devsite-landing-row-item-image"> <a href="https://developers.google.com/focus/web-development" data-category="DevFest homepage helpful solutions" data-label="Web solution" > <picture> <img alt="" src="https://developers.google.com/static/community/devfest/images/solutions-web.png" srcset="https://developers.google.com/static/community/devfest/images/solutions-web_36.png 36w,https://developers.google.com/static/community/devfest/images/solutions-web_48.png 48w,https://developers.google.com/static/community/devfest/images/solutions-web_72.png 72w,https://developers.google.com/static/community/devfest/images/solutions-web_96.png 96w,https://developers.google.com/static/community/devfest/images/solutions-web_480.png 480w,https://developers.google.com/static/community/devfest/images/solutions-web_720.png 720w,https://developers.google.com/static/community/devfest/images/solutions-web_856.png 856w,https://developers.google.com/static/community/devfest/images/solutions-web_960.png 960w,https://developers.google.com/static/community/devfest/images/solutions-web_1440.png 1440w,https://developers.google.com/static/community/devfest/images/solutions-web_1920.png 1920w,https://developers.google.com/static/community/devfest/images/solutions-web_2880.png 2880w" sizes="(max-width: 600px) 100vw, (max-width: 840px) 50vw, 708px" loading="lazy" > </picture> </a> </figure> </div> <div class="devsite-landing-row-item-description" > <div class="devsite-landing-row-item-body"> <h3 id="web" data-text="Web" class="hide-from-toc no-link" tabindex="0"> <a href="https://developers.google.com/focus/web-development" data-category="DevFest homepage helpful solutions" data-label="Web solution" > Web </a> </h3> <div class="devsite-landing-row-item-description-content"> Create fast, secure sites and apps for the open web. </div> <div class="devsite-landing-row-item-buttons"> <a href="https://developers.google.com/focus/web-development" class="button button-primary " data-category="DevFest homepage helpful solutions" data-label="Web solution" >Get started <span class="material-icons" aria-hidden="true" translate="no">arrow_forward</span></a> </div> </div> </div> </div> <div class="devsite-landing-row-item dgc-web-ecosystem-card" description-position="bottom" > <div class="devsite-landing-row-item-media "> <figure class="devsite-landing-row-item-image"> <a href="https://developers.google.com/focus/ai-development" data-category="DevFest homepage helpful solutions" data-label="AI solution" > <picture> <img alt="" src="https://developers.google.com/static/community/devfest/images/solutions-ai.png" srcset="https://developers.google.com/static/community/devfest/images/solutions-ai_36.png 36w,https://developers.google.com/static/community/devfest/images/solutions-ai_48.png 48w,https://developers.google.com/static/community/devfest/images/solutions-ai_72.png 72w,https://developers.google.com/static/community/devfest/images/solutions-ai_96.png 96w,https://developers.google.com/static/community/devfest/images/solutions-ai_480.png 480w,https://developers.google.com/static/community/devfest/images/solutions-ai_720.png 720w,https://developers.google.com/static/community/devfest/images/solutions-ai_856.png 856w,https://developers.google.com/static/community/devfest/images/solutions-ai_960.png 960w,https://developers.google.com/static/community/devfest/images/solutions-ai_1440.png 1440w,https://developers.google.com/static/community/devfest/images/solutions-ai_1920.png 1920w,https://developers.google.com/static/community/devfest/images/solutions-ai_2880.png 2880w" sizes="(max-width: 600px) 100vw, (max-width: 840px) 50vw, 708px" loading="lazy" > </picture> </a> </figure> </div> <div class="devsite-landing-row-item-description" > <div class="devsite-landing-row-item-body"> <h3 id="ai" data-text="AI" class="hide-from-toc no-link" tabindex="0"> <a href="https://developers.google.com/focus/ai-development" data-category="DevFest homepage helpful solutions" data-label="AI solution" > AI </a> </h3> <div class="devsite-landing-row-item-description-content"> Bring the power of machine learning to apps and workflows. </div> <div class="devsite-landing-row-item-buttons"> <a href="https://developers.google.com/focus/ai-development" class="button button-primary " data-label="AI solution" data-category="DevFest homepage helpful solutions" >Get started <span class="material-icons" aria-hidden="true" translate="no">arrow_forward</span></a> </div> </div> </div> </div> <div class="devsite-landing-row-item dgc-web-ecosystem-card" description-position="bottom" > <div class="devsite-landing-row-item-media "> <figure class="devsite-landing-row-item-image"> <a href="https://developers.google.com/focus/cloud-development" data-category="DevFest homepage helpful solutions" data-label="Cloud solution" > <picture> <img alt="" src="https://developers.google.com/static/community/devfest/images/solutions-cloud.png" srcset="https://developers.google.com/static/community/devfest/images/solutions-cloud_36.png 36w,https://developers.google.com/static/community/devfest/images/solutions-cloud_48.png 48w,https://developers.google.com/static/community/devfest/images/solutions-cloud_72.png 72w,https://developers.google.com/static/community/devfest/images/solutions-cloud_96.png 96w,https://developers.google.com/static/community/devfest/images/solutions-cloud_480.png 480w,https://developers.google.com/static/community/devfest/images/solutions-cloud_720.png 720w,https://developers.google.com/static/community/devfest/images/solutions-cloud_856.png 856w,https://developers.google.com/static/community/devfest/images/solutions-cloud_960.png 960w,https://developers.google.com/static/community/devfest/images/solutions-cloud_1440.png 1440w,https://developers.google.com/static/community/devfest/images/solutions-cloud_1920.png 1920w,https://developers.google.com/static/community/devfest/images/solutions-cloud_2880.png 2880w" sizes="(max-width: 600px) 100vw, (max-width: 840px) 50vw, 708px" loading="lazy" > </picture> </a> </figure> </div> <div class="devsite-landing-row-item-description" > <div class="devsite-landing-row-item-body"> <h3 id="cloud" data-text="Cloud" class="hide-from-toc no-link" tabindex="0"> <a href="https://developers.google.com/focus/cloud-development" data-category="DevFest homepage helpful solutions" data-label="Cloud solution" > Cloud </a> </h3> <div class="devsite-landing-row-item-description-content"> Simplify and scale end-to-end development. </div> <div class="devsite-landing-row-item-buttons"> <a href="https://developers.google.com/focus/cloud-development" class="button button-primary " data-label="Cloud solution" data-category="DevFest homepage helpful solutions" >Get started <span class="material-icons" aria-hidden="true" translate="no">arrow_forward</span></a> </div> </div> </div> </div> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-1-up devsite-landing-row-header-centered devsite-landing-row-no-image-background devfest-stay-connected-row" background="google-yellow" header-position="top" > <div class="devsite-landing-row-inner"> <header class="devsite-landing-row-header" > <div class="devsite-landing-row-header-text"> <h2 id="stay-connected" data-text="Stay connected" tabindex="0"> Stay connected </h2> <div class="devsite-landing-row-description"> <p>Follow #DevFest for updates, recaps, and news.</p> <p> <a class="gc-analytics-event" data-category="DevFest Stay Connected" data-label="YouTube" href="https://www.youtube.com/gdgs" target="_blank"> <img alt="YouTube social icon" src="/static/community/devfest/images/youtube.svg"> </a> <a class="gc-analytics-event" data-category="DevFest Stay Connected" data-label="Twitter" href="https://twitter.com/googledevgroups" target="_blank"> <img alt="x social icon" src="/static/community/devfest/images/x.svg"> </a> <a class="gc-analytics-event" data-category="DevFest Stay Connected" data-label="LinkedIn" href="https://www.linkedin.com/showcase/community-groups-program-gdg" target="_blank"> <img alt="LinkedIn social icon" src="/static/community/devfest/images/linkedin.svg"> </a> <a class="gc-analytics-event" data-category="DevFest Stay Connected" data-label="Medium" href="https://medium.com/googledeveloperseurope/tagged/google-developer-group" target="_blank"> <img alt="Medium social icon" src="/static/community/devfest/images/medium.svg"> </a> </p> </div> </div> </header> </div> </section> </div> <div class="devsite-floating-action-buttons"> </div> </article> <devsite-notification > </devsite-notification> <div class="devsite-content-data"> <template class="devsite-content-data-template"> [[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],[],[],[]] </template> </div> </devsite-content> </main> <devsite-footer-promos class="devsite-footer"> </devsite-footer-promos> <devsite-footer-linkboxes class="devsite-footer"> <nav class="devsite-footer-linkboxes nocontent" aria-label="Footer links"> <ul class="devsite-footer-linkboxes-list"> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Connect</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//googledevelopers.blogspot.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Blog </a> </li> <li class="devsite-footer-linkbox-item"> <a href="https://www.instagram.com/googlefordevs/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Instagram </a> </li> <li class="devsite-footer-linkbox-item"> <a href="https://www.linkedin.com/showcase/googledevelopers/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > LinkedIn </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//twitter.com/googledevs" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > X (Twitter) </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//www.youtube.com/user/GoogleDevelopers" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > YouTube </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Programs</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//www.womentechmakers.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Women Techmakers </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/community/gdg" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Google Developer Groups </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/community/experts" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > Google Developer Experts </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/community/accelerators" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Accelerators </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/community/gdsc" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > Google Developer Student Clubs </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Developer consoles</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//console.developers.google.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Google API Console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//console.cloud.google.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Google Cloud Platform Console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//play.google.com/apps/publish" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > Google Play Console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//console.firebase.google.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Firebase Console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//console.actions.google.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > Actions on Google Console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//cast.google.com/publish" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 6)" > Cast SDK Developer Console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//chrome.google.com/webstore/developer/dashboard" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 7)" > Chrome Web Store Dashboard </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//console.home.google.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 8)" > Google Home Developer Console </a> </li> </ul> </li> </ul> </nav> </devsite-footer-linkboxes> <devsite-footer-utility class="devsite-footer"> <div class="devsite-footer-utility nocontent"> <nav class="devsite-footer-sites" aria-label="Other Google Developers websites"> <a href="https://developers.google.com/" class="devsite-footer-sites-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google Developers Link"> <picture> <img class="devsite-footer-sites-logo" src="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/lockup-google-for-developers.svg" loading="lazy" alt="Google Developers"> </picture> </a> <ul class="devsite-footer-sites-list"> <li class="devsite-footer-sites-item"> <a href="//developer.android.com" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Android Link" > Android </a> </li> <li class="devsite-footer-sites-item"> <a href="//developer.chrome.com/home" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Chrome Link" > Chrome </a> </li> <li class="devsite-footer-sites-item"> <a href="//firebase.google.com" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Firebase Link" > Firebase </a> </li> <li class="devsite-footer-sites-item"> <a href="//cloud.google.com" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google Cloud Platform Link" > Google Cloud Platform </a> </li> <li class="devsite-footer-sites-item"> <a href="//ai.google.dev/" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google AI Link" > Google AI </a> </li> <li class="devsite-footer-sites-item"> <a href="/products" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer All products Link" > All products </a> </li> </ul> </nav> <nav class="devsite-footer-utility-links" aria-label="Utility links"> <ul class="devsite-footer-utility-list"> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="/terms/site-terms" data-category="Site-Wide Custom Events" data-label="Footer Terms link" > Terms </a> </li> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="//policies.google.com/privacy" data-category="Site-Wide Custom Events" data-label="Footer Privacy link" > Privacy </a> </li> <li class="devsite-footer-utility-item glue-cookie-notification-bar-control"> <a class="devsite-footer-utility-link gc-analytics-event" href="#" data-category="Site-Wide Custom Events" data-label="Footer Manage cookies link" aria-hidden="true" > Manage cookies </a> </li> <li class="devsite-footer-utility-item devsite-footer-utility-button"> <span class="devsite-footer-utility-description">Sign up for the Google for Developers newsletter</span> <a class="devsite-footer-utility-link gc-analytics-event" href="/newsletter/subscribe" data-category="Site-Wide Custom Events" data-label="Footer Subscribe link" > Subscribe </a> </li> </ul> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="de" >Deutsch</a> </li> <li role="presentation"> <a role="menuitem" lang="es" >Español</a> </li> <li role="presentation"> <a role="menuitem" lang="es_419" >Español – América Latina</a> </li> <li role="presentation"> <a role="menuitem" lang="fr" >Français</a> </li> <li role="presentation"> <a role="menuitem" lang="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="it" >Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pl" >Polski</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br" >Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="vi" >Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ru" >Русский</a> </li> <li role="presentation"> <a role="menuitem" lang="he" >עברית</a> </li> <li role="presentation"> <a role="menuitem" lang="ar" >العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="fa" >فارسی</a> </li> <li role="presentation"> <a role="menuitem" lang="hi" >हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="bn" >বাংলা</a> </li> <li role="presentation"> <a role="menuitem" lang="th" >ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw" >中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> </nav> </div> </devsite-footer-utility> <devsite-panel></devsite-panel> <devsite-concierge data-info-panel data-ai-panel data-api-explorer-panel > </devsite-concierge> </section></section> <devsite-sitemask></devsite-sitemask> <devsite-snackbar></devsite-snackbar> <devsite-tooltip ></devsite-tooltip> <devsite-heading-link></devsite-heading-link> <devsite-analytics> <script type="application/json" analytics>[{&#34;dimensions&#34;: {&#34;dimension11&#34;: false, &#34;dimension6&#34;: &#34;en&#34;, &#34;dimension3&#34;: false, &#34;dimension5&#34;: &#34;en&#34;, &#34;dimension4&#34;: &#34;DevFest&#34;, &#34;dimension1&#34;: &#34;Signed out&#34;}, &#34;gaid&#34;: &#34;UA-24532603-1&#34;, &#34;metrics&#34;: {&#34;ratings_count&#34;: &#34;metric2&#34;, &#34;ratings_value&#34;: &#34;metric1&#34;}, &#34;purpose&#34;: 1}]</script> <script type="application/json" tag-management>{&#34;at&#34;: &#34;True&#34;, &#34;ga4&#34;: [{&#34;id&#34;: &#34;G-272J68FCRF&#34;, &#34;purpose&#34;: 1}], &#34;ga4p&#34;: [{&#34;id&#34;: &#34;G-272J68FCRF&#34;, &#34;purpose&#34;: 1}], &#34;gtm&#34;: [], &#34;parameters&#34;: {&#34;internalUser&#34;: &#34;False&#34;, &#34;language&#34;: {&#34;machineTranslated&#34;: &#34;False&#34;, &#34;requested&#34;: &#34;en&#34;, &#34;served&#34;: &#34;en&#34;}, &#34;pageType&#34;: &#34;article&#34;, &#34;projectName&#34;: &#34;DevFest&#34;, &#34;signedIn&#34;: &#34;False&#34;, &#34;tenant&#34;: &#34;developers&#34;, &#34;recommendations&#34;: {&#34;sourcePage&#34;: &#34;&#34;, &#34;sourceType&#34;: 0, &#34;sourceRank&#34;: 0, &#34;sourceIdenticalDescriptions&#34;: 0, &#34;sourceTitleWords&#34;: 0, &#34;sourceDescriptionWords&#34;: 0, &#34;experiment&#34;: &#34;&#34;}, &#34;experiment&#34;: {&#34;ids&#34;: &#34;&#34;}}}</script> </devsite-analytics> <devsite-badger></devsite-badger> <script nonce="Aaqidf8TjSWPl7PmPdHfvBrv+W+qm3"> (function(d,e,v,s,i,t,E){d['GoogleDevelopersObject']=i; t=e.createElement(v);t.async=1;t.src=s;E=e.getElementsByTagName(v)[0]; E.parentNode.insertBefore(t,E);})(window, document, 'script', 'https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/js/app_loader.js', '[1,"en",null,"/js/devsite_app_module.js","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers","https://developers-dot-devsite-v2-prod.appspot.com",1,null,["/_pwa/developers/manifest.json","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/images/video-placeholder.svg","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/favicon-new.png","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/lockup-new.svg","https://fonts.googleapis.com/css?family=Google+Sans:400,500|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"],1,null,[1,6,8,12,14,17,21,25,50,52,63,70,75,76,80,87,91,92,93,97,98,100,101,102,103,104,105,107,108,109,110,112,113,116,117,118,120,122,124,125,126,127,129,130,131,132,133,134,135,136,138,140,141,147,148,149,151,152,156,157,158,159,161,163,164,168,169,170,179,180,182,183,186,191,193,196],"AIzaSyAP-jjEJBzmIyKR4F-3XITp8yM9T1gEEI8","AIzaSyB6xiKGDR5O3Ak2okS4rLkauxGUG7XP0hg","developers.google.com","AIzaSyAQk0fBONSGUqCNznf6Krs82Ap1-NV6J4o","AIzaSyCCxcqdrZ_7QMeLCRY20bh_SXdAYqy70KY",null,null,null,["Profiles__enable_developer_profiles_callout","MiscFeatureFlags__developers_footer_dark_image","EngEduTelemetry__enable_engedu_telemetry","MiscFeatureFlags__enable_firebase_utm","MiscFeatureFlags__developers_footer_image","DevPro__enable_cloud_innovators_plus","Cloud__enable_free_trial_server_call","Cloud__enable_cloud_dlp_service","Profiles__enable_release_notes_notifications","Search__enable_page_map","Profiles__enable_completecodelab_endpoint","Profiles__enable_page_saving","Concierge__enable_concierge_restricted","TpcFeatures__enable_mirror_tenant_redirects","Cloud__enable_cloudx_ping","Profiles__enable_profile_collections","Experiments__reqs_query_experiments","Profiles__enable_dashboard_curated_recommendations","TpcFeatures__enable_required_headers","Cloud__enable_cloud_shell_fte_user_flow","Search__enable_suggestions_from_borg","MiscFeatureFlags__enable_project_variables","Cloud__enable_cloud_shell","Profiles__require_profile_eligibility_for_signin","Cloud__enable_legacy_calculator_redirect","MiscFeatureFlags__enable_view_transitions","Search__enable_ai_eligibility_checks","CloudShell__cloud_code_overflow_menu","Profiles__enable_public_developer_profiles","Concierge__enable_concierge","MiscFeatureFlags__emergency_css","Profiles__enable_complete_playlist_endpoint","Profiles__enable_awarding_url","MiscFeatureFlags__enable_variable_operator","Cloud__enable_llm_concierge_chat","Analytics__enable_clearcut_logging","Search__enable_dynamic_content_confidential_banner","Profiles__enable_recognition_badges","Search__enable_ai_search_summaries_restricted","CloudShell__cloud_shell_button","Concierge__enable_pushui","Cloud__enable_cloud_facet_chat","Search__enable_ai_search_summaries","Cloud__enable_cloudx_experiment_ids","DevPro__enable_developer_subscriptions","BookNav__enable_tenant_cache_key","MiscFeatureFlags__enable_explain_this_code","Significatio__enable_by_tenant"],null,null,"AIzaSyBLEMok-5suZ67qRPzx0qUtbnLmyT_kCVE","https://developerscontentserving-pa.clients6.google.com","AIzaSyCM4QpTRSqP5qI4Dvjt4OAScIN8sOUlO-k","https://developerscontentsearch-pa.clients6.google.com",1,4,null,"https://developerprofiles-pa.clients6.google.com",[1,"developers","Google for Developers","developers.google.com",null,"developers-dot-devsite-v2-prod.appspot.com",null,null,[1,1,[1],null,null,null,null,null,null,null,null,[1],null,null,null,null,null,null,[1],[1,null,null,[1,20],"/recommendations/information"],null,null,null,[1,1,1],[1,1,null,1,1]],null,[null,null,null,null,null,null,"/images/lockup-new.svg","/images/touchicon-180-new.png",null,null,null,null,1,null,null,null,null,null,null,null,null,1,null,null,null,"/images/lockup-dark-theme-new.svg",[]],[],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[6,1,14,15,20,22,23,29,32,36],null,[[null,null,null,[3,7,10,2,39,17,4,32,24,11,12,13,34,15,25],null,null,[1,[["docType","Choose a content type",[["Tutorial",null,null,null,null,null,null,null,null,"Tutorial"],["Guide",null,null,null,null,null,null,null,null,"Guide"],["Sample",null,null,null,null,null,null,null,null,"Sample"]]],["product","Choose a product",[["Android",null,null,null,null,null,null,null,null,"Android"],["ARCore",null,null,null,null,null,null,null,null,"ARCore"],["ChromeOS",null,null,null,null,null,null,null,null,"ChromeOS"],["Firebase",null,null,null,null,null,null,null,null,"Firebase"],["Flutter",null,null,null,null,null,null,null,null,"Flutter"],["Assistant",null,null,null,null,null,null,null,null,"Google Assistant"],["GoogleCloud",null,null,null,null,null,null,null,null,"Google Cloud"],["GoogleMapsPlatform",null,null,null,null,null,null,null,null,"Google Maps Platform"],["GooglePay",null,null,null,null,null,null,null,null,"Google Pay & Google Wallet"],["GooglePlay",null,null,null,null,null,null,null,null,"Google Play"],["Tensorflow",null,null,null,null,null,null,null,null,"TensorFlow"]]],["category","Choose a topic",[["AiAndMachineLearning",null,null,null,null,null,null,null,null,"AI and Machine Learning"],["Data",null,null,null,null,null,null,null,null,"Data"],["Enterprise",null,null,null,null,null,null,null,null,"Enterprise"],["Gaming",null,null,null,null,null,null,null,null,"Gaming"],["Mobile",null,null,null,null,null,null,null,null,"Mobile"],["Web",null,null,null,null,null,null,null,null,"Web"]]]]]],[1,1],null,1],[[["UA-24532603-1"],["UA-22084204-5"],null,null,["UA-24532603-5"],null,null,[["G-272J68FCRF"],null,null,[["G-272J68FCRF",2]]],[["UA-24532603-1",2]],null,[["UA-24532603-5",2]],null,1],[[1,1],[12,9],[11,8],[13,10],[14,11],[3,2],[16,13],[15,12],[6,5],[4,3],[5,4]],[[1,1],[2,2]]],null,4,null,null,null,null,null,null,null,null,null,null,null,null,null,"developers.devsite.google"],null,"pk_live_5170syrHvgGVmSx9sBrnWtA5luvk9BwnVcvIi7HizpwauFG96WedXsuXh790rtij9AmGllqPtMLfhe2RSwD6Pn38V00uBCydV4m"]') </script> <devsite-a11y-announce></devsite-a11y-announce> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10