{"id":374023,"date":"2024-05-21T05:50:19","date_gmt":"2024-05-21T05:50:19","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=374023"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=374023","title":{"rendered":"<span>\u041e\u0434\u0438\u043d \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432\u0441\u0435\u043c\u0438<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/cb1\/e41\/4e7\/cb1e414e77db7a02ef7911bafb1b3364.png\" width=\"2522\" height=\"1992\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cb1\/e41\/4e7\/cb1e414e77db7a02ef7911bafb1b3364.png\"\/><\/figure>\n<p>\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0435 (server-client, static-client, gh-pages, Android, iOS, macOS, Linux, Windows, Chrome extension, Docker, Kubernetes, &#8230;) React \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u0437\u0430\u0442\u0440\u043e\u043d\u0443 Deep backend, \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0443\u0442\u044c-\u0447\u0443\u0442\u044c \u0432 \u043a\u043e\u043d\u0446\u0435. \u041d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u044e Open Source <a href=\"https:\/\/github.com\/deep-foundation\/sdk\">\u0448\u0430\u0431\u043b\u043e\u043d\/\u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043a\u0443 \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0445 React \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439<\/a> \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0432 Deep.Foundation.<\/p>\n<blockquote>\n<p>\u0414\u0430, \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e \u0434\u043b\u044f\u00a0\u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e UI\/UX \u043d\u0443\u0436\u0435\u043d \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 Swift\/Java\/&#8230;, \u043d\u043e\u00a0\u0435\u0441\u043b\u0438 \u0446\u0435\u043b\u044c\u00a0\u2014\u00a0\u0431\u044b\u0441\u0442\u0440\u043e \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u0438 \u0438\u043c\u0435\u0442\u044c \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0438 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a\u043e \u0432\u0441\u0435\u043c\u0443, \u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u0434\u0430\u0435\u0442 \u0438\u0437\u00a0\u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u043e\u0434\u043d\u043e \u043a\u043e\u043b\u044c\u0446\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432\u0441\u0435\u043c\u0438 \u0434\u043b\u044f\u00a0\u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0441\u0442\u0430\u0440\u0442\u0430.<\/p>\n<\/blockquote>\n<p>\u041d\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432 \u0441\u0432\u043e\u0435\u043c \u0444\u043e\u0440\u043a\u0435 \u0441\u0440\u0430\u0437\u0443 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u0441\u0432\u043e\u0439 React \u043a\u043e\u0434 \u0437\u0430\u043c\u0435\u043d\u0438\u0432 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 <a href=\"https:\/\/github.com\/deep-foundation\/sdk\/blob\/main\/pages\/index.tsx\">\u044d\u0442\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430<\/a>:<\/p>\n<pre><code class=\"typescript\">export default function Page() {   const deep = useDeep();   const { t } = useTranslation();   const router = useRouter();    \/\/ @ts-ignore   if (typeof(window) === 'object') window.deep = deep;   console.log('deep', deep);    return (&lt;Center p={'1em'}>     &lt;VStack p={3} spacing={3} width={'100vw'} maxWidth={500}>       &lt;Box pt={3}>         &lt;Heading as={'h1'} size='xl'>           {t('sdk')}           &lt;HStack spacing={3} float='right'>             &lt;Button isDisabled={router.locale === 'ru'} onClick={() => router.push(router.asPath, router.asPath, { locale: 'ru' })}>ru&lt;\/Button>             &lt;Button isDisabled={router.locale === 'en'} onClick={() => router.push(router.asPath, router.asPath, { locale: 'en' })}>en&lt;\/Button>           &lt;\/HStack>         &lt;\/Heading>         &lt;Heading as={'h4'} size='md'>{t('sdk-description')}&lt;\/Heading>       &lt;\/Box>       &lt;Connection\/>     &lt;\/VStack>   &lt;\/Center>); }<\/code><\/pre>\n<details class=\"spoiler\">\n<summary>\u0417\u0430\u0447\u0435\u043c SDK \u043d\u0430\u043c \u0432 Deep.Foundation (\u0441\u043b\u043e\u0436\u043d\u043e)<\/summary>\n<div class=\"spoiler__content\">\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u0441 \u0435\u0433\u043e \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0442\u0430\u043a\u043e\u0432\u043e\u0439 Deep.Case, SDK \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0445\u0440\u0430\u043d\u0438\u043c\u044b\u0435 \u0432 Deep, \u0432 \u0441\u0432\u044f\u0437\u044f\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 Deep.Case \u0432 \u043b\u044e\u0431\u043e\u0435 \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438 \u0441\u0440\u0430\u0437\u0443 \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u0432 \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043e\u0434\u043d\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439. \u0421 \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u044c\u044e \u0432 SDK \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d <code>deep-foundation\/deepcase-app<\/code> (<a href=\"https:\/\/www.npmjs.com\/package\/@deep-foundation\/deepcase\">npm<\/a>, <a href=\"https:\/\/github.com\/deep-foundation\/deepcase\">git<\/a>) \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c React \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 <code>&lt;ClientHandler linkId={123}\/><\/code> \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438. <\/p>\n<figure class=\"float full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8f2\/5d4\/aef\/8f25d4aef00d76f88a95c71d510739ef.png\" alt=\"\u0412 Deep.Case \u044d\u0442\u043e\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0432\u0435\u0440\u0441\u0442\u043a\u0443 \u043f\u0440\u0438 \u043a\u043b\u0438\u043a\u0435 \u043f\u043e \u0441\u0432\u044f\u0437\u0438 \u043a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0444\u043e\u0440\u043c\u0443\u043b\u044b \u0432 \u044d\u0442\u043e\u043c \u0440\u043e\u043b\u0438\u043a\u0435. \" title=\"\u0412 Deep.Case \u044d\u0442\u043e\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0432\u0435\u0440\u0441\u0442\u043a\u0443 \u043f\u0440\u0438 \u043a\u043b\u0438\u043a\u0435 \u043f\u043e \u0441\u0432\u044f\u0437\u0438 \u043a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0444\u043e\u0440\u043c\u0443\u043b\u044b \u0432 \u044d\u0442\u043e\u043c \u0440\u043e\u043b\u0438\u043a\u0435. \" width=\"686\" height=\"450\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8f2\/5d4\/aef\/8f25d4aef00d76f88a95c71d510739ef.png\"\/><\/p>\n<div><figcaption>\u0412 Deep.Case \u044d\u0442\u043e\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0432\u0435\u0440\u0441\u0442\u043a\u0443 \u043f\u0440\u0438 \u043a\u043b\u0438\u043a\u0435 \u043f\u043e \u0441\u0432\u044f\u0437\u0438 \u043a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0444\u043e\u0440\u043c\u0443\u043b\u044b <a href=\"https:\/\/youtu.be\/Xz7iYTUsc2Q?si=zOpJz9snOxu5mtJU&amp;t=275\">\u0432 \u044d\u0442\u043e\u043c \u0440\u043e\u043b\u0438\u043a\u0435<\/a>. <\/figcaption><\/div>\n<\/figure>\n<p>\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043e\u0447\u0435\u043d\u044c \u0433\u0438\u0431\u043a\u0438\u0439, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u043f\u0441 <code>context={[...ids]}<\/code> \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439, \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0432 \u0431\u0430\u0437\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u044b \u0441\u0432\u044f\u0437\u044f\u043c\u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u043a\u0430\u043a &#171;\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043c\u0435\u043d\u044e&#187; \u0438\u043b\u0438 &#171;\u043f\u043e\u043b\u043d\u043e\u044d\u043a\u0440\u0430\u043d\u043d\u043e\u0435&#187; \u0438\u043b\u0438 &#171;\u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e&#187; \u0438\u043b\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440, \u0438\u043b\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435. \u0412 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u044d\u0442\u043e \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u0441\u0432\u044f\u0437\u0438, \u0442\u0430\u043a \u043a\u0430\u043a \u0432\u0441\u0435 \u0435\u0434\u0438\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0441\u0431\u043e\u0440\u043a\u0430 SDK \u0433\u0434\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 index \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u044d\u0442\u043e <code>&lt;ClientHandler\/><\/code> \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0449\u0438\u0439 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0441\u0432\u044f\u0437\u044c, \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c, \u0438 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u0430\u044f Minilinks \u0441\u0432\u044f\u0437\u044f\u043c\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0438 \u0432\u0441\u0435\u0445 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445. \u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e \u0432 \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445. \u0421\u0435\u0439\u0447\u0430\u0441 \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u043d\u0430\u0434 \u043d\u043e\u0432\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 Deep.Case, \u0441 \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u043c\u0438 ClientHandler-\u0430\u043c\u0438 \u0441\u0435\u0442\u043e\u043a \u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0434\u0440\u0443\u0433\u0438\u0445 ClientHandler-\u043e\u0432 \u043a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <a href=\"https:\/\/github.com\/react-grid-layout\/\">react-grid-layout<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/reactflow.dev\/\">react-flow<\/a>, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432 \u043f\u043b\u0430\u043d\u0430\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 UI \u0432\u043e\u043a\u0440\u0443\u0433 ChakraUI <a href=\"https:\/\/v2.chakra-ui.com\/docs\/components\/grid\">grid<\/a>, <a href=\"https:\/\/v2.chakra-ui.com\/docs\/components\/flex\">flex<\/a>, <a href=\"https:\/\/v2.chakra-ui.com\/docs\/components\/simple-grid\">simple-grid<\/a> \u0438 \u043f\u0440 \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f responsive grids \u0432\u043d\u0443\u0442\u0440\u0438 Deep.Case.<\/p>\n<\/div>\n<\/details>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\">\n<\/td>\n<td data-colwidth=\"65\" width=\"65\">\n<p align=\"left\">status<\/p>\n<\/td>\n<td data-colwidth=\"171\" width=\"171\">\n<p align=\"left\">server<\/p>\n<\/td>\n<td data-colwidth=\"172\" width=\"172\">\n<p align=\"left\">client<\/p>\n<\/td>\n<td>\n<p align=\"left\">github actions<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\">build<\/p>\n<\/td>\n<td data-colwidth=\"65\" width=\"65\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"171\" width=\"171\">\n<p align=\"left\"><a href=\"https:\/\/nextjs.org\/docs\/pages\/building-your-application\/rendering\/server-side-rendering\">ssr<\/a> and <a href=\"https:\/\/nextjs.org\/docs\/pages\/building-your-application\/routing\/api-routes\">api<\/a><\/p>\n<\/td>\n<td data-colwidth=\"172\" width=\"172\">\n<p align=\"left\"><a href=\"https:\/\/react.dev\/\">react<\/a> and <a href=\"https:\/\/react.i18next.com\/\">i18n<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\">export<\/p>\n<\/td>\n<td data-colwidth=\"65\" width=\"65\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"171\" width=\"171\">\n<p align=\"left\">\n<\/td>\n<td data-colwidth=\"172\" width=\"172\">\n<p align=\"left\"><a href=\"https:\/\/react.dev\/\">react<\/a> and <u>async<\/u> <a href=\"https:\/\/react.i18next.com\/\">i18n<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\"><abbr class=\"habraabbr\" title=\"sdk\/Dockerfile\" data-title=\"&lt;p>sdk\/Dockerfile&lt;\/p>&lt;p>&lt;\/p>&#187; data-abbr=&#187;docker&#187;>docker<\/abbr><\/p>\n<\/td>\n<td data-colwidth=\"65\" width=\"65\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"171\" width=\"171\">\n<p align=\"left\"><a href=\"https:\/\/nextjs.org\/docs\/pages\/building-your-application\/rendering\/server-side-rendering\">ssr<\/a> and <a href=\"https:\/\/nextjs.org\/docs\/pages\/building-your-application\/routing\/api-routes\">api<\/a><\/p>\n<\/td>\n<td data-colwidth=\"172\" width=\"172\">\n<p align=\"left\"><a href=\"https:\/\/react.dev\/\">react<\/a> and <a href=\"https:\/\/react.i18next.com\/\">i18n<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">?\ufe0f<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\"><abbr class=\"habraabbr\" title=\"sdk\/chart \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0430\u043c\u0438 \u0434\u043b\u044f kubernetes\" data-title=\"&lt;p>sdk\/chart \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0430\u043c\u0438 \u0434\u043b\u044f kubernetes&lt;\/p>&lt;p>&lt;\/p>&#187; data-abbr=&#187;kubernetes&#187;>kuber<\/abbr><\/p>\n<\/td>\n<td data-colwidth=\"65\" width=\"65\">\n<p align=\"left\">?\ufe0f<\/p>\n<\/td>\n<td data-colwidth=\"171\" width=\"171\">\n<p align=\"left\"><a href=\"https:\/\/nextjs.org\/docs\/pages\/building-your-application\/rendering\/server-side-rendering\">ssr<\/a> and <a href=\"https:\/\/nextjs.org\/docs\/pages\/building-your-application\/routing\/api-routes\">api<\/a><\/p>\n<\/td>\n<td data-colwidth=\"172\" width=\"172\">\n<p align=\"left\"><a href=\"https:\/\/react.dev\/\">react<\/a> and <a href=\"https:\/\/react.i18next.com\/\">i18n<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">?\ufe0f<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\"><abbr class=\"habraabbr\" title=\"\u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 github actions \u0434\u043b\u044f \u043f\u0435\u0440\u043c\u043e\u043c\u0435\u043d\u0442\u043d\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435 \u0444\u043e\u0440\u043a\u0430. \u041a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 https:\/\/deep-foundation.github.io\/sdk\/\" data-title=\"&lt;p>\u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 github actions \u0434\u043b\u044f \u043f\u0435\u0440\u043c\u043e\u043c\u0435\u043d\u0442\u043d\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435 \u0444\u043e\u0440\u043a\u0430. \u041a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440&amp;nbsp;&lt;a href=&quot;https:\/\/deep-foundation.github.io\/sdk\/&quot;>https:\/\/deep-foundation.github.io\/sdk\/&lt;\/a>&lt;\/p>&lt;p>&lt;\/p>&#187; data-abbr=&#187;gh-pages&#187;>gh-pages<\/abbr><\/p>\n<\/td>\n<td data-colwidth=\"65\" width=\"65\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"171\" width=\"171\">\n<p align=\"left\">\n<\/td>\n<td data-colwidth=\"172\" width=\"172\">\n<p align=\"left\"><a href=\"https:\/\/react.dev\/\">react<\/a> and <u>async<\/u> <a href=\"https:\/\/react.i18next.com\/\">i18n<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\"><abbr class=\"habraabbr\" title=\"\u0423 Capacitor \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043c\u0438\u043a\u0440\u043e\u0444\u043e\u043d\u0443, \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u043e\u0439 \u043a\u043d\u0438\u0433\u0435 \u0438 \u043f\u0440, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043f\u0443\u0442\u043d\u0438\u043a\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0449\u0435\u0433\u043e \u0432 deep \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044f \u0432\u0441\u044e \u0435\u0433\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0439 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043c\u0438\u0440\u0435, \u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u043c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u0443\u0434\u043e\u0431\u043d\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432.\" data-title=\"&lt;p>\u0423 &lt;a href=&quot;https:\/\/capacitorjs.com\/&quot;>Capacitor&lt;\/a> \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e &lt;a href=&quot;https:\/\/capacitorjs.com\/docs\/v2\/plugins&quot;>\u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432&lt;\/a>&amp;nbsp;\u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043c\u0438\u043a\u0440\u043e\u0444\u043e\u043d\u0443, \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u043e\u0439 \u043a\u043d\u0438\u0433\u0435 \u0438 \u043f\u0440, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043f\u0443\u0442\u043d\u0438\u043a\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0449\u0435\u0433\u043e \u0432 deep \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044f \u0432\u0441\u044e \u0435\u0433\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0439 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043c\u0438\u0440\u0435, \u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u043c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u0443\u0434\u043e\u0431\u043d\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432.&amp;nbsp;&lt;\/p>&lt;p>&lt;\/p>&#187; data-abbr=&#187;build-ios&#187;>build-ios<\/abbr><\/p>\n<\/td>\n<td data-colwidth=\"65\" width=\"65\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"171\" width=\"171\">\n<p align=\"left\">\n<\/td>\n<td data-colwidth=\"172\" width=\"172\">\n<p align=\"left\"><a href=\"https:\/\/react.dev\/\">react<\/a> and <u>async<\/u> <a href=\"https:\/\/react.i18next.com\/\">i18n<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">?\ufe0f<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\"><abbr class=\"habraabbr\" title=\"\u0423 Capacitor \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043c\u0438\u043a\u0440\u043e\u0444\u043e\u043d\u0443, \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u043e\u0439 \u043a\u043d\u0438\u0433\u0435 \u0438 \u043f\u0440, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043f\u0443\u0442\u043d\u0438\u043a\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0449\u0435\u0433\u043e \u0432 deep \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044f \u0432\u0441\u044e \u0435\u0433\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0439 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043c\u0438\u0440\u0435, \u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u043c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u0443\u0434\u043e\u0431\u043d\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432.\" data-title=\"&lt;p>\u0423 &lt;a href=&quot;https:\/\/capacitorjs.com\/&quot;>Capacitor&lt;\/a> \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e &lt;a href=&quot;https:\/\/capacitorjs.com\/docs\/v2\/plugins&quot;>\u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432&lt;\/a>&amp;nbsp;\u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043c\u0438\u043a\u0440\u043e\u0444\u043e\u043d\u0443, \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u043e\u0439 \u043a\u043d\u0438\u0433\u0435 \u0438 \u043f\u0440, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043f\u0443\u0442\u043d\u0438\u043a\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0449\u0435\u0433\u043e \u0432 deep \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044f \u0432\u0441\u044e \u0435\u0433\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0439 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043c\u0438\u0440\u0435, \u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u043c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u0443\u0434\u043e\u0431\u043d\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432.&amp;nbsp;&lt;\/p>&#187; data-abbr=&#187;build-android&#187;>build-android<\/abbr><\/p>\n<\/td>\n<td data-colwidth=\"65\" width=\"65\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"171\" width=\"171\">\n<p align=\"left\">\n<\/td>\n<td data-colwidth=\"172\" width=\"172\">\n<p align=\"left\"><a href=\"https:\/\/react.dev\/\">react<\/a> and <u>async<\/u> <a href=\"https:\/\/react.i18next.com\/\">i18n<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\"><abbr class=\"habraabbr\" title=\"\u0418\u0437 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043e\u0442\u043b\u044e\u0447\u0435\u043d\u0430, \u0447\u0442\u043e \u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 Deep.Case \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c Docker \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0438 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0442\u044c \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0431\u0435\u043a\u0435\u043d\u0434 \u0434\u0438\u043f\u0430 \u043e\u0434\u043d\u0438\u043c \u043a\u043b\u0438\u043a\u043e\u043c \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e Docker. \u0412 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0441 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u043e\u043c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 env \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0447\u0442\u043e \u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0430\u0432 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435, \u0438 \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043b\u0438\u0432\u043a\u0438 \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u044b.\" data-title=\"&lt;p>\u0418\u0437 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043e\u0442\u043b\u044e\u0447\u0435\u043d\u0430, \u0447\u0442\u043e \u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 Deep.Case \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c Docker \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0438 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0442\u044c \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0431\u0435\u043a\u0435\u043d\u0434 \u0434\u0438\u043f\u0430 \u043e\u0434\u043d\u0438\u043c \u043a\u043b\u0438\u043a\u043e\u043c \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e Docker. \u0412 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0441 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u043e\u043c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 env \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0447\u0442\u043e \u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0430\u0432 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435, \u0438 \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043b\u0438\u0432\u043a\u0438 \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u044b.&lt;\/p>&#187; data-abbr=&#187;build-windows&#187;>build-windows<\/abbr> (on windows)<\/p>\n<\/td>\n<td data-colwidth=\"65\" width=\"65\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"171\" width=\"171\">\n<p align=\"left\">\/electron\/src\/server.ts<\/p>\n<\/td>\n<td data-colwidth=\"172\" width=\"172\">\n<p align=\"left\"><a href=\"https:\/\/react.dev\/\">react<\/a> and <u>async<\/u> <a href=\"https:\/\/react.i18next.com\/\">i18n<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\"><abbr class=\"habraabbr\" title=\"\u0418\u0437 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043e\u0442\u043b\u044e\u0447\u0435\u043d\u0430, \u0447\u0442\u043e \u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 Deep.Case \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c Docker \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0438 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0442\u044c \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0431\u0435\u043a\u0435\u043d\u0434 \u0434\u0438\u043f\u0430 \u043e\u0434\u043d\u0438\u043c \u043a\u043b\u0438\u043a\u043e\u043c \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e Docker. \u0412 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0441 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u043e\u043c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 env \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0447\u0442\u043e \u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0430\u0432 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435, \u0438 \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043b\u0438\u0432\u043a\u0438 \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u044b.\" data-title=\"&lt;p>\u0418\u0437 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043e\u0442\u043b\u044e\u0447\u0435\u043d\u0430, \u0447\u0442\u043e \u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 Deep.Case \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c Docker \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0438 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0442\u044c \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0431\u0435\u043a\u0435\u043d\u0434 \u0434\u0438\u043f\u0430 \u043e\u0434\u043d\u0438\u043c \u043a\u043b\u0438\u043a\u043e\u043c \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e Docker. \u0412 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0441 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u043e\u043c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 env \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0447\u0442\u043e \u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0430\u0432 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435, \u0438 \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043b\u0438\u0432\u043a\u0438 \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u044b.&lt;\/p>&#187; data-abbr=&#187;build-unix&#187;>build-unix<\/abbr> (on linux)<\/p>\n<\/td>\n<td data-colwidth=\"65\" width=\"65\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"171\" width=\"171\">\n<p align=\"left\">\/electron\/src\/server.ts<\/p>\n<\/td>\n<td data-colwidth=\"172\" width=\"172\">\n<p align=\"left\"><a href=\"https:\/\/react.dev\/\">react<\/a> and <u>async<\/u> <a href=\"https:\/\/react.i18next.com\/\">i18n<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\"><abbr class=\"habraabbr\" title=\"\u0418\u0437 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043e\u0442\u043b\u044e\u0447\u0435\u043d\u0430, \u0447\u0442\u043e \u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 Deep.Case \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c Docker \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0438 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0442\u044c \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0431\u0435\u043a\u0435\u043d\u0434 \u0434\u0438\u043f\u0430 \u043e\u0434\u043d\u0438\u043c \u043a\u043b\u0438\u043a\u043e\u043c \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e Docker. \u0412 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0441 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u043e\u043c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 env \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0447\u0442\u043e \u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0430\u0432 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435, \u0438 \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043b\u0438\u0432\u043a\u0438 \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u044b.\" data-title=\"&lt;p>\u0418\u0437 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043e\u0442\u043b\u044e\u0447\u0435\u043d\u0430, \u0447\u0442\u043e \u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 Deep.Case \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c Docker \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0438 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0442\u044c \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0431\u0435\u043a\u0435\u043d\u0434 \u0434\u0438\u043f\u0430 \u043e\u0434\u043d\u0438\u043c \u043a\u043b\u0438\u043a\u043e\u043c \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e Docker. \u0412 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0441 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u043e\u043c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 env \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0447\u0442\u043e \u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0430\u0432 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435, \u0438 \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043b\u0438\u0432\u043a\u0438 \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u044b.&lt;\/p>&#187; data-abbr=&#187;build-mac&#187;>build-mac<\/abbr> (on mac)<\/p>\n<\/td>\n<td data-colwidth=\"65\" width=\"65\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"171\" width=\"171\">\n<p align=\"left\">\/electron\/src\/server.ts<\/p>\n<\/td>\n<td data-colwidth=\"172\" width=\"172\">\n<p align=\"left\"><a href=\"https:\/\/react.dev\/\">react<\/a> and <u>async<\/u> <a href=\"https:\/\/react.i18next.com\/\">i18n<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\"><abbr class=\"habraabbr\" title=\"\u0418\u0437 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432\u043a\u043b\u0430\u0434\u043a\u0438, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0432 deep \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0430 \u0442\u0430\u043a-\u0436\u0435 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c deep \u0438 ClientHandler-\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u043c\u043e\u043d\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0435 \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f React \u0434\u0435\u0440\u0435\u0432\u043e. \u0427\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 deep \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u043c \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u0435\u0433\u043e \u043e\u043f\u044b\u0442 \u043f\u0440\u0435\u0431\u044b\u0432\u0430\u043d\u0438\u044f \u0432 \u0441\u0435\u0442\u0438.\" data-title=\"&lt;p>\u0418\u0437 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432\u043a\u043b\u0430\u0434\u043a\u0438, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0432 deep \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0430 \u0442\u0430\u043a-\u0436\u0435 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c deep \u0438 ClientHandler-\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u043c\u043e\u043d\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0435 \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f React \u0434\u0435\u0440\u0435\u0432\u043e. \u0427\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 deep \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u043c \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u0435\u0433\u043e \u043e\u043f\u044b\u0442 \u043f\u0440\u0435\u0431\u044b\u0432\u0430\u043d\u0438\u044f \u0432 \u0441\u0435\u0442\u0438.&lt;\/p>&#187; data-abbr=&#187;build-chrome-extension&#187;>build-chrome-extension<\/abbr><\/p>\n<\/td>\n<td data-colwidth=\"65\" width=\"65\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"171\" width=\"171\">\n<p align=\"left\">\n<\/td>\n<td data-colwidth=\"172\" width=\"172\">\n<p align=\"left\"><a href=\"https:\/\/react.dev\/\">react<\/a> and <u>async<\/u> <a href=\"https:\/\/react.i18next.com\/\">i18n<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">?\ufe0f<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\"><abbr class=\"habraabbr\" title=\"\u0418\u0437 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432\u043a\u043b\u0430\u0434\u043a\u0438, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0432 deep \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0430 \u0442\u0430\u043a-\u0436\u0435 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c deep \u0438 ClientHandler-\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u043c\u043e\u043d\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0435 \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f React \u0434\u0435\u0440\u0435\u0432\u043e. \u0427\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 deep \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u043c \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u0435\u0433\u043e \u043e\u043f\u044b\u0442 \u043f\u0440\u0435\u0431\u044b\u0432\u0430\u043d\u0438\u044f \u0432 \u0441\u0435\u0442\u0438.\" data-title=\"&lt;p>\u0418\u0437 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432\u043a\u043b\u0430\u0434\u043a\u0438, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0432 deep \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0430 \u0442\u0430\u043a-\u0436\u0435 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c deep \u0438 ClientHandler-\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u043c\u043e\u043d\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0435 \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f React \u0434\u0435\u0440\u0435\u0432\u043e. \u0427\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 deep \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u043c \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u0435\u0433\u043e \u043e\u043f\u044b\u0442 \u043f\u0440\u0435\u0431\u044b\u0432\u0430\u043d\u0438\u044f \u0432 \u0441\u0435\u0442\u0438.&lt;\/p>&#187; data-abbr=&#187;build-firefox-extension&#187;>build-firefox-extension<\/abbr><\/p>\n<\/td>\n<td data-colwidth=\"65\" width=\"65\">\n<p align=\"left\">?\ufe0f<\/p>\n<\/td>\n<td data-colwidth=\"171\" width=\"171\">\n<p align=\"left\">\n<\/td>\n<td data-colwidth=\"172\" width=\"172\">\n<p align=\"left\"><a href=\"https:\/\/react.dev\/\">react<\/a> and <u>async<\/u> <a href=\"https:\/\/react.i18next.com\/\">i18n<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\"><abbr class=\"habraabbr\" title=\"\u0418\u0437 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f vsc \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0432 deep \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0438 \u0438\u0437 deep \u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u043d\u0435\u0433\u043e \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044f \u0432 \u043d\u0435\u043c \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u043c \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438.\" data-title=\"&lt;p>\u0418\u0437 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f vsc \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0432 deep \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0438 \u0438\u0437 deep \u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u043d\u0435\u0433\u043e \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044f \u0432 \u043d\u0435\u043c \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u043c \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438.&lt;\/p>&lt;p>&lt;\/p>&#187; data-abbr=&#187;vscode-extension&#187;>vscode-extension<\/abbr><\/p>\n<\/td>\n<td data-colwidth=\"65\" width=\"65\">\n<p align=\"left\">?\ufe0f<\/p>\n<\/td>\n<td data-colwidth=\"171\" width=\"171\">\n<p align=\"left\">\n<\/td>\n<td data-colwidth=\"172\" width=\"172\">\n<p align=\"left\">?<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\">nodeos<\/p>\n<\/td>\n<td data-colwidth=\"65\" width=\"65\">\n<p align=\"left\">?\ufe0f<\/p>\n<\/td>\n<td data-colwidth=\"171\" width=\"171\">\n<p align=\"left\">\n<\/td>\n<td data-colwidth=\"172\" width=\"172\">\n<p align=\"left\"><a href=\"https:\/\/react.dev\/\">react<\/a> and <a href=\"https:\/\/react.i18next.com\/\">i18n<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<blockquote>\n<p>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0438 \u0432\u0441\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043f\u043e \u043c\u0435\u0440\u0435 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0441\u0431\u043e\u0440\u043a\u0438, \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0438\u0437 \u0441\u0442\u0430\u0442\u0443\u0441\u0430. \u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u043e \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043a\u043e\u043d\u043e\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439, splash \u0441\u043a\u0440\u0438\u043d\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u0440\u043e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<\/blockquote>\n<h2>\u0413\u043e\u0442\u043e\u0432\u0438\u043c \u0441\u0435\u0431\u044f<\/h2>\n<p>\u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e sdk \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0430\u0437\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u043d\u0438\u0435 <a href=\"https:\/\/developer.mozilla.org\/ru\/docs\/Web\/JavaScript\">JavaScript<\/a> (\u043d\u0430\u0448\u0438 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0435 <a href=\"https:\/\/www.youtube.com\/watch?v=7laKifxkMNQ&amp;list=PLzZko_ng9gnkyNIlnSi74xr2_qmCBmoSe\">\u0432\u0438\u0434\u0435\u043e \u0443\u0440\u043e\u043a\u0438<\/a>), <a href=\"https:\/\/ru.legacy.reactjs.org\/\">React<\/a>, html\/css, <a href=\"https:\/\/git-scm.com\/\">git<\/a> \u0438 <a href=\"https:\/\/nextjs.org\/\">NextJS<\/a>. \u0414\u043b\u044f \u0442\u043e\u043d\u043a\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0431\u0438\u043b\u0434\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 <a href=\"https:\/\/capacitorjs.com\/\">Capacitor<\/a>, <a href=\"https:\/\/www.electronjs.org\/\">Electron<\/a>, <a href=\"https:\/\/cordova.apache.org\/\">Cordova<\/a>.<\/p>\n<blockquote>\n<p>\u0412 SDK \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d <a href=\"https:\/\/chakra-ui.com\/\">ChakraUI<\/a> \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 ui \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 \u043d\u0430 \u0431\u0430\u0437\u0435 css-in-js, \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u043c\u043e\u0436\u043d\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432 <a href=\"https:\/\/openchakra.app\/\">OpenChakra<\/a>.<\/p>\n<\/blockquote>\n<h2>\u0413\u043e\u0442\u043e\u0432\u0438\u043c \u0441\u0440\u0435\u0434\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438<\/h2>\n<p>\u041d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 IDE, \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c <a href=\"https:\/\/code.visualstudio.com\/\">VSCode<\/a>. \u041d\u0430 Windows \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f <a href=\"https:\/\/ubuntu.com\/desktop\/wsl\">WSL<\/a>. \u0422\u0430\u043a\u0436\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c <a href=\"https:\/\/git-scm.com\/\">git<\/a> \u0434\u043b\u044f \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432 \u0438 <a href=\"https:\/\/github.com\/nvm-sh\/nvm\">nvm<\/a> \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 <a href=\"https:\/\/nodejs.org\/\">nodejs\/npm<\/a>. \u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c 18 \u0432\u0435\u0440\u0441\u0438\u044e node, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0435\u0435 \u043a\u0430\u043a \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e:<\/p>\n<pre><code class=\"bash\">nvm i 18 nvm alias default 18 nvm use default npm i -g npm@latest<\/code><\/pre>\n<p>\u0414\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 Android \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u0430\u044f <a href=\"https:\/\/developer.android.com\/studio\">Android Studio<\/a> \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438 \u0432 SDK Tool: Android SDK Command-line Tools, Android Emulato, Android SDK Platfrom-Tool, Google Play services \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 SDK Platforms, \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Android 14. \u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0430 \u043c\u0430\u043a\u0435, \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c <a href=\"https:\/\/brew.sh\/\">Homebrew<\/a>, \u044d\u0442\u043e \u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a. \u0417\u0430\u0442\u0435\u043c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0431\u043e\u0440\u0449\u0438\u043a Android \u0431\u0438\u043b\u0434\u043e\u0432 <a href=\"https:\/\/gradle.org\/install\/\">Gradle<\/a> \u0441\u043b\u0435\u0434\u0443\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u0438\u043b\u0438 \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0430 \u043c\u0430\u043a\u0435 \u044d\u0442\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<pre><code class=\"bash\">brew install gradle<\/code><\/pre>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b \u0438\u0437 Android Studio<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3d4\/3eb\/980\/3d43eb98009938d5d874db0ac5ad4e35.png\" width=\"2188\" height=\"1656\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3d4\/3eb\/980\/3d43eb98009938d5d874db0ac5ad4e35.png\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b69\/7bc\/9d0\/b697bc9d0dcdd2a1c6357c821eb30f11.png\" width=\"2188\" height=\"1656\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b69\/7bc\/9d0\/b697bc9d0dcdd2a1c6357c821eb30f11.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0414\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 iOS \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 XCode, \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 10. \u0422\u0430\u043a-\u0436\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c <a href=\"https:\/\/brew.sh\/\">Homebrew<\/a> \u0438 \u0441 \u0435\u0433\u043e \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0434\u043b\u044f Objective-C \u0438 Swift &#8212; <a href=\"https:\/\/cocoapods.org\/\">\u0421ocoapods<\/a>.<\/p>\n<pre><code class=\"bash\">brew install cocoapods<\/code><\/pre>\n<h2>\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c<\/h2>\n<p>\u0412 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043a\u0435\u0439\u0441\u0435, \u0432 \u0438\u0434\u0435\u0430\u043b\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0444\u043e\u0440\u043a sdk, \u0438 \u0441\u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e, \u0430 \u0437\u0430\u0442\u0435\u043c \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0435\u0433\u043e \u0438\u0437 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043a\u043e\u0434\u043e\u043c:<\/p>\n<pre><code class=\"bash\">git remote add sdk https:\/\/github.com\/deep-foundation\/sdk.git git fetch sdk main git merge sdk\/main --allow-unrelated-histories --strategy ours <\/code><\/pre>\n<p>\u041c\u044b \u0436\u0435 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441 sdk, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u0432 \u043d\u0435\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0438 \u0444\u043e\u0440\u043a \u043d\u0430\u043c \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u043b\u043e\u043d\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e.<\/p>\n<pre><code class=\"bash\">git clone https:\/\/github.com\/deep-foundation\/sdk.git cd sdk npm ci; (cd electron; npm ci)<\/code><\/pre>\n<blockquote>\n<p>\u0412 \u0441\u0440\u0435\u0434\u043d\u0435\u043c \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0432\u0441\u0435\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f sdk \u0432\u0435\u0441\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e <s>\u0434\u043e#$&amp;<\/s> 5.5\u0413\u0411, \u043d\u043e \u0442\u0430\u043a\u043e\u0432\u0430 \u0446\u0435\u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430 NodeJS.<\/p>\n<\/blockquote>\n<h4>\u0420\u0435\u0436\u0438\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438<\/h4>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0432\u0435\u0440\u0441\u0438\u044e \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0412 \u0442\u0430\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0443\u0434\u043e\u0431\u043d\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044f <a href=\"https:\/\/developer.chrome.com\/docs\/devtools?hl=ru\">chrome inspector<\/a> \u0438 <a href=\"https:\/\/chromewebstore.google.com\/detail\/react-developer-tools\/fmkadmapgofadopljbjfkapdkoienihi\">react chrome extension<\/a>.<\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441<code>PORT=3000<\/code> \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e:<\/p>\n<pre><code class=\"bash\">npm run dev<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u043c \u043f\u043e\u0440\u0442\u0435 (3001):<\/p>\n<pre><code class=\"bash\">PORT=3001 npm run dev<\/code><\/pre>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 localhost:3000<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1bc\/de7\/0b7\/1bcde70b758f8b183ad2f4a4e412ac04.png\" width=\"1084\" height=\"1316\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1bc\/de7\/0b7\/1bcde70b758f8b183ad2f4a4e412ac04.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<h4>\u0421\u0435\u0440\u0432\u0435\u0440\u043d\u043e-\u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0430\u044f \u0441\u0431\u043e\u0440\u043a\u0430<\/h4>\n<pre><code class=\"bash\">npm run build; # \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f sdk\/app, PORT \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f npm run start; # \u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e sdk\/app, PORT=3000 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e PORT=3001 npm run start; # \u0437\u0430\u043f\u0443\u0441\u043a \u043d\u0430 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u043c \u043f\u043e\u0440\u0442\u0435<\/code><\/pre>\n<blockquote>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u044b\u0439 \u0432\u0435\u0441 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 sdk\/app 76\u041c\u0411<\/p>\n<\/blockquote>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 localhost:3000<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/23e\/68b\/d36\/23e68bd366442e5aa1e194910528f154.png\" width=\"1084\" height=\"1316\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/23e\/68b\/d36\/23e68bd366442e5aa1e194910528f154.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<h3>\u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0430\u044f \u0441\u0431\u043e\u0440\u043a\u0430<\/h3>\n<p>\u0412 SDK \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d <a href=\"https:\/\/github.com\/i18next\/next-i18next\/\">next-i18next<\/a><\/p>\n<pre><code>npm run export; # \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f sdk\/app \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 # .html \u0444\u0430\u0439\u043b\u044b \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c # \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043b\u0438\u0442\u044c  # \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 GitHub Pages)<\/code><\/pre>\n<blockquote>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u044b\u0439 \u0432\u0435\u0441 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 sdk\/app 1.6\u041c\u0411<\/p>\n<\/blockquote>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ce6\/be6\/be7\/ce6be6be7cebc34c0dfa2f2829fab3cf.png\" width=\"1090\" height=\"728\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ce6\/be6\/be7\/ce6be6be7cebc34c0dfa2f2829fab3cf.png\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6a7\/f0e\/f6a\/6a7f0ef6ae50f231389e5cff44ceffca.png\" width=\"1084\" height=\"1316\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6a7\/f0e\/f6a\/6a7f0ef6ae50f231389e5cff44ceffca.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<h4>Android \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/h4>\n<pre><code class=\"bash\">npm run build-android; # \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 sdk\/app, \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 sdk\/android npm run open-android; # \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 AndroidStudio \u0441 \u043d\u0443\u0436\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u0438\u0437 sdk\/android # \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 apk \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 sdk\/android\/app\/build\/outputs\/apk\/debug\/app-debug.apk # \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 release \u0431\u0438\u043b\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u0440\u043e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0432 \u0441\u0442\u043e\u0440\u044b<\/code><\/pre>\n<blockquote>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u044b\u0439 \u0432\u0435\u0441 apk \u0444\u0430\u0439\u043b\u0430 4.1\u041c\u0411<\/p>\n<p>\u0411\u044b\u0432\u0430\u0435\u0442 \u0443\u0434\u043e\u0431\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/capacitorjs.com\/docs\/v2\/config\">capacitor config<\/a> \u043a\u043b\u044e\u0447 server \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0443\u043a\u0430\u0437\u0430\u0432 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435 \u043f\u0443\u0442\u044c \u043a \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u043c\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (<code>npm run dev<\/code>).<\/p>\n<\/blockquote>\n<details class=\"spoiler\">\n<summary>\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u0438 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2eb\/8fb\/5ad\/2eb8fb5ad685aa3f40bf981b90c3bf65.png\" alt=\"\" title=\"\" width=\"3024\" height=\"2224\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2eb\/8fb\/5ad\/2eb8fb5ad685aa3f40bf981b90c3bf65.png\"\/><\/figure>\n<p>1 \u0414\u043e\u0436\u0438\u0434\u0430\u0435\u043c\u0441\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0441\u0431\u043e\u0440\u043a\u0438 \u0432 \u043f\u0440\u0430\u0432\u043e\u043c \u043d\u0438\u0436\u043d\u0435\u043c \u0443\u0433\u043b\u0443.<\/p>\n<p>2 \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0438\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043a sdk \u0431\u044b\u0432\u0430\u0435\u0442 \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0436\u0430\u0442\u044c Sync Project with Gradle files.<\/p>\n<p>3 \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0436\u0435\u043b\u0430\u0435\u043c\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u0438 \u0441\u043b\u0435\u0434\u0443\u0435\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0432\u043d\u0443\u0442\u0440\u0438.<\/p>\n<p>4 \u041f\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043d\u0430\u0436\u0430\u0442\u044c \u0437\u0435\u043b\u0435\u043d\u0443\u044e \u043a\u043d\u043e\u043f\u043a\u0443  \u25b6\ufe0f Run \u0441\u0432\u0435\u0440\u0445\u0443. \u042d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 Android, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u043d\u0430 \u043d\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0435\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0443.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a96\/43c\/54a\/a9643c54aa1916de7d24d2bc868b931c.png\" width=\"1030\" height=\"2084\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a96\/43c\/54a\/a9643c54aa1916de7d24d2bc868b931c.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<h4>iOS \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/h4>\n<pre><code class=\"bash\"># \u041f\u0435\u0440\u0435\u0434 \u0440\u0430\u0431\u043e\u0442\u043e\u0439 \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c cocoapods \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0432 ios (cd ios\/App\/App; pod install)  npm run build-ios # \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 sdk\/app, \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 sdk\/ios npm run run-ios # \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 XCode \u0441 \u043d\u0443\u0436\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u0438\u0437 sdk\/ios # \u0433\u0434\u0435 \u043b\u0435\u0436\u0438\u0442 \u0431\u0438\u043b\u0434 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0435 \u0442\u0430\u043a \u0432\u0430\u0436\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u043b\u044e\u0431\u0430\u044f \u0437\u0430\u043b\u0438\u0432\u043a\u0430 \u0432 TestFlight # \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u0438\u043a\u043e\u043c \u0438\u0437 XCode, \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/32b\/96b\/0a8\/32b96b0a8fed87e97226dcfd6d85eaf9.png\" alt=\"\u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f run-ios \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 ios \u043d\u0430 \u0432\u044b\u0431\u043e\u0440. \u0412\u044b\u0431\u043e\u0440 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u0435\u043b\u043e\u0447\u043a\u0430\u043c\u0438 \u0438 enter. \u0412\u044b\u0431\u0435\u0440\u0443 \u0441\u0432\u043e\u0439 se, \u0431\u0435\u0437 \u043e\u0442\u043f\u0435\u0447\u0430\u0442\u043a\u043e\u0432 \u043f\u0430\u043b\u044c\u0446\u0430 \u043d\u0438\u043a\u0443\u0434\u0430... \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u044b ;)?\" title=\"\u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f run-ios \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 ios \u043d\u0430 \u0432\u044b\u0431\u043e\u0440. \u0412\u044b\u0431\u043e\u0440 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u0435\u043b\u043e\u0447\u043a\u0430\u043c\u0438 \u0438 enter. \u0412\u044b\u0431\u0435\u0440\u0443 \u0441\u0432\u043e\u0439 se, \u0431\u0435\u0437 \u043e\u0442\u043f\u0435\u0447\u0430\u0442\u043a\u043e\u0432 \u043f\u0430\u043b\u044c\u0446\u0430 \u043d\u0438\u043a\u0443\u0434\u0430... \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u044b ;)?\" width=\"1128\" height=\"572\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/32b\/96b\/0a8\/32b96b0a8fed87e97226dcfd6d85eaf9.png\"\/><\/p>\n<div><figcaption>\u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f <code>run-ios<\/code> \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 ios \u043d\u0430 \u0432\u044b\u0431\u043e\u0440. \u0412\u044b\u0431\u043e\u0440 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u0435\u043b\u043e\u0447\u043a\u0430\u043c\u0438 \u0438 enter. \u0412\u044b\u0431\u0435\u0440\u0443 \u0441\u0432\u043e\u0439 se, \u0431\u0435\u0437 \u043e\u0442\u043f\u0435\u0447\u0430\u0442\u043a\u043e\u0432 \u043f\u0430\u043b\u044c\u0446\u0430 \u043d\u0438\u043a\u0443\u0434\u0430&#8230; \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u044b ;)?<\/figcaption><\/div>\n<\/figure>\n<blockquote>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u044b\u0439 \u0432\u0435\u0441 apk \u0444\u0430\u0439\u043b\u0430 4.1\u041c\u0411<\/p>\n<p>\u0411\u044b\u0432\u0430\u0435\u0442 \u0443\u0434\u043e\u0431\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/capacitorjs.com\/docs\/v2\/config\">capacitor config<\/a> \u043a\u043b\u044e\u0447 server \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0443\u043a\u0430\u0437\u0430\u0432 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435 \u043f\u0443\u0442\u044c \u043a \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u043c\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (<code>npm run dev<\/code>).<\/p>\n<\/blockquote>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0433\u043e \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f52\/470\/b9c\/f52470b9c03e06dfa7a1558618000229.png\" width=\"1112\" height=\"2112\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f52\/470\/b9c\/f52470b9c03e06dfa7a1558618000229.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<h4>Mac \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/h4>\n<p>\u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 macOS. \u041f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f <a href=\"https:\/\/developer.apple.com\/\">Apple Developer<\/a> \u0430\u043a\u043a\u0430\u0443\u043d\u0442. \u041d\u0443\u0436\u043d\u043e <a href=\"https:\/\/(https:\/\/support.apple.com\/HT204397\">\u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c app-specific \u043f\u0430\u0440\u043e\u043b\u044c \u0434\u043b\u044f ADC \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 Apple ID<\/a> \u0438 \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u0435\u0433\u043e. \u0417\u0430\u0442\u0435\u043c <a href=\"https:\/\/github.com\/electron\/notarize?tab=readme-ov-file#notes-on-your-teamid\">\u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c teamId<\/a>. \u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 <code>APPLEIDPASS<\/code>, <code>APPLEID<\/code>, <code>CSC_NAME<\/code>, <code>APPLETEAMID<\/code> \u0432 \u0432\u0430\u0448\u0435\u043c <code>package.json<\/code>.<code>scripts<\/code>.<code>build-mac<\/code>, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c <code>security add-generic-password -l \"sdk\" -a \"YOUR-APPLEID-EMAIL\" -s \"keychain\" -T \"\" -w \"APP-PASSWORD-FROM-APPLE\"<\/code> \u043f\u043e\u0434\u043c\u0435\u043d\u0438\u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0433\u0434\u0435 <code>APP-PASSWORD-FROM-APPLE<\/code> \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0440\u0430\u043d\u0435\u0435 app-specific \u043f\u0430\u0440\u043e\u043b\u044c.<\/p>\n<pre><code class=\"bash\">npm run build-mac # \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 sdk\/app, \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 sdk\/electron # \u0433\u0435\u043d\u0435\u0440\u0438\u0443\u0435\u0442 dmg, zip \u0438 \u043f\u0430\u043f\u043a\u0443 mac \u0441 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u043e\u043c \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 sdk\/electron\/dist<\/code><\/pre>\n<blockquote>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u044b\u0439 \u0432\u0435\u0441 dmg \u0444\u0430\u0439\u043b\u0430 <s>350\u041c\u0411<\/s> [+23.04.2024] 100\u041c\u0411<\/p>\n<\/blockquote>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 sdk\/electron\/dist \u0438 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/554\/62f\/657\/55462f6570a1f5230e5246cabb4e8340.png\" width=\"1022\" height=\"1026\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/554\/62f\/657\/55462f6570a1f5230e5246cabb4e8340.png\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/62b\/0d2\/eff\/62b0d2eff9d3143ec6872296dc5a033a.png\" width=\"1352\" height=\"1542\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/62b\/0d2\/eff\/62b0d2eff9d3143ec6872296dc5a033a.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<h4>Linux \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/h4>\n<p>\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f linux \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437 \u043f\u043e\u0434 linux.<\/p>\n<pre><code>npm run build-unix # \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 sdk\/app, \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 sdk\/electron # \u0433\u0435\u043d\u0435\u0440\u0438\u0443\u0435\u0442 Appimage \u0438 \u043f\u0430\u043f\u043a\u0443 linux-unpacked \u0441 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u043c\u044b\u043c \u0444\u0430\u0439\u043b\u043e\u043c<\/code><\/pre>\n<blockquote>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u044b\u0439 \u0432\u0435\u0441 Appimage \u0444\u0430\u0439\u043b\u0430 <s>350\u041c\u0411<\/s> [+23.04.2024] 100\u041c\u0411<\/p>\n<\/blockquote>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 sdk\/electron\/dist \u0438 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f58\/002\/b2f\/f58002b2fc6306787f4858ae40f12bc8.png\" alt=\"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b Elementary OS \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b.\" title=\"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b Elementary OS \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b.\" width=\"1504\" height=\"1134\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f58\/002\/b2f\/f58002b2fc6306787f4858ae40f12bc8.png\"\/><\/p>\n<div><figcaption>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b Elementary OS \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b.<\/figcaption><\/div>\n<\/figure>\n<\/div>\n<\/details>\n<h4>Windows \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/h4>\n<pre><code>npm run build-windows # \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 sdk\/app, \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 sdk\/electron # \u0433\u0435\u043d\u0435\u0440\u0438\u0443\u0435\u0442 exe \u0438 \u043f\u0430\u043f\u043a\u0443 linux-unpacked \u0441 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u043c\u044b\u043c \u0444\u0430\u0439\u043b\u043e\u043c<\/code><\/pre>\n<blockquote>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u044b\u0439 \u0432\u0435\u0441 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0442\u043e\u0440\u0430 <s>350\u041c\u0411<\/s> 73\u041c\u0411<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u044b\u0439 \u0432\u0435\u0441 \u043f\u0430\u043f\u043a\u0438 \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 <s>1\u0413\u0411<\/s> [+22.04.2024] 250\u041c\u0411 (\u0440\u0430\u0437\u043c\u0435\u0440 exe \u0444\u0430\u0439\u043b\u0430 130\u041c\u0411)<\/p>\n<p>[+23.04.2024] \u041f\u0440\u0438\u043c\u0435\u0440\u043d\u044b\u0439 \u0432\u0435\u0441 portable.exe 62\u041c\u0411<\/p>\n<\/blockquote>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 sdk\/electron\/dist \u0438 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9b9\/e46\/ec4\/9b9e46ec442b6f975e8747ef72dc239f.png\" width=\"1248\" height=\"1102\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9b9\/e46\/ec4\/9b9e46ec442b6f975e8747ef72dc239f.png\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/68a\/832\/4ae\/68a8324aebf69ca51e2affaa2735e89a.png\" width=\"1248\" height=\"1102\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/68a\/832\/4ae\/68a8324aebf69ca51e2affaa2735e89a.png\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d8d\/918\/6cb\/d8d9186cb11e1917e5845f39b65f88c2.png\" width=\"1248\" height=\"1102\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d8d\/918\/6cb\/d8d9186cb11e1917e5845f39b65f88c2.png\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/830\/c0e\/23a\/830c0e23a1d10a5a97d439e667e81823.png\" width=\"1248\" height=\"1102\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/830\/c0e\/23a\/830c0e23a1d10a5a97d439e667e81823.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>[+23.04.2024] portable.exe<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/480\/2bf\/647\/4802bf647fcdb99e8479f5d843d8043e.png\" width=\"1248\" height=\"1102\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/480\/2bf\/647\/4802bf647fcdb99e8479f5d843d8043e.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<h4>Chrome \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435<\/h4>\n<pre><code class=\"bash\">npm run build-chrome-extension # Result path: `sdk\/extension.crx` and `sdk\/extension.pem`<\/code><\/pre>\n<blockquote>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u044b\u0439 \u0432\u0435\u0441 <code>crx<\/code> \u0444\u0430\u0439\u043b\u0430 1\u041c\u0411<\/p>\n<\/blockquote>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0432 Chrome \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ba6\/8d0\/c5b\/ba68d0c5b052d64d869c90977431cd6f.png\" width=\"1196\" height=\"1310\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ba6\/8d0\/c5b\/ba68d0c5b052d64d869c90977431cd6f.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<h2>\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f<\/h2>\n<pre><code class=\"bash\">PORT=3000 # \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e # NextJS \u043f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 NEXT_PUBLIC_ \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0434\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430  NEXT_PUBLIC_GRAPHQL_URL= # \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432 ui NEXT_PUBLIC_DEEP_TOKEN= # \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432 ui  NEXT_PUBLIC_I18N_DISABLE=0 # \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e # next-i18next \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 next export, \u0442\u043e \u0435\u0441\u0442\u044c \u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0439 nextjs # sdk \u043e\u0431\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u043c i18n \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u043c, \u0435\u0441\u043b\u0438 NEXT_PUBLIC_I18N_DISABLE=1 # \u0442\u0430\u043a-\u0436\u0435 \u0435\u0441\u043b\u0438 NEXT_PUBLIC_I18N_DISABLE=1 \u0442\u043e \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 next-i18next \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d # \u044d\u0442\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 npm run export<\/code><\/pre>\n<h2>Backend<\/h2>\n<p>\u041d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0443 \u0412\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f backend, \u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435, \u043a\u0430\u043a \u0438 \u0432 \u043b\u044e\u0431\u043e\u043c <a href=\"https:\/\/nextjs.org\/\">NextJS<\/a>, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0432\u0430\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u0432\u0430\u0448\u0438\u043c API, \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 <a href=\"https:\/\/www.npmjs.com\/package\/@apollo\/client\">@apollo\/client<\/a>, <a href=\"https:\/\/www.npmjs.com\/package\/react-axios\">axios<\/a>. \u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 backend Deep. \u042f \u043d\u0435 \u0431\u0443\u0434\u0443 \u0443\u0433\u043b\u0443\u0431\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0414\u0438\u043f\u0430, \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435. \u041e\u043f\u0438\u0448\u0443 \u043b\u0438\u0448\u044c \u043f\u0430\u0440\u0443 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043a\u0430\u043a \u043c\u044b \u043e\u043f\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0446\u0438\u044f\u043c\u0438. \u0421 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u0434\u0438\u043f\u0443\u0448\u0430 \u0432\u0435\u0440\u043d\u0435\u0442\u0441\u044f \u043f\u043e\u0437\u0436\u0435 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440 React \u043a\u043e\u0434\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Deep \u0431\u0435\u043a\u0435\u043d\u0434\u043e\u043c \u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u044c\u044e minilinks \u043d\u0430 \u0445\u0443\u043a\u0430\u0445 (\u0441\u043b\u043e\u0436\u043d\u043e)<\/summary>\n<div class=\"spoiler__content\">\n<p>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u043c\u044b \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0432 Deep.Case \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 <code>@ivansglazunov\/checked<\/code> \u0438 \u0432 \u043d\u0435\u043c \u0441\u0432\u044f\u0437\u0438 <code>User |- Checked -> Any<\/code>  \u0434\u043b\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0444\u0430\u043a\u0442\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e\u0441\u0442\u0438. \u0411\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0432 \u043f\u0430\u043a\u0435\u0442\u0435 <code>@deep-foundation\/core<\/code>\u0442\u0438\u043f <code>SyncTextFile<\/code>\u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u041f\u0440\u0438\u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0448\u0435\u0439 \u043f\u0441\u0435\u0432\u0434\u043e \u0437\u0430\u0434\u0430\u0447\u0438 \u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0431\u0443\u0434\u0435\u043c \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u0444\u0430\u043a\u0442\u043e\u043c \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 <code>SyncTextFile<\/code>\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0432 \u043f\u0430\u043a\u0435\u0442\u0435 <code>@deep-foundation\/core<\/code>\u0442\u0438\u043f\u0430 <code>Contain<\/code>.<\/p>\n<blockquote>\n<p>\u041f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u043d\u0438\u0436\u0435 \u043a\u043e\u0434, \u044d\u0442\u043e \u043b\u0438\u0448\u044c \u043f\u0440\u0438\u043c\u0435\u0440, <code>@ivansglazunov\/checked<\/code>\u043f\u0430\u043a\u0435\u0442\u0430 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.<\/p>\n<\/blockquote>\n<pre><code class=\"typescript\">const deep = useDeep(); \/\/ deep.linkId \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0441\u0432\u044f\u0437\u044c \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0432 \u044d\u0442\u043e\u043c \u043a\u043b\u0438\u0435\u043d\u0442\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \/\/ \u044d\u0442\u0438 \u0434\u0432\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0432\u0435\u0440\u043d\u0443\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0432\u044f\u0437\u0435\u0439 \/\/ \u043e\u0434\u043d\u0430\u043a\u043e \u044d\u0442\u043e\u0442 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 join \u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \/\/ \u0438 \u0432\u0435\u0440\u043d\u0435\u0442 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044e \u0441\u0432\u044f\u0437\u0435\u0439 const { data: nested, loading } = deep.useDeepSubscription({   type_id: { _id: ['@deep-foundation\/core', 'SyncTextFile'] },   in: {     from_id: deep.linkId, type_id: { _id: ['@deep-foundation\/core', 'Contain'] },   },   return: { checkeds: {     relation: 'in',     type_id: { _id: ['@ivansglazunov\/checked', 'Checked'] }   } } }); \/\/ nested \/\/ { ...link, checkeds: link[] }[] \/\/ \u0430 \u044d\u0442\u043e\u0442 \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u043f\u043e\u0438\u0441\u043a \u043f\u043e \u0430\u0441\u0441\u043e\u0446\u0438\u0442\u0430\u0432\u043d\u043e\u0439 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u0438 \u0434\u0435\u0440\u0435\u0432\u044c\u0435\u0432 \/\/ \u0442\u0430\u043a \u043a\u0430\u043a \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043f\u0440\u0430\u0432 \u043c\u044b \u0432\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c Checked \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 Contain \u0441\u0432\u044f\u0437\u044c\u044e \/\/ \u043e\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432 \u0435\u0434\u0438\u043d\u043e\u043c \u0434\u0435\u0440\u0435\u0432\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \/\/ \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \/\/ \u0447\u0442\u043e\u0431\u044b \u0441\u043d\u0438\u0437\u0438\u0442\u044c \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \/\/ \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e \u0440\u0430\u0437\u043d\u043e\u043c\u0443, \u044d\u0442\u043e \u043d\u0435 \u0441\u0430\u043c\u044b\u0439 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \/\/ \u043d\u043e \u0434\u043b\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0441\u043e\u0439\u0434\u0435\u0442... const { data: Checked } = deep.useDeepId('@ivansglazunov\/checked', 'Checked'); const { data: SyncTextFile } = deep.useDeepId('@deep-foundation\/core', 'SyncTextFile'); const { data: Contain } = deep.useDeepId('@deep-foundation\/core', 'Contain'); const { data: containTree } = deep.useDeepId('@deep-foundation\/core', 'containTree'); const { data: all, loading } = deep.useDeepSubscription({   \/\/ \u0432\u0435\u0440\u043d\u0438 \u0432\u0441\u0435 \u0442\u0435 \u0441\u0432\u044f\u0437\u0438 \u0443 \u043a\u043e\u0433\u043e \u0432\u044b\u0448\u0435 \u043f\u043e \u0434\u0435\u0440\u0435\u0432\u0443 containTree \u0435\u0441\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u0430\u044f \u0441\u0432\u044f\u0437\u044c   up: {     tree_id: containTree,     parent_id: deep.linkId,   },   \/\/ \u043d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e SyncTextFile \u0438 Checked \u0441\u0432\u044f\u0437\u0438   type_id: { _in: [Checked, SyncTextFile] }, }); \/\/ all \/\/ link[] \/\/ \u0432\u0441\u0451 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u0435 \u043f\u043b\u043e\u0441\u043a\u0438\u043c \u0441\u043f\u0438\u0441\u043a\u043e\u043c \/\/ \u0412\u0441\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 \u043d\u0430\u0448\u0435\u043c \u0413\u043b\u0443\u0431\u0438\u043d\u043d\u043e\u043c \u0430\u043d\u0430\u043b\u043e\u0433\u0435 \/\/ \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e MeteorJS minimongo - minilinks. \/\/ \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u0432\u0441\u0435 \u043d\u0435 \u0447\u0435\u043a\u043d\u0443\u0442\u044b\u0435 SyncTextFile \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \/\/ \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435 \u0438 \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d const unchecked = deep.useMinilinksSubscription({   type_id: SyncTextFile,   _not: { in: { type_id: Checked } }, }); const checked = deep.useMinilinksSubscription({   type_id: SyncTextFile,   in: { type_id: Checked }, }); return &lt;>   {unchecked.map(l => &lt;div>     &lt;input type=\"checkbox\" onClick={async () => {       await deep.insert({         type_id: Checked, from_id: deep.linkId, to_id: l.id,         \/\/ \u0438 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u0432 \u0434\u0435\u0440\u0435\u0432\u043e \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u044f         \/\/ \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0441\u043a\u0430\u0442\u044c \u0438\u043b\u0438 \u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0430         in: { data: { type_id: Contain, from_id: l.id } },       });     }}\/>     {l?.value?.value}     &lt;button onClick={async () => await deep.delete({       \/\/ \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0432\u0441\u0435\u0445 \u043f\u043e \u0434\u0435\u0440\u0435\u0432\u0443 contain \u0443 \u043a\u043e\u0433\u043e \u0432\u044b\u0448\u0435 \u0435\u0441\u0442\u044c l.id \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e       up: { tree_id: containTree, parent_id: l.id }     })}>x&lt;\/button>   &lt;\/div>)}   {checked.map(l => &lt;div>     &lt;input type=\"checkbox\" onClick={async () => {       await deep.delete({ type_id: Checked, from_id: deep.linkId, to_id: l.id });       \/\/ \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u043e \u0442\u043e \u0447\u0442\u043e \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f minilinks \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u044d\u0442\u043e \u0442\u0430\u043a       await deep.delete(l.inByType[Checked][0].id]);       \/\/ \u0438\u043b\u0438 \u0442\u0430\u043a       await deep.delete(deep.minilinks.query({ type_id: Checked, to_id: l.id })[0].id);     }}\/>     {l?.value?.value}     &lt;button onClick={async () => await deep.delete({       \/\/ \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0432\u0441\u0435\u0445 \u043f\u043e \u0434\u0435\u0440\u0435\u0432\u0443 contain \u0443 \u043a\u043e\u0433\u043e \u0432\u044b\u0448\u0435 \u0435\u0441\u0442\u044c l.id \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e       up: { tree_id: containTree, parent_id: l.id }     })}>x&lt;\/button>   &lt;\/div>)} &lt;\/>; \/\/ \u0430 \u0442\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0442\u0430\u0441\u043a const [value, setValue] = useState(''); return &lt;>   &lt;input type=\"text\" value={value} onChange={e => setValue(e.currentTarget.value)}\/>   &lt;button onClick={async () => await deep.insert({     type_id: SyncTextFile,     string: { data: { value } },     in: { data: { type_id: Contain, from_id: deep.linkId } },   })}>+&lt;\/button> &lt;\/>; \/\/ PS \u0441\u043e\u0440\u0440\u0438 \u0435\u0441\u043b\u0438 \u0433\u0434\u0435 \u043d\u0430\u043a\u043e\u0441\u044f\u0447\u0438\u043b \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c ;) \/\/ \u0440\u0430\u0437\u0431\u043e\u0440 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u0435\u0439\u0441\u0430 \u0434\u0438\u043f\u0443\u0448\u0430 \u043f\u0440\u0438\u043d\u0435\u0441\u0435\u0442 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<blockquote>\n<p>\u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u0435\u043c \u0432\u0441\u0435\u0445 \u043a \u043d\u0430\u043c \u0432 <a href=\"https:\/\/discord.gg\/xcTVRAgH9t\">Discord<\/a> \u043a \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435, \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \ud83d\ude09<\/p>\n<\/blockquote>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/5f1\/0d5\/3b2\/5f10d53b2dd3d8b6fba78c3f219607fc.jpg\" alt=\"\u041d\u0430\u0448\u0430 \u0448\u0442\u0430\u0431\u043d\u0430\u044f \u043c\u0430\u0441\u043a\u043e\u0442 \u0443\u043b\u0438\u0442\u043a\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0432\u0441\u0435\u043c \u043c\u0443\u0446\u0438\u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u0438\u0432\u0435\u0442, \u0438 \u0436\u0434\u0435\u0442 \u0432\u0441\u0435\u0445 \u0436\u0435\u043b\u0430\u044e\u0449\u0438\u0445 \u0432 \u0433\u043e\u0441\u0442\u0438 \u043d\u0430 \u043d\u0430\u0448\u0438\u0445 \u0445\u0430\u043a\u0430\u0442\u043e\u043d\u0430\u0445.\" title=\"\u041d\u0430\u0448\u0430 \u0448\u0442\u0430\u0431\u043d\u0430\u044f \u043c\u0430\u0441\u043a\u043e\u0442 \u0443\u043b\u0438\u0442\u043a\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0432\u0441\u0435\u043c \u043c\u0443\u0446\u0438\u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u0438\u0432\u0435\u0442, \u0438 \u0436\u0434\u0435\u0442 \u0432\u0441\u0435\u0445 \u0436\u0435\u043b\u0430\u044e\u0449\u0438\u0445 \u0432 \u0433\u043e\u0441\u0442\u0438 \u043d\u0430 \u043d\u0430\u0448\u0438\u0445 \u0445\u0430\u043a\u0430\u0442\u043e\u043d\u0430\u0445.\" width=\"860\" height=\"480\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5f1\/0d5\/3b2\/5f10d53b2dd3d8b6fba78c3f219607fc.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption>\u041d\u0430\u0448\u0430 \u0448\u0442\u0430\u0431\u043d\u0430\u044f \u043c\u0430\u0441\u043a\u043e\u0442 \u0443\u043b\u0438\u0442\u043a\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0432\u0441\u0435\u043c \u043c\u0443\u0446\u0438\u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u0438\u0432\u0435\u0442, \u0438 \u0436\u0434\u0435\u0442 \u0432\u0441\u0435\u0445 \u0436\u0435\u043b\u0430\u044e\u0449\u0438\u0445 \u0432 \u0433\u043e\u0441\u0442\u0438 \u043d\u0430 \u043d\u0430\u0448\u0438\u0445 \u0445\u0430\u043a\u0430\u0442\u043e\u043d\u0430\u0445.<\/figcaption><\/div>\n<\/figure>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/808731\/\"> https:\/\/habr.com\/ru\/articles\/808731\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><\/figure>\n<p>\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0435 (server-client, static-client, gh-pages, Android, iOS, macOS, Linux, Windows, Chrome extension, Docker, Kubernetes, &#8230;) React \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u0437\u0430\u0442\u0440\u043e\u043d\u0443 Deep backend, \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0443\u0442\u044c-\u0447\u0443\u0442\u044c \u0432 \u043a\u043e\u043d\u0446\u0435. \u041d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u044e Open Source <a href=\"https:\/\/github.com\/deep-foundation\/sdk\">\u0448\u0430\u0431\u043b\u043e\u043d\/\u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043a\u0443 \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0445 React \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439<\/a> \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0432 Deep.Foundation.<\/p>\n<blockquote>\n<p>\u0414\u0430, \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e \u0434\u043b\u044f\u00a0\u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e UI\/UX \u043d\u0443\u0436\u0435\u043d \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 Swift\/Java\/&#8230;, \u043d\u043e\u00a0\u0435\u0441\u043b\u0438 \u0446\u0435\u043b\u044c\u00a0\u2014\u00a0\u0431\u044b\u0441\u0442\u0440\u043e \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u0438 \u0438\u043c\u0435\u0442\u044c \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0438 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a\u043e \u0432\u0441\u0435\u043c\u0443, \u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u0434\u0430\u0435\u0442 \u0438\u0437\u00a0\u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u043e\u0434\u043d\u043e \u043a\u043e\u043b\u044c\u0446\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432\u0441\u0435\u043c\u0438 \u0434\u043b\u044f\u00a0\u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0441\u0442\u0430\u0440\u0442\u0430.<\/p>\n<\/blockquote>\n<p>\u041d\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432 \u0441\u0432\u043e\u0435\u043c \u0444\u043e\u0440\u043a\u0435 \u0441\u0440\u0430\u0437\u0443 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u0441\u0432\u043e\u0439 React \u043a\u043e\u0434 \u0437\u0430\u043c\u0435\u043d\u0438\u0432 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 <a href=\"https:\/\/github.com\/deep-foundation\/sdk\/blob\/main\/pages\/index.tsx\">\u044d\u0442\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430<\/a>:<\/p>\n<pre><code class=\"typescript\">export default function Page() {   const deep = useDeep();   const { t } = useTranslation();   const router = useRouter();    \/\/ @ts-ignore   if (typeof(window) === 'object') window.deep = deep;   console.log('deep', deep);    return (&lt;Center p={'1em'}>     &lt;VStack p={3} spacing={3} width={'100vw'} maxWidth={500}>       &lt;Box pt={3}>         &lt;Heading as={'h1'} size='xl'>           {t('sdk')}           &lt;HStack spacing={3} float='right'>             &lt;Button isDisabled={router.locale === 'ru'} onClick={() => router.push(router.asPath, router.asPath, { locale: 'ru' })}>ru&lt;\/Button>             &lt;Button isDisabled={router.locale === 'en'} onClick={() => router.push(router.asPath, router.asPath, { locale: 'en' })}>en&lt;\/Button>           &lt;\/HStack>         &lt;\/Heading>         &lt;Heading as={'h4'} size='md'>{t('sdk-description')}&lt;\/Heading>       &lt;\/Box>       &lt;Connection\/>     &lt;\/VStack>   &lt;\/Center>); }<\/code><\/pre>\n<details class=\"spoiler\">\n<summary>\u0417\u0430\u0447\u0435\u043c SDK \u043d\u0430\u043c \u0432 Deep.Foundation (\u0441\u043b\u043e\u0436\u043d\u043e)<\/summary>\n<div class=\"spoiler__content\">\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u0441 \u0435\u0433\u043e \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0442\u0430\u043a\u043e\u0432\u043e\u0439 Deep.Case, SDK \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0445\u0440\u0430\u043d\u0438\u043c\u044b\u0435 \u0432 Deep, \u0432 \u0441\u0432\u044f\u0437\u044f\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 Deep.Case \u0432 \u043b\u044e\u0431\u043e\u0435 \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438 \u0441\u0440\u0430\u0437\u0443 \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u0432 \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043e\u0434\u043d\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439. \u0421 \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u044c\u044e \u0432 SDK \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d <code>deep-foundation\/deepcase-app<\/code> (<a href=\"https:\/\/www.npmjs.com\/package\/@deep-foundation\/deepcase\">npm<\/a>, <a href=\"https:\/\/github.com\/deep-foundation\/deepcase\">git<\/a>) \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c React \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 <code>&lt;ClientHandler linkId={123}\/><\/code> \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438. <\/p>\n<figure class=\"float full-width\">\n<div><figcaption>\u0412 Deep.Case \u044d\u0442\u043e\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0432\u0435\u0440\u0441\u0442\u043a\u0443 \u043f\u0440\u0438 \u043a\u043b\u0438\u043a\u0435 \u043f\u043e \u0441\u0432\u044f\u0437\u0438 \u043a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0444\u043e\u0440\u043c\u0443\u043b\u044b <a href=\"https:\/\/youtu.be\/Xz7iYTUsc2Q?si=zOpJz9snOxu5mtJU&amp;t=275\">\u0432 \u044d\u0442\u043e\u043c \u0440\u043e\u043b\u0438\u043a\u0435<\/a>. <\/figcaption><\/div>\n<\/figure>\n<p>\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043e\u0447\u0435\u043d\u044c \u0433\u0438\u0431\u043a\u0438\u0439, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u043f\u0441 <code>context={[...ids]}<\/code> \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439, \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0432 \u0431\u0430\u0437\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u044b \u0441\u0432\u044f\u0437\u044f\u043c\u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u043a\u0430\u043a &#171;\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043c\u0435\u043d\u044e&#187; \u0438\u043b\u0438 &#171;\u043f\u043e\u043b\u043d\u043e\u044d\u043a\u0440\u0430\u043d\u043d\u043e\u0435&#187; \u0438\u043b\u0438 &#171;\u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e&#187; \u0438\u043b\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440, \u0438\u043b\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435. \u0412 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u044d\u0442\u043e \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u0441\u0432\u044f\u0437\u0438, \u0442\u0430\u043a \u043a\u0430\u043a \u0432\u0441\u0435 \u0435\u0434\u0438\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0441\u0431\u043e\u0440\u043a\u0430 SDK \u0433\u0434\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 index \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u044d\u0442\u043e <code>&lt;ClientHandler\/><\/code> \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0449\u0438\u0439 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0441\u0432\u044f\u0437\u044c, \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c, \u0438 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u0430\u044f Minilinks \u0441\u0432\u044f\u0437\u044f\u043c\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0438 \u0432\u0441\u0435\u0445 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445. \u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e \u0432 \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445. \u0421\u0435\u0439\u0447\u0430\u0441 \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u043d\u0430\u0434 \u043d\u043e\u0432\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 Deep.Case, \u0441 \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u043c\u0438 ClientHandler-\u0430\u043c\u0438 \u0441\u0435\u0442\u043e\u043a \u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0434\u0440\u0443\u0433\u0438\u0445 ClientHandler-\u043e\u0432 \u043a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <a href=\"https:\/\/github.com\/react-grid-layout\/\">react-grid-layout<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/reactflow.dev\/\">react-flow<\/a>, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432 \u043f\u043b\u0430\u043d\u0430\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 UI \u0432\u043e\u043a\u0440\u0443\u0433 ChakraUI <a href=\"https:\/\/v2.chakra-ui.com\/docs\/components\/grid\">grid<\/a>, <a href=\"https:\/\/v2.chakra-ui.com\/docs\/components\/flex\">flex<\/a>, <a href=\"https:\/\/v2.chakra-ui.com\/docs\/components\/simple-grid\">simple-grid<\/a> \u0438 \u043f\u0440 \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f responsive grids \u0432\u043d\u0443\u0442\u0440\u0438 Deep.Case.<\/p>\n<\/div>\n<\/details>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\">\n<\/td>\n<td data-colwidth=\"65\" width=\"65\">\n<p align=\"left\">status<\/p>\n<\/td>\n<td data-colwidth=\"171\" width=\"171\">\n<p align=\"left\">server<\/p>\n<\/td>\n<td data-colwidth=\"172\" width=\"172\">\n<p align=\"left\">client<\/p>\n<\/td>\n<td>\n<p align=\"left\">github actions<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\">build<\/p>\n<\/td>\n<td data-colwidth=\"65\" width=\"65\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"171\" width=\"171\">\n<p align=\"left\"><a href=\"https:\/\/nextjs.org\/docs\/pages\/building-your-application\/rendering\/server-side-rendering\">ssr<\/a> and <a href=\"https:\/\/nextjs.org\/docs\/pages\/building-your-application\/routing\/api-routes\">api<\/a><\/p>\n<\/td>\n<td data-colwidth=\"172\" width=\"172\">\n<p align=\"left\"><a href=\"https:\/\/react.dev\/\">react<\/a> and <a href=\"https:\/\/react.i18next.com\/\">i18n<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\">export<\/p>\n<\/td>\n<td data-colwidth=\"65\" width=\"65\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"171\" width=\"171\">\n<p align=\"left\">\n<\/td>\n<td data-colwidth=\"172\" width=\"172\">\n<p align=\"left\"><a href=\"https:\/\/react.dev\/\">react<\/a> and <u>async<\/u> <a href=\"https:\/\/react.i18next.com\/\">i18n<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\"><abbr class=\"habraabbr\" title=\"sdk\/Dockerfile\" data-title=\"&lt;p>sdk\/Dockerfile&lt;\/p>&lt;p>&lt;\/p>&#187; data-abbr=&#187;docker&#187;>docker<\/abbr><\/p>\n<\/td>\n<td data-colwidth=\"65\" width=\"65\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"171\" width=\"171\">\n<p align=\"left\"><a href=\"https:\/\/nextjs.org\/docs\/pages\/building-your-application\/rendering\/server-side-rendering\">ssr<\/a> and <a href=\"https:\/\/nextjs.org\/docs\/pages\/building-your-application\/routing\/api-routes\">api<\/a><\/p>\n<\/td>\n<td data-colwidth=\"172\" width=\"172\">\n<p align=\"left\"><a href=\"https:\/\/react.dev\/\">react<\/a> and <a href=\"https:\/\/react.i18next.com\/\">i18n<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">?\ufe0f<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\"><abbr class=\"habraabbr\" title=\"sdk\/chart \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0430\u043c\u0438 \u0434\u043b\u044f kubernetes\" data-title=\"&lt;p>title=&#187;&lt;p>sdk\/chart \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0430\u043c\u0438 \u0434\u043b\u044f kubernetes&lt;\/p>&lt;p>&lt;\/p>&#187; data-abbr=&#187;kubernetes&#187;>kuber<\/abbr><\/p>\n<\/td>\n<td data-colwidth=\"65\" width=\"65\">\n<p align=\"left\">?\ufe0f<\/p>\n<\/td>\n<td data-colwidth=\"171\" width=\"171\">\n<p align=\"left\"><a href=\"https:\/\/nextjs.org\/docs\/pages\/building-your-application\/rendering\/server-side-rendering\">ssr<\/a> and <a href=\"https:\/\/nextjs.org\/docs\/pages\/building-your-application\/routing\/api-routes\">api<\/a><\/p>\n<\/td>\n<td data-colwidth=\"172\" width=\"172\">\n<p align=\"left\"><a href=\"https:\/\/react.dev\/\">react<\/a> and <a href=\"https:\/\/react.i18next.com\/\">i18n<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">?\ufe0f<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\"><abbr class=\"habraabbr\" title=\"\u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 github actions \u0434\u043b\u044f \u043f\u0435\u0440\u043c\u043e\u043c\u0435\u043d\u0442\u043d\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435 \u0444\u043e\u0440\u043a\u0430. \u041a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 https:\/\/deep-foundation.github.io\/sdk\/\" data-title=\"&lt;p>\u0430. \u041a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 https:\/\/deep-foundation.github.io\/sdk\/&#187; data-title=&lt;p>\u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 github actions \u0434\u043b\u044f \u043f\u0435\u0440\u043c\u043e\u043c\u0435\u043d\u0442\u043d\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435 \u0444\u043e\u0440\u043a\u0430. \u041a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440&amp;nbsp;&lt;a href=&quot;https:\/\/deep-foundation.github.io\/sdk\/&quot;>https:\/\/deep-foundation.github.io\/sdk\/&lt;\/a>&lt;\/p>&lt;p>&lt;\/p>&#187; data-abbr=&#187;gh-pages&#187;>gh-pages<\/abbr><\/p>\n<\/td>\n<td data-colwidth=\"65\" width=\"65\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"171\" width=\"171\">\n<p align=\"left\">\n<\/td>\n<td data-colwidth=\"172\" width=\"172\">\n<p align=\"left\"><a href=\"https:\/\/react.dev\/\">react<\/a> and <u>async<\/u> <a href=\"https:\/\/react.i18next.com\/\">i18n<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\"><abbr class=\"habraabbr\" title=\"\u0423 Capacitor \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043c\u0438\u043a\u0440\u043e\u0444\u043e\u043d\u0443, \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u043e\u0439 \u043a\u043d\u0438\u0433\u0435 \u0438 \u043f\u0440, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043f\u0443\u0442\u043d\u0438\u043a\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0449\u0435\u0433\u043e \u0432 deep \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044f \u0432\u0441\u044e \u0435\u0433\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0439 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043c\u0438\u0440\u0435, \u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u043c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u0443\u0434\u043e\u0431\u043d\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432.\" data-title=\"&lt;p>\u043b\u044f \u0432\u0441\u044e \u0435\u0433\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0439 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043c\u0438\u0440\u0435, \u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u043c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u0443\u0434\u043e\u0431\u043d\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432.&#187; data-title=&#187;&lt;p>\u0423 &lt;a href=&quot;https:\/\/capacitorjs.com\/&quot;>Capacitor&lt;\/a> \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e &lt;a href=&quot;https:\/\/capacitorjs.com\/docs\/v2\/plugins&quot;>\u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432&lt;\/a>&amp;nbsp;\u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043c\u0438\u043a\u0440\u043e\u0444\u043e\u043d\u0443, \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u043e\u0439 \u043a\u043d\u0438\u0433\u0435 \u0438 \u043f\u0440, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043f\u0443\u0442\u043d\u0438\u043a\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0449\u0435\u0433\u043e \u0432 deep \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044f \u0432\u0441\u044e \u0435\u0433\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0439 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043c\u0438\u0440\u0435, \u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u043c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u0443\u0434\u043e\u0431\u043d\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432.&amp;nbsp;&lt;\/p>&lt;p>&lt;\/p>&#187; data-abbr=&#187;build-ios&#187;>build-ios<\/abbr><\/p>\n<\/td>\n<td data-colwidth=\"65\" width=\"65\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"171\" width=\"171\">\n<p align=\"left\">\n<\/td>\n<td data-colwidth=\"172\" width=\"172\">\n<p align=\"left\"><a href=\"https:\/\/react.dev\/\">react<\/a> and <u>async<\/u> <a href=\"https:\/\/react.i18next.com\/\">i18n<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">?\ufe0f<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\"><abbr class=\"habraabbr\" title=\"\u0423 Capacitor \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043c\u0438\u043a\u0440\u043e\u0444\u043e\u043d\u0443, \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u043e\u0439 \u043a\u043d\u0438\u0433\u0435 \u0438 \u043f\u0440, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043f\u0443\u0442\u043d\u0438\u043a\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0449\u0435\u0433\u043e \u0432 deep \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044f \u0432\u0441\u044e \u0435\u0433\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0439 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043c\u0438\u0440\u0435, \u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u043c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u0443\u0434\u043e\u0431\u043d\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432.\" data-title=\"&lt;p>\u043b\u044f \u0432\u0441\u044e \u0435\u0433\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0439 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043c\u0438\u0440\u0435, \u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u043c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u0443\u0434\u043e\u0431\u043d\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432.&#187; data-title=&#187;&lt;p>\u0423 &lt;a href=&quot;https:\/\/capacitorjs.com\/&quot;>Capacitor&lt;\/a> \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e &lt;a href=&quot;https:\/\/capacitorjs.com\/docs\/v2\/plugins&quot;>\u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432&lt;\/a>&amp;nbsp;\u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043c\u0438\u043a\u0440\u043e\u0444\u043e\u043d\u0443, \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u043e\u0439 \u043a\u043d\u0438\u0433\u0435 \u0438 \u043f\u0440, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043f\u0443\u0442\u043d\u0438\u043a\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0449\u0435\u0433\u043e \u0432 deep \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044f \u0432\u0441\u044e \u0435\u0433\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0439 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043c\u0438\u0440\u0435, \u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u043c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u0443\u0434\u043e\u0431\u043d\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432.&amp;nbsp;&lt;\/p>&#187; data-abbr=&#187;build-android&#187;>build-android<\/abbr><\/p>\n<\/td>\n<td data-colwidth=\"65\" width=\"65\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"171\" width=\"171\">\n<p align=\"left\">\n<\/td>\n<td data-colwidth=\"172\" width=\"172\">\n<p align=\"left\"><a href=\"https:\/\/react.dev\/\">react<\/a> and <u>async<\/u> <a href=\"https:\/\/react.i18next.com\/\">i18n<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\"><abbr class=\"habraabbr\" title=\"\u0418\u0437 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043e\u0442\u043b\u044e\u0447\u0435\u043d\u0430, \u0447\u0442\u043e \u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 Deep.Case \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c Docker \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0438 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0442\u044c \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0431\u0435\u043a\u0435\u043d\u0434 \u0434\u0438\u043f\u0430 \u043e\u0434\u043d\u0438\u043c \u043a\u043b\u0438\u043a\u043e\u043c \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e Docker. \u0412 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0441 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u043e\u043c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 env \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0447\u0442\u043e \u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0430\u0432 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435, \u0438 \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043b\u0438\u0432\u043a\u0438 \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u044b.\" data-title=\"&lt;p>\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0441 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u043e\u043c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 env \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0447\u0442\u043e \u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0430\u0432 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435, \u0438 \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043b\u0438\u0432\u043a\u0438 \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u044b.&#187; data-title=&#187;&lt;p>\u0418\u0437 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043e\u0442\u043b\u044e\u0447\u0435\u043d\u0430, \u0447\u0442\u043e \u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 Deep.Case \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c Docker \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0438 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0442\u044c \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0431\u0435\u043a\u0435\u043d\u0434 \u0434\u0438\u043f\u0430 \u043e\u0434\u043d\u0438\u043c \u043a\u043b\u0438\u043a\u043e\u043c \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e Docker. \u0412 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0441 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u043e\u043c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 env \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0447\u0442\u043e \u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0430\u0432 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435, \u0438 \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043b\u0438\u0432\u043a\u0438 \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u044b.&lt;\/p>&#187; data-abbr=&#187;build-windows&#187;>build-windows<\/abbr> (on windows)<\/p>\n<\/td>\n<td data-colwidth=\"65\" width=\"65\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"171\" width=\"171\">\n<p align=\"left\">\/electron\/src\/server.ts<\/p>\n<\/td>\n<td data-colwidth=\"172\" width=\"172\">\n<p align=\"left\"><a href=\"https:\/\/react.dev\/\">react<\/a> and <u>async<\/u> <a href=\"https:\/\/react.i18next.com\/\">i18n<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\"><abbr class=\"habraabbr\" title=\"\u0418\u0437 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043e\u0442\u043b\u044e\u0447\u0435\u043d\u0430, \u0447\u0442\u043e \u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 Deep.Case \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c Docker \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0438 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0442\u044c \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0431\u0435\u043a\u0435\u043d\u0434 \u0434\u0438\u043f\u0430 \u043e\u0434\u043d\u0438\u043c \u043a\u043b\u0438\u043a\u043e\u043c \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e Docker. \u0412 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0441 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u043e\u043c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 env \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0447\u0442\u043e \u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0430\u0432 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435, \u0438 \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043b\u0438\u0432\u043a\u0438 \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u044b.\" data-title=\"&lt;p>\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0441 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u043e\u043c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 env \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0447\u0442\u043e \u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0430\u0432 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435, \u0438 \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043b\u0438\u0432\u043a\u0438 \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u044b.&#187; data-title=&#187;&lt;p>\u0418\u0437 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043e\u0442\u043b\u044e\u0447\u0435\u043d\u0430, \u0447\u0442\u043e \u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 Deep.Case \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c Docker \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0438 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0442\u044c \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0431\u0435\u043a\u0435\u043d\u0434 \u0434\u0438\u043f\u0430 \u043e\u0434\u043d\u0438\u043c \u043a\u043b\u0438\u043a\u043e\u043c \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e Docker. \u0412 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0441 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u043e\u043c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 env \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0447\u0442\u043e \u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0430\u0432 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435, \u0438 \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043b\u0438\u0432\u043a\u0438 \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u044b.&lt;\/p>&#187; data-abbr=&#187;build-unix&#187;>build-unix<\/abbr> (on linux)<\/p>\n<\/td>\n<td data-colwidth=\"65\" width=\"65\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"171\" width=\"171\">\n<p align=\"left\">\/electron\/src\/server.ts<\/p>\n<\/td>\n<td data-colwidth=\"172\" width=\"172\">\n<p align=\"left\"><a href=\"https:\/\/react.dev\/\">react<\/a> and <u>async<\/u> <a href=\"https:\/\/react.i18next.com\/\">i18n<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\"><abbr class=\"habraabbr\" title=\"\u0418\u0437 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043e\u0442\u043b\u044e\u0447\u0435\u043d\u0430, \u0447\u0442\u043e \u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 Deep.Case \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c Docker \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0438 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0442\u044c \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0431\u0435\u043a\u0435\u043d\u0434 \u0434\u0438\u043f\u0430 \u043e\u0434\u043d\u0438\u043c \u043a\u043b\u0438\u043a\u043e\u043c \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e Docker. \u0412 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0441 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u043e\u043c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 env \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0447\u0442\u043e \u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0430\u0432 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435, \u0438 \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043b\u0438\u0432\u043a\u0438 \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u044b.\" data-title=\"&lt;p>\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0441 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u043e\u043c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 env \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0447\u0442\u043e \u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0430\u0432 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435, \u0438 \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043b\u0438\u0432\u043a\u0438 \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u044b.&#187; data-title=&#187;&lt;p>\u0418\u0437 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043e\u0442\u043b\u044e\u0447\u0435\u043d\u0430, \u0447\u0442\u043e \u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 Deep.Case \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c Docker \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0438 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0442\u044c \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0431\u0435\u043a\u0435\u043d\u0434 \u0434\u0438\u043f\u0430 \u043e\u0434\u043d\u0438\u043c \u043a\u043b\u0438\u043a\u043e\u043c \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e Docker. \u0412 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0441 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u043e\u043c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 env \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0447\u0442\u043e \u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0430\u0432 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435, \u0438 \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043b\u0438\u0432\u043a\u0438 \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u044b.&lt;\/p>&#187; data-abbr=&#187;build-mac&#187;>build-mac<\/abbr> (on mac)<\/p>\n<\/td>\n<td data-colwidth=\"65\" width=\"65\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"171\" width=\"171\">\n<p align=\"left\">\/electron\/src\/server.ts<\/p>\n<\/td>\n<td data-colwidth=\"172\" width=\"172\">\n<p align=\"left\"><a href=\"https:\/\/react.dev\/\">react<\/a> and <u>async<\/u> <a href=\"https:\/\/react.i18next.com\/\">i18n<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\"><abbr class=\"habraabbr\" title=\"\u0418\u0437 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432\u043a\u043b\u0430\u0434\u043a\u0438, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0432 deep \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0430 \u0442\u0430\u043a-\u0436\u0435 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c deep \u0438 ClientHandler-\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u043c\u043e\u043d\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0435 \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f React \u0434\u0435\u0440\u0435\u0432\u043e. \u0427\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 deep \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u043c \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u0435\u0433\u043e \u043e\u043f\u044b\u0442 \u043f\u0440\u0435\u0431\u044b\u0432\u0430\u043d\u0438\u044f \u0432 \u0441\u0435\u0442\u0438.\" data-title=\"&lt;p>\u0438\u0446\u0443 \u0438\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f React \u0434\u0435\u0440\u0435\u0432\u043e. \u0427\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 deep \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u043c \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u0435\u0433\u043e \u043e\u043f\u044b\u0442 \u043f\u0440\u0435\u0431\u044b\u0432\u0430\u043d\u0438\u044f \u0432 \u0441\u0435\u0442\u0438.&#187; data-title=&#187;&lt;p>\u0418\u0437 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432\u043a\u043b\u0430\u0434\u043a\u0438, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0432 deep \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0430 \u0442\u0430\u043a-\u0436\u0435 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c deep \u0438 ClientHandler-\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u043c\u043e\u043d\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0435 \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f React \u0434\u0435\u0440\u0435\u0432\u043e. \u0427\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 deep \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u043c \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u0435\u0433\u043e \u043e\u043f\u044b\u0442 \u043f\u0440\u0435\u0431\u044b\u0432\u0430\u043d\u0438\u044f \u0432 \u0441\u0435\u0442\u0438.&lt;\/p>&#187; data-abbr=&#187;build-chrome-extension&#187;>build-chrome-extension<\/abbr><\/p>\n<\/td>\n<td data-colwidth=\"65\" width=\"65\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"171\" width=\"171\">\n<p align=\"left\">\n<\/td>\n<td data-colwidth=\"172\" width=\"172\">\n<p align=\"left\"><a href=\"https:\/\/react.dev\/\">react<\/a> and <u>async<\/u> <a href=\"https:\/\/react.i18next.com\/\">i18n<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">?\ufe0f<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\"><abbr class=\"habraabbr\" title=\"\u0418\u0437 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432\u043a\u043b\u0430\u0434\u043a\u0438, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0432 deep \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0430 \u0442\u0430\u043a-\u0436\u0435 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c deep \u0438 ClientHandler-\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u043c\u043e\u043d\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0435 \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f React \u0434\u0435\u0440\u0435\u0432\u043e. \u0427\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 deep \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u043c \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u0435\u0433\u043e \u043e\u043f\u044b\u0442 \u043f\u0440\u0435\u0431\u044b\u0432\u0430\u043d\u0438\u044f \u0432 \u0441\u0435\u0442\u0438.\" data-title=\"&lt;p>\u0438\u0446\u0443 \u0438\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f React \u0434\u0435\u0440\u0435\u0432\u043e. \u0427\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 deep \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u043c \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u0435\u0433\u043e \u043e\u043f\u044b\u0442 \u043f\u0440\u0435\u0431\u044b\u0432\u0430\u043d\u0438\u044f \u0432 \u0441\u0435\u0442\u0438.&#187; data-title=&#187;&lt;p>\u0418\u0437 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432\u043a\u043b\u0430\u0434\u043a\u0438, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0432 deep \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0430 \u0442\u0430\u043a-\u0436\u0435 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c deep \u0438 ClientHandler-\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u043c\u043e\u043d\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0435 \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f React \u0434\u0435\u0440\u0435\u0432\u043e. \u0427\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 deep \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u043c \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u0435\u0433\u043e \u043e\u043f\u044b\u0442 \u043f\u0440\u0435\u0431\u044b\u0432\u0430\u043d\u0438\u044f \u0432 \u0441\u0435\u0442\u0438.&lt;\/p>&#187; data-abbr=&#187;build-firefox-extension&#187;>build-firefox-extension<\/abbr><\/p>\n<\/td>\n<td data-colwidth=\"65\" width=\"65\">\n<p align=\"left\">?\ufe0f<\/p>\n<\/td>\n<td data-colwidth=\"171\" width=\"171\">\n<p align=\"left\">\n<\/td>\n<td data-colwidth=\"172\" width=\"172\">\n<p align=\"left\"><a href=\"https:\/\/react.dev\/\">react<\/a> and <u>async<\/u> <a href=\"https:\/\/react.i18next.com\/\">i18n<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\"><abbr class=\"habraabbr\" title=\"\u0418\u0437 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f vsc \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0432 deep \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0438 \u0438\u0437 deep \u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u043d\u0435\u0433\u043e \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044f \u0432 \u043d\u0435\u043c \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u043c \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438.\" data-title=\"&lt;p>\u0438\u044f\u0442\u044c \u043d\u0430 \u043d\u0435\u0433\u043e \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044f \u0432 \u043d\u0435\u043c \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u043c \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438.&#187; data-title=&lt;p>\u0418\u0437 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f vsc \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0432 deep \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0438 \u0438\u0437 deep \u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u043d\u0435\u0433\u043e \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044f \u0432 \u043d\u0435\u043c \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u043c \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438.&lt;\/p>&lt;p>&lt;\/p>&#187; data-abbr=&#187;vscode-extension&#187;>vscode-extension<\/abbr><\/p>\n<\/td>\n<td data-colwidth=\"65\" width=\"65\">\n<p align=\"left\">?\ufe0f<\/p>\n<\/td>\n<td data-colwidth=\"171\" width=\"171\">\n<p align=\"left\">\n<\/td>\n<td data-colwidth=\"172\" width=\"172\">\n<p align=\"left\">?<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\">nodeos<\/p>\n<\/td>\n<td data-colwidth=\"65\" width=\"65\">\n<p align=\"left\">?\ufe0f<\/p>\n<\/td>\n<td data-colwidth=\"171\" width=\"171\">\n<p align=\"left\">\n<\/td>\n<td data-colwidth=\"172\" width=\"172\">\n<p align=\"left\"><a href=\"https:\/\/react.dev\/\">react<\/a> and <a href=\"https:\/\/react.i18next.com\/\">i18n<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<blockquote>\n<p>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0438 \u0432\u0441\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043f\u043e \u043c\u0435\u0440\u0435 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0441\u0431\u043e\u0440\u043a\u0438, \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0438\u0437 \u0441\u0442\u0430\u0442\u0443\u0441\u0430. \u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u043e \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043a\u043e\u043d\u043e\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439, splash \u0441\u043a\u0440\u0438\u043d\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u0440\u043e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<\/blockquote>\n<h2>\u0413\u043e\u0442\u043e\u0432\u0438\u043c \u0441\u0435\u0431\u044f<\/h2>\n<p>\u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e sdk \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0430\u0437\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u043d\u0438\u0435 <a href=\"https:\/\/developer.mozilla.org\/ru\/docs\/Web\/JavaScript\">JavaScript<\/a> (\u043d\u0430\u0448\u0438 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0435 <a href=\"https:\/\/www.youtube.com\/watch?v=7laKifxkMNQ&amp;list=PLzZko_ng9gnkyNIlnSi74xr2_qmCBmoSe\">\u0432\u0438\u0434\u0435\u043e \u0443\u0440\u043e\u043a\u0438<\/a>), <a href=\"https:\/\/ru.legacy.reactjs.org\/\">React<\/a>, html\/css, <a href=\"https:\/\/git-scm.com\/\">git<\/a> \u0438 <a href=\"https:\/\/nextjs.org\/\">NextJS<\/a>. \u0414\u043b\u044f \u0442\u043e\u043d\u043a\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0431\u0438\u043b\u0434\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 <a href=\"https:\/\/capacitorjs.com\/\">Capacitor<\/a>, <a href=\"https:\/\/www.electronjs.org\/\">Electron<\/a>, <a href=\"https:\/\/cordova.apache.org\/\">Cordova<\/a>.<\/p>\n<blockquote>\n<p>\u0412 SDK \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d <a href=\"https:\/\/chakra-ui.com\/\">ChakraUI<\/a> \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 ui \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 \u043d\u0430 \u0431\u0430\u0437\u0435 css-in-js, \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u043c\u043e\u0436\u043d\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432 <a href=\"https:\/\/openchakra.app\/\">OpenChakra<\/a>.<\/p>\n<\/blockquote>\n<h2>\u0413\u043e\u0442\u043e\u0432\u0438\u043c \u0441\u0440\u0435\u0434\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438<\/h2>\n<p>\u041d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 IDE, \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c <a href=\"https:\/\/code.visualstudio.com\/\">VSCode<\/a>. \u041d\u0430 Windows \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f <a href=\"https:\/\/ubuntu.com\/desktop\/wsl\">WSL<\/a>. \u0422\u0430\u043a\u0436\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c <a href=\"https:\/\/git-scm.com\/\">git<\/a> \u0434\u043b\u044f \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432 \u0438 <a href=\"https:\/\/github.com\/nvm-sh\/nvm\">nvm<\/a> \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 <a href=\"https:\/\/nodejs.org\/\">nodejs\/npm<\/a>. \u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c 18 \u0432\u0435\u0440\u0441\u0438\u044e node, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0435\u0435 \u043a\u0430\u043a \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e:<\/p>\n<pre><code class=\"bash\">nvm i 18 nvm alias default 18 nvm use default npm i -g npm@latest<\/code><\/pre>\n<p>\u0414\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 Android \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u0430\u044f <a href=\"https:\/\/developer.android.com\/studio\">Andro<\/a><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-374023","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/374023","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=374023"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/374023\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=374023"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=374023"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=374023"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}