CINXE.COM
webapp · GitHub Topics · GitHub
<!DOCTYPE html> <html lang="en" data-color-mode="auto" data-light-theme="light" data-dark-theme="dark" data-a11y-animated-images="system" data-a11y-link-underlines="true" > <head> <meta charset="utf-8"> <link rel="dns-prefetch" href="https://github.githubassets.com"> <link rel="dns-prefetch" href="https://avatars.githubusercontent.com"> <link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com"> <link rel="dns-prefetch" href="https://user-images.githubusercontent.com/"> <link rel="preconnect" href="https://github.githubassets.com" crossorigin> <link rel="preconnect" href="https://avatars.githubusercontent.com"> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light-3e154969b9f9.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark-9c5b7a476542.css" /><link data-color-theme="dark_dimmed" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed-afda8eb0fb33.css" /><link data-color-theme="dark_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_high_contrast-2494e44ccdc5.css" /><link data-color-theme="dark_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind-56fff47acadc.css" /><link data-color-theme="light_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind-71cd4cc132ec.css" /><link data-color-theme="light_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_high_contrast-fd5499848985.css" /><link data-color-theme="light_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia-31d17ba3e139.css" /><link data-color-theme="dark_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia-68d6b2c79663.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-primitives-4cf0d59ab51a.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-af846850481e.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-e41ff91f8baa.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/github-d3b66f11d613.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/site-0293a3496b30.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/explore-742a7653565b.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dashboard-f3c837831149.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/discussions-adf1d1b8b95c.css" /> <script type="application/json" id="client-env">{"locale":"en","featureFlags":["copilot_new_references_ui","copilot_beta_features_opt_in","copilot_chat_static_thread_suggestions","copilot_conversational_ux_history_refs","copilot_implicit_context","copilot_smell_icebreaker_ux","experimentation_azure_variant_endpoint","failbot_handle_non_errors","geojson_azure_maps","ghost_pilot_confidence_truncation_25","ghost_pilot_confidence_truncation_40","hovercard_accessibility","issues_react_new_timeline","issues_react_avatar_refactor","issues_react_remove_placeholders","issues_react_cache_fix_workaround","issues_react_blur_item_picker_on_close","marketing_pages_search_explore_provider","remove_child_patch","sample_network_conn_type","site_metered_billing_update","issues_react_first_time_contribution_banner","jk_navigation_in_list_view","ui_commands_respect_modals","lifecycle_label_name_updates"]}</script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/wp-runtime-118ecaabd77e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_dompurify_dist_purify_js-b73fdff77a4e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_oddbird_popover-polyfill_dist_popover_js-aff936e590ed.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_arianotify-polyfill_ariaNotify-polyfill_js-node_modules_github_mi-247092-740e4ddd559d.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_failbot_failbot_ts-a46544e9ee5e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/environment-cd35650c2e9c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_behaviors_dist_esm_index_mjs-4aa4b0e95669.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_selector-observer_dist_index_esm_js-f690fd9ae3d5.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_relative-time-element_dist_index_js-6d3967acd51c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_combobox-nav_dist_index_js-node_modules_github_g-emoji-element_di-6ce195-53781cbc550f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_auto-complete-element_dist_index_js-node_modules_github_catalyst_-6afc16-3cdfa69a0406.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_text-expander-element_dist_index_js-f5498b8d4e5d.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_filter-input-element_dist_index_js-node_modules_github_remote-inp-b5f1d7-492b5042c841.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_stacktrace-parser_dist_s-1f651a-1e3d784c897c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_file-attachment-element_dist_index_js-node_modules_primer_view-co-7671f1-dc6cac136d88.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/github-elements-71486356f507.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/element-registry-e3ab8405ef80.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_braintree_browser-detection_dist_browser-detection_js-node_modules_githu-bb80ec-634de60bacfa.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_lit-html_lit-html_js-ce7225a304c5.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_hydro-analytics-client_dist_analytics-client_js-node_modules_gith-f3aee1-e6893db9c19e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_morphdom_dist_morphdom-e-7c534c-f8a5485c982a.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_turbo_dist_turbo_es2017-esm_js-858e043fcf76.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-893f9f-6cf3320416b8.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_scroll-anchoring_dist_scroll-anchoring_esm_js-node_modules_stacktrace-pa-a71630-6f3c4f0189d8.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_color-convert_index_js-0e07cc183eed.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_quote-selection_dist_index_js-node_modules_github_session-resume_-0b5e12-889cec8cf448.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_updatable-content_updatable-content_ts-eae9df0dd562.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_task-list_ts-app_assets_modules_github_sso_ts-ui_packages-900dde-18d1c91a7872.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_sticky-scroll-into-view_ts-7cbef09a422c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_ajax-error_ts-app_assets_modules_github_behaviors_include-d0d0a6-0e9fa537dc4f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_commenting_edit_ts-app_assets_modules_github_behaviors_ht-83c235-c89801ebbe15.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/behaviors-93287f4de493.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_delegated-events_dist_index_js-node_modules_github_catalyst_lib_index_js-f6223d90c7ba.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/notifications-global-3366f6b6298e.js"></script> <title>webapp · GitHub Topics · GitHub</title> <meta name="route-pattern" content="/topics/:topic_name(.:format)" data-turbo-transient> <meta name="route-controller" content="topics" data-turbo-transient> <meta name="route-action" content="show" data-turbo-transient> <meta name="current-catalog-service-hash" content="82c569b93da5c18ed649ebd4c2c79437db4611a6a1373e805a3cb001c64130b7"> <meta name="request-id" content="C2D4:84FCB:B7C4D:D06B7:67421E46" data-pjax-transient="true"/><meta name="html-safe-nonce" content="2fc360fe94b933471036226af1593b8d4ad5789f176fa6bf21ec78be499f085d" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDMkQ0Ojg0RkNCOkI3QzREOkQwNkI3OjY3NDIxRTQ2IiwidmlzaXRvcl9pZCI6IjQ0NDA1MjM0NTQzMzc1OTMwMiIsInJlZ2lvbl9lZGdlIjoic291dGhlYXN0YXNpYSIsInJlZ2lvbl9yZW5kZXIiOiJzb3V0aGVhc3Rhc2lhIn0=" data-pjax-transient="true"/><meta name="visitor-hmac" content="74aec75d9b5f0e4ff32746fe2f61aea286e4c7714649c254bc4bc5c011d17038" data-pjax-transient="true"/> <meta name="github-keyboard-shortcuts" content="copilot" data-turbo-transient="true" /> <meta name="selected-link" value="/topics/webapp" data-turbo-transient> <link rel="assets" href="https://github.githubassets.com/"> <meta name="google-site-verification" content="Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I"> <meta name="octolytics-url" content="https://collector.github.com/github/collect" /> <meta name="user-login" content=""> <meta name="viewport" content="width=device-width"> <meta name="description" content="GitHub is where people build software. More than 100 million people use GitHub to discover, fork, and contribute to over 420 million projects."> <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub"> <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub"> <meta property="fb:app_id" content="1401488693436528"> <meta name="apple-itunes-app" content="app-id=1477376905, app-argument=https://github.com/topics/webapp" /> <meta property="og:url" content="https://github.com"> <meta property="og:site_name" content="GitHub"> <meta property="og:title" content="Build software better, together"> <meta property="og:description" content="GitHub is where people build software. More than 100 million people use GitHub to discover, fork, and contribute to over 420 million projects."> <meta property="og:image" content="https://github.githubassets.com/assets/github-logo-55c5b9a1fe52.png"> <meta property="og:image:type" content="image/png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="1200"> <meta property="og:image" content="https://github.githubassets.com/assets/github-mark-57519b92ca4e.png"> <meta property="og:image:type" content="image/png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="620"> <meta property="og:image" content="https://github.githubassets.com/assets/github-octocat-13c86b8b336d.png"> <meta property="og:image:type" content="image/png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="620"> <meta property="twitter:site" content="github"> <meta property="twitter:site:id" content="13334762"> <meta property="twitter:creator" content="github"> <meta property="twitter:creator:id" content="13334762"> <meta property="twitter:card" content="summary_large_image"> <meta property="twitter:title" content="GitHub"> <meta property="twitter:description" content="GitHub is where people build software. More than 100 million people use GitHub to discover, fork, and contribute to over 420 million projects."> <meta property="twitter:image" content="https://github.githubassets.com/assets/github-logo-55c5b9a1fe52.png"> <meta property="twitter:image:width" content="1200"> <meta property="twitter:image:height" content="1200"> <meta name="hostname" content="github.com"> <meta name="expected-hostname" content="github.com"> <meta http-equiv="x-pjax-version" content="8361516d1dea1fff22052932afd1fd4d506e12e23b478e7c9fd076ac40fb5cdd" data-turbo-track="reload"> <meta http-equiv="x-pjax-csp-version" content="463ee08ca3497fca0ad4eda59bb472c35eea254161aa1aec5f7ce12f247d2ecd" data-turbo-track="reload"> <meta http-equiv="x-pjax-css-version" content="8968ee26e93ec8c6d3c4e91c77fb9d206091689d451ebbcddeca3832587a5b30" data-turbo-track="reload"> <meta http-equiv="x-pjax-js-version" content="c4972ae1cf5d4607c47252349fc1b47a24ff0ea303e5a8fbbe18ec27725a87ee" data-turbo-track="reload"> <meta name="turbo-cache-control" content="no-preview" data-turbo-transient=""> <meta name="turbo-body-classes" content="logged-out env-production page-responsive"> <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats"> <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors"> <link rel="mask-icon" href="https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg" color="#000000"> <link rel="alternate icon" class="js-site-favicon" type="image/png" href="https://github.githubassets.com/favicons/favicon.png"> <link rel="icon" class="js-site-favicon" type="image/svg+xml" href="https://github.githubassets.com/favicons/favicon.svg" data-base-href="https://github.githubassets.com/favicons/favicon"> <meta name="theme-color" content="#1e2327"> <meta name="color-scheme" content="light dark" /> <link rel="manifest" href="/manifest.json" crossOrigin="use-credentials"> </head> <body class="logged-out env-production page-responsive" style="word-wrap: break-word;"> <div data-turbo-body class="logged-out env-production page-responsive" style="word-wrap: break-word;"> <div class="position-relative header-wrapper js-header-wrapper "> <a href="#start-of-content" data-skip-target-assigned="false" class="px-2 py-4 color-bg-accent-emphasis color-fg-on-emphasis show-on-focus js-skip-to-content">Skip to content</a> <span data-view-component="true" class="progress-pjax-loader Progress position-fixed width-full"> <span style="width: 0%;" data-view-component="true" class="Progress-item progress-pjax-loader-bar left-0 top-0 color-bg-accent-emphasis"></span> </span> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/primer-react-765944243383.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/react-core-cd0a67881543.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/react-lib-7b7b5264f6c1.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/octicons-react-45c3a19dd792.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_emotion_is-prop-valid_dist_emotion-is-prop-valid_esm_js-node_modules_emo-62da9f-54c0c921f04b.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_stacktrace-parser_dist_s-e7dcdd-285fc29e9fa5.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_oddbird_popover-polyfill_dist_popover-fn_js-4896ddd4b7bb.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_ui-commands_ui-commands_ts-d25fac54a6bc.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/keyboard-shortcuts-dialog-ed30662f9578.js"></script> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.9fa170e9435ed4b922b9.module.css" /> <react-partial partial-name="keyboard-shortcuts-dialog" data-ssr="false" data-attempted-ssr="false" > <script type="application/json" data-target="react-partial.embeddedData">{"props":{"docsUrl":"https://docs.github.com/get-started/accessibility/keyboard-shortcuts"}}</script> <div data-target="react-partial.reactRoot"></div> </react-partial> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-94fd67-cf3dd69d89eb.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/sessions-8fa3b694f335.js"></script> <header class="HeaderMktg header-logged-out js-details-container js-header Details f4 py-3" role="banner" data-is-top="true" data-color-mode=light data-light-theme=light data-dark-theme=dark> <h2 class="sr-only">Navigation Menu</h2> <button type="button" class="HeaderMktg-backdrop d-lg-none border-0 position-fixed top-0 left-0 width-full height-full js-details-target" aria-label="Toggle navigation"> <span class="d-none">Toggle navigation</span> </button> <div class="d-flex flex-column flex-lg-row flex-items-center px-3 px-md-4 px-lg-5 height-full position-relative z-1"> <div class="d-flex flex-justify-between flex-items-center width-full width-lg-auto"> <div class="flex-1"> <button aria-label="Toggle navigation" aria-expanded="false" type="button" data-view-component="true" class="js-details-target js-nav-padding-recalculate js-header-menu-toggle Button--link Button--medium Button d-lg-none color-fg-inherit p-1"> <span class="Button-content"> <span class="Button-label"><div class="HeaderMenu-toggle-bar rounded my-1"></div> <div class="HeaderMenu-toggle-bar rounded my-1"></div> <div class="HeaderMenu-toggle-bar rounded my-1"></div></span> </span> </button> </div> <a class="mr-lg-3 color-fg-inherit flex-order-2 js-prevent-focus-on-mobile-nav" href="/" aria-label="Homepage" data-analytics-event="{"category":"Marketing nav","action":"click to go to homepage","label":"ref_page:Marketing;ref_cta:Logomark;ref_loc:Header"}"> <svg height="32" aria-hidden="true" viewBox="0 0 24 24" version="1.1" width="32" data-view-component="true" class="octicon octicon-mark-github"> <path d="M12.5.75C6.146.75 1 5.896 1 12.25c0 5.089 3.292 9.387 7.863 10.91.575.101.79-.244.79-.546 0-.273-.014-1.178-.014-2.142-2.889.532-3.636-.704-3.866-1.35-.13-.331-.69-1.352-1.18-1.625-.402-.216-.977-.748-.014-.762.906-.014 1.553.834 1.769 1.179 1.035 1.74 2.688 1.25 3.349.948.1-.747.402-1.25.733-1.538-2.559-.287-5.232-1.279-5.232-5.678 0-1.25.445-2.285 1.178-3.09-.115-.288-.517-1.467.115-3.048 0 0 .963-.302 3.163 1.179.92-.259 1.897-.388 2.875-.388.977 0 1.955.13 2.875.388 2.2-1.495 3.162-1.179 3.162-1.179.633 1.581.23 2.76.115 3.048.733.805 1.179 1.825 1.179 3.09 0 4.413-2.688 5.39-5.247 5.678.417.36.776 1.05.776 2.128 0 1.538-.014 2.774-.014 3.162 0 .302.216.662.79.547C20.709 21.637 24 17.324 24 12.25 24 5.896 18.854.75 12.5.75Z"></path> </svg> </a> <div class="flex-1 flex-order-2 text-right"> <a href="/login?return_to=https%3A%2F%2Fgithub.com%2Ftopics%2Fwebapp" class="HeaderMenu-link HeaderMenu-button d-inline-flex d-lg-none flex-order-1 f5 no-underline border color-border-default rounded-2 px-2 py-1 color-fg-inherit js-prevent-focus-on-mobile-nav" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="88a7992e793a2c91d01ed48e926824879900012572f460b0651df9112e0a198d" data-analytics-event="{"category":"Marketing nav","action":"click to Sign in","label":"ref_page:Marketing;ref_cta:Sign in;ref_loc:Header"}" > Sign in </a> </div> </div> <div class="HeaderMenu js-header-menu height-fit position-lg-relative d-lg-flex flex-column flex-auto top-0"> <div class="HeaderMenu-wrapper d-flex flex-column flex-self-start flex-lg-row flex-auto rounded rounded-lg-0"> <nav class="HeaderMenu-nav" aria-label="Global"> <ul class="d-lg-flex list-style-none"> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Product <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"github_copilot","context":"product","tag":"link","label":"github_copilot_link_product_navbar"}" href="https://github.com/features/copilot"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-copilot color-fg-subtle mr-3"> <path d="M23.922 16.992c-.861 1.495-5.859 5.023-11.922 5.023-6.063 0-11.061-3.528-11.922-5.023A.641.641 0 0 1 0 16.736v-2.869a.841.841 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.195 10.195 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952 1.399-1.136 3.392-2.093 6.122-2.093 2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.832.832 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256ZM12.172 11h-.344a4.323 4.323 0 0 1-.355.508C10.703 12.455 9.555 13 7.965 13c-1.725 0-2.989-.359-3.782-1.259a2.005 2.005 0 0 1-.085-.104L4 11.741v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.323 4.323 0 0 1-.355-.508h-.016.016Zm.641-2.935c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z"></path><path d="M14.5 14.25a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Zm-5 0a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Z"></path> </svg> <div> <div class="color-fg-default h4">GitHub Copilot</div> Write better code with AI </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"security","context":"product","tag":"link","label":"security_link_product_navbar"}" href="https://github.com/features/security"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-shield-check color-fg-subtle mr-3"> <path d="M16.53 9.78a.75.75 0 0 0-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 0 0-1.06 1.06l2.5 2.5a.75.75 0 0 0 1.06 0l5-5Z"></path><path d="m12.54.637 8.25 2.675A1.75 1.75 0 0 1 22 4.976V10c0 6.19-3.771 10.704-9.401 12.83a1.704 1.704 0 0 1-1.198 0C5.77 20.705 2 16.19 2 10V4.976c0-.758.489-1.43 1.21-1.664L11.46.637a1.748 1.748 0 0 1 1.08 0Zm-.617 1.426-8.25 2.676a.249.249 0 0 0-.173.237V10c0 5.46 3.28 9.483 8.43 11.426a.199.199 0 0 0 .14 0C17.22 19.483 20.5 15.461 20.5 10V4.976a.25.25 0 0 0-.173-.237l-8.25-2.676a.253.253 0 0 0-.154 0Z"></path> </svg> <div> <div class="color-fg-default h4">Security</div> Find and fix vulnerabilities </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"actions","context":"product","tag":"link","label":"actions_link_product_navbar"}" href="https://github.com/features/actions"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-workflow color-fg-subtle mr-3"> <path d="M1 3a2 2 0 0 1 2-2h6.5a2 2 0 0 1 2 2v6.5a2 2 0 0 1-2 2H7v4.063C7 16.355 7.644 17 8.438 17H12.5v-2.5a2 2 0 0 1 2-2H21a2 2 0 0 1 2 2V21a2 2 0 0 1-2 2h-6.5a2 2 0 0 1-2-2v-2.5H8.437A2.939 2.939 0 0 1 5.5 15.562V11.5H3a2 2 0 0 1-2-2Zm2-.5a.5.5 0 0 0-.5.5v6.5a.5.5 0 0 0 .5.5h6.5a.5.5 0 0 0 .5-.5V3a.5.5 0 0 0-.5-.5ZM14.5 14a.5.5 0 0 0-.5.5V21a.5.5 0 0 0 .5.5H21a.5.5 0 0 0 .5-.5v-6.5a.5.5 0 0 0-.5-.5Z"></path> </svg> <div> <div class="color-fg-default h4">Actions</div> Automate any workflow </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"codespaces","context":"product","tag":"link","label":"codespaces_link_product_navbar"}" href="https://github.com/features/codespaces"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-codespaces color-fg-subtle mr-3"> <path d="M3.5 3.75C3.5 2.784 4.284 2 5.25 2h13.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 18.75 13H5.25a1.75 1.75 0 0 1-1.75-1.75Zm-2 12c0-.966.784-1.75 1.75-1.75h17.5c.966 0 1.75.784 1.75 1.75v4a1.75 1.75 0 0 1-1.75 1.75H3.25a1.75 1.75 0 0 1-1.75-1.75ZM5.25 3.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h13.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Zm-2 12a.25.25 0 0 0-.25.25v4c0 .138.112.25.25.25h17.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25Z"></path><path d="M10 17.75a.75.75 0 0 1 .75-.75h6.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path> </svg> <div> <div class="color-fg-default h4">Codespaces</div> Instant dev environments </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"issues","context":"product","tag":"link","label":"issues_link_product_navbar"}" href="https://github.com/features/issues"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-issue-opened color-fg-subtle mr-3"> <path d="M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1ZM2.5 12a9.5 9.5 0 0 0 9.5 9.5 9.5 9.5 0 0 0 9.5-9.5A9.5 9.5 0 0 0 12 2.5 9.5 9.5 0 0 0 2.5 12Zm9.5 2a2 2 0 1 1-.001-3.999A2 2 0 0 1 12 14Z"></path> </svg> <div> <div class="color-fg-default h4">Issues</div> Plan and track work </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"code_review","context":"product","tag":"link","label":"code_review_link_product_navbar"}" href="https://github.com/features/code-review"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-code-review color-fg-subtle mr-3"> <path d="M10.3 6.74a.75.75 0 0 1-.04 1.06l-2.908 2.7 2.908 2.7a.75.75 0 1 1-1.02 1.1l-3.5-3.25a.75.75 0 0 1 0-1.1l3.5-3.25a.75.75 0 0 1 1.06.04Zm3.44 1.06a.75.75 0 1 1 1.02-1.1l3.5 3.25a.75.75 0 0 1 0 1.1l-3.5 3.25a.75.75 0 1 1-1.02-1.1l2.908-2.7-2.908-2.7Z"></path><path d="M1.5 4.25c0-.966.784-1.75 1.75-1.75h17.5c.966 0 1.75.784 1.75 1.75v12.5a1.75 1.75 0 0 1-1.75 1.75h-9.69l-3.573 3.573A1.458 1.458 0 0 1 5 21.043V18.5H3.25a1.75 1.75 0 0 1-1.75-1.75ZM3.25 4a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h2.5a.75.75 0 0 1 .75.75v3.19l3.72-3.72a.749.749 0 0 1 .53-.22h10a.25.25 0 0 0 .25-.25V4.25a.25.25 0 0 0-.25-.25Z"></path> </svg> <div> <div class="color-fg-default h4">Code Review</div> Manage code changes </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"discussions","context":"product","tag":"link","label":"discussions_link_product_navbar"}" href="https://github.com/features/discussions"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-comment-discussion color-fg-subtle mr-3"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 14.25 14H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 15.543V14H1.75A1.75 1.75 0 0 1 0 12.25v-9.5C0 1.784.784 1 1.75 1ZM1.5 2.75v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Z"></path><path d="M22.5 8.75a.25.25 0 0 0-.25-.25h-3.5a.75.75 0 0 1 0-1.5h3.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 22.25 20H21v1.543a1.457 1.457 0 0 1-2.487 1.03L15.939 20H10.75A1.75 1.75 0 0 1 9 18.25v-1.465a.75.75 0 0 1 1.5 0v1.465c0 .138.112.25.25.25h5.5a.75.75 0 0 1 .53.22l2.72 2.72v-2.19a.75.75 0 0 1 .75-.75h2a.25.25 0 0 0 .25-.25v-9.5Z"></path> </svg> <div> <div class="color-fg-default h4">Discussions</div> Collaborate outside of code </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"code_search","context":"product","tag":"link","label":"code_search_link_product_navbar"}" href="https://github.com/features/code-search"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-code-square color-fg-subtle mr-3"> <path d="M10.3 8.24a.75.75 0 0 1-.04 1.06L7.352 12l2.908 2.7a.75.75 0 1 1-1.02 1.1l-3.5-3.25a.75.75 0 0 1 0-1.1l3.5-3.25a.75.75 0 0 1 1.06.04Zm3.44 1.06a.75.75 0 1 1 1.02-1.1l3.5 3.25a.75.75 0 0 1 0 1.1l-3.5 3.25a.75.75 0 1 1-1.02-1.1l2.908-2.7-2.908-2.7Z"></path><path d="M2 3.75C2 2.784 2.784 2 3.75 2h16.5c.966 0 1.75.784 1.75 1.75v16.5A1.75 1.75 0 0 1 20.25 22H3.75A1.75 1.75 0 0 1 2 20.25Zm1.75-.25a.25.25 0 0 0-.25.25v16.5c0 .138.112.25.25.25h16.5a.25.25 0 0 0 .25-.25V3.75a.25.25 0 0 0-.25-.25Z"></path> </svg> <div> <div class="color-fg-default h4">Code Search</div> Find more, search less </div> </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="product-explore-heading">Explore</span> <ul class="list-style-none f5" aria-labelledby="product-explore-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"all_features","context":"product","tag":"link","label":"all_features_link_product_navbar"}" href="https://github.com/features"> All features </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"documentation","context":"product","tag":"link","label":"documentation_link_product_navbar"}" href="https://docs.github.com"> Documentation <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"github_skills","context":"product","tag":"link","label":"github_skills_link_product_navbar"}" href="https://skills.github.com"> GitHub Skills <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"blog","context":"product","tag":"link","label":"blog_link_product_navbar"}" href="https://github.blog"> Blog <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Solutions <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 pb-lg-3 mb-3 mb-lg-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-company-size-heading">By company size</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-company-size-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"enterprises","context":"solutions","tag":"link","label":"enterprises_link_solutions_navbar"}" href="https://github.com/enterprise"> Enterprises </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"small_and_medium_teams","context":"solutions","tag":"link","label":"small_and_medium_teams_link_solutions_navbar"}" href="https://github.com/team"> Small and medium teams </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"startups","context":"solutions","tag":"link","label":"startups_link_solutions_navbar"}" href="https://github.com/enterprise/startups"> Startups </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-use-case-heading">By use case</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-use-case-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"devsecops","context":"solutions","tag":"link","label":"devsecops_link_solutions_navbar"}" href="/solutions/use-case/devsecops"> DevSecOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"devops","context":"solutions","tag":"link","label":"devops_link_solutions_navbar"}" href="/solutions/use-case/devops"> DevOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"ci_cd","context":"solutions","tag":"link","label":"ci_cd_link_solutions_navbar"}" href="/solutions/use-case/ci-cd"> CI/CD </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"view_all_use_cases","context":"solutions","tag":"link","label":"view_all_use_cases_link_solutions_navbar"}" href="/solutions/use-case"> View all use cases </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-industry-heading">By industry</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-industry-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"healthcare","context":"solutions","tag":"link","label":"healthcare_link_solutions_navbar"}" href="/solutions/industry/healthcare"> Healthcare </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"financial_services","context":"solutions","tag":"link","label":"financial_services_link_solutions_navbar"}" href="/solutions/industry/financial-services"> Financial services </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"manufacturing","context":"solutions","tag":"link","label":"manufacturing_link_solutions_navbar"}" href="/solutions/industry/manufacturing"> Manufacturing </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"government","context":"solutions","tag":"link","label":"government_link_solutions_navbar"}" href="/solutions/industry/government"> Government </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"view_all_industries","context":"solutions","tag":"link","label":"view_all_industries_link_solutions_navbar"}" href="/solutions/industry"> View all industries </a></li> </ul> </div> </div> <div class="HeaderMenu-trailing-link rounded-bottom-2 flex-shrink-0 mt-lg-4 px-lg-4 py-4 py-lg-3 f5 text-semibold"> <a href="/solutions"> View all solutions <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-right HeaderMenu-trailing-link-icon"> <path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path> </svg> </a> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Resources <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="resources-topics-heading">Topics</span> <ul class="list-style-none f5" aria-labelledby="resources-topics-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"ai","context":"resources","tag":"link","label":"ai_link_resources_navbar"}" href="/resources/articles/ai"> AI </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"devops","context":"resources","tag":"link","label":"devops_link_resources_navbar"}" href="/resources/articles/devops"> DevOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"security","context":"resources","tag":"link","label":"security_link_resources_navbar"}" href="/resources/articles/security"> Security </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"software_development","context":"resources","tag":"link","label":"software_development_link_resources_navbar"}" href="/resources/articles/software-development"> Software Development </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"view_all","context":"resources","tag":"link","label":"view_all_link_resources_navbar"}" href="/resources/articles"> View all </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="resources-explore-heading">Explore</span> <ul class="list-style-none f5" aria-labelledby="resources-explore-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"learning_pathways","context":"resources","tag":"link","label":"learning_pathways_link_resources_navbar"}" href="https://resources.github.com/learn/pathways"> Learning Pathways <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"white_papers_ebooks_webinars","context":"resources","tag":"link","label":"white_papers_ebooks_webinars_link_resources_navbar"}" href="https://resources.github.com"> White papers, Ebooks, Webinars <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"customer_stories","context":"resources","tag":"link","label":"customer_stories_link_resources_navbar"}" href="https://github.com/customer-stories"> Customer Stories </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"partners","context":"resources","tag":"link","label":"partners_link_resources_navbar"}" href="https://partner.github.com"> Partners <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Open Source <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 px-lg-4"> <div class="HeaderMenu-column"> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"github_sponsors","context":"open_source","tag":"link","label":"github_sponsors_link_open_source_navbar"}" href="/sponsors"> <div> <div class="color-fg-default h4">GitHub Sponsors</div> Fund open source developers </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"the_readme_project","context":"open_source","tag":"link","label":"the_readme_project_link_open_source_navbar"}" href="https://github.com/readme"> <div> <div class="color-fg-default h4">The ReadME Project</div> GitHub community articles </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="open-source-repositories-heading">Repositories</span> <ul class="list-style-none f5" aria-labelledby="open-source-repositories-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"topics","context":"open_source","tag":"link","label":"topics_link_open_source_navbar"}" href="https://github.com/topics"> Topics </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"trending","context":"open_source","tag":"link","label":"trending_link_open_source_navbar"}" href="https://github.com/trending"> Trending </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"collections","context":"open_source","tag":"link","label":"collections_link_open_source_navbar"}" href="https://github.com/collections"> Collections </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Enterprise <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 px-lg-4"> <div class="HeaderMenu-column"> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"enterprise_platform","context":"enterprise","tag":"link","label":"enterprise_platform_link_enterprise_navbar"}" href="/enterprise"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-stack color-fg-subtle mr-3"> <path d="M11.063 1.456a1.749 1.749 0 0 1 1.874 0l8.383 5.316a1.751 1.751 0 0 1 0 2.956l-8.383 5.316a1.749 1.749 0 0 1-1.874 0L2.68 9.728a1.751 1.751 0 0 1 0-2.956Zm1.071 1.267a.25.25 0 0 0-.268 0L3.483 8.039a.25.25 0 0 0 0 .422l8.383 5.316a.25.25 0 0 0 .268 0l8.383-5.316a.25.25 0 0 0 0-.422Z"></path><path d="M1.867 12.324a.75.75 0 0 1 1.035-.232l8.964 5.685a.25.25 0 0 0 .268 0l8.964-5.685a.75.75 0 0 1 .804 1.267l-8.965 5.685a1.749 1.749 0 0 1-1.874 0l-8.965-5.685a.75.75 0 0 1-.231-1.035Z"></path><path d="M1.867 16.324a.75.75 0 0 1 1.035-.232l8.964 5.685a.25.25 0 0 0 .268 0l8.964-5.685a.75.75 0 0 1 .804 1.267l-8.965 5.685a1.749 1.749 0 0 1-1.874 0l-8.965-5.685a.75.75 0 0 1-.231-1.035Z"></path> </svg> <div> <div class="color-fg-default h4">Enterprise platform</div> AI-powered developer platform </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="enterprise-available-add-ons-heading">Available add-ons</span> <ul class="list-style-none f5" aria-labelledby="enterprise-available-add-ons-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"advanced_security","context":"enterprise","tag":"link","label":"advanced_security_link_enterprise_navbar"}" href="https://github.com/enterprise/advanced-security"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-shield-check color-fg-subtle mr-3"> <path d="M16.53 9.78a.75.75 0 0 0-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 0 0-1.06 1.06l2.5 2.5a.75.75 0 0 0 1.06 0l5-5Z"></path><path d="m12.54.637 8.25 2.675A1.75 1.75 0 0 1 22 4.976V10c0 6.19-3.771 10.704-9.401 12.83a1.704 1.704 0 0 1-1.198 0C5.77 20.705 2 16.19 2 10V4.976c0-.758.489-1.43 1.21-1.664L11.46.637a1.748 1.748 0 0 1 1.08 0Zm-.617 1.426-8.25 2.676a.249.249 0 0 0-.173.237V10c0 5.46 3.28 9.483 8.43 11.426a.199.199 0 0 0 .14 0C17.22 19.483 20.5 15.461 20.5 10V4.976a.25.25 0 0 0-.173-.237l-8.25-2.676a.253.253 0 0 0-.154 0Z"></path> </svg> <div> <div class="color-fg-default h4">Advanced Security</div> Enterprise-grade security features </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"github_copilot","context":"enterprise","tag":"link","label":"github_copilot_link_enterprise_navbar"}" href="/features/copilot#enterprise"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-copilot color-fg-subtle mr-3"> <path d="M23.922 16.992c-.861 1.495-5.859 5.023-11.922 5.023-6.063 0-11.061-3.528-11.922-5.023A.641.641 0 0 1 0 16.736v-2.869a.841.841 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.195 10.195 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952 1.399-1.136 3.392-2.093 6.122-2.093 2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.832.832 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256ZM12.172 11h-.344a4.323 4.323 0 0 1-.355.508C10.703 12.455 9.555 13 7.965 13c-1.725 0-2.989-.359-3.782-1.259a2.005 2.005 0 0 1-.085-.104L4 11.741v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.323 4.323 0 0 1-.355-.508h-.016.016Zm.641-2.935c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z"></path><path d="M14.5 14.25a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Zm-5 0a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Z"></path> </svg> <div> <div class="color-fg-default h4">GitHub Copilot</div> Enterprise-grade AI features </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"premium_support","context":"enterprise","tag":"link","label":"premium_support_link_enterprise_navbar"}" href="/premium-support"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-comment-discussion color-fg-subtle mr-3"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 14.25 14H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 15.543V14H1.75A1.75 1.75 0 0 1 0 12.25v-9.5C0 1.784.784 1 1.75 1ZM1.5 2.75v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Z"></path><path d="M22.5 8.75a.25.25 0 0 0-.25-.25h-3.5a.75.75 0 0 1 0-1.5h3.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 22.25 20H21v1.543a1.457 1.457 0 0 1-2.487 1.03L15.939 20H10.75A1.75 1.75 0 0 1 9 18.25v-1.465a.75.75 0 0 1 1.5 0v1.465c0 .138.112.25.25.25h5.5a.75.75 0 0 1 .53.22l2.72 2.72v-2.19a.75.75 0 0 1 .75-.75h2a.25.25 0 0 0 .25-.25v-9.5Z"></path> </svg> <div> <div class="color-fg-default h4">Premium Support</div> Enterprise-grade 24/7 support </div> </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <a class="HeaderMenu-link no-underline px-0 px-lg-2 py-3 py-lg-2 d-block d-lg-inline-block" data-analytics-event="{"location":"navbar","action":"pricing","context":"global","tag":"link","label":"pricing_link_global_navbar"}" href="https://github.com/pricing">Pricing</a> </li> </ul> </nav> <div class="d-flex flex-column flex-lg-row width-full flex-justify-end flex-lg-items-center text-center mt-3 mt-lg-0 text-lg-left ml-lg-3"> <qbsearch-input class="search-input" data-scope="" data-custom-scopes-path="/search/custom_scopes" data-delete-custom-scopes-csrf="xLvqoBoajs4l0Nzx_JA1SRYFMtvZ-xELi-8ll8o4TsALgfOyqN9LmgCdU6gW5mtFVLLRTo_7ylO_FhZZSYlnoA" data-max-custom-scopes="10" data-header-redesign-enabled="false" data-initial-value="" data-blackbird-suggestions-path="/search/suggestions" data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations" data-current-repository="" data-current-org="" data-current-owner="" data-logged-in="false" data-copilot-chat-enabled="false" data-nl-search-enabled="false" data-retain-scroll-position="true"> <div class="search-input-container search-with-dialog position-relative d-flex flex-row flex-items-center mr-4 rounded" data-action="click:qbsearch-input#searchInputContainerClicked" > <button type="button" class="header-search-button placeholder input-button form-control d-flex flex-1 flex-self-stretch flex-items-center no-wrap width-full py-0 pl-2 pr-0 text-left border-0 box-shadow-none" data-target="qbsearch-input.inputButton" aria-label="Search or jump to…" aria-haspopup="dialog" placeholder="Search or jump to..." data-hotkey=s,/ autocapitalize="off" data-analytics-event="{"location":"navbar","action":"searchbar","context":"global","tag":"input","label":"searchbar_input_global_navbar"}" data-action="click:qbsearch-input#handleExpand" > <div class="mr-2 color-fg-muted"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </div> <span class="flex-1" data-target="qbsearch-input.inputButtonText">Search or jump to...</span> <div class="d-flex" data-target="qbsearch-input.hotkeyIndicator"> <svg xmlns="http://www.w3.org/2000/svg" width="22" height="20" aria-hidden="true" class="mr-1"><path fill="none" stroke="#979A9C" opacity=".4" d="M3.5.5h12c1.7 0 3 1.3 3 3v13c0 1.7-1.3 3-3 3h-12c-1.7 0-3-1.3-3-3v-13c0-1.7 1.3-3 3-3z"></path><path fill="#979A9C" d="M11.8 6L8 15.1h-.9L10.8 6h1z"></path></svg> </div> </button> <input type="hidden" name="type" class="js-site-search-type-field"> <div class="Overlay--hidden " data-modal-dialog-overlay> <modal-dialog data-action="close:qbsearch-input#handleClose cancel:qbsearch-input#handleClose" data-target="qbsearch-input.searchSuggestionsDialog" role="dialog" id="search-suggestions-dialog" aria-modal="true" aria-labelledby="search-suggestions-dialog-header" data-view-component="true" class="Overlay Overlay--width-large Overlay--height-auto"> <h1 id="search-suggestions-dialog-header" class="sr-only">Search code, repositories, users, issues, pull requests...</h1> <div class="Overlay-body Overlay-body--paddingNone"> <div data-view-component="true"> <div class="search-suggestions position-fixed width-full color-shadow-large border color-fg-default color-bg-default overflow-hidden d-flex flex-column query-builder-container" style="border-radius: 12px;" data-target="qbsearch-input.queryBuilderContainer" hidden > <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="query-builder-test-form" action="" accept-charset="UTF-8" method="get"> <query-builder data-target="qbsearch-input.queryBuilder" id="query-builder-query-builder-test" data-filter-key=":" data-view-component="true" class="QueryBuilder search-query-builder"> <div class="FormControl FormControl--fullWidth"> <label id="query-builder-test-label" for="query-builder-test" class="FormControl-label sr-only"> Search </label> <div class="QueryBuilder-StyledInput width-fit " data-target="query-builder.styledInput" > <span id="query-builder-test-leadingvisual-wrap" class="FormControl-input-leadingVisualWrap QueryBuilder-leadingVisualWrap"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search FormControl-input-leadingVisual"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </span> <div data-target="query-builder.styledInputContainer" class="QueryBuilder-StyledInputContainer"> <div aria-hidden="true" class="QueryBuilder-StyledInputContent" data-target="query-builder.styledInputContent" ></div> <div class="QueryBuilder-InputWrapper"> <div aria-hidden="true" class="QueryBuilder-Sizer" data-target="query-builder.sizer"></div> <input id="query-builder-test" name="query-builder-test" value="" autocomplete="off" type="text" role="combobox" spellcheck="false" aria-expanded="false" aria-describedby="validation-58611225-3c11-4ebf-ac0b-6040c635c544" data-target="query-builder.input" data-action=" input:query-builder#inputChange blur:query-builder#inputBlur keydown:query-builder#inputKeydown focus:query-builder#inputFocus " data-view-component="true" class="FormControl-input QueryBuilder-Input FormControl-medium" /> </div> </div> <span class="sr-only" id="query-builder-test-clear">Clear</span> <button role="button" id="query-builder-test-clear-button" aria-labelledby="query-builder-test-clear query-builder-test-label" data-target="query-builder.clearButton" data-action=" click:query-builder#clear focus:query-builder#clearButtonFocus blur:query-builder#clearButtonBlur " variant="small" hidden="hidden" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium mr-1 px-2 py-0 d-flex flex-items-center rounded-1 color-fg-muted"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x-circle-fill Button-visual"> <path d="M2.343 13.657A8 8 0 1 1 13.658 2.343 8 8 0 0 1 2.343 13.657ZM6.03 4.97a.751.751 0 0 0-1.042.018.751.751 0 0 0-.018 1.042L6.94 8 4.97 9.97a.749.749 0 0 0 .326 1.275.749.749 0 0 0 .734-.215L8 9.06l1.97 1.97a.749.749 0 0 0 1.275-.326.749.749 0 0 0-.215-.734L9.06 8l1.97-1.97a.749.749 0 0 0-.326-1.275.749.749 0 0 0-.734.215L8 6.94Z"></path> </svg> </button> </div> <template id="search-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </template> <template id="code-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> </template> <template id="file-code-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-file-code"> <path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path> </svg> </template> <template id="history-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-history"> <path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path> </svg> </template> <template id="repo-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </template> <template id="bookmark-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-bookmark"> <path d="M3 2.75C3 1.784 3.784 1 4.75 1h6.5c.966 0 1.75.784 1.75 1.75v11.5a.75.75 0 0 1-1.227.579L8 11.722l-3.773 3.107A.751.751 0 0 1 3 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.91l3.023-2.489a.75.75 0 0 1 .954 0l3.023 2.49V2.75a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="plus-circle-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-plus-circle"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm7.25-3.25v2.5h2.5a.75.75 0 0 1 0 1.5h-2.5v2.5a.75.75 0 0 1-1.5 0v-2.5h-2.5a.75.75 0 0 1 0-1.5h2.5v-2.5a.75.75 0 0 1 1.5 0Z"></path> </svg> </template> <template id="circle-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-dot-fill"> <path d="M8 4a4 4 0 1 1 0 8 4 4 0 0 1 0-8Z"></path> </svg> </template> <template id="trash-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-trash"> <path d="M11 1.75V3h2.25a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1 0-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75ZM4.496 6.675l.66 6.6a.25.25 0 0 0 .249.225h5.19a.25.25 0 0 0 .249-.225l.66-6.6a.75.75 0 0 1 1.492.149l-.66 6.6A1.748 1.748 0 0 1 10.595 15h-5.19a1.75 1.75 0 0 1-1.741-1.575l-.66-6.6a.75.75 0 1 1 1.492-.15ZM6.5 1.75V3h3V1.75a.25.25 0 0 0-.25-.25h-2.5a.25.25 0 0 0-.25.25Z"></path> </svg> </template> <template id="team-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-people"> <path d="M2 5.5a3.5 3.5 0 1 1 5.898 2.549 5.508 5.508 0 0 1 3.034 4.084.75.75 0 1 1-1.482.235 4 4 0 0 0-7.9 0 .75.75 0 0 1-1.482-.236A5.507 5.507 0 0 1 3.102 8.05 3.493 3.493 0 0 1 2 5.5ZM11 4a3.001 3.001 0 0 1 2.22 5.018 5.01 5.01 0 0 1 2.56 3.012.749.749 0 0 1-.885.954.752.752 0 0 1-.549-.514 3.507 3.507 0 0 0-2.522-2.372.75.75 0 0 1-.574-.73v-.352a.75.75 0 0 1 .416-.672A1.5 1.5 0 0 0 11 5.5.75.75 0 0 1 11 4Zm-5.5-.5a2 2 0 1 0-.001 3.999A2 2 0 0 0 5.5 3.5Z"></path> </svg> </template> <template id="project-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project"> <path d="M1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0ZM1.5 1.75v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25ZM11.75 3a.75.75 0 0 1 .75.75v7.5a.75.75 0 0 1-1.5 0v-7.5a.75.75 0 0 1 .75-.75Zm-8.25.75a.75.75 0 0 1 1.5 0v5.5a.75.75 0 0 1-1.5 0ZM8 3a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 3Z"></path> </svg> </template> <template id="pencil-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-pencil"> <path d="M11.013 1.427a1.75 1.75 0 0 1 2.474 0l1.086 1.086a1.75 1.75 0 0 1 0 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 0 1-.927-.928l.929-3.25c.081-.286.235-.547.445-.758l8.61-8.61Zm.176 4.823L9.75 4.81l-6.286 6.287a.253.253 0 0 0-.064.108l-.558 1.953 1.953-.558a.253.253 0 0 0 .108-.064Zm1.238-3.763a.25.25 0 0 0-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 0 0 0-.354Z"></path> </svg> </template> <template id="copilot-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copilot"> <path d="M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z"></path><path d="M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z"></path> </svg> </template> <template id="copilot-error-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copilot-error"> <path d="M16 11.24c0 .112-.072.274-.21.467L13 9.688V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-.198 0-.388-.009-.571-.029L6.833 5.226a4.01 4.01 0 0 0 .17-.782c.117-.935-.037-1.395-.241-1.614-.193-.206-.637-.413-1.682-.297-.683.076-1.115.231-1.395.415l-1.257-.91c.579-.564 1.413-.877 2.485-.996 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095Zm-5.083-8.707c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Zm2.511 11.074c-1.393.776-3.272 1.428-5.43 1.428-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.18-.455-.241-.963-.252-1.475L.31 4.107A.747.747 0 0 1 0 3.509V3.49a.748.748 0 0 1 .625-.73c.156-.026.306.047.435.139l14.667 10.578a.592.592 0 0 1 .227.264.752.752 0 0 1 .046.249v.022a.75.75 0 0 1-1.19.596Zm-1.367-.991L5.635 7.964a5.128 5.128 0 0 1-.889.073c-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433 1.539 0 3.089-.505 4.063-.934Z"></path> </svg> </template> <template id="workflow-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-workflow"> <path d="M0 1.75C0 .784.784 0 1.75 0h3.5C6.216 0 7 .784 7 1.75v3.5A1.75 1.75 0 0 1 5.25 7H4v4a1 1 0 0 0 1 1h4v-1.25C9 9.784 9.784 9 10.75 9h3.5c.966 0 1.75.784 1.75 1.75v3.5A1.75 1.75 0 0 1 14.25 16h-3.5A1.75 1.75 0 0 1 9 14.25v-.75H5A2.5 2.5 0 0 1 2.5 11V7h-.75A1.75 1.75 0 0 1 0 5.25Zm1.75-.25a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Zm9 9a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="book-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-book"> <path d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z"></path> </svg> </template> <template id="code-review-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code-review"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 13H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25v-8.5C0 1.784.784 1 1.75 1ZM1.5 2.75v8.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-8.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm5.28 1.72a.75.75 0 0 1 0 1.06L5.31 7l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.75.75 0 0 1 1.06 0Zm2.44 0a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L10.69 7 9.22 5.53a.75.75 0 0 1 0-1.06Z"></path> </svg> </template> <template id="codespaces-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-codespaces"> <path d="M0 11.25c0-.966.784-1.75 1.75-1.75h12.5c.966 0 1.75.784 1.75 1.75v3A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm2-9.5C2 .784 2.784 0 3.75 0h8.5C13.216 0 14 .784 14 1.75v5a1.75 1.75 0 0 1-1.75 1.75h-8.5A1.75 1.75 0 0 1 2 6.75Zm1.75-.25a.25.25 0 0 0-.25.25v5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-5a.25.25 0 0 0-.25-.25Zm-2 9.5a.25.25 0 0 0-.25.25v3c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-3a.25.25 0 0 0-.25-.25Z"></path><path d="M7 12.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path> </svg> </template> <template id="comment-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment"> <path d="M1 2.75C1 1.784 1.784 1 2.75 1h10.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 13.25 12H9.06l-2.573 2.573A1.458 1.458 0 0 1 4 13.543V12H2.75A1.75 1.75 0 0 1 1 10.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h4.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="comment-discussion-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> </template> <template id="organization-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-organization"> <path d="M1.75 16A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0h8.5C11.216 0 12 .784 12 1.75v12.5c0 .085-.006.168-.018.25h2.268a.25.25 0 0 0 .25-.25V8.285a.25.25 0 0 0-.111-.208l-1.055-.703a.749.749 0 1 1 .832-1.248l1.055.703c.487.325.779.871.779 1.456v5.965A1.75 1.75 0 0 1 14.25 16h-3.5a.766.766 0 0 1-.197-.026c-.099.017-.2.026-.303.026h-3a.75.75 0 0 1-.75-.75V14h-1v1.25a.75.75 0 0 1-.75.75Zm-.25-1.75c0 .138.112.25.25.25H4v-1.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 .75.75v1.25h2.25a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25ZM3.75 6h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM3 3.75A.75.75 0 0 1 3.75 3h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 3.75Zm4 3A.75.75 0 0 1 7.75 6h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 7 6.75ZM7.75 3h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM3 9.75A.75.75 0 0 1 3.75 9h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 9.75ZM7.75 9h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5Z"></path> </svg> </template> <template id="rocket-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-rocket"> <path d="M14.064 0h.186C15.216 0 16 .784 16 1.75v.186a8.752 8.752 0 0 1-2.564 6.186l-.458.459c-.314.314-.641.616-.979.904v3.207c0 .608-.315 1.172-.833 1.49l-2.774 1.707a.749.749 0 0 1-1.11-.418l-.954-3.102a1.214 1.214 0 0 1-.145-.125L3.754 9.816a1.218 1.218 0 0 1-.124-.145L.528 8.717a.749.749 0 0 1-.418-1.11l1.71-2.774A1.748 1.748 0 0 1 3.31 4h3.204c.288-.338.59-.665.904-.979l.459-.458A8.749 8.749 0 0 1 14.064 0ZM8.938 3.623h-.002l-.458.458c-.76.76-1.437 1.598-2.02 2.5l-1.5 2.317 2.143 2.143 2.317-1.5c.902-.583 1.74-1.26 2.499-2.02l.459-.458a7.25 7.25 0 0 0 2.123-5.127V1.75a.25.25 0 0 0-.25-.25h-.186a7.249 7.249 0 0 0-5.125 2.123ZM3.56 14.56c-.732.732-2.334 1.045-3.005 1.148a.234.234 0 0 1-.201-.064.234.234 0 0 1-.064-.201c.103-.671.416-2.273 1.15-3.003a1.502 1.502 0 1 1 2.12 2.12Zm6.94-3.935c-.088.06-.177.118-.266.175l-2.35 1.521.548 1.783 1.949-1.2a.25.25 0 0 0 .119-.213ZM3.678 8.116 5.2 5.766c.058-.09.117-.178.176-.266H3.309a.25.25 0 0 0-.213.119l-1.2 1.95ZM12 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </template> <template id="shield-check-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield-check"> <path d="m8.533.133 5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667l5.25-1.68a1.748 1.748 0 0 1 1.066 0Zm-.61 1.429.001.001-5.25 1.68a.251.251 0 0 0-.174.237V7c0 1.36.275 2.666 1.057 3.859.784 1.194 2.121 2.342 4.366 3.298a.196.196 0 0 0 .154 0c2.245-.957 3.582-2.103 4.366-3.297C13.225 9.666 13.5 8.358 13.5 7V3.48a.25.25 0 0 0-.174-.238l-5.25-1.68a.25.25 0 0 0-.153 0ZM11.28 6.28l-3.5 3.5a.75.75 0 0 1-1.06 0l-1.5-1.5a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l.97.97 2.97-2.97a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> </template> <template id="heart-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-heart"> <path d="m8 14.25.345.666a.75.75 0 0 1-.69 0l-.008-.004-.018-.01a7.152 7.152 0 0 1-.31-.17 22.055 22.055 0 0 1-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.066 22.066 0 0 1-3.744 2.584l-.018.01-.006.003h-.002ZM4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.58 20.58 0 0 0 8 13.393a20.58 20.58 0 0 0 3.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.749.749 0 0 1-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5Z"></path> </svg> </template> <template id="server-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-server"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v4c0 .372-.116.717-.314 1 .198.283.314.628.314 1v4a1.75 1.75 0 0 1-1.75 1.75H1.75A1.75 1.75 0 0 1 0 12.75v-4c0-.358.109-.707.314-1a1.739 1.739 0 0 1-.314-1v-4C0 1.784.784 1 1.75 1ZM1.5 2.75v4c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm.25 5.75a.25.25 0 0 0-.25.25v4c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25ZM7 4.75A.75.75 0 0 1 7.75 4h4.5a.75.75 0 0 1 0 1.5h-4.5A.75.75 0 0 1 7 4.75ZM7.75 10h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM3 4.75A.75.75 0 0 1 3.75 4h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 4.75ZM3.75 10h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5Z"></path> </svg> </template> <template id="globe-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-globe"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM5.78 8.75a9.64 9.64 0 0 0 1.363 4.177c.255.426.542.832.857 1.215.245-.296.551-.705.857-1.215A9.64 9.64 0 0 0 10.22 8.75Zm4.44-1.5a9.64 9.64 0 0 0-1.363-4.177c-.307-.51-.612-.919-.857-1.215a9.927 9.927 0 0 0-.857 1.215A9.64 9.64 0 0 0 5.78 7.25Zm-5.944 1.5H1.543a6.507 6.507 0 0 0 4.666 5.5c-.123-.181-.24-.365-.352-.552-.715-1.192-1.437-2.874-1.581-4.948Zm-2.733-1.5h2.733c.144-2.074.866-3.756 1.58-4.948.12-.197.237-.381.353-.552a6.507 6.507 0 0 0-4.666 5.5Zm10.181 1.5c-.144 2.074-.866 3.756-1.58 4.948-.12.197-.237.381-.353.552a6.507 6.507 0 0 0 4.666-5.5Zm2.733-1.5a6.507 6.507 0 0 0-4.666-5.5c.123.181.24.365.353.552.714 1.192 1.436 2.874 1.58 4.948Z"></path> </svg> </template> <template id="issue-opened-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> </template> <template id="device-mobile-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-device-mobile"> <path d="M3.75 0h8.5C13.216 0 14 .784 14 1.75v12.5A1.75 1.75 0 0 1 12.25 16h-8.5A1.75 1.75 0 0 1 2 14.25V1.75C2 .784 2.784 0 3.75 0ZM3.5 1.75v12.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25ZM8 13a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path> </svg> </template> <template id="package-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-package"> <path d="m8.878.392 5.25 3.045c.54.314.872.89.872 1.514v6.098a1.75 1.75 0 0 1-.872 1.514l-5.25 3.045a1.75 1.75 0 0 1-1.756 0l-5.25-3.045A1.75 1.75 0 0 1 1 11.049V4.951c0-.624.332-1.201.872-1.514L7.122.392a1.75 1.75 0 0 1 1.756 0ZM7.875 1.69l-4.63 2.685L8 7.133l4.755-2.758-4.63-2.685a.248.248 0 0 0-.25 0ZM2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432Zm6.25 8.271 4.625-2.683a.25.25 0 0 0 .125-.216V5.677L8.75 8.432Z"></path> </svg> </template> <template id="credit-card-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-credit-card"> <path d="M10.75 9a.75.75 0 0 0 0 1.5h1.5a.75.75 0 0 0 0-1.5h-1.5Z"></path><path d="M0 3.75C0 2.784.784 2 1.75 2h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 14H1.75A1.75 1.75 0 0 1 0 12.25ZM14.5 6.5h-13v5.75c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25Zm0-2.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25V5h13Z"></path> </svg> </template> <template id="play-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path> </svg> </template> <template id="gift-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-gift"> <path d="M2 2.75A2.75 2.75 0 0 1 4.75 0c.983 0 1.873.42 2.57 1.232.268.318.497.668.68 1.042.183-.375.411-.725.68-1.044C9.376.42 10.266 0 11.25 0a2.75 2.75 0 0 1 2.45 4h.55c.966 0 1.75.784 1.75 1.75v2c0 .698-.409 1.301-1 1.582v4.918A1.75 1.75 0 0 1 13.25 16H2.75A1.75 1.75 0 0 1 1 14.25V9.332C.409 9.05 0 8.448 0 7.75v-2C0 4.784.784 4 1.75 4h.55c-.192-.375-.3-.8-.3-1.25ZM7.25 9.5H2.5v4.75c0 .138.112.25.25.25h4.5Zm1.5 0v5h4.5a.25.25 0 0 0 .25-.25V9.5Zm0-4V8h5.5a.25.25 0 0 0 .25-.25v-2a.25.25 0 0 0-.25-.25Zm-7 0a.25.25 0 0 0-.25.25v2c0 .138.112.25.25.25h5.5V5.5h-5.5Zm3-4a1.25 1.25 0 0 0 0 2.5h2.309c-.233-.818-.542-1.401-.878-1.793-.43-.502-.915-.707-1.431-.707ZM8.941 4h2.309a1.25 1.25 0 0 0 0-2.5c-.516 0-1 .205-1.43.707-.337.392-.646.975-.879 1.793Z"></path> </svg> </template> <template id="code-square-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code-square"> <path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25Zm7.47 3.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L10.69 8 9.22 6.53a.75.75 0 0 1 0-1.06ZM6.78 6.53 5.31 8l1.47 1.47a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> </template> <template id="device-desktop-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-device-desktop"> <path d="M14.25 1c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 14.25 12h-3.727c.099 1.041.52 1.872 1.292 2.757A.752.752 0 0 1 11.25 16h-6.5a.75.75 0 0 1-.565-1.243c.772-.885 1.192-1.716 1.292-2.757H1.75A1.75 1.75 0 0 1 0 10.25v-7.5C0 1.784.784 1 1.75 1ZM1.75 2.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25ZM9.018 12H6.982a5.72 5.72 0 0 1-.765 2.5h3.566a5.72 5.72 0 0 1-.765-2.5Z"></path> </svg> </template> <div class="position-relative"> <ul role="listbox" class="ActionListWrap QueryBuilder-ListWrap" aria-label="Suggestions" data-action=" combobox-commit:query-builder#comboboxCommit mousedown:query-builder#resultsMousedown " data-target="query-builder.resultsList" data-persist-list=false id="query-builder-test-results" ></ul> </div> <div class="FormControl-inlineValidation" id="validation-58611225-3c11-4ebf-ac0b-6040c635c544" hidden="hidden"> <span class="FormControl-inlineValidation--visual"> <svg aria-hidden="true" height="12" viewBox="0 0 12 12" version="1.1" width="12" data-view-component="true" class="octicon octicon-alert-fill"> <path d="M4.855.708c.5-.896 1.79-.896 2.29 0l4.675 8.351a1.312 1.312 0 0 1-1.146 1.954H1.33A1.313 1.313 0 0 1 .183 9.058ZM7 7V3H5v4Zm-1 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z"></path> </svg> </span> <span></span> </div> </div> <div data-target="query-builder.screenReaderFeedback" aria-live="polite" aria-atomic="true" class="sr-only"></div> </query-builder></form> <div class="d-flex flex-row color-fg-muted px-3 text-small color-bg-default search-feedback-prompt"> <a target="_blank" href="https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax" data-view-component="true" class="Link color-fg-accent text-normal ml-2"> Search syntax tips </a> <div class="d-flex flex-1"></div> </div> </div> </div> </div> </modal-dialog></div> </div> <div data-action="click:qbsearch-input#retract" class="dark-backdrop position-fixed" hidden data-target="qbsearch-input.darkBackdrop"></div> <div class="color-fg-default"> <dialog-helper> <dialog data-target="qbsearch-input.feedbackDialog" data-action="close:qbsearch-input#handleDialogClose cancel:qbsearch-input#handleDialogClose" id="feedback-dialog" aria-modal="true" aria-labelledby="feedback-dialog-title" aria-describedby="feedback-dialog-description" data-view-component="true" class="Overlay Overlay-whenNarrow Overlay--size-medium Overlay--motion-scaleFade Overlay--disableScroll"> <div data-view-component="true" class="Overlay-header"> <div class="Overlay-headerContentWrap"> <div class="Overlay-titleWrap"> <h1 class="Overlay-title " id="feedback-dialog-title"> Provide feedback </h1> </div> <div class="Overlay-actionWrap"> <button data-close-dialog-id="feedback-dialog" aria-label="Close" type="button" data-view-component="true" class="close-button Overlay-closeButton"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg></button> </div> </div> </div> <scrollable-region data-labelled-by="feedback-dialog-title"> <div data-view-component="true" class="Overlay-body"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="code-search-feedback-form" data-turbo="false" action="/search/feedback" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="o9V3RBGTftMer3pYs1F9hZHck3y+0JHmD6c8hd9xTi+JGsFeXacH255Gu/uNjlHAK/Fd6T4hG0FWjYF8gPvZ6Q==" /> <p>We read every piece of feedback, and take your input very seriously.</p> <textarea name="feedback" class="form-control width-full mb-2" style="height: 120px" id="feedback"></textarea> <input name="include_email" id="include_email" aria-label="Include my email address so I can be contacted" class="form-control mr-2" type="checkbox"> <label for="include_email" style="font-weight: normal">Include my email address so I can be contacted</label> </form></div> </scrollable-region> <div data-view-component="true" class="Overlay-footer Overlay-footer--alignEnd"> <button data-close-dialog-id="feedback-dialog" type="button" data-view-component="true" class="btn"> Cancel </button> <button form="code-search-feedback-form" data-action="click:qbsearch-input#submitFeedback" type="submit" data-view-component="true" class="btn-primary btn"> Submit feedback </button> </div> </dialog></dialog-helper> <custom-scopes data-target="qbsearch-input.customScopesManager"> <dialog-helper> <dialog data-target="custom-scopes.customScopesModalDialog" data-action="close:qbsearch-input#handleDialogClose cancel:qbsearch-input#handleDialogClose" id="custom-scopes-dialog" aria-modal="true" aria-labelledby="custom-scopes-dialog-title" aria-describedby="custom-scopes-dialog-description" data-view-component="true" class="Overlay Overlay-whenNarrow Overlay--size-medium Overlay--motion-scaleFade Overlay--disableScroll"> <div data-view-component="true" class="Overlay-header Overlay-header--divided"> <div class="Overlay-headerContentWrap"> <div class="Overlay-titleWrap"> <h1 class="Overlay-title " id="custom-scopes-dialog-title"> Saved searches </h1> <h2 id="custom-scopes-dialog-description" class="Overlay-description">Use saved searches to filter your results more quickly</h2> </div> <div class="Overlay-actionWrap"> <button data-close-dialog-id="custom-scopes-dialog" aria-label="Close" type="button" data-view-component="true" class="close-button Overlay-closeButton"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg></button> </div> </div> </div> <scrollable-region data-labelled-by="custom-scopes-dialog-title"> <div data-view-component="true" class="Overlay-body"> <div data-target="custom-scopes.customScopesModalDialogFlash"></div> <div hidden class="create-custom-scope-form" data-target="custom-scopes.createCustomScopeForm"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="custom-scopes-dialog-form" data-turbo="false" action="/search/custom_scopes" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="L9LSDANiMULFPkRCQ7s3UqN4HDZQp1Y3I2OrrfG+fePzu0OgTOhm/7DMy3Bah5GOgR34XGVHRuD6hr/TrnlsyQ==" /> <div data-target="custom-scopes.customScopesModalDialogFlash"></div> <input type="hidden" id="custom_scope_id" name="custom_scope_id" data-target="custom-scopes.customScopesIdField"> <div class="form-group"> <label for="custom_scope_name">Name</label> <auto-check src="/search/custom_scopes/check_name" required> <input type="text" name="custom_scope_name" id="custom_scope_name" data-target="custom-scopes.customScopesNameField" class="form-control" autocomplete="off" placeholder="github-ruby" required maxlength="50"> <input type="hidden" data-csrf="true" value="8x8eu+XMh5hXGwf/EAr6/R2K0+pAeBdxcPrQRPQ8p1KMMzqRIdmrZALqbeo0dlpbnEwe3GjaW0GulXGoTxJb9Q==" /> </auto-check> </div> <div class="form-group"> <label for="custom_scope_query">Query</label> <input type="text" name="custom_scope_query" id="custom_scope_query" data-target="custom-scopes.customScopesQueryField" class="form-control" autocomplete="off" placeholder="(repo:mona/a OR repo:mona/b) AND lang:python" required maxlength="500"> </div> <p class="text-small color-fg-muted"> To see all available qualifiers, see our <a class="Link--inTextBlock" href="https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax">documentation</a>. </p> </form> </div> <div data-target="custom-scopes.manageCustomScopesForm"> <div data-target="custom-scopes.list"></div> </div> </div> </scrollable-region> <div data-view-component="true" class="Overlay-footer Overlay-footer--alignEnd Overlay-footer--divided"> <button data-action="click:custom-scopes#customScopesCancel" type="button" data-view-component="true" class="btn"> Cancel </button> <button form="custom-scopes-dialog-form" data-action="click:custom-scopes#customScopesSubmit" data-target="custom-scopes.customScopesSubmitButton" type="submit" data-view-component="true" class="btn-primary btn"> Create saved search </button> </div> </dialog></dialog-helper> </custom-scopes> </div> </qbsearch-input> <div class="position-relative HeaderMenu-link-wrap d-lg-inline-block"> <a href="/login?return_to=https%3A%2F%2Fgithub.com%2Ftopics%2Fwebapp" class="HeaderMenu-link HeaderMenu-link--sign-in HeaderMenu-button flex-shrink-0 no-underline d-none d-lg-inline-flex border border-lg-0 rounded rounded-lg-0 px-2 py-1" style="margin-left: 12px;" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="88a7992e793a2c91d01ed48e926824879900012572f460b0651df9112e0a198d" data-analytics-event="{"category":"Marketing nav","action":"click to go to homepage","label":"ref_page:Marketing;ref_cta:Sign in;ref_loc:Header"}" > Sign in </a> </div> <a href="/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2Ftopics%2Fwebapp&source=header" class="HeaderMenu-link HeaderMenu-link--sign-up HeaderMenu-button flex-shrink-0 d-flex d-lg-inline-flex no-underline border color-border-default rounded px-2 py-1" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="88a7992e793a2c91d01ed48e926824879900012572f460b0651df9112e0a198d" data-analytics-event="{"category":"Sign up","action":"click to sign up for account","label":"ref_page:/topics/webapp;ref_cta:Sign up;ref_loc:header logged out"}" > Sign up </a> <button type="button" class="sr-only js-header-menu-focus-trap d-block d-lg-none">Reseting focus</button> </div> </div> </div> </div> </header> <div hidden="hidden" data-view-component="true" class="js-stale-session-flash stale-session-flash flash flash-warn flash-full"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span class="js-stale-session-flash-signed-in" hidden>You signed in with another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <span class="js-stale-session-flash-signed-out" hidden>You signed out in another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <span class="js-stale-session-flash-switched" hidden>You switched accounts on another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <button id="icon-button-68bc7f01-eb57-44a5-ad58-c0857330f372" aria-labelledby="tooltip-657d7532-21e2-498b-876d-015fce546bfa" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium flash-close js-flash-close"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x Button-visual"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button><tool-tip id="tooltip-657d7532-21e2-498b-876d-015fce546bfa" for="icon-button-68bc7f01-eb57-44a5-ad58-c0857330f372" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Dismiss alert</tool-tip> </div> </div> <div id="start-of-content" class="show-on-focus"></div> <div id="js-flash-container" class="flash-container" data-turbo-replace> <template class="js-flash-template"> <div class="flash flash-full {{ className }}"> <div > <button autofocus class="flash-close js-flash-close" type="button" aria-label="Dismiss this message"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> <div aria-atomic="true" role="alert" class="js-flash-alert"> <div>{{ message }}</div> </div> </div> </div> </template> </div> <div class="application-main " data-commit-hovercards-enabled data-discussion-hovercards-enabled data-issue-and-pr-hovercards-enabled > <main> <div class="site-subnav color-bg-default site-subnav-sticky js-sticky" > <nav class="container-lg mx-auto p-responsive" role="navigation" aria-label="Explore navigation"> <div class="d-flex flex-wrap flex-items-center flex-justify-center flex-md-justify-start text-center text-md-left"> <a class="js-selected-navigation-item d-inline-block subnav-primary f5 py-0 py-md-3 mt-2 mt-md-0 mr-0 mr-md-4 no-underline subnav-link" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"NAVIGATION_BAR","click_target":"EXPLORE","click_visual_representation":"CLICK_VISUAL_REPRESENTATION_UNKNOWN","actor_id":null,"record_id":null,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="d9259db3af3a24ad883bc7e0a3507db1ff2656f907dac156dfbb713800ddd46d" data-selected-links="/explore /explore/email /explore" href="/explore">Explore</a> <a class="js-selected-navigation-item selected d-inline-block py-2 py-md-3 mr-3 mr-md-4 no-underline subnav-link" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"NAVIGATION_BAR","click_target":"TOPICS","click_visual_representation":"CLICK_VISUAL_REPRESENTATION_UNKNOWN","actor_id":null,"record_id":null,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="014c97482ca9f2df4eb44b9fcc7dad605698c73f154aec2a81c4ae9f79c9760c" aria-current="page" data-selected-links="topics_path /topics/webapp /topics" href="/topics">Topics</a> <a class="js-selected-navigation-item d-inline-block py-2 py-md-3 mr-3 mr-md-4 no-underline subnav-link" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"NAVIGATION_BAR","click_target":"TRENDING","click_visual_representation":"CLICK_VISUAL_REPRESENTATION_UNKNOWN","actor_id":null,"record_id":null,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="923dd45c6f43f2881a296af3a486a63a0e9cb59bd4f48c6185a88af9b0feb039" data-selected-links="/trending /trending/developers /trending/developers /trending /trending" href="/trending">Trending</a> <a class="js-selected-navigation-item d-inline-block py-2 py-md-3 mr-3 mr-md-4 no-underline subnav-link" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"NAVIGATION_BAR","click_target":"COLLECTIONS","click_visual_representation":"CLICK_VISUAL_REPRESENTATION_UNKNOWN","actor_id":null,"record_id":null,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="32d59de4d1587a3bf1f380b5161849186a3042006e37e9ddde3a2110492f9031" data-selected-links="collections_path /collections/ /collections" href="/collections">Collections</a> <a class="js-selected-navigation-item d-inline-block py-2 py-md-3 mr-3 mr-md-4 no-underline subnav-link" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"NAVIGATION_BAR","click_target":"EVENTS","click_visual_representation":"CLICK_VISUAL_REPRESENTATION_UNKNOWN","actor_id":null,"record_id":null,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="1b32648ff1c80505c350e207e89f77674886825a066c5ee94320e1bde458dc4a" data-selected-links="events_path /events?id= /events" href="/events">Events</a> <a class="js-selected-navigation-item d-inline-block py-2 py-md-3 mr-3 mr-md-4 no-underline subnav-link" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"NAVIGATION_BAR","click_target":"GITHUB_SPONSORS","click_visual_representation":"CLICK_VISUAL_REPRESENTATION_UNKNOWN","actor_id":null,"record_id":null,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="99f4190ed49d5c5494890bebb974f7e353670022a7ad3b8a7a8ccd01c51a0b12" data-selected-links="sponsors_explore_index_path /sponsors/explore /sponsors/explore" href="/sponsors/explore">GitHub Sponsors</a> </div> </nav> </div> <div> <div class="container-lg p-responsive py-5"> <div class="gutter-md"> <div class="col-lg-9 col-md-8 d-flex flex-items-center mb-3 mb-sm-0"> <div class="d-flex flex-1"> <div class="border color-border-subtle color-bg-accent f4 color-fg-muted text-bold rounded flex-shrink-0 text-center mr-3" style="width: 48px; height: 48; line-height: 48px;" > # </div> <h1 class="h1"> webapp </h1> </div> <topic-feeds-toast-trigger data-topic-display-name="webapp" data-topic-name="webapp"> <div data-view-component="true" class="d-block"> <a href="/login?return_to=%2Ftopic.webapp" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":null,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="fe9f0f6cfb74ad5f44050152517150f90515a9b6f3de47f6f22d8c74b3ead7cd" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> </a></div> </topic-feeds-toast-trigger> </div> </div> </div> <div class="topic p-responsive container-lg"> <div class="d-md-flex gutter-md"> <div class="col-md-8 col-lg-9" data-hpc> <h2 class="h3 color-fg-muted"> Here are 18,486 public repositories matching this topic... </h2> <div class="d-sm-flex"> <details class="details-reset details-overlay mt-2 mr-3 select-menu"> <summary data-view-component="true" class="select-menu-button btn-sm btn"> <i>Language:</i> <span data-menu-button>All</span> </summary> <details-menu class="select-menu-modal position-absolute" style="z-index: 99;"> <div class="select-menu-header"> <span class="select-menu-title">Filter by language</span> </div> <div class="select-menu-list"> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/webapp" aria-checked="true"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> All <span>18,486</span> </span> </a> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/webapp?l=javascript" aria-checked="false"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> JavaScript <span>5,975</span> </span> </a> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/webapp?l=html" aria-checked="false"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> HTML <span>2,280</span> </span> </a> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/webapp?l=python" aria-checked="false"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> Python <span>2,187</span> </span> </a> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/webapp?l=typescript" aria-checked="false"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> TypeScript <span>1,825</span> </span> </a> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/webapp?l=css" aria-checked="false"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> CSS <span>956</span> </span> </a> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/webapp?l=java" aria-checked="false"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> Java <span>812</span> </span> </a> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/webapp?l=php" aria-checked="false"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> PHP <span>791</span> </span> </a> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/webapp?l=vue" aria-checked="false"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> Vue <span>510</span> </span> </a> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/webapp?l=jupyter+notebook" aria-checked="false"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> Jupyter Notebook <span>424</span> </span> </a> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/webapp?l=c%23" aria-checked="false"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> C# <span>377</span> </span> </a> </div> </details-menu> </details> <details class="details-reset details-overlay select-menu mt-2"> <summary data-view-component="true" class="select-menu-button btn-sm btn"> <i>Sort:</i> <span data-menu-button >Most stars</span> </summary> <details-menu class="select-menu-modal position-absolute" style="z-index: 99;"> <div class="select-menu-header"> <span class="select-menu-title">Sort options</span> </div> <div class="select-menu-list"> <a class="select-menu-item" role="menuitemradio" aria-checked="true" href="/topics/webapp?o=desc&s=stars"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text" data-menu-button-text > Most stars </span> </a> <a class="select-menu-item" role="menuitemradio" aria-checked="false" href="/topics/webapp?o=asc&s=stars"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text" data-menu-button-text > Fewest stars </span> </a> <a class="select-menu-item" role="menuitemradio" aria-checked="false" href="/topics/webapp?o=desc&s=forks"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text" data-menu-button-text > Most forks </span> </a> <a class="select-menu-item" role="menuitemradio" aria-checked="false" href="/topics/webapp?o=asc&s=forks"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text" data-menu-button-text > Fewest forks </span> </a> <a class="select-menu-item" role="menuitemradio" aria-checked="false" href="/topics/webapp?o=desc&s=updated"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text" data-menu-button-text > Recently updated </span> </a> <a class="select-menu-item" role="menuitemradio" aria-checked="false" href="/topics/webapp?o=asc&s=updated"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text" data-menu-button-text > Least recently updated </span> </a> </div> </details-menu> </details> </div> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":5458997,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="8230a14a31fcede1acf117bbd4ea3eaf7d6cf2784c92b4f02025dd8f49bd916a" data-turbo="false" href="/donnemartin" data-view-component="true" class="Link"> donnemartin </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":83222441,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="dbb65380ac96192b060aa09121285f37ae087597825451f736ac28d9dea3378e" data-turbo="false" href="/donnemartin/system-design-primer" data-view-component="true" class="Link text-bold wb-break-word"> system-design-primer </a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fdonnemartin%2Fsystem-design-primer" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":83222441,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="1831197b99bc38363a887fbeb20fdca0e3e539943c8935664d70b01f2fc97a7f" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="277124 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="277,124" data-view-component="true" class="Counter js-social-count">277k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-83222441" aria-current="true" href="/donnemartin/system-design-primer" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":83222441,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="14a5d81b76ebb93685c97c82b7d5603352d4c62fa31dd967d243672e118ce700" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-83222441" href="/donnemartin/system-design-primer/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":83222441,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="4858574d82291d28c66363d5d9a2145e8725ca1baebdd5d5ded8ac5ece268254" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-83222441" href="/donnemartin/system-design-primer/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":83222441,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="43e4b282e8e2a8f3fb8b88c172a84ecf53398289564ca27dc848982c5397f45b" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":84,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="ba0fb7119813b3e2710299e9f002095b25b43c42804a57bd593cb515e52aed5a" title="Topic: python" href="/topics/python" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> python </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":849,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="36c5b4d561ab1b4e404ed03f1da3b498c1faa6eaccbdb55dbac4be6d19f74079" title="Topic: design" href="/topics/design" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> design </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":2179,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="ec93dbe1b5e4f20e5e226dc3a21a2c1f9fad18da881a87ca80b8c52fc16b4a68" title="Topic: development" href="/topics/development" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> development </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":8898,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="b99a5beb5b1ce19c7da2bcac2f5b478afd6bb69ce75b5b5ddf14446560ea1d99" title="Topic: programming" href="/topics/programming" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> programming </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":8976,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="88e42298361892a52a300900a18c5d786e04593e3a84507ff9e4a13343a3537b" title="Topic: web" href="/topics/web" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> web </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9240,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="26e5c9d3d3a1e6c5440c8e0f25ab8f659fa90e723b6e8fe908706ad0764bb320" title="Topic: system" href="/topics/system" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> system </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":22034,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="1f91a710d6de2579581dcd1da49ae1cc71056440a8b31f3a9684f83069cfcbb2" title="Topic: design-patterns" href="/topics/design-patterns" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> design-patterns </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":22469,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="6e654d4d895a0163ccdb1018a142e1e799e4ac4d81560bd36e7788d4b6ae315c" title="Topic: interview" href="/topics/interview" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> interview </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":23514,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="441c6bf647f2aee52dd494a9b939b5d9b42ca82617af853f984a8ba892dab6c2" title="Topic: web-application" href="/topics/web-application" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> web-application </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":39330,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="94ac0031e5db5ae21de07159b68de70b989a2695b9840f162df84c22aae04da7" title="Topic: webapp" href="/topics/webapp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> webapp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":83319,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="edc472a6ffad7d0bbd5ca88a635ea9d67f12d5b80efb545a070037adaf4a857a" title="Topic: interview-practice" href="/topics/interview-practice" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> interview-practice </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":94583,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="8596266710ee4f886b8dfca69d57f7917df863ca019071a5074e0c34d7685f53" title="Topic: interview-questions" href="/topics/interview-questions" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> interview-questions </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":387026,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="98a193f08473a0cb1ffb8a0dc03545d286b67e512fa72efdb1929ed3152eec52" title="Topic: design-system" href="/topics/design-system" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> design-system </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-08-07T10:09:11Z" class="no-wrap">Aug 7, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #3572A5"></span> <span itemprop="programmingLanguage">Python</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_IMAGE","actor_id":null,"record_id":382496361,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="41f5d43256df9ed2618bca20d6f936df0521d27e656d958234e09fd6681c64d4" data-turbo="false" style="max-height:275px" href="/louislam/uptime-kuma" data-view-component="true" class="overflow-hidden flex-items-center rounded-top-2 Link color-border-muted border-bottom d-flex position-relative"> <img loading="lazy" src="https://repository-images.githubusercontent.com/382496361/f21b61f5-693a-4925-9f1f-fea237ade223" alt="uptime-kuma" class="d-block width-full" > </a> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":1336778,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="4149260aec05ae08e0b5de38095519b4704f5eb16f669922d3068ce8c4dfaec2" data-turbo="false" href="/louislam" data-view-component="true" class="Link"> louislam </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":382496361,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="51a4ed994fb7a5d6227f63deab2dff31efdc3462df3feeba2b38e11e58a58eac" data-turbo="false" href="/louislam/uptime-kuma" data-view-component="true" class="Link text-bold wb-break-word"> uptime-kuma </a> </h3> </div> <div class="d-flex flex-items-center"> <a href="/sponsors/louislam" aria-label="Sponsor @louislam" data-hydro-click="{"event_type":"sponsors.button_click","payload":{"button":"TOPIC_PAGE_SPONSOR","sponsorable_login":"louislam","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="5bd4b3a29d7394631ec2ad48a6041a49381d05037dc1e648d6209f472cbf193c" data-view-component="true" class="Button--secondary Button--small Button mr-2"> <span class="Button-content"> <span class="Button-label"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-heart icon-sponsor mr-1 v-align-middle color-fg-sponsors anim-pulse-in"> <path d="m8 14.25.345.666a.75.75 0 0 1-.69 0l-.008-.004-.018-.01a7.152 7.152 0 0 1-.31-.17 22.055 22.055 0 0 1-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.066 22.066 0 0 1-3.744 2.584l-.018.01-.006.003h-.002ZM4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.58 20.58 0 0 0 8 13.393a20.58 20.58 0 0 0 3.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.749.749 0 0 1-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5Z"></path> </svg> <span class="v-align-middle" > Sponsor </span></span> </span> </a> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Flouislam%2Fuptime-kuma" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":382496361,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="5f0b51e0e6b91bcb4e67fa8bc938c5f00355ed34a8efd524fbcf17cce92930a7" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="60194 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="60,194" data-view-component="true" class="Counter js-social-count">60.2k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-382496361" aria-current="true" href="/louislam/uptime-kuma" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":382496361,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="c211758b600373e675842a9651e375a9d860c679378874bcf57a0fd06b98e398" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-382496361" href="/louislam/uptime-kuma/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":382496361,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="f13d01f9542a959f6d8f7897aad8f650fd58ae38d8cd3042abb7bf6b076b0a92" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-382496361" href="/louislam/uptime-kuma/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":382496361,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="e5dab00fa3334e4e1719fea8a40cdd7fe1d419de8a4d3051e2c2972193a2728d" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >A fancy self-hosted monitoring tool</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":281,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="3982fd2e9ad5965556c050879b7ef661e4773c30bbb4a8637e5d03fdb4c08301" title="Topic: docker" href="/topics/docker" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> docker </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":8937,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="202c54e2fc8b30f58de376d17eb7d78a7f89ead8455ad667651adb5d48ab6615" title="Topic: monitor" href="/topics/monitor" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> monitor </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9172,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="eade479e7608cfbc5e42681a920a2e22ef6b3c6c246481f14f9faba379ff0d14" title="Topic: monitoring" href="/topics/monitoring" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> monitoring </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":12123,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="5b547360a6664c205ce28823bc31b80b20cbdfd665fd36adf52ae0da06a5a7e9" title="Topic: responsive" href="/topics/responsive" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> responsive </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":12438,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="70c6b8c75e5a20804e3d3e15b7d3dc5e292008ebd2beed9dc7f8d7528b64046e" title="Topic: single-page-app" href="/topics/single-page-app" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> single-page-app </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13060,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="f1ff9f94c56871a65b074f235cf1947c00bf148355871ee7245f55ef0a18721b" title="Topic: websocket" href="/topics/websocket" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> websocket </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13725,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="699d070fecdad0628f46c1856f70c3e9ba82abb6208b2ac1fa9fd1e46aed497f" title="Topic: socket-io" href="/topics/socket-io" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> socket-io </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":17598,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="52209c7655b87eda04088441e82b2706f69d105c491d15d8490779396192bb6b" title="Topic: selfhosted" href="/topics/selfhosted" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> selfhosted </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":22905,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="66471ab1d66b14ae3f443c9cd578c653b38c6bfc7986da77145601840b03d163" title="Topic: self-hosted" href="/topics/self-hosted" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> self-hosted </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":34836,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="5a722e4e3a7dfcc0b81b2d5aa02f77e197735398113e278fb539f44fb8e7a28d" title="Topic: uptime" href="/topics/uptime" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> uptime </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":39330,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="94ac0031e5db5ae21de07159b68de70b989a2695b9840f162df84c22aae04da7" title="Topic: webapp" href="/topics/webapp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> webapp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":1374619,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="51afb289526b922995f3a1b429e46ab3c598705170b9d5c57fcb8b086d8cc519" title="Topic: uptime-monitoring" href="/topics/uptime-monitoring" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> uptime-monitoring </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-11-19T00:29:35Z" class="no-wrap">Nov 19, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #f1e05a"></span> <span itemprop="programmingLanguage">JavaScript</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":1521451,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="97b00d6af31b20411ec6c0f3d681e2b8d1a569fde2b4482ae47ddb03c278443e" data-turbo="false" href="/tipsy" data-view-component="true" class="Link"> tipsy </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":113752225,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="b3f03cc24c7cfd0c7cb5cc101df675a8eca2e01a8c8aa20015c106db53646dd7" data-turbo="false" href="/tipsy/profile-summary-for-github" data-view-component="true" class="Link text-bold wb-break-word"> profile-summary-for-github </a> </h3> </div> <div class="d-flex flex-items-center"> <a href="/sponsors/tipsy" aria-label="Sponsor @tipsy" data-hydro-click="{"event_type":"sponsors.button_click","payload":{"button":"TOPIC_PAGE_SPONSOR","sponsorable_login":"tipsy","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="29d7bc24ff9a0c54e4dcfa84131c213704cc259582bd3aae98e33bc151bb99fc" data-view-component="true" class="Button--secondary Button--small Button mr-2"> <span class="Button-content"> <span class="Button-label"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-heart icon-sponsor mr-1 v-align-middle color-fg-sponsors anim-pulse-in"> <path d="m8 14.25.345.666a.75.75 0 0 1-.69 0l-.008-.004-.018-.01a7.152 7.152 0 0 1-.31-.17 22.055 22.055 0 0 1-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.066 22.066 0 0 1-3.744 2.584l-.018.01-.006.003h-.002ZM4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.58 20.58 0 0 0 8 13.393a20.58 20.58 0 0 0 3.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.749.749 0 0 1-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5Z"></path> </svg> <span class="v-align-middle" > Sponsor </span></span> </span> </a> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Ftipsy%2Fprofile-summary-for-github" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":113752225,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="9ae2a7fa8194dc22a383f6c198aba883cd5c105e6ff714e447216dafd5138a4c" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="19850 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="19,850" data-view-component="true" class="Counter js-social-count">19.9k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-113752225" aria-current="true" href="/tipsy/profile-summary-for-github" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":113752225,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="e5b754dae9e45e29b35185ad0bca704432f3f5e3eb17dab847cc2c5885665791" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-113752225" href="/tipsy/profile-summary-for-github/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":113752225,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="2c878c340a7547ba2a6307a08746cfff20c298faf0aeb72d3a8e8137ce02d70e" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-113752225" href="/tipsy/profile-summary-for-github/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":113752225,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="ca41e04f94278b676588fc9b1a2b8892ef556870f7b5985d27250490320888d5" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >Tool for visualizing GitHub profiles</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":68,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="8ebdda34a69a01eb070cb3d2eb34704292f6481a2c4cdc9aa2e3beba7509781c" title="Topic: kotlin" href="/topics/kotlin" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> kotlin </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":447,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="01616b3b2d643e99ecfeda3dcd8a8cbcd7a823d1f28c421a4444a61108c4c210" title="Topic: github-api" href="/topics/github-api" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> github-api </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":39330,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="94ac0031e5db5ae21de07159b68de70b989a2695b9840f162df84c22aae04da7" title="Topic: webapp" href="/topics/webapp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> webapp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":549635,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="0a3e18ed88c646b4ff98329f6b112c9752016ea9f24756f132038ecdaa582cd8" title="Topic: javalin" href="/topics/javalin" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> javalin </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-03-01T01:28:41Z" class="no-wrap">Mar 1, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #41b883"></span> <span itemprop="programmingLanguage">Vue</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_IMAGE","actor_id":null,"record_id":110216866,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="01e2b2d3aa599cba318f4c8713ffe036122f79c644ea4dbc2ad533ca1b370b89" data-turbo="false" style="max-height:275px" href="/dailydotdev/daily" data-view-component="true" class="overflow-hidden flex-items-center rounded-top-2 Link color-border-muted border-bottom d-flex position-relative"> <img loading="lazy" src="https://repository-images.githubusercontent.com/110216866/2702e938-5fe9-468c-88f9-6863c47bd8dc" alt="daily" class="d-block width-full" > </a> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":41463883,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="c1146170f415283cf27971d66880cf0d2c903700e567576c2a12107f3cc142c0" data-turbo="false" href="/dailydotdev" data-view-component="true" class="Link"> dailydotdev </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":110216866,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="0a459dc1b9ca1b02a9ab45aa4f245e90c64bf2a45603c673ad465aa06facb19b" data-turbo="false" href="/dailydotdev/daily" data-view-component="true" class="Link text-bold wb-break-word"> daily </a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fdailydotdev%2Fdaily" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":110216866,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="15a72733030c485d44a0b9331b69b79b10b0d5510a3697436c242cb0919104e6" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="18679 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="18,679" data-view-component="true" class="Counter js-social-count">18.7k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-110216866" aria-current="true" href="/dailydotdev/daily" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":110216866,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="f5be7fcb8b952e15ee352c1e48ac7f3abc7573e438689af9580298784f54b0da" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-110216866" href="/dailydotdev/daily/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":110216866,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="210503c507f3fbe16542b06e6b78af334d09c3b767879e081810da23d4fd9198" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-110216866" href="/dailydotdev/daily/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":110216866,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="a4d900d57f52c78cf2978c14462213646d698bfe10befd4e8e68eadc0592331d" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab-110216866" href="/dailydotdev/daily/discussions" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_DISCUSSIONS","click_visual_representation":"DISCUSSIONS_TAB","actor_id":null,"record_id":110216866,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="00454d84ae9c9ea024b5c385d29105611a03ccf29ab6f8a49c501701721aa046" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion color-fg-muted"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> Discussions </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >daily.dev is a professional network for developers to learn, collaborate, and grow together 👩🏽💻 👨💻</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":121,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="4ba55f0aaa09eb13a899c956d8a3fa3dd77d328e3001caca6d1e38678d33a71c" title="Topic: chrome-extension" href="/topics/chrome-extension" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> chrome-extension </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":446,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="a1126eb72e47484eb51915ac750f62a96b4d42084ad042dbf9037f37b958c810" title="Topic: search-engine" href="/topics/search-engine" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> search-engine </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":453,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="1fb8bb4f940a99f83b88b82a5e08173bdd34544a7714612e4ef334b2924a7b5e" title="Topic: community" href="/topics/community" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> community </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9019,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="932a526ae4ad981b52c7b33eb3e329c260eaef88c9e2fe817438e38b3ff16da2" title="Topic: pwa" href="/topics/pwa" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> pwa </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9116,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="e076fd49f3850ca8da70f0a57f5946b2a82738ca93294ed42d9d3b60e60897c4" title="Topic: ai" href="/topics/ai" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> ai </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":11985,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="34ce86d453de4e8206703cc0c0f72d14a0f8364dad1a4399fad692eec1550836" title="Topic: firefox-addon" href="/topics/firefox-addon" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> firefox-addon </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":12573,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="d9314cb5cc46cbdb74192c41d4f7be1b5d91e4adbd49d5fa515eb73683d4393d" title="Topic: social-network" href="/topics/social-network" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> social-network </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":39330,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="94ac0031e5db5ae21de07159b68de70b989a2695b9840f162df84c22aae04da7" title="Topic: webapp" href="/topics/webapp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> webapp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":45326,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="271982bae5a1a878cc22bfd01e00ff04a614740ce16b2c8376be0e3f95c7d656" title="Topic: developer-tools" href="/topics/developer-tools" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> developer-tools </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":128102,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="c62845c8b4902cc693fea8eb86aa669669ff35f7753d44b76f50b6dac62e5420" title="Topic: developer-portal" href="/topics/developer-portal" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> developer-portal </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":224336,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="209705f01feb348396a2ec23e560197c65b60e6378324ade88fec8434524556f" title="Topic: edge-extension" href="/topics/edge-extension" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> edge-extension </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":1354821,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="f749149126d9c3d93b0110f66fb676c889724a88a7bbdf7865ca182baea4d4d6" title="Topic: professional-networking" href="/topics/professional-networking" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> professional-networking </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-11-08T01:25:20Z" class="no-wrap">Nov 8, 2024</relative-time> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":152056268,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="511a08a51a542415260ed81b7c70edb440dc201e8ebd77c2b521a7aec2434a6d" data-turbo="false" href="/imputnet" data-view-component="true" class="Link"> imputnet </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":511987144,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="1dfc40679a70a8490e4af490fa10478510c19f391bcc47831fd5295ebf1159f4" data-turbo="false" href="/imputnet/cobalt" data-view-component="true" class="Link text-bold wb-break-word"> cobalt </a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fimputnet%2Fcobalt" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":511987144,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="55c66c87772d1f763a46cfccdf190952c632417991ca468a4418a9391cc025d5" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="17329 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="17,329" data-view-component="true" class="Counter js-social-count">17.3k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-511987144" aria-current="true" href="/imputnet/cobalt" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":511987144,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="c24e8069d59aa6ab437fc9a12832847f50efa67a15d6c825513bc23feaa675d7" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-511987144" href="/imputnet/cobalt/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":511987144,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="f6815fa620b01607a283b165fced61183f907886b7ea68ea68b66ef229a68026" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-511987144" href="/imputnet/cobalt/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":511987144,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="dfa5eeaa5b3ae22b80ff01f2011062a2c6c510272008df2538cc04315679a0dc" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab-511987144" href="/imputnet/cobalt/discussions" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_DISCUSSIONS","click_visual_representation":"DISCUSSIONS_TAB","actor_id":null,"record_id":511987144,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="6879a8bb092bd50c91cd584cc8aca584e8388d6ff666fa9623c730573b7f8c94" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion color-fg-muted"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> Discussions </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >best way to save what you love</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":98,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="c1ce363e2e284614c0bb9e00c1107e35bdebf28b7a782363d120edea9355fc5e" title="Topic: music" href="/topics/music" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> music </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":805,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="e5ce3a9f81bdc3bfe97934cc1340b6188f70774a49eef9de940c46b70e1ab4ea" title="Topic: instagram" href="/topics/instagram" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> instagram </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":2425,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="d4a2649c2691d2df7be6ca5ccefdfe045466b86d69a69bc59ad3225b0b5f417c" title="Topic: downloader" href="/topics/downloader" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> downloader </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":2444,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="73fd9609dac96ecf418c5bf5a837f5278c7a1feaec8d291a0f97dba0ef77b3a5" title="Topic: youtube" href="/topics/youtube" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> youtube </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":2469,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="654cce710449c8b31d3c49f35b22552142ee02ddb3668dbf045c941b7d68ce46" title="Topic: vimeo" href="/topics/vimeo" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> vimeo </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":4906,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="1ae75b8f1a8f2a0ffaa652b497aa632b85127d8fc5be6be9a1eeda9871f2f326" title="Topic: social-media" href="/topics/social-media" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> social-media </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":7672,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="903a5f8c4e8a09001fd24a51b02cb0ba8cecf726c2b671703428389570509451" title="Topic: twitter" href="/topics/twitter" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> twitter </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9031,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="e8710445bbc5f99556a91bc8fa30f7180a339abf9d7178e1e395a43f65f2dad8" title="Topic: video" href="/topics/video" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> video </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9094,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="efc0a878c61728b1996a04ba74c5b2fa99eef25e8771f6280308d1a9d5734370" title="Topic: reddit" href="/topics/reddit" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> reddit </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13615,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="037f9475246f735d6616554c324715a1924d8b16fd4895be8e436d92cf37edbf" title="Topic: soundcloud" href="/topics/soundcloud" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> soundcloud </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":17795,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="fb27904d4b279a8915731942f0902d3c69ca9b3b8a57b74a1fa5de9fac017177" title="Topic: vk" href="/topics/vk" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> vk </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":21690,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="74832d4564ca7e845ad1a8f5367f28812656985442c2c15a67340f313e3feaf1" title="Topic: collaboration" href="/topics/collaboration" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> collaboration </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":39330,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="94ac0031e5db5ae21de07159b68de70b989a2695b9840f162df84c22aae04da7" title="Topic: webapp" href="/topics/webapp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> webapp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":442290,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="df030a5819e21d3a846631ba3e759487989a2780da5fd3419cdf860cb65bd584" title="Topic: youtube-music" href="/topics/youtube-music" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> youtube-music </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":799996,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="c55bd4277e79d6a26226ad0c47854750addacef63d3d7fdf1079d9a7f4dde97f" title="Topic: tiktok" href="/topics/tiktok" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> tiktok </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":1625120,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="2e48203f87a1cd406d277c2d6a8a7fafc4bca419cc6e5d09fe9b23f604e9ee6c" title="Topic: instagram-reels" href="/topics/instagram-reels" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> instagram-reels </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-11-23T18:23:12Z" class="no-wrap">Nov 23, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #ff3e00"></span> <span itemprop="programmingLanguage">Svelte</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":43011,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="b63d5c89004a1e3bdb8eb571faf24c371b639862bba9c6593a2c3b55de6d440e" data-turbo="false" href="/dexteryy" data-view-component="true" class="Link"> dexteryy </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":93956851,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="b1019767b40373b2d0d6d3d2cd1e25aa03ce55b4f2a4cda029561cf1d4f1e874" data-turbo="false" href="/dexteryy/spellbook-of-modern-webdev" data-view-component="true" class="Link text-bold wb-break-word"> spellbook-of-modern-webdev </a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fdexteryy%2Fspellbook-of-modern-webdev" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":93956851,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="1ce6aa637df4c1dfe302c0a2c4c5f260cf9e04b43b8115551ec4f783aed193ce" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="17184 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="17,184" data-view-component="true" class="Counter js-social-count">17.2k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-93956851" aria-current="true" href="/dexteryy/spellbook-of-modern-webdev" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":93956851,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="37f0039db6feef6f36e2657a5096428f971b2741bc57f8a59bee245397f7ad88" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-93956851" href="/dexteryy/spellbook-of-modern-webdev/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":93956851,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="a747160b867144e591ba4f0f4b636a14e328b63eb14fd685141abd9cd3ba19c9" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-93956851" href="/dexteryy/spellbook-of-modern-webdev/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":93956851,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="78f85700223137277fd288540494e00090285e513a10f1436f33781ecb48f350" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >A Big Picture, Thesaurus, and Taxonomy of Modern JavaScript Web Development</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":39,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="5f1bf6f7b3e0b1fffacf7ad32647004277ea43c2fc7740c7d3ced6947886f9ca" title="Topic: nodejs" href="/topics/nodejs" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> nodejs </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":40,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="b889d975800398d9c719d7bffeea8faa12e96e4a711119397356c96675d5d98e" title="Topic: javascript" href="/topics/javascript" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> javascript </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":365,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="77820bfccb8b4b5b653ea5f2c24c6450109e8b5f7afa9b19cf5b33d7d644837e" title="Topic: learning" href="/topics/learning" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> learning </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":2509,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="28ff9f205f429bff3d08ebb5243fd90962075bafc6d97a763e415acd5bca204b" title="Topic: awesome" href="/topics/awesome" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> awesome </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9045,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="5529afe9d7628975868c227748903a96367f25335b0a4fe8768485f1fac6b44f" title="Topic: html5" href="/topics/html5" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> html5 </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":12010,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="a68dfdbb3144bcaaea2e672b30d9a26ebc528fe31fd51cca128a4173d0c7a769" title="Topic: libraries" href="/topics/libraries" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> libraries </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":12574,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="ffa7a347d11a0218dcab4623b9ace1637b4d8f94dc0fdc1a299181784d8c04f4" title="Topic: css3" href="/topics/css3" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> css3 </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":39330,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="94ac0031e5db5ae21de07159b68de70b989a2695b9840f162df84c22aae04da7" title="Topic: webapp" href="/topics/webapp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> webapp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":135512,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="c8b60d809ed21d68b453f887e80a5892d874f63790e45607a7bffa11f4406d06" title="Topic: webplatform" href="/topics/webplatform" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> webplatform </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":224583,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="ed387abc1a39e2879f66b1e4d368dce03eea9f89277492a1051f330605a3319a" title="Topic: universal-javascript" href="/topics/universal-javascript" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> universal-javascript </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":477943,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="032631825d91724aa2c4d4f09cdc56471c13013c30ec6b9fed9f419111bcbd14" title="Topic: isomorphic-javascript" href="/topics/isomorphic-javascript" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> isomorphic-javascript </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2023-12-18T07:53:58Z" class="no-wrap">Dec 18, 2023</relative-time> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_IMAGE","actor_id":null,"record_id":708775091,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="0af8fd445df50962fe057640171ea37f8489ba6e15899773b0e851d9f704532a" data-turbo="false" style="max-height:275px" href="/louislam/dockge" data-view-component="true" class="overflow-hidden flex-items-center rounded-top-2 Link color-border-muted border-bottom d-flex position-relative"> <img loading="lazy" src="https://repository-images.githubusercontent.com/708775091/65893b2a-e134-4797-8b37-a49bc4d7ad98" alt="dockge" class="d-block width-full" > </a> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":1336778,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="4149260aec05ae08e0b5de38095519b4704f5eb16f669922d3068ce8c4dfaec2" data-turbo="false" href="/louislam" data-view-component="true" class="Link"> louislam </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":708775091,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="74199b8669a2a6d982e054177e4032bc1fd465afd21e592f645546080bf2f35f" data-turbo="false" href="/louislam/dockge" data-view-component="true" class="Link text-bold wb-break-word"> dockge </a> </h3> </div> <div class="d-flex flex-items-center"> <a href="/sponsors/louislam" aria-label="Sponsor @louislam" data-hydro-click="{"event_type":"sponsors.button_click","payload":{"button":"TOPIC_PAGE_SPONSOR","sponsorable_login":"louislam","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="5bd4b3a29d7394631ec2ad48a6041a49381d05037dc1e648d6209f472cbf193c" data-view-component="true" class="Button--secondary Button--small Button mr-2"> <span class="Button-content"> <span class="Button-label"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-heart icon-sponsor mr-1 v-align-middle color-fg-sponsors anim-pulse-in"> <path d="m8 14.25.345.666a.75.75 0 0 1-.69 0l-.008-.004-.018-.01a7.152 7.152 0 0 1-.31-.17 22.055 22.055 0 0 1-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.066 22.066 0 0 1-3.744 2.584l-.018.01-.006.003h-.002ZM4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.58 20.58 0 0 0 8 13.393a20.58 20.58 0 0 0 3.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.749.749 0 0 1-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5Z"></path> </svg> <span class="v-align-middle" > Sponsor </span></span> </span> </a> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Flouislam%2Fdockge" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":708775091,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="7874bd02289773f805a4c6d7b27acf2a3e3cc879ec8223f4a6e526b3a0dd0b7d" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="13140 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="13,140" data-view-component="true" class="Counter js-social-count">13.1k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-708775091" aria-current="true" href="/louislam/dockge" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":708775091,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="34e8ca32fb26ceaa42f21a33e973d6b83415d687038832b96d9c25d0e1a437aa" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-708775091" href="/louislam/dockge/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":708775091,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="81aa018c04d1a073530ec56610ffe035220fb68034c31db3e5b244001364121b" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-708775091" href="/louislam/dockge/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":708775091,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="f194364e3f3d4609d14ba29d47d1bb7cfc30457de4210df26e541d006224c8fe" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab-708775091" href="/louislam/dockge/discussions" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_DISCUSSIONS","click_visual_representation":"DISCUSSIONS_TAB","actor_id":null,"record_id":708775091,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="65b5daebdb8f4874ef89dbaf8d848bf82c287bbf7fc97cc206f4709100a8ad88" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion color-fg-muted"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> Discussions </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >A fancy, easy-to-use and reactive self-hosted docker compose.yaml stack-oriented manager</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":281,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="3982fd2e9ad5965556c050879b7ef661e4773c30bbb4a8637e5d03fdb4c08301" title="Topic: docker" href="/topics/docker" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> docker </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":12123,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="5b547360a6664c205ce28823bc31b80b20cbdfd665fd36adf52ae0da06a5a7e9" title="Topic: responsive" href="/topics/responsive" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> responsive </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":12230,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="1b03b9ff50698cb60a200af3725bd19a06c4730c4c9d5a7a8553719382f34bf9" title="Topic: docker-compose" href="/topics/docker-compose" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> docker-compose </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":12359,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="5121e6cf30323fd9b8aebdeacf9dc539c2fe3f40f1ca9e11403b76824493625f" title="Topic: docker-deployment" href="/topics/docker-deployment" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> docker-deployment </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":12438,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="70c6b8c75e5a20804e3d3e15b7d3dc5e292008ebd2beed9dc7f8d7528b64046e" title="Topic: single-page-app" href="/topics/single-page-app" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> single-page-app </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13060,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="f1ff9f94c56871a65b074f235cf1947c00bf148355871ee7245f55ef0a18721b" title="Topic: websocket" href="/topics/websocket" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> websocket </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13725,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="699d070fecdad0628f46c1856f70c3e9ba82abb6208b2ac1fa9fd1e46aed497f" title="Topic: socket-io" href="/topics/socket-io" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> socket-io </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":17598,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="52209c7655b87eda04088441e82b2706f69d105c491d15d8490779396192bb6b" title="Topic: selfhosted" href="/topics/selfhosted" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> selfhosted </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":22905,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="66471ab1d66b14ae3f443c9cd578c653b38c6bfc7986da77145601840b03d163" title="Topic: self-hosted" href="/topics/self-hosted" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> self-hosted </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":39330,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="94ac0031e5db5ae21de07159b68de70b989a2695b9840f162df84c22aae04da7" title="Topic: webapp" href="/topics/webapp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> webapp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":138577,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="bcc8e393b092197f16c25874ec784ac49d7120312d3d0a5b9fc7df995e8b27fc" title="Topic: docker-stack" href="/topics/docker-stack" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> docker-stack </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":313872,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="3d039370bc61e1dde7e5a6a1e282dba533271316d62a7b31890fbb6c31bddae0" title="Topic: docker-ui" href="/topics/docker-ui" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> docker-ui </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":590145,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="7dbb17def3280ed96607ce770215c4f15c897e5e88c10b8bc6626f7ee4c0100c" title="Topic: docker-stack-deploy" href="/topics/docker-stack-deploy" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> docker-stack-deploy </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-10-14T06:20:34Z" class="no-wrap">Oct 14, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #3178c6"></span> <span itemprop="programmingLanguage">TypeScript</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":2843826,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="4c6ea4951c8fcbd087432f2cc929a510161122717aa9b8f6d500305cc4fa2879" data-turbo="false" href="/zauberzeug" data-view-component="true" class="Link"> zauberzeug </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":365250183,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="8ddf8cb4c26faedd1b3e9d67a1d6a894091e51d04ac0b4879967ffefc102aacc" data-turbo="false" href="/zauberzeug/nicegui" data-view-component="true" class="Link text-bold wb-break-word"> nicegui </a> </h3> </div> <div class="d-flex flex-items-center"> <a href="/sponsors/zauberzeug" aria-label="Sponsor @zauberzeug" data-hydro-click="{"event_type":"sponsors.button_click","payload":{"button":"TOPIC_PAGE_SPONSOR","sponsorable_login":"zauberzeug","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="224fcd56a73319a6658746baf348abb558b887ca6fefe54bbf6061ca89a92f5b" data-view-component="true" class="Button--secondary Button--small Button mr-2"> <span class="Button-content"> <span class="Button-label"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-heart icon-sponsor mr-1 v-align-middle color-fg-sponsors anim-pulse-in"> <path d="m8 14.25.345.666a.75.75 0 0 1-.69 0l-.008-.004-.018-.01a7.152 7.152 0 0 1-.31-.17 22.055 22.055 0 0 1-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.066 22.066 0 0 1-3.744 2.584l-.018.01-.006.003h-.002ZM4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.58 20.58 0 0 0 8 13.393a20.58 20.58 0 0 0 3.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.749.749 0 0 1-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5Z"></path> </svg> <span class="v-align-middle" > Sponsor </span></span> </span> </a> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fzauberzeug%2Fnicegui" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":365250183,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="f11063826c87080b280beb40c98bf298976f9989412c872a441e9f32ab6583d3" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="10165 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="10,165" data-view-component="true" class="Counter js-social-count">10.2k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-365250183" aria-current="true" href="/zauberzeug/nicegui" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":365250183,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="c96bd70886452bbd6ecdb2df876c726a8b107b03be9e3299a5244228efd9a52c" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-365250183" href="/zauberzeug/nicegui/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":365250183,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="c5812874a19507bd95389e3f8aafb43f90f0486629f9665fa13af548b6fa16ed" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-365250183" href="/zauberzeug/nicegui/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":365250183,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="b18a9d26a1c0419433d910875d3d10c2377b74660c8f769ceb81891d53d97d46" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab-365250183" href="/zauberzeug/nicegui/discussions" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_DISCUSSIONS","click_visual_representation":"DISCUSSIONS_TAB","actor_id":null,"record_id":365250183,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="1afbd645ea874efc8813529844a56043d32117dcf624002095e1416a7cef7e7f" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion color-fg-muted"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> Discussions </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >Create web-based user interfaces with Python. The nice way.</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":84,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="ba0fb7119813b3e2710299e9f002095b25b43c42804a57bd593cb515e52aed5a" title="Topic: python" href="/topics/python" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> python </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":736,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="1e920767462f9dcc07faf2106f1239cf4814d0b90aa0b129e7db8299fea98c74" title="Topic: website" href="/topics/website" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> website </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":2298,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="74510e0e94953cc7a9e41529e9f3333978223c27d31a4a8a9ae30e15f9d3417a" title="Topic: gui" href="/topics/gui" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> gui </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9610,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="966bd89bebb06aec674932f30a12bc16335ea82f2daf5b4eb8b713a7cea9b8e9" title="Topic: frontend" href="/topics/frontend" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> frontend </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9804,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="a0a1f8f93fb71ad2c5a15741605977000bd92dd6e504648db8832ceff1b170aa" title="Topic: interface" href="/topics/interface" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> interface </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9913,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="c31bde6e6de6065184376b9a4ce3ed1476d7f9c1fe4ce1e5e59758c043bfd768" title="Topic: robotics" href="/topics/robotics" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> robotics </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":12118,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="57bbdb03f87b776848985ce6176d396cf1de940d5f06208a547c4facb88210f7" title="Topic: toolkit" href="/topics/toolkit" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> toolkit </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13666,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="5ba101370dda845ebd730ad4c7479ad132f78f0aa4e8b60ab3580cb09355b213" title="Topic: scripting" href="/topics/scripting" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> scripting </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":39330,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="94ac0031e5db5ae21de07159b68de70b989a2695b9840f162df84c22aae04da7" title="Topic: webapp" href="/topics/webapp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> webapp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":118388,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="b9e1018cd82c6a5ae9cf5be5fbe8fd0a93524eaa605a56db1f4c764c074d69fb" title="Topic: interaction" href="/topics/interaction" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> interaction </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":224799,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="98f70399e6b1e0ce1b786b781cb7f9b8c0c0be79eae34af715fd61d9bdfdda01" title="Topic: interfaces" href="/topics/interfaces" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> interfaces </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-11-23T11:27:03Z" class="no-wrap">Nov 23, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #3572A5"></span> <span itemprop="programmingLanguage">Python</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":7461564,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="41d47bae70fbf16153a8cf8485fb2c14b69aeb90a808584469ec726c2315c6a6" data-turbo="false" href="/H-M-H" data-view-component="true" class="Link"> H-M-H </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":260432296,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="f84405d741890d455076bddd02ffeeb91467ebe925e6db068f30444557f007f3" data-turbo="false" href="/H-M-H/Weylus" data-view-component="true" class="Link text-bold wb-break-word"> Weylus </a> </h3> </div> <div class="d-flex flex-items-center"> <a href="/sponsors/H-M-H" aria-label="Sponsor @H-M-H" data-hydro-click="{"event_type":"sponsors.button_click","payload":{"button":"TOPIC_PAGE_SPONSOR","sponsorable_login":"H-M-H","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="2a7d82d17f3097b16275caad420dc3ed13131a50c6d8c4a6ca4542fd8f38b686" data-view-component="true" class="Button--secondary Button--small Button mr-2"> <span class="Button-content"> <span class="Button-label"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-heart icon-sponsor mr-1 v-align-middle color-fg-sponsors anim-pulse-in"> <path d="m8 14.25.345.666a.75.75 0 0 1-.69 0l-.008-.004-.018-.01a7.152 7.152 0 0 1-.31-.17 22.055 22.055 0 0 1-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.066 22.066 0 0 1-3.744 2.584l-.018.01-.006.003h-.002ZM4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.58 20.58 0 0 0 8 13.393a20.58 20.58 0 0 0 3.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.749.749 0 0 1-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5Z"></path> </svg> <span class="v-align-middle" > Sponsor </span></span> </span> </a> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2FH-M-H%2FWeylus" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":260432296,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="a79f94d2eed75c4f39d9159851c063ee3ac0282f4489586b476e1adcd866304b" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="7066 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="7,066" data-view-component="true" class="Counter js-social-count">7.1k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-260432296" aria-current="true" href="/H-M-H/Weylus" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":260432296,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="465d0f9ac9163e660dc1445418311ec7a9028009a29e51f38f0034e4ca90569b" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-260432296" href="/H-M-H/Weylus/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":260432296,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="fedbfb4ef4f70989cf779ceeca4225964f9c3ad4cd7e98c2282d165596eb0696" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-260432296" href="/H-M-H/Weylus/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":260432296,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="1c0ab94f0604eb957bed90ec42e1ba8978715c2b61c2c457a5cde8349295ec70" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab-260432296" href="/H-M-H/Weylus/discussions" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_DISCUSSIONS","click_visual_representation":"DISCUSSIONS_TAB","actor_id":null,"record_id":260432296,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="3019253ef920ef1e549b23bb618101aec41d03e4bc94e5ab3b9db6b3020f882a" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion color-fg-muted"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> Discussions </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >Use your tablet as graphic tablet/touch screen on your computer.</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":67,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="6bb9a47aec1ccc31c9ef0a27362fdc6479d983ec10a8c0607d04dc43e1ba5114" title="Topic: android" href="/topics/android" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> android </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":200,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="0740a82e19ebb656fc00f56b5907e958a96972264225b37af37c5337925b44db" title="Topic: linux" href="/topics/linux" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> linux </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":300,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="5f62a14d368f0a5496e4c7bca4893e88f1b819feca5f46c696f95684b811861c" title="Topic: rust" href="/topics/rust" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> rust </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":769,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="c3096d8f1318128af371c24bbf400835ecba31d729915525232e89cdb774122a" title="Topic: app" href="/topics/app" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> app </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":7606,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="e0f3826c004c4a88aaf2b06a9655ad9c8c762ad242770b6ba10ed803a9bfccc3" title="Topic: browser" href="/topics/browser" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> browser </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9450,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="83704dd0eef6ac8fb433042936c2280539285aadec4d487015b5c1eacc1580b8" title="Topic: ffmpeg" href="/topics/ffmpeg" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> ffmpeg </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":14266,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="662d921873caebfcce108f4cbef3b5ab547b0484ca9ae22cd1e415a5fc2b31df" title="Topic: stylus" href="/topics/stylus" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> stylus </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":20581,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="a12b4e726d67962a87f87a0842e543d68906e48fc6feff39a58dba75f8c1c070" title="Topic: x11" href="/topics/x11" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> x11 </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":21081,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="320c62e9f0e4e7ff0f2423201b54dd68b4d0b8d4901faebd2f9cfbddbf78328b" title="Topic: tablet" href="/topics/tablet" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> tablet </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":22503,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="5868777cc95cccc1c23787e1dd8b23397de3921cfb0069a0fa900cad2fb761e8" title="Topic: android-application" href="/topics/android-application" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> android-application </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":39330,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="94ac0031e5db5ae21de07159b68de70b989a2695b9840f162df84c22aae04da7" title="Topic: webapp" href="/topics/webapp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> webapp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":84895,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="624050d03db09ea05fc2183a5088b571ff21bc5d43f0e822a0715a3087bb55f9" title="Topic: remote-desktop" href="/topics/remote-desktop" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> remote-desktop </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":163337,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="ea9683247a739c1a41cb62f2bb3e024463704da2f1f3c4af4838321e778bfeb4" title="Topic: wayland" href="/topics/wayland" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> wayland </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":189253,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="c7a4ab8598fd2a534b99a348fbc4fb0dc4ee7a6e074acf7e70344ddf9bdbb66a" title="Topic: multi-touch" href="/topics/multi-touch" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> multi-touch </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":189639,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="13a5d60823348576f37d04996b296cc4dbd38822a1657ecf248755ee60f09d25" title="Topic: hardware-acceleration" href="/topics/hardware-acceleration" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> hardware-acceleration </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":224477,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="221c96d91c402c6926d49e6bec9b38492b4daaca2f15d63092e5655e3dd8d4a9" title="Topic: touch-screen" href="/topics/touch-screen" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> touch-screen </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":251567,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="ced99ae3163b3e8b3849dd3f2c60872da5cc42873f5479f1d95743a1e348711d" title="Topic: uinput" href="/topics/uinput" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> uinput </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":338496,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="95051ebfc3df4133a65f1c82e2e5883e6f440300dd8b1f9e7c502a908fd204a6" title="Topic: screen-mirroring" href="/topics/screen-mirroring" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> screen-mirroring </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":772023,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="182647bbd69559568efc40e428c9ad8196a2dbbc7184c0252c5d92dde285c768" title="Topic: xdg-desktop-portal" href="/topics/xdg-desktop-portal" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> xdg-desktop-portal </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":1026719,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="2d4bbd26ac9026947dd83f10fec8802f29e04a46f42a5d8188ca7d426df5371a" title="Topic: ipados" href="/topics/ipados" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> ipados </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-11-23T00:09:51Z" class="no-wrap">Nov 23, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #dea584"></span> <span itemprop="programmingLanguage">Rust</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":393515,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="82bd18e045f7b8e717550c7ce92726c57980b156d6d5b99328a508f9d3807eef" data-turbo="false" href="/jagenjo" data-view-component="true" class="Link"> jagenjo </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":40006776,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="62b320e58c03b8ccee72e028b7a0104c1564a995965e70cf27de4d37d8f5c5df" data-turbo="false" href="/jagenjo/webglstudio.js" data-view-component="true" class="Link text-bold wb-break-word"> webglstudio.js </a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fjagenjo%2Fwebglstudio.js" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":40006776,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="8958195ef35234b02a971c7af35ebd1011aa9fec5eca3d974f5572fe20023b87" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="5232 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="5,232" data-view-component="true" class="Counter js-social-count">5.2k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-40006776" aria-current="true" href="/jagenjo/webglstudio.js" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":40006776,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="c20c7cbeab35bd90b19950bd865c5b7f0cc403659ef44c6cbb186b2d478a99a2" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-40006776" href="/jagenjo/webglstudio.js/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":40006776,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="dda06c32dd60ee60c88064102afcecadbedbcf7c6788aff3f3cf2070ddde7b27" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-40006776" href="/jagenjo/webglstudio.js/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":40006776,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="b2756ff9efa79bb80614ced16f3f5c199433c05ef09e3c16836072b6d9c36757" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >A full open source 3D graphics editor in the browser, with scene editor, coding pad, graph editor, virtual file system, and many features more.</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":197,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="bdef7603aa728352a8139f13d1b6a8fac4a0d5cc36f41bca022df2978d53884f" title="Topic: editor" href="/topics/editor" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> editor </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":2119,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="412e44767eaae4c6a16d7dfec7f8303c2b6d9d023aa39c4dcb4e618f01faf108" title="Topic: webgl" href="/topics/webgl" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> webgl </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":12202,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="1f9d9555647a372d7dfe348b7cb9c9623d8e1d8f0343a3f834bd3d4b37488c6a" title="Topic: shaders" href="/topics/shaders" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> shaders </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13080,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="49fb8968620b8c78f311b128f1b19755dcaac6d5345d2365ca11e4bb300493c6" title="Topic: rendering" href="/topics/rendering" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> rendering </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":39330,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="94ac0031e5db5ae21de07159b68de70b989a2695b9840f162df84c22aae04da7" title="Topic: webapp" href="/topics/webapp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> webapp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":60841,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="251a631eb7cff8ce9460980753fdc3b10c0e58dd45ab44eddbff1707d5c879ae" title="Topic: graph-editor" href="/topics/graph-editor" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> graph-editor </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":118767,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="78d656825be3b391df55250e72a390692410e867cfe7e7f0d7990e56709de897" title="Topic: webtool" href="/topics/webtool" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> webtool </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":163363,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="5067548dfdf2fc265c1bd14339fc7dabde790444ffa289274f94dac882e2f2d4" title="Topic: scene-graph" href="/topics/scene-graph" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> scene-graph </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":238400,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="0142c1e976d61cf735b0d9589ca84965edf8104278a2bf7771c92c9f70bf2c34" title="Topic: 3d" href="/topics/3d" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> 3d </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2020-08-03T13:01:21Z" class="no-wrap">Aug 3, 2020</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #f1e05a"></span> <span itemprop="programmingLanguage">JavaScript</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":2715854,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="3a83b9c7b5c8bc0e52d0eee53f70e7cef9ef0d55624afc6aec519bc77f8cf177" data-turbo="false" href="/miguelgrinberg" data-view-component="true" class="Link"> miguelgrinberg </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":7200116,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="b1c308ed6703a616e8d15d922bfe9cff78d6b3fb354e89a251ecc5b7f37d4d87" data-turbo="false" href="/miguelgrinberg/microblog" data-view-component="true" class="Link text-bold wb-break-word"> microblog </a> </h3> </div> <div class="d-flex flex-items-center"> <a href="/sponsors/miguelgrinberg" aria-label="Sponsor @miguelgrinberg" data-hydro-click="{"event_type":"sponsors.button_click","payload":{"button":"TOPIC_PAGE_SPONSOR","sponsorable_login":"miguelgrinberg","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="3e371878aed02af93c3974eafdf5dd64313084b7fcb6f5f1ce823e46c8fa0968" data-view-component="true" class="Button--secondary Button--small Button mr-2"> <span class="Button-content"> <span class="Button-label"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-heart icon-sponsor mr-1 v-align-middle color-fg-sponsors anim-pulse-in"> <path d="m8 14.25.345.666a.75.75 0 0 1-.69 0l-.008-.004-.018-.01a7.152 7.152 0 0 1-.31-.17 22.055 22.055 0 0 1-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.066 22.066 0 0 1-3.744 2.584l-.018.01-.006.003h-.002ZM4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.58 20.58 0 0 0 8 13.393a20.58 20.58 0 0 0 3.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.749.749 0 0 1-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5Z"></path> </svg> <span class="v-align-middle" > Sponsor </span></span> </span> </a> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fmiguelgrinberg%2Fmicroblog" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":7200116,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="4ab14f49b5e5a236b85f48cd6d8a8fff9ff5585b4c6345affc14af9e8b1a2987" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="4559 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="4,559" data-view-component="true" class="Counter js-social-count">4.6k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-7200116" aria-current="true" href="/miguelgrinberg/microblog" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":7200116,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="166fa1e9dcaa784511933bef7ece397fd30974a22d9f3d1a276d5893e7fff3d2" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-7200116" href="/miguelgrinberg/microblog/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":7200116,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="23b04bffb779676bab8dfd2f14e4df8b557ea8fd6cdbf6d881d8bc593f0d9dd7" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-7200116" href="/miguelgrinberg/microblog/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":7200116,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="40ed4b34ef59a17b53c52be487a628b608fe6e0a314a2e12065f130cb3e308a8" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >The microblogging application developed in my Flask Mega-Tutorial series. This version maps to the 2024 Edition of the tutorial.</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":84,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="ba0fb7119813b3e2710299e9f002095b25b43c42804a57bd593cb515e52aed5a" title="Topic: python" href="/topics/python" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> python </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":615,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="6f22784efda6b9814b7bc4cad2b5137b59e83da4878d253ff3caa4e1819f1311" title="Topic: flask" href="/topics/flask" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> flask </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":39330,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="94ac0031e5db5ae21de07159b68de70b989a2695b9840f162df84c22aae04da7" title="Topic: webapp" href="/topics/webapp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> webapp </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-07-30T22:44:15Z" class="no-wrap">Jul 30, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #3572A5"></span> <span itemprop="programmingLanguage">Python</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_IMAGE","actor_id":null,"record_id":264517908,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="5408f0e91fa9dffbee21da9dc8353b9412cbb8b8b5e2eeb8b303ac66fa019403" data-turbo="false" style="max-height:275px" href="/h2oai/wave" data-view-component="true" class="overflow-hidden flex-items-center rounded-top-2 Link color-border-muted border-bottom d-flex position-relative"> <img loading="lazy" src="https://repository-images.githubusercontent.com/264517908/d4bf6500-3e9e-11eb-8c08-a43ec52a20ff" alt="wave" class="d-block width-full" > </a> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":1402695,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="905bad587f3d092b42ce153642fac1433b7d689750fbe660e7faed94251791b9" data-turbo="false" href="/h2oai" data-view-component="true" class="Link"> h2oai </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":264517908,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="97b0a0ae96353df4215a5e318c8a1564bfbecd97796136d19219f2a105e4d405" data-turbo="false" href="/h2oai/wave" data-view-component="true" class="Link text-bold wb-break-word"> wave </a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fh2oai%2Fwave" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":264517908,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="a80cd07ae86307d2daa6c33f4518e68f6426434db0243d8fae1ed08b2cceff65" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="4013 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="4,013" data-view-component="true" class="Counter js-social-count">4k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-264517908" aria-current="true" href="/h2oai/wave" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":264517908,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="fc1b027988d1308346838eec6a5918af57d0d9bc74439fd9a4d02f6126d148fa" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-264517908" href="/h2oai/wave/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":264517908,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="912dba651469382ab4b2b336e22e00b82d9a925a10bd5803e08c3d476dbc74a4" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-264517908" href="/h2oai/wave/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":264517908,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="2a3b21956434f83409e7f9d5182d15a5b267bd501d16eec9c9b4dc4c616cebfd" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab-264517908" href="/h2oai/wave/discussions" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_DISCUSSIONS","click_visual_representation":"DISCUSSIONS_TAB","actor_id":null,"record_id":264517908,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="d3bef1ad2d55135c31625fc73093b9e77689c1d1b90fa0530a1426aa914d9616" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion color-fg-muted"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> Discussions </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >Realtime Web Apps and Dashboards for Python and R</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":22,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="5fae902d712db88fe8b7a78c5ac62e332fae4c5f491b3c1cbd37fbf47cf4472d" title="Topic: visualization" href="/topics/visualization" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> visualization </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":84,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="ba0fb7119813b3e2710299e9f002095b25b43c42804a57bd593cb515e52aed5a" title="Topic: python" href="/topics/python" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> python </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":769,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="c3096d8f1318128af371c24bbf400835ecba31d729915525232e89cdb774122a" title="Topic: app" href="/topics/app" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> app </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":7525,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="03d744e65bee6e61b6e9b27aa87b9016c3a65a90955caef154308bc38ecf5ec9" title="Topic: r" href="/topics/r" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> r </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":7537,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="a089b66ae08707393c93ebabd45cec349d0fa8d9dcc10b3243ed2b3040167893" title="Topic: typescript" href="/topics/typescript" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> typescript </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9262,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="850cd8b2565c77f1794621dc42d11e61194f694f0a41018235374cde6ff8ee35" title="Topic: dashboard" href="/topics/dashboard" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> dashboard </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":16937,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="ad7ca3f17ca1aecfd8d2b36978636494f56f3c850a70427e0cfbe80eaa5b4c74" title="Topic: realtime" href="/topics/realtime" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> realtime </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":39330,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="94ac0031e5db5ae21de07159b68de70b989a2695b9840f162df84c22aae04da7" title="Topic: webapp" href="/topics/webapp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> webapp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":196454,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="4dea711ed8cab28603e56caf248220a62257cc5e5a662af9295ceaba014dca8f" title="Topic: hacktoberfest" href="/topics/hacktoberfest" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> hacktoberfest </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-11-22T19:36:02Z" class="no-wrap">Nov 22, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #3572A5"></span> <span itemprop="programmingLanguage">Python</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_IMAGE","actor_id":null,"record_id":82708632,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="6e68143246d6094e13542a88e23a32507cbb0381ba1e436ee4c0455a886d763d" data-turbo="false" style="max-height:275px" href="/nisrulz/app-privacy-policy-generator" data-view-component="true" class="overflow-hidden flex-items-center rounded-top-2 Link color-border-muted border-bottom d-flex position-relative"> <img loading="lazy" src="https://repository-images.githubusercontent.com/82708632/8c13fad1-3b7e-429e-9380-ec431c29bdc8" alt="app-privacy-policy-generator" class="d-block width-full" > </a> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":2096087,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="0eb5906f650fe884f64b847a5647002019b9a838a01d8e854a6bae52c18b6ee0" data-turbo="false" href="/nisrulz" data-view-component="true" class="Link"> nisrulz </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":82708632,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="470720f2cf13b5eba8c26e277078e0837e6dff23cc05a55efe8377baa07d1c31" data-turbo="false" href="/nisrulz/app-privacy-policy-generator" data-view-component="true" class="Link text-bold wb-break-word"> app-privacy-policy-generator </a> </h3> </div> <div class="d-flex flex-items-center"> <a href="/sponsors/nisrulz" aria-label="Sponsor @nisrulz" data-hydro-click="{"event_type":"sponsors.button_click","payload":{"button":"TOPIC_PAGE_SPONSOR","sponsorable_login":"nisrulz","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="b7c7e0464092ce4bb200cf6b18e884cef377dbe64df013c8cdf0be9f95054a3e" data-view-component="true" class="Button--secondary Button--small Button mr-2"> <span class="Button-content"> <span class="Button-label"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-heart icon-sponsor mr-1 v-align-middle color-fg-sponsors anim-pulse-in"> <path d="m8 14.25.345.666a.75.75 0 0 1-.69 0l-.008-.004-.018-.01a7.152 7.152 0 0 1-.31-.17 22.055 22.055 0 0 1-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.066 22.066 0 0 1-3.744 2.584l-.018.01-.006.003h-.002ZM4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.58 20.58 0 0 0 8 13.393a20.58 20.58 0 0 0 3.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.749.749 0 0 1-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5Z"></path> </svg> <span class="v-align-middle" > Sponsor </span></span> </span> </a> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fnisrulz%2Fapp-privacy-policy-generator" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":82708632,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="42e4f19682238d0ff8acfa7e61189a48aa1df960656d1743781eb1b26fbbd8a2" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="3939 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="3,939" data-view-component="true" class="Counter js-social-count">3.9k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-82708632" aria-current="true" href="/nisrulz/app-privacy-policy-generator" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":82708632,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="859641732d81e2fd54c705e53de22d7f19aadfbaf293ab3e7fa4748c38eff6fa" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-82708632" href="/nisrulz/app-privacy-policy-generator/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":82708632,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="2c8b7b16351d916b17064110c711a2acc88879fceffc0e117e19b2e0baf873cf" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-82708632" href="/nisrulz/app-privacy-policy-generator/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":82708632,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="3efdece06957c3d9b047603c8dc6fa5dbb27acbe14d0351552c2b175777973e7" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab-82708632" href="/nisrulz/app-privacy-policy-generator/discussions" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_DISCUSSIONS","click_visual_representation":"DISCUSSIONS_TAB","actor_id":null,"record_id":82708632,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="a68d45981ed3ad14e37effa835434cf3436db96ea2c976abc246815b29b5b6e8" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion color-fg-muted"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> Discussions </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >Generate a customized Privacy Policy and Terms of Use document for your mobile apps</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":67,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="6bb9a47aec1ccc31c9ef0a27362fdc6479d983ec10a8c0607d04dc43e1ba5114" title="Topic: android" href="/topics/android" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> android </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":743,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="7bd990f3c67811e54e00bcd161094ebb1c19f23e009b675ca036d0c0809602c7" title="Topic: ios" href="/topics/ios" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> ios </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":769,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="c3096d8f1318128af371c24bbf400835ecba31d729915525232e89cdb774122a" title="Topic: app" href="/topics/app" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> app </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":4902,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="8d2492e40f142ff5566a92810d8a233e9f229860faf8e2b1b5a9b868aaae7aa3" title="Topic: privacy" href="/topics/privacy" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> privacy </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9154,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="2782ab3da7d2ec5679d9c66ebab2c82a06aee04d8665f28cb52c2d6876bea7b3" title="Topic: generator" href="/topics/generator" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> generator </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":22503,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="5868777cc95cccc1c23787e1dd8b23397de3921cfb0069a0fa900cad2fb761e8" title="Topic: android-application" href="/topics/android-application" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> android-application </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":23063,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="28044bb12bfdb14596bcdc697bf44876bf5cdfdbe4b15b4a9e26bdcc13ff0fbd" title="Topic: policy" href="/topics/policy" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> policy </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":28160,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="9d6fdf74c00d8f1c6758c30f87cd9518fb6fac60ac6af4bac498cb9c82ec68fe" title="Topic: ios-app" href="/topics/ios-app" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> ios-app </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":39330,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="94ac0031e5db5ae21de07159b68de70b989a2695b9840f162df84c22aae04da7" title="Topic: webapp" href="/topics/webapp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> webapp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":94890,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="8b313c9884c5a14acbc6ea455596682b849db10eeb7e295d933f9bbf37677299" title="Topic: android-app" href="/topics/android-app" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> android-app </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":1066344,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="6baae4af3587d82077efe8f38d756bd44b5d5c8d4c2553a6e2945d4ea35f24ac" title="Topic: 3rd-party-service" href="/topics/3rd-party-service" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> 3rd-party-service </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-08-21T22:18:56Z" class="no-wrap">Aug 21, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #a53b70"></span> <span itemprop="programmingLanguage">Sass</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":240252,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="4a0b51e940704025f08986494131cbf416a0353af3c34c0294d1e6a53b05d40a" data-turbo="false" href="/toolswatch" data-view-component="true" class="Link"> toolswatch </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":97922564,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="cd9db130c352adf7938a500d76a2eee6649a36fcfbfb71dd28237836c47fd024" data-turbo="false" href="/toolswatch/blackhat-arsenal-tools" data-view-component="true" class="Link text-bold wb-break-word"> blackhat-arsenal-tools </a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Ftoolswatch%2Fblackhat-arsenal-tools" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":97922564,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="a86e342501e419b2936fb95a081fb5c670690eb014923362e0013d55d1492b57" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="3921 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="3,921" data-view-component="true" class="Counter js-social-count">3.9k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-97922564" aria-current="true" href="/toolswatch/blackhat-arsenal-tools" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":97922564,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="b9f3fc356b92c8f13bf2b1aa048609a0264db8425455845398e482382a512697" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-97922564" href="/toolswatch/blackhat-arsenal-tools/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":97922564,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="e7d9b05024a39bbbd0a91cbe1c9f3592dc5c3e18e1bb40c786964c62fab1486f" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-97922564" href="/toolswatch/blackhat-arsenal-tools/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":97922564,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="2ef7258796a1bd2607a158d9c678727719033112580eeb1d6c12dc33f3d0342c" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >Official Black Hat Arsenal Security Tools Repository</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":21442,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="609edfe2f41432298e3e722ff171657dfa07c4a043f9f7bb37ad95dd100be48d" title="Topic: hacking" href="/topics/hacking" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> hacking </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":23925,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="c3a488578408c87ad117f219a0766b644e5f23f99b883156013152706fe599ce" title="Topic: blackhat" href="/topics/blackhat" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> blackhat </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":27575,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="5ff0cc567f8d9687549e865ec2f7de9056f68de0af76d81bc9e7daf9baca8cf2" title="Topic: forensics" href="/topics/forensics" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> forensics </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":39330,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="94ac0031e5db5ae21de07159b68de70b989a2695b9840f162df84c22aae04da7" title="Topic: webapp" href="/topics/webapp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> webapp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":224999,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="63d4580401037ef4f39f567d7bbcee769b19548179794f3a5e5a4b3209040c7e" title="Topic: hacking-tool" href="/topics/hacking-tool" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> hacking-tool </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":243567,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="f826141a57032a098a88e5371d8be4ce0c6c79248703bbf4e676a413a9762454" title="Topic: security-scanner" href="/topics/security-scanner" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> security-scanner </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":389465,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="73f54a10f7cb8232359631bc301196d762ed58b74d5cd9a4e4741058cabfda61" title="Topic: security-tools" href="/topics/security-tools" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> security-tools </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":425431,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="ccd873c5b56a5236a421e5cf7b5748aefacd5ccb71fd2971c968619320607bb8" title="Topic: arsenal" href="/topics/arsenal" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> arsenal </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":527873,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="f01abf269669cb09e8572c1ff2b50e1f483b70d2f79b93073b05707ae81309f5" title="Topic: ics-scada" href="/topics/ics-scada" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> ics-scada </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-08-26T15:04:38Z" class="no-wrap">Aug 26, 2024</relative-time> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_IMAGE","actor_id":null,"record_id":178938810,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="07e40fce915ca2c0aee0adb53d8333b097231e3b8023718fe362f108522088e6" data-turbo="false" style="max-height:275px" href="/shadowwalker/next-pwa" data-view-component="true" class="overflow-hidden flex-items-center rounded-top-2 Link color-border-muted border-bottom d-flex position-relative"> <img loading="lazy" src="https://repository-images.githubusercontent.com/178938810/c312ad80-9dfd-11eb-826d-ae3bd7440191" alt="next-pwa" class="d-block width-full" > </a> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":9603375,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="f5a74b131f381231d61e7c68e0cec608eae1d06996466bcfac803a40ce75c022" data-turbo="false" href="/shadowwalker" data-view-component="true" class="Link"> shadowwalker </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":178938810,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="c967e041cec57362fa1e812704308dcf68bbb58d66d6b1db4ceceef21a862f53" data-turbo="false" href="/shadowwalker/next-pwa" data-view-component="true" class="Link text-bold wb-break-word"> next-pwa </a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fshadowwalker%2Fnext-pwa" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":178938810,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="19bf6b24db35d441360dcf7c27669bcd4df1f6965304349e8faf3a03e9015ce3" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="3895 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="3,895" data-view-component="true" class="Counter js-social-count">3.9k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-178938810" aria-current="true" href="/shadowwalker/next-pwa" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":178938810,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="cd3c4a08432f3106cb7e3352c284ce5c0146d47e12d410dc1fa93574b7bd7387" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-178938810" href="/shadowwalker/next-pwa/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":178938810,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="f5822d2e5e22382f7c1815faa2c9486fbfae92735732b7404d19e967dba55d11" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-178938810" href="/shadowwalker/next-pwa/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":178938810,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="89877477cb9029c97cc82eaf944cbad1513674357a1d57c6a5b4a3b0d7a13a48" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab-178938810" href="/shadowwalker/next-pwa/discussions" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_DISCUSSIONS","click_visual_representation":"DISCUSSIONS_TAB","actor_id":null,"record_id":178938810,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="91f032019ab1845dea07d5c1d5daf3ba2016e0d1ded7940cb44654d591dc3878" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion color-fg-muted"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> Discussions </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >Zero config PWA plugin for Next.js, with workbox 🧰</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":736,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="1e920767462f9dcc07faf2106f1239cf4814d0b90aa0b129e7db8299fea98c74" title="Topic: website" href="/topics/website" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> website </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":8976,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="88e42298361892a52a300900a18c5d786e04593e3a84507ff9e4a13343a3537b" title="Topic: web" href="/topics/web" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> web </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9019,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="932a526ae4ad981b52c7b33eb3e329c260eaef88c9e2fe817438e38b3ff16da2" title="Topic: pwa" href="/topics/pwa" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> pwa </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9739,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="f20aa382ad34111a78047e091cc55f6d09462b588382d99ea8ee7b2fe4f027f9" title="Topic: service-worker" href="/topics/service-worker" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> service-worker </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13128,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="51d11ebb7bf27408742676c556b8c116d728e93cff1841e88f2494d45a4c519e" title="Topic: cache" href="/topics/cache" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> cache </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13199,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="8b7538fc49c84e56adbb60b78295c6e6fcf45ce36ab8d19203f0cb9cb92949ae" title="Topic: nextjs" href="/topics/nextjs" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> nextjs </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":39330,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="94ac0031e5db5ae21de07159b68de70b989a2695b9840f162df84c22aae04da7" title="Topic: webapp" href="/topics/webapp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> webapp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":446695,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="8523a40baf3589a00c8ba80a8906031b12ab5c3690952e18f904d2bcb597c850" title="Topic: workbox" href="/topics/workbox" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> workbox </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-07-27T00:29:09Z" class="no-wrap">Jul 27, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #f1e05a"></span> <span itemprop="programmingLanguage">JavaScript</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":27521938,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="aae31f85b38e2936c6fbf5a32ad52839d9a1942432b687d134d2a96dceeb6725" data-turbo="false" href="/didi" data-view-component="true" class="Link"> didi </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":160603028,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="89ed56c75d72369ff3d34b63699975e36f0da1cc75ea36fd845ec3868e3a7e80" data-turbo="false" href="/didi/mpx" data-view-component="true" class="Link text-bold wb-break-word"> mpx </a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fdidi%2Fmpx" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":160603028,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="afdc312a78decfddad9fbe5942f34255203b556890afa5377adc03ef12bc64bd" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="3631 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="3,631" data-view-component="true" class="Counter js-social-count">3.6k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-160603028" aria-current="true" href="/didi/mpx" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":160603028,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="fd07552832b926a2210e361506da8d13e496eb028382fe9b7ee6aad44df1e91f" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-160603028" href="/didi/mpx/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":160603028,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="1ccf391f88cf829cd10c68d04679540d005fdb682564a939886547e20b6c955f" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-160603028" href="/didi/mpx/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":160603028,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="ad4d60e37c518fa91ceff5023625c39b8f45974eca800e6d955520d8af1e3c91" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab-160603028" href="/didi/mpx/discussions" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_DISCUSSIONS","click_visual_representation":"DISCUSSIONS_TAB","actor_id":null,"record_id":160603028,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="d35aee99af427969a7b009d96809ec39024af71080f056686eecb2658093f0eb" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion color-fg-muted"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> Discussions </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >Mpx,一款具有优秀开发体验和深度性能优化的增强型跨端小程序框架</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":8955,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="6aeb7d661fcc4c7a1ce512ba808eb72a807fb633cd7876ce148ca869692c7aba" title="Topic: webpack" href="/topics/webpack" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> webpack </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9275,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="e4444232975d6ffde96fb0677481a02183de1e7a219f53304e2b1922860b1a45" title="Topic: vue" href="/topics/vue" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> vue </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":23771,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="7bf09868b33028ea656371f5b634f17cd375d48361aa4d996fa4f82f9561da4e" title="Topic: reactive-programming" href="/topics/reactive-programming" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> reactive-programming </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":39330,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="94ac0031e5db5ae21de07159b68de70b989a2695b9840f162df84c22aae04da7" title="Topic: webapp" href="/topics/webapp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> webapp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":99537,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="41987ab0ff6d9e30d89db7ab0f7a9a2f5af1fecc465b338358431787087bb416" title="Topic: mpx" href="/topics/mpx" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> mpx </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":269896,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="0063dabb390330f4b440ea9df50da54a33ead1c0099f3f5468803547ba92ae93" title="Topic: wechat-mini-program" href="/topics/wechat-mini-program" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> wechat-mini-program </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":485351,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="b525b0d61f74ec040b31ad12988aa562418bf3d8fdbcdcb9ab754e70185e6f9c" title="Topic: miniprogram" href="/topics/miniprogram" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> miniprogram </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":584563,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="7ff2d1487b9674d72d8dcf62d4b9f846f6c4dc613a0c102ee7373eed59285872" title="Topic: alipay-mini-program" href="/topics/alipay-mini-program" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> alipay-mini-program </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":783811,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="4053c07cd66a72286b0e0bd57609fa6187ee7c91a9fd31308687faec8bd44671" title="Topic: development-framework" href="/topics/development-framework" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> development-framework </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-11-22T15:28:27Z" class="no-wrap">Nov 22, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #f1e05a"></span> <span itemprop="programmingLanguage">JavaScript</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":34743864,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="164e7d3c78b3479d314f90f7d0aa647a1dd35e0fb325601eba6f9dcf185ea00a" data-turbo="false" href="/dbeaver" data-view-component="true" class="Link"> dbeaver </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":254426396,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="b62de9d89288e817ea2930c16551d8f42ef39fd86b1752c7d730e9645c2ede4f" data-turbo="false" href="/dbeaver/cloudbeaver" data-view-component="true" class="Link text-bold wb-break-word"> cloudbeaver </a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fdbeaver%2Fcloudbeaver" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":254426396,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="6a0d09d77360427e0a33871be165a9ab6ed45512c3e8181efabbda6d20d52ad7" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="3546 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="3,546" data-view-component="true" class="Counter js-social-count">3.5k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-254426396" aria-current="true" href="/dbeaver/cloudbeaver" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":254426396,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="e3efc980fd3d25563404487a55c1ed6dd8fa15cfde7ed2b35130bbb8621b5a2c" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-254426396" href="/dbeaver/cloudbeaver/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":254426396,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="dc96e163b930b450fe85aa25e364817227ab60c4b966b88025959313affe4c23" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-254426396" href="/dbeaver/cloudbeaver/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":254426396,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="bc446a2d42f8fdb198103683cb35d5e42f879d2493d18b3b0c47ccde278af12c" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >Cloud Database Manager</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":4901,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="e12128170eff2624b0fb81b28aa0f08368a00180760de05ba0205379deb23cf1" title="Topic: cloud" href="/topics/cloud" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> cloud </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":8961,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="84be0d6105d550b45d47d437ba954e65e470515994840b591ddc7fc7192da54a" title="Topic: database" href="/topics/database" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> database </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":21688,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="246e92d5ae70e39dc1d46bb14e639eb6f968f154e05f5d58ffe9781f28b33d1d" title="Topic: databases" href="/topics/databases" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> databases </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":39330,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="94ac0031e5db5ae21de07159b68de70b989a2695b9840f162df84c22aae04da7" title="Topic: webapp" href="/topics/webapp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> webapp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":60363,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="b921b46b2279ec67ef967c1db34681b1853896391b4b920e1ec7267c49c441b3" title="Topic: dbeaver" href="/topics/dbeaver" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> dbeaver </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":1422149,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="bc7837a7bd0656de70eda038aa1cfcea2faf4266758b32d4727fa1b01ad79eda" title="Topic: cloud-database-manager" href="/topics/cloud-database-manager" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> cloud-database-manager </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-11-22T21:13:40Z" class="no-wrap">Nov 22, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #3178c6"></span> <span itemprop="programmingLanguage">TypeScript</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_IMAGE","actor_id":null,"record_id":238501964,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="2b92a1b9f4a2b336e828563c28ac321fcabaa8a4e814a88f9b74c01622de0f89" data-turbo="false" style="max-height:275px" href="/Yooooomi/your_spotify" data-view-component="true" class="overflow-hidden flex-items-center rounded-top-2 Link color-border-muted border-bottom d-flex position-relative"> <img loading="lazy" src="https://repository-images.githubusercontent.com/238501964/f0cec375-115b-4438-a8d6-ca41bc347d02" alt="your_spotify" class="d-block width-full" > </a> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":17204739,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="6c83001da2bf5a8324df945dc0ba6957da42bb963d780ce5492fe021fbe44c5c" data-turbo="false" href="/Yooooomi" data-view-component="true" class="Link"> Yooooomi </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":238501964,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="4c547b02312b83f313efc71be11bb004ced814ece192059770ca699f8ca2eeab" data-turbo="false" href="/Yooooomi/your_spotify" data-view-component="true" class="Link text-bold wb-break-word"> your_spotify </a> </h3> </div> <div class="d-flex flex-items-center"> <a href="/sponsors/Yooooomi" aria-label="Sponsor @Yooooomi" data-hydro-click="{"event_type":"sponsors.button_click","payload":{"button":"TOPIC_PAGE_SPONSOR","sponsorable_login":"Yooooomi","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="955950d16da355506f48cbfd5e3b032ca3b41cab3a83e104968a2a1b4db1882a" data-view-component="true" class="Button--secondary Button--small Button mr-2"> <span class="Button-content"> <span class="Button-label"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-heart icon-sponsor mr-1 v-align-middle color-fg-sponsors anim-pulse-in"> <path d="m8 14.25.345.666a.75.75 0 0 1-.69 0l-.008-.004-.018-.01a7.152 7.152 0 0 1-.31-.17 22.055 22.055 0 0 1-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.066 22.066 0 0 1-3.744 2.584l-.018.01-.006.003h-.002ZM4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.58 20.58 0 0 0 8 13.393a20.58 20.58 0 0 0 3.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.749.749 0 0 1-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5Z"></path> </svg> <span class="v-align-middle" > Sponsor </span></span> </span> </a> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2FYooooomi%2Fyour_spotify" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":238501964,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="50fb1dd5b2d275d62d3e0dbb0d53378bd5d84287e81e91d78a19e5699ac50003" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="3173 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="3,173" data-view-component="true" class="Counter js-social-count">3.2k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-238501964" aria-current="true" href="/Yooooomi/your_spotify" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":238501964,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="a7955fa72d22ecf1b7f7b34ba37e37f8bbdd82e554c62f03eceaf0c1f6b146cc" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-238501964" href="/Yooooomi/your_spotify/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":238501964,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="4cec36660d31b358c3625cdc27b2c8df755d2bbbba43707c06cfdd0151d7599b" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-238501964" href="/Yooooomi/your_spotify/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":238501964,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="8d72ff549d93ee4216ce4bd02ccd78a6fa9f77ea1efe83c06b9eb5ec73b8b213" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab-238501964" href="/Yooooomi/your_spotify/discussions" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_DISCUSSIONS","click_visual_representation":"DISCUSSIONS_TAB","actor_id":null,"record_id":238501964,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="668e2331e01994f59f01a4fb99f6ba6427c57b7d9a89ba1d793581b65d7a98e5" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion color-fg-muted"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> Discussions </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >Self hosted Spotify tracking dashboard</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":12,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="42b03d698322c77fd1b1ab14c55955ec806125649a77e13edb9478a2f2c358a5" title="Topic: react" href="/topics/react" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> react </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":795,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="978d91d20e9e0f7a6c6ba819b559c1f6ff0ab5c62e7d0d578f5752a572ef801c" title="Topic: spotify" href="/topics/spotify" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> spotify </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":7531,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="91c5e068ea343e1f398f96ee141bd67cd7999c409a31bf4019cf118076519749" title="Topic: statistics" href="/topics/statistics" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> statistics </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9262,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="850cd8b2565c77f1794621dc42d11e61194f694f0a41018235374cde6ff8ee35" title="Topic: dashboard" href="/topics/dashboard" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> dashboard </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":22905,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="66471ab1d66b14ae3f443c9cd578c653b38c6bfc7986da77145601840b03d163" title="Topic: self-hosted" href="/topics/self-hosted" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> self-hosted </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":39330,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="94ac0031e5db5ae21de07159b68de70b989a2695b9840f162df84c22aae04da7" title="Topic: webapp" href="/topics/webapp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> webapp </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-08-25T16:44:30Z" class="no-wrap">Aug 25, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #3178c6"></span> <span itemprop="programmingLanguage">TypeScript</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":133399259,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="4f3f7f2df067ef418d4b3d5e3fa0485ecfd7b233ed1ac21da5437859f3fb29b8" data-turbo="false" href="/webui-dev" data-view-component="true" class="Link"> webui-dev </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":310123680,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="ab6b31ae46711c75985288be397742ea757fd351afa834b2b59168e4acf3c719" data-turbo="false" href="/webui-dev/webui" data-view-component="true" class="Link text-bold wb-break-word"> webui </a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fwebui-dev%2Fwebui" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":310123680,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="97584f5c3146bac33d8a459141652ac46f47dfdc9fd1d2c6aa3ac0a1dbe3b823" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="3084 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="3,084" data-view-component="true" class="Counter js-social-count">3.1k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-310123680" aria-current="true" href="/webui-dev/webui" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":310123680,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="b88d03839341eb4123b44321063444d47c24e82a3e4299ae488ade6ee2c6f2f7" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-310123680" href="/webui-dev/webui/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":310123680,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="7212cea64479a73b0cd11c69d70d78cf9e45682b50a14334e4c1185618a36e3c" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-310123680" href="/webui-dev/webui/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":310123680,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="42d880e6d22977d797c7f3db57b177c16dc3a2f333636257d2d133ace51be520" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab-310123680" href="/webui-dev/webui/discussions" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_DISCUSSIONS","click_visual_representation":"DISCUSSIONS_TAB","actor_id":null,"record_id":310123680,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="eeb557423b45dd454ea0eae98c443b6aa1dabc4c62b2626dec8558fde5a678b3" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion color-fg-muted"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> Discussions </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >Use any web browser or WebView as GUI, with your preferred language in the backend and modern web technologies in the frontend, all in a lightweight portable library.</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":40,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="b889d975800398d9c719d7bffeea8faa12e96e4a711119397356c96675d5d98e" title="Topic: javascript" href="/topics/javascript" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> javascript </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":2298,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="74510e0e94953cc7a9e41529e9f3333978223c27d31a4a8a9ae30e15f9d3417a" title="Topic: gui" href="/topics/gui" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> gui </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":7537,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="a089b66ae08707393c93ebabd45cec349d0fa8d9dcc10b3243ed2b3040167893" title="Topic: typescript" href="/topics/typescript" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> typescript </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":7606,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="e0f3826c004c4a88aaf2b06a9655ad9c8c762ad242770b6ba10ed803a9bfccc3" title="Topic: browser" href="/topics/browser" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> browser </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":8976,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="88e42298361892a52a300900a18c5d786e04593e3a84507ff9e4a13343a3537b" title="Topic: web" href="/topics/web" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> web </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9802,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="db25c18526762fd931a6c5f3407a0f8852eebee60fd604d86ac5498a95802520" title="Topic: cpp" href="/topics/cpp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> cpp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":39330,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="94ac0031e5db5ae21de07159b68de70b989a2695b9840f162df84c22aae04da7" title="Topic: webapp" href="/topics/webapp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> webapp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":84049,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="10c3e5d3f3323423e15e1cfa6a64e6d7e1d6aeed13b2fa71f89b1ba3b528e345" title="Topic: webui" href="/topics/webui" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> webui </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-11-22T23:07:52Z" class="no-wrap">Nov 22, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #555555"></span> <span itemprop="programmingLanguage">C</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":1326112,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="98184ba05e01881006d951002d94cdd3e33360f7d4b82b2c3eb7ff7a6757aad8" data-turbo="false" href="/tiangolo" data-view-component="true" class="Link"> tiangolo </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":51702566,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="5d7ee6ec58eb2f7abbe07571f4d184278729bd7bd4f9503f315760fed0216a5b" data-turbo="false" href="/tiangolo/uwsgi-nginx-flask-docker" data-view-component="true" class="Link text-bold wb-break-word"> uwsgi-nginx-flask-docker </a> </h3> </div> <div class="d-flex flex-items-center"> <a href="/sponsors/tiangolo" aria-label="Sponsor @tiangolo" data-hydro-click="{"event_type":"sponsors.button_click","payload":{"button":"TOPIC_PAGE_SPONSOR","sponsorable_login":"tiangolo","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="a1af64a1d2214d879cf37b54b570001f990c3e27b14466f2debf46fac64aa624" data-view-component="true" class="Button--secondary Button--small Button mr-2"> <span class="Button-content"> <span class="Button-label"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-heart icon-sponsor mr-1 v-align-middle color-fg-sponsors anim-pulse-in"> <path d="m8 14.25.345.666a.75.75 0 0 1-.69 0l-.008-.004-.018-.01a7.152 7.152 0 0 1-.31-.17 22.055 22.055 0 0 1-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.066 22.066 0 0 1-3.744 2.584l-.018.01-.006.003h-.002ZM4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.58 20.58 0 0 0 8 13.393a20.58 20.58 0 0 0 3.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.749.749 0 0 1-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5Z"></path> </svg> <span class="v-align-middle" > Sponsor </span></span> </span> </a> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Ftiangolo%2Fuwsgi-nginx-flask-docker" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":51702566,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="12b0b421fbc59667356f5eb3f0f1f525ce609b40766249ae35f7a91f87bc5f15" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="2992 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="2,992" data-view-component="true" class="Counter js-social-count">3k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-51702566" aria-current="true" href="/tiangolo/uwsgi-nginx-flask-docker" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":51702566,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="33ac0f57fcbc94bb4ed8162addd1cf9463f2079c1e78170d66f4bcc70183841f" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-51702566" href="/tiangolo/uwsgi-nginx-flask-docker/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":51702566,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="8b37c80a870a0c438d506f6e8e1b55e958a8781d73edfcd4d771f2bd9d63ef7b" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-51702566" href="/tiangolo/uwsgi-nginx-flask-docker/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":51702566,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="705f4c91fc1398179884d407eec59e9332bc5d83c265db6755b7654ef6e4e948" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab-51702566" href="/tiangolo/uwsgi-nginx-flask-docker/discussions" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_DISCUSSIONS","click_visual_representation":"DISCUSSIONS_TAB","actor_id":null,"record_id":51702566,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="4e3dce9c145190392c7fecb5c4b3f11ee0d9d600c9e089202ffc550eb6c6374f" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion color-fg-muted"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> Discussions </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >Docker image with uWSGI and Nginx for Flask applications in Python running in a single container.</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":84,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="ba0fb7119813b3e2710299e9f002095b25b43c42804a57bd593cb515e52aed5a" title="Topic: python" href="/topics/python" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> python </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":282,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="77e9a33bc4e64eed394cc200a40de4b947db7fa4574b3d8a82a83740feea96c1" title="Topic: nginx" href="/topics/nginx" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> nginx </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":535,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="7e9e6e51502da60ca4a98ce463f841d824113c932a97dafcc62c6c2e1a687c69" title="Topic: dockerfile" href="/topics/dockerfile" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> dockerfile </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":615,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="6f22784efda6b9814b7bc4cad2b5137b59e83da4878d253ff3caa4e1819f1311" title="Topic: flask" href="/topics/flask" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> flask </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":8976,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="88e42298361892a52a300900a18c5d786e04593e3a84507ff9e4a13343a3537b" title="Topic: web" href="/topics/web" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> web </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9355,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="50c609bbdb3bc0cbd54cde721ad2a2c66c8e2371cc130b50c8b214c633311bb3" title="Topic: debian" href="/topics/debian" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> debian </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":12601,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="568281865f0118c52cd8608c20e6e437152d2c387b2ca4106118372e1db4b737" title="Topic: docker-container" href="/topics/docker-container" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> docker-container </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13439,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="0d7c913a6d5b6c28d5752e33251bff52f79dc8e7dad4ba5c270a02222808d568" title="Topic: docker-image" href="/topics/docker-image" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> docker-image </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":22385,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="a7b6f7dcca0a75a5f80016168db9f992579f7336316710e35292d9da880a5c66" title="Topic: uwsgi" href="/topics/uwsgi" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> uwsgi </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":39330,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="94ac0031e5db5ae21de07159b68de70b989a2695b9840f162df84c22aae04da7" title="Topic: webapp" href="/topics/webapp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> webapp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":44048,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="bce143d8b34b06f28a111452d26b02d8d8b97857532361e0b438357153579f95" title="Topic: flask-application" href="/topics/flask-application" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> flask-application </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":173445,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="3528fd4e97ce16bccdd1f7032951eeeb47ffa97a31effcaf9711068dd2ca1b7d" title="Topic: nginx-server" href="/topics/nginx-server" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> nginx-server </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":226153,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="76e367b390116bad2aeb17892f19be7e19db8b2c235c45d23e6a5ae52ae1e69d" title="Topic: python-flask" href="/topics/python-flask" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> python-flask </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":400527,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="23860e4424e38aa6b4c5c37224f5b71a10970c868f47d9703ac33e1ea0981ddc" title="Topic: uwsgi-nginx" href="/topics/uwsgi-nginx" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> uwsgi-nginx </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":400529,"originating_url":"https://github.com/topics/webapp","user_id":null}}" data-hydro-click-hmac="c8b1020048f4d6731d50d675823855add6b082205ea97a1de2efbcc3186fe150" title="Topic: flask-image" href="/topics/flask-image" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> flask-image </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-11-14T13:42:37Z" class="no-wrap">Nov 14, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #3572A5"></span> <span itemprop="programmingLanguage">Python</span> </span> </li> </ul> </div> </div> </article> <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="ajax-pagination-form js-ajax-pagination" data-turbo="false" action="https://github.com/topics/webapp" accept-charset="UTF-8" method="get"> <input name="page" type="hidden" value="2"> <button type="submit" class="ajax-pagination-btn btn color-border-default f6 mt-0 width-full" data-disable-with="Loading more…" > Load more… </button> </form> </div> <div class="col-md-4 col-lg-3"> <div class="mb-6"> <h2 class="h4 mb-2"> Improve this page </h2> <p class="color-fg-muted"> Add a description, image, and links to the <span class="text-bold">webapp</span> topic page so that developers can more easily learn about it. </p> <p> <a href="https://github.com/github/explore/tree/master/CONTRIBUTING.md?source=add-description-webapp" data-ga-click="Explore, add description, text:add description" > Curate this topic <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-right ml-1"> <path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path> </svg> </a> </p> </div> <div class="mb-6"> <h2 class="h4 mb-2"> Add this topic to your repo </h2> <p class="color-fg-muted"> To associate your repository with the <span class="text-bold">webapp</span> topic, visit your repo's landing page and select "manage topics." </p> <p> <a href="https://docs.github.com/en/articles/classifying-your-repository-with-topics"> Learn more <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-right ml-1"> <path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path> </svg> </a> </p> </div> </div> </div> </div> </div> </main> </div> <footer class="footer pt-8 pb-6 f6 color-fg-muted p-responsive" role="contentinfo" > <h2 class='sr-only'>Footer</h2> <div class="d-flex flex-justify-center flex-items-center flex-column-reverse flex-lg-row flex-wrap flex-lg-nowrap"> <div class="d-flex flex-items-center flex-shrink-0 mx-2"> <a aria-label="Homepage" title="GitHub" class="footer-octicon mr-2" href="https://github.com"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-mark-github"> <path d="M12.5.75C6.146.75 1 5.896 1 12.25c0 5.089 3.292 9.387 7.863 10.91.575.101.79-.244.79-.546 0-.273-.014-1.178-.014-2.142-2.889.532-3.636-.704-3.866-1.35-.13-.331-.69-1.352-1.18-1.625-.402-.216-.977-.748-.014-.762.906-.014 1.553.834 1.769 1.179 1.035 1.74 2.688 1.25 3.349.948.1-.747.402-1.25.733-1.538-2.559-.287-5.232-1.279-5.232-5.678 0-1.25.445-2.285 1.178-3.09-.115-.288-.517-1.467.115-3.048 0 0 .963-.302 3.163 1.179.92-.259 1.897-.388 2.875-.388.977 0 1.955.13 2.875.388 2.2-1.495 3.162-1.179 3.162-1.179.633 1.581.23 2.76.115 3.048.733.805 1.179 1.825 1.179 3.09 0 4.413-2.688 5.39-5.247 5.678.417.36.776 1.05.776 2.128 0 1.538-.014 2.774-.014 3.162 0 .302.216.662.79.547C20.709 21.637 24 17.324 24 12.25 24 5.896 18.854.75 12.5.75Z"></path> </svg> </a> <span> © 2024 GitHub, Inc. </span> </div> <nav aria-label="Footer"> <h3 class="sr-only" id="sr-footer-heading">Footer navigation</h3> <ul class="list-style-none d-flex flex-justify-center flex-wrap mb-2 mb-lg-0" aria-labelledby="sr-footer-heading"> <li class="mx-2"> <a data-analytics-event="{"category":"Footer","action":"go to Terms","label":"text:terms"}" href="https://docs.github.com/site-policy/github-terms/github-terms-of-service" data-view-component="true" class="Link--secondary Link">Terms</a> </li> <li class="mx-2"> <a data-analytics-event="{"category":"Footer","action":"go to privacy","label":"text:privacy"}" href="https://docs.github.com/site-policy/privacy-policies/github-privacy-statement" data-view-component="true" class="Link--secondary Link">Privacy</a> </li> <li class="mx-2"> <a data-analytics-event="{"category":"Footer","action":"go to security","label":"text:security"}" href="https://github.com/security" data-view-component="true" class="Link--secondary Link">Security</a> </li> <li class="mx-2"> <a data-analytics-event="{"category":"Footer","action":"go to status","label":"text:status"}" href="https://www.githubstatus.com/" data-view-component="true" class="Link--secondary Link">Status</a> </li> <li class="mx-2"> <a data-analytics-event="{"category":"Footer","action":"go to docs","label":"text:docs"}" href="https://docs.github.com/" data-view-component="true" class="Link--secondary Link">Docs</a> </li> <li class="mx-2"> <a data-analytics-event="{"category":"Footer","action":"go to contact","label":"text:contact"}" href="https://support.github.com?tags=dotcom-footer" data-view-component="true" class="Link--secondary Link">Contact</a> </li> <li class="mx-2" > <cookie-consent-link> <button type="button" class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent" data-action="click:cookie-consent-link#showConsentManagement" data-analytics-event="{"location":"footer","action":"cookies","context":"subfooter","tag":"link","label":"cookies_link_subfooter_footer"}" > Manage cookies </button> </cookie-consent-link> </li> <li class="mx-2"> <cookie-consent-link> <button type="button" class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent" data-action="click:cookie-consent-link#showConsentManagement" data-analytics-event="{"location":"footer","action":"dont_share_info","context":"subfooter","tag":"link","label":"dont_share_info_link_subfooter_footer"}" > Do not share my personal information </button> </cookie-consent-link> </li> </ul> </nav> </div> </footer> <ghcc-consent id="ghcc" class="position-fixed bottom-0 left-0" style="z-index: 999999" data-initial-cookie-consent-allowed="" data-cookie-consent-required="false"></ghcc-consent> <div id="ajax-error-message" class="ajax-error-message flash flash-error" hidden> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> You can’t perform that action at this time. </div> <template id="site-details-dialog"> <details class="details-reset details-overlay details-overlay-dark lh-default color-fg-default hx_rsm" open> <summary role="button" aria-label="Close dialog"></summary> <details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast hx_rsm-dialog hx_rsm-modal"> <button class="Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type="button" aria-label="Close dialog" data-close-dialog> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> <div class="octocat-spinner my-6 js-details-dialog-spinner"></div> </details-dialog> </details> </template> <div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;"> <div class="Popover-message Popover-message--bottom-left Popover-message--large Box color-shadow-large" style="width:360px;"> </div> </div> <template id="snippet-clipboard-copy-button"> <div class="zeroclipboard-container position-absolute right-0 top-0"> <clipboard-copy aria-label="Copy" class="ClipboardButton btn js-clipboard-copy m-2 p-0" data-copy-feedback="Copied!" data-tooltip-direction="w"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon m-2"> <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none m-2"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> </clipboard-copy> </div> </template> <template id="snippet-clipboard-copy-button-unpositioned"> <div class="zeroclipboard-container"> <clipboard-copy aria-label="Copy" class="ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 d-flex flex-justify-center flex-items-center" data-copy-feedback="Copied!" data-tooltip-direction="w"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon"> <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> </clipboard-copy> </div> </template> </div> <div id="js-global-screen-reader-notice" class="sr-only mt-n1" aria-live="polite" aria-atomic="true" ></div> <div id="js-global-screen-reader-notice-assertive" class="sr-only mt-n1" aria-live="assertive" aria-atomic="true"></div> </body> </html>