{"id":488073,"date":"2026-07-21T15:15:27","date_gmt":"2026-07-21T15:15:27","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=488073"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=488073","title":{"rendered":"AI-centric \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 Flutter-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f (\u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e) \u0434\u043b\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0441\u0442\u0430\u0440\u0442\u0430\u043f\u043e\u0432"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/eb1\/fd2\/96b\/eb1fd296bc96d70d6089801d8ed1ab13.webp\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/eb1\/fd2\/96b\/eb1fd296bc96d70d6089801d8ed1ab13.webp 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/eb1\/fd2\/96b\/eb1fd296bc96d70d6089801d8ed1ab13.webp 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><strong>Short description:<\/strong> \u041c\u044b\u0441\u043b\u0438 \u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0434\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0438 \u0444\u0438\u043b\u043e\u0441\u043e\u0444\u0438\u0438 \u00abdeveloper as a user\u00bb; \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f indie-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0438 \u0441\u0442\u0430\u0440\u0442\u0430\u043f\u043e\u0432 \u043d\u0430 \u0440\u0430\u043d\u043d\u0438\u0445 \u0441\u0442\u0430\u0434\u0438\u044f\u0445.<\/p>\n<p>disclaimer: \u0445\u043e\u0442\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u0431\u044b\u043b\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 25 \u0433\u043e\u0434\u0430, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u0435\u0449\u0435\u0439 \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u043d\u0435 \u043f\u043e\u0442\u0435\u0440\u044f\u043b\u0438 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u043c\u043d\u043e\u0433\u0438\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0443 \u0432\u0441\u0435 \u0435\u0449\u0451 \u0442\u0430\u043a\u0436\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b \u0438 \u044d\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435.<\/p>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441\u0432\u043e\u0438\u043c\u0438 \u043c\u044b\u0441\u043b\u044f\u043c\u0438 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u044d\u0442\u0430\u043f\u0430\u0445 \u0440\u043e\u0441\u0442\u0430 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430.<\/p>\n<p><strong>Note:<\/strong> \u0412\u0441\u0435 \u043c\u043e\u0438 \u043c\u044b\u0441\u043b\u0438 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u044b \u043d\u0430 \u043b\u0438\u0447\u043d\u043e\u043c \u043e\u043f\u044b\u0442\u0435, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u043c \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f \u0437\u0430 \u0442\u0435\u043c, \u043a\u0430\u043a\u0438\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u043e\u043f\u0440\u0430\u0432\u0434\u0430\u043b\u0438 \u0441\u0435\u0431\u044f, \u0430 \u043a\u0430\u043a\u0438\u0435 \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u043b\u0438\u0441\u044c. \u042d\u0442\u043e \u043c\u043e\u044f \u0440\u0435\u0444\u043b\u0435\u043a\u0441\u0438\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438 \u043a\u0430\u043a, \u0430 \u043d\u0435 \u0441\u0442\u0440\u043e\u0433\u0438\u0435 guidelines \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u2014 \u0441\u043a\u043e\u0440\u0435\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u0438.<\/p>\n<p>\u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0434\u043e\u043f\u043e\u043b\u043d\u044f\u0442\u044c (\u0438\u043b\u0438 \u043d\u0435\u0442) \u043e\u0431\u0449\u0438\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f\u0445 \u0438\u043b\u0438 \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u043e\u0442\u0440\u044f\u0441\u0430\u044e\u0449\u0435\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e <a href=\"https:\/\/docs.flutter.dev\/app-architecture\" rel=\"noopener noreferrer nofollow\">https:\/\/docs.flutter.dev\/app-architecture<\/a>. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u044f \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0443\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0440\u0430\u043d\u043d\u0438\u0445 \u0441\u0442\u0430\u0434\u0438\u044f\u0445 \u0441\u0442\u0430\u0440\u0442\u0430\u043f\u0430 \u2014 \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0441\u0432\u043e\u0439 \u043f\u0443\u0442\u044c \u0441 \u043e\u0434\u043d\u043e\u0433\u043e Flutter-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0438 \u0438\u0449\u0435\u0442 \u0441\u043f\u043e\u0441\u043e\u0431 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 (\u0441\u043a\u0430\u0436\u0435\u043c, \u043f\u044f\u0442\u0438-\u0448\u0435\u0441\u0442\u0438) \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c.<\/p>\n<p><strong>Second Note:<\/strong> \u041f\u0443\u0442\u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (product development) \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u043e\u0434 \u0437\u0430\u043a\u0430\u0437 \u0432 \u0441\u0442\u0443\u0434\u0438\u044f\u0445 (ordered product in-studio) \u043c\u043e\u0433\u0443\u0442 \u043a\u0430\u0440\u0434\u0438\u043d\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0439 \u0441\u043e\u0432\u0435\u0442 \u2014 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0439\u0442\u0435 \u044d\u0442\u0430\u043f\u044b \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0438\u0445 \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u043b\u0438\u0447\u043d\u044b\u043c \u043e\u043f\u044b\u0442\u043e\u043c.<\/p>\n<p><strong>Third Note:<\/strong> \u041d\u0430 \u043f\u0440\u043e\u0442\u044f\u0436\u0435\u043d\u0438\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u044f \u0431\u0443\u0434\u0443 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u044c\u0441\u044f \u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u043a\u0430\u043a \u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e (developer as a user) \u2014 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043a\u043e\u0434\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043f\u0430\u043f\u043e\u043a \u0438 \u0444\u0430\u0439\u043b\u043e\u0432, \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a, \u043a\u0430\u043a \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0441\u043c\u043e\u0442\u0440\u044f\u0442 \u043d\u0430 \u0441\u0432\u043e\u0439 \u043a\u043e\u0434. \u0414\u043b\u044f \u043c\u0435\u043d\u044f \u0441\u0442\u0430\u043b\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u0441\u0430\u043c\u044b\u0439 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0430 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435 (maintenance) \u0438\u043b\u0438 \u0434\u043b\u044f \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0444\u0438\u0447-\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 (feature changes). \u0427\u0430\u0441\u0442\u044c\u044e \u044d\u0442\u043e\u0433\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0431\u044b\u043b \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0432\u0438\u0434\u0435\u043e \u043e Clean Architecture \u0438 Design <a href=\"https:\/\/www.google.com\/search?q=https:\/\/youtu.be\/Nsjsiz2A9mg%3Fsi%3DLDSqhU_6DlyyVL1K%26t%3D527\" rel=\"noopener noreferrer nofollow\">https:\/\/youtu.be\/Nsjsiz2A9mg?si=LDSqhU_6DlyyVL1K&amp;t=527<\/a>, \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0447\u0430\u0441\u0442\u044f\u043c\u0438 \u0441\u0442\u0430\u043b\u0438 Domain-Driven Design (DDD) <a href=\"https:\/\/en.wikipedia.org\/wiki\/Domain-driven_design\" rel=\"noopener noreferrer nofollow\">https:\/\/en.wikipedia.org\/wiki\/Domain-driven_design<\/a>, Test-Driven Development (TDD) \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0443\u0442\u0438\u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0438 \u044f \u043d\u0430\u0434\u0435\u044e\u0441\u044c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0443\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435:)<\/p>\n<p>\u041f\u0440\u043e\u0449\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u0432\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u0435\u043a\u043b\u0430\u0440\u0438\u0440\u0443\u0435\u0442, \u043a\u0430\u043a \u0432\u0430\u0448 \u043a\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0435 \u043a \u043d\u0435\u0439 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0435 \u0432\u0430\u043c\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b.<\/p>\n<p><strong>Fourth Note:<\/strong><\/p>\n<p>\u041f\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u043d\u0430 27 \u044f\u043d\u0432\u0430\u0440\u044f 2025 \u0433\u043e\u0434\u0430 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 AI-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u0438\u043b\u0438 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u0439. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u043a\u043e\u0433\u0434\u0430 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u0440\u043c\u0438\u043d \u2018prompt\u2019, \u044d\u0442\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u043e\u043c\u0443 \u0432\u043e\u043f\u0440\u043e\u0441\u0443 \u0438\u043b\u0438 \u043e\u0442\u0432\u0435\u0442\u0443, \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 AI-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435.<\/p>\n<p><strong>Fifth Note:<\/strong><\/p>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u043b\u0438 \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u044d\u0442\u0430\u043f\u0435: \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 AI preferences \/ agent-rules \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043b\u044e\u0431\u0438\u043c\u043e\u0433\u043e AI-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0438 project-wide preferences, \u0447\u0442\u043e\u0431\u044b \u0434\u0440\u0443\u0433\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043c\u043e\u0433\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 Cursor, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043d\u0430 <a href=\"https:\/\/cursor.directory\" rel=\"noopener noreferrer nofollow\">https:\/\/cursor.directory<\/a>. \u0418\u043c\u0435\u0439\u0442\u0435 \u0432 \u0432\u0438\u0434\u0443, \u0447\u0442\u043e \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0447\u0430\u0441\u0442\u044c\u044e \u0432\u0430\u0448\u0435\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u2014 \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0438\u0442\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0434 \u044d\u0442\u0438\u043c\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438, \u043e\u0442\u043a\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0438\u0445, \u043f\u0438\u0441\u0430\u0442\u044c, \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c, \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0442. \u0434. \u0422\u0430\u043a \u0447\u0442\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u0441\u044c \u043a \u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u0430\u043a \u043a \u0447\u0430\u0441\u0442\u0438 \u0432\u0430\u0448\u0435\u0433\u043e codebase.<\/p>\n<p>\u0412 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u0442\u0435\u0445\u043d\u0438\u043a\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043a \u043d\u0435\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u044b\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c. \u0411\u0443\u0434\u044c\u0442\u0435 \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u044b \u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043b\u0430\u0433\u0430\u0439\u0442\u0435\u0441\u044c \u043d\u0430 \u0441\u0432\u043e\u0438 \u043d\u0430\u0432\u044b\u043a\u0438.<\/p>\n<p><strong>Sixth Note: \u0422\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u044f.<\/strong><\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u0432 (\u0445\u043e\u0442\u044f \u0438\u0445 \u043c\u043d\u043e\u0433\u043e, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u044d\u0442\u0438\u0445, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0447\u0435\u0442\u043a\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0434\u043b\u044f \u0437\u0430\u043c\u0435\u0442\u043e\u043a):<\/p>\n<p><strong>End user<\/strong> \u2014 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435: iOS, Android, macOS, Windows, Linux, web \u0438 \u0442. \u0434.<\/p>\n<p><strong>Domain<\/strong> \u2014 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0430\u044f \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u0430\u044f \u0441\u0432\u043e\u0435\u0439 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u044c\u044e (scope) \u0447\u0430\u0441\u0442\u044c \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u0430\u044f \u043e\u043f\u044b\u0442\u043e\u043c \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (end user experience) \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Domain_(software_engineering)\" rel=\"noopener noreferrer nofollow\">https:\/\/en.wikipedia.org\/wiki\/Domain_(software_engineering<\/a><\/p>\n<p><em>\u041f\u0440\u0438\u043c\u0435\u0440 \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f (Complex App Example):<\/em><\/p>\n<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0433\u0434\u0435 \u0432\u044b \u2014 end user. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0436\u0438\u0434\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u043e\u043c\u0435\u043d\u044b:<\/p>\n<ul>\n<li>\n<p><strong>(Intro)<\/strong> \u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f (Guide), \u0432\u0438\u043a\u0442\u043e\u0440\u0438\u043d\u0430 (quiz) \u0438\u043b\u0438 \u043d\u043e\u0432\u043e\u0441\u0442\u0438 \u2014 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044d\u043a\u0440\u0430\u043d\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0434\u043e \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f Home.<\/p>\n<\/li>\n<li>\n<p><strong>(Home)<\/strong> \u0421\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u043e \u0434\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0441\u0442\u043e\u043b\u0430, \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0447\u0430\u0441\u0442\u044b\u0435 \u0444\u0438\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c. \u042d\u0442\u043e\u0442 \u0434\u043e\u043c\u0435\u043d \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0438\u0447\u0438 \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u0434\u043e\u043c\u0435\u043d\u043e\u0432. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043e\u0436\u0438\u0434\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u043c \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u0437\u043e\u0432\u0435\u043c \u044d\u0442\u043e fast functions experience.<\/p>\n<\/li>\n<li>\n<p><strong>(Payments)<\/strong> \u2014 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0436\u0438\u0434\u0430\u0442\u044c, \u0447\u0442\u043e \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d \u0432\u0435\u0434\u0435\u0442 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u044d\u043a\u0440\u0430\u043d\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b \u0431\u0430\u043d\u043a\u043e\u0432, \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0435 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u044b \u0438 \u0442. \u0434\u2026 \u043d\u043e \u0432\u0441\u0435 \u044d\u0442\u0438 \u044d\u043a\u0440\u0430\u043d\u044b \u0431\u0443\u0434\u0443\u0442 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u044b \u043a \u043e\u0434\u043d\u043e\u0439 \u0442\u0435\u043c\u0435 (scope) payment experience.<\/p>\n<\/li>\n<li>\n<p><strong>(Profile)<\/strong> End user \u043c\u043e\u0436\u0435\u0442 \u043e\u0436\u0438\u0434\u0430\u0442\u044c, \u0447\u0442\u043e \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0439\u0442\u0438\/\u0432\u044b\u0439\u0442\u0438 (sign in \/ sign out), \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442, \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u0437\u043e\u0432\u0435\u043c \u044d\u0442\u043e profile experience.<\/p>\n<\/li>\n<li>\n<p><strong>(Support)<\/strong> \u042d\u0442\u043e\u0442 \u0434\u043e\u043c\u0435\u043d \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u044d\u043a\u0440\u0430\u043d \u0441 \u0447\u0430\u0442\u043e\u043c, \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0434\u0438\u0430\u043b\u043e\u0433\u0438 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u044d\u043a\u0440\u0430\u043d\u0430\u0445, \u043d\u043e \u0432 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u0441\u0435 \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u043f\u0440\u0435\u0434\u043c\u0435\u0442 support experience.<\/p>\n<\/li>\n<\/ul>\n<p>\u0427\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u043e\u043c\u0435\u043d, \u0432\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043a\u0430\u043a \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438, \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u044b \u0438\u043b\u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u044b \u043f\u0440\u043e\u0436\u0438\u0432\u0430\u044e\u0442 \u044d\u0442\u043e\u0442 \u043e\u043f\u044b\u0442, \u043b\u0438\u0431\u043e \u043f\u0435\u0440\u0435\u0436\u0438\u0442\u044c \u0435\u0433\u043e \u0441\u0430\u043c\u043e\u043c\u0443. \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u2014 \u0432\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0438 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c domain knowledge.<\/p>\n<p><strong>Domain knowledge<\/strong> \u2014 \u00ab\u0437\u043d\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u044b\u00bb, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0435 \u043e\u0442 \u0434\u043e\u043c\u0435\u043d\u043d\u044b\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u043e\u0432\/\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0443, \u0434\u0438\u0437\u0430\u0439\u043d\u0435\u0440\u043e\u0432 \u0438\u043b\u0438 \u043f\u0443\u0442\u0435\u043c \u0438\u0442\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0434\u0438\u0437\u0430\u0439\u043d\u0430, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u043f\u044b\u0442\u0430 \u0438\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u044b. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u044b\u0442 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (end user), \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. <a href=\"https:\/\/en.wikipedia.org\/wiki\/Domain_knowledge\" rel=\"noopener noreferrer nofollow\">https:\/\/en.wikipedia.org\/wiki\/Domain_knowledge<\/a><\/p>\n<p><strong>Flow<\/strong> \u2014 \u043e\u0434\u0438\u043d \u044d\u043a\u0440\u0430\u043d \u0438\u043b\u0438 \u0441\u0435\u0440\u0438\u044f \u044d\u043a\u0440\u0430\u043d\u043e\u0432, \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0438\u043b\u0438 views, \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u2014 Auth Flow.<\/p>\n<p><strong>Screen<\/strong> \u2014 \u0432\u0438\u0434\u0436\u0435\u0442, \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u044d\u043a\u0440\u0430\u043d, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u0437 \u0444\u0438\u0447, \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u043d\u044b\u0445 \u043d\u0430 \u044d\u0442\u043e\u0439\/\u044d\u0442\u043e\u043c screen \/ page \/ view. \u041b\u0438\u0447\u043d\u043e \u043c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u044c\u0441\u044f \u043a \u043b\u044e\u0431\u043e\u043c\u0443 screen \u043a\u0430\u043a \u043a page \u0438\u043b\u0438 view, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0432\u0435\u0441\u044c \u044d\u043a\u0440\u0430\u043d \u0438\u043b\u0438 \u0431\u044b\u0442\u044c \u0447\u0430\u0441\u0442\u044c\u044e \u043b\u0435\u0439\u0430\u0443\u0442\u0430, \u0441\u0442\u0440\u043e\u044f\u0449\u0435\u0433\u043e\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0439 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 (nested navigation: <a href=\"https:\/\/pub.dev\/documentation\/go_router\/latest\/go_router\/ShellRoute-class.html\" rel=\"noopener noreferrer nofollow\">https:\/\/pub.dev\/documentation\/go_router\/latest\/go_router\/ShellRoute-class.html<\/a>) \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0442\u043e\u043c\u0443, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 JS-\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438 \u0432 \u0432\u0435\u0431 (<a href=\"https:\/\/router.vuejs.org\/guide\/essentials\/nested-routes\" rel=\"noopener noreferrer nofollow\">https:\/\/router.vuejs.org\/guide\/essentials\/nested-routes<\/a>).<\/p>\n<p><strong>Feature<\/strong> \u2014 \u00ab\u043e\u0442\u043b\u0438\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u043f\u043e\u0440\u0442\u0430\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0438\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c)\u00bb. \u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a \u0434\u043e\u043c\u0435\u043d\u0443 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u0435\u0451 \u043a\u0430\u043a \u0443\u0437\u043a\u043e\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\/\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c (capability\/functionality), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0444\u0438\u0447\u0430\u043c\u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 end user \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0434\u043e\u043c\u0435\u043d \u043a\u0430\u043a \u0435\u0434\u0438\u043d\u043e\u0435 \u0446\u0435\u043b\u043e\u0435. <a href=\"https:\/\/en.wikipedia.org\/wiki\/Software_feature\" rel=\"noopener noreferrer nofollow\">https:\/\/en.wikipedia.org\/wiki\/Software_feature<\/a><\/p>\n<hr\/>\n<h3>Stage 1 \u2014 Prototyping<\/h3>\n<ul>\n<li>\n<p><strong>Team:<\/strong> 1 (\u0438\u043b\u0438 \u0432 \u043b\u0443\u0447\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 2) \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430<\/p>\n<\/li>\n<li>\n<p><strong>Main focus:<\/strong> \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u0443\u044e \u0447\u0430\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u0430\u043c \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u043a\u0430\u043a ClientUser (\u0438\u043b\u0438, \u043d\u0430\u0437\u043e\u0432\u0435\u043c \u044d\u0442\u043e, \u0431\u0438\u0437\u043d\u0435\u0441\u0443).<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u0441\u044c \u043a \u0441\u0432\u043e\u0435\u043c\u0443 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044e \u043a\u0430\u043a \u043a \u0432\u0435\u0440\u0441\u0442\u0430\u043a\u0443 (workbench) \u2014 \u0432\u044b \u043d\u0435 \u0437\u043d\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u0443\u0434\u044c\u0442\u0435 \u0433\u043e\u0442\u043e\u0432\u044b \u043a \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e, \u0434\u0430\u0436\u0435 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430\u0445 \u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u0430\u0445.<\/p>\n<\/li>\n<\/ul>\n<p>\u042f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043f\u0430\u043f\u043e\u043a \u043d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435.<\/p>\n<p><strong>Abstract code structure<\/strong><\/p>\n<pre><code>\/\u251c\u2500\u2500 prototypes\u2502   \u251c\u2500\u2500 {prototype_name}\u2502   \u2502   \u251c\u2500\u2500 idea.md  \/\/ This file contains the initial ideas and AI-generated insights for the prototype.\u251c\u2500\u2500 prompts\u2502   \u251c\u2500\u2500 agents\u2502   \u2502   \u251c\u2500\u2500 {name}_agent.md  \/\/ Rules and guidelines for AI agents used in the project.\u2502   \u251c\u2500\u2500 ideas\u2502   \u2502   \u251c\u2500\u2500 {idea}_gen.md  \/\/ Only AI-generated answers - ideas and prompts.\u2502   \u2502   \u251c\u2500\u2500 {idea}.md  \/\/ Handwritten notes and domain knowledge. May include AI-generated answers too.<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><strong>Example code structure<\/strong><\/p>\n<pre><code>\/\u251c\u2500\u2500 prototypes\u2502   \u251c\u2500\u2500 flutter\/todo_with_amazing_animation\u2502   \u2502   \u251c\u2500\u2500 idea.md\u2502   \u251c\u2500\u2500 typescript\/yjs_prototype\u2502   \u2502   \u251c\u2500\u2500 idea.md\u2502   \u251c\u2500\u2500 dart\/frog_server\u2502   \u2502   \u251c\u2500\u2500 idea.md\u2502   \u251c\u2500\u2500 just_cool_feature\u2502   \u2502   \u251c\u2500\u2500 idea.md\u251c\u2500\u2500 prompts\u2502   \u251c\u2500\u2500 agents\u2502   \u2502   \u251c\u2500\u2500 flutter_agent.md\u2502   \u2502   \u251c\u2500\u2500 flutter_architector_agent.md\u2502   \u2502   \u251c\u2500\u2500 rust_agent.md\u2502   \u251c\u2500\u2500 ideas\u2502   \u2502   \u251c\u2500\u2500 charmed_animated_scroll_gen.md\u2502   \u2502   \u251c\u2500\u2500 that_gradient_shader.md<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0441\u043b\u043e\u0432\u043e <code>prototype<\/code>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 <code>playground<\/code> \u0438\u043b\u0438 <code>experiments<\/code> \u2014 \u044d\u0442\u043e \u0441\u043b\u043e\u0432\u043e \u0432\u0430\u0436\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u0438\u0445 \u044d\u0442\u0430\u043f\u0430\u0445 \u0432\u044b \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u044d\u0442\u0438 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c (playable), \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432, \u043d\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c (movable), \u0447\u0442\u043e\u0431\u044b \u0432\u0430\u0448 git commit \u043d\u0435 \u0432\u0437\u043e\u0440\u0432\u0430\u043b\u0441\u044f xD<\/p>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u043c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u2014 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u043e \u0442\u0440\u0435\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u043f\u0440\u043e\u0441\u0442\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043f\u0440\u043e\u0447\u0443\u0432\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432\u0430\u0448\u0443 \u0438\u0434\u0435\u044e. \u042f \u0431\u044b \u043f\u043e\u0441\u043e\u0432\u0435\u0442\u043e\u0432\u0430\u043b \u043d\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u0433\u0438\u0435 lints \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u0434 \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u0441\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0438 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u043c, \u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u0442\u0435 \u0438\u0445 \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u044f\u0437\u044b\u043a \u2014 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435.<\/p>\n<hr\/>\n<h3>Stage 2 \u2014 Main idea or MVP (Minimum Viable Product). Domain iterations.<\/h3>\n<ul>\n<li>\n<p><strong>Team:<\/strong> 1-2 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430<\/p>\n<\/li>\n<li>\n<p><strong>Main focus:<\/strong> \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u044b\u043c \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f\u043c \u0432 \u0434\u043e\u043c\u0435\u043d\u0430\u0445, \u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0445.<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u0430\u043f, \u043a\u043e\u0433\u0434\u0430 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u0430 \u0438\u0434\u0435\u044f, \u0438 \u0432\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0435\u0441\u044c \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 MVP. \u0418 \u0432\u044b \u0441\u043d\u043e\u0432\u0430 \u0438 \u0441\u043d\u043e\u0432\u0430 \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0435 \u043f\u043e \u0434\u043e\u043c\u0435\u043d\u0430\u043c, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0439\u0442\u0438 \u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0438\u0439 (\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442) \u043e\u043f\u044b\u0442 \u0434\u043b\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.<\/p>\n<h4>\u0417\u0430\u043c\u0435\u0442\u043a\u0430 \u043e linter rules<\/h4>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/e12\/3dd\/b43\/e123ddb43f10c0eae4853d4c8d60bc12.webp\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/e12\/3dd\/b43\/e123ddb43f10c0eae4853d4c8d60bc12.webp 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/e12\/3dd\/b43\/e123ddb43f10c0eae4853d4c8d60bc12.webp 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0421\u0442\u0440\u0430\u043d\u043d\u043e, \u043d\u043e \u0432\u0441\u0435\u0433\u043e \u043f\u0430\u0440\u0430 linter rules \u2014 \u0438 \u0432\u0430\u0448 \u043f\u0443\u0442\u044c \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0438\u043b\u0438 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0438 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0434\u043e\u043b\u0433\u0430 \u0437\u0430\u0434\u0430\u043d.<\/p>\n<p>\u0412\u044b\u0431\u0438\u0440\u0430\u0439\u0442\u0435 \u0441\u0432\u043e\u0438 linter rules \u0435\u0449\u0435 \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0437\u0430\u0433\u043b\u044f\u043d\u0435\u0442\u0435 \u0432 \u043a\u043e\u0434, \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0439\u0442\u0435 \u043c\u0443\u0434\u0440\u043e. \u042d\u0442\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043f\u043e\u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0432\u0430\u0441, \u043d\u043e \u0438 \u043d\u0430 \u0432\u0430\u0448 AI-generated \u043a\u043e\u0434, \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u0434\u0430 \u0438 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u043e\u043b\u0433, \u0442\u0430\u043a \u043a\u0430\u043a \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0432\u0430\u0448 codebase \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0442\u0438, \u0438 \u0435\u0441\u043b\u0438 \u0432\u044b \u0440\u0435\u0448\u0438\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e linter warnings, \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u044b\u0445 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u0439.<\/p>\n<h4>UI Kit<\/h4>\n<p>\u042d\u0442\u043e\u0442 \u044d\u0442\u0430\u043f \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441\u0430: \u0432\u044b \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043e\u0434\u0438\u043d\u043e\u043a\u0438\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0438\u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0441 \u0434\u0438\u0437\u0430\u0439\u043d\u0435\u0440\u043e\u043c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u2014 \u044d\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0443\u0441\u0442\u044c \u043d\u0435 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u0439, \u043d\u043e \u0440\u0430\u0431\u043e\u0447\u0438\u0439 <code>ui_kit<\/code>. \u0427\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0442\u0435\u0445\u043d\u0438\u043a\u0438 \u0435\u0433\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438. \u041b\u0438\u0447\u043d\u043e \u044f \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0434\u0432\u0430 \u0448\u0430\u0433\u0430 \u0438\u0437 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438 Atomic Design <a href=\"https:\/\/atomicdesign.bradfrost.com\/chapter-2\/\" rel=\"noopener noreferrer nofollow\">https:\/\/atomicdesign.bradfrost.com\/chapter-2\/<\/a>: <code>atoms<\/code> \u0438 <code>molecules<\/code>, \u043d\u043e, \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u044d\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0447\u0435\u0433\u043e \u0432\u044b \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0435 \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0438\u0437\u0430\u0439\u043d\u0430, \u0434\u043b\u044f \u043a\u0430\u043a\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u0438 \u0442. \u0434. \u0414\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430 \u044d\u0442\u043e \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e <code>atoms<\/code> \u0438 <code>molecules<\/code>. \u0414\u043b\u044f \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u2014 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u0435\u0441\u044f \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u0434\u043b\u044f \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u043a\u0430\u0440\u0442\u043e\u0447\u0435\u043a \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432, \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u043b\u0435\u0439\u0430\u0443\u0442\u043e\u0432, \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0441\u0442\u0440\u0430\u043d\u0438\u0446; \u0434\u043b\u044f \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u2014 \u043f\u043e\u0434\u0445\u043e\u0434 Material, Human Guidelines, FluentUI (\u043e\u0431\u044b\u0447\u043d\u043e \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0443\u0434\u043e\u0431\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u0438\u0437\u0430\u0439\u043d \u0432 Figma, Sketch \u0438 \u0442. \u0434.).<\/p>\n<p>\u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u0441\u044c \u043a \u044d\u0442\u043e\u043c\u0443 \u043a\u0430\u043a \u043a \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c \u0435\u0451 \u0441 \u0431\u0438\u0437\u043d\u0435\u0441-\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u0438 \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0442\u043e\u043c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0434\u043e\u0431\u043d\u043e \u0435\u0451 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u043c, \u043d\u043e \u0438 \u0434\u0440\u0443\u0433\u0438\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u0438 AI.<\/p>\n<p>\u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0435\u0441\u043b\u0438 \u043e\u0431\u043b\u0435\u0447\u044c \u044d\u0442\u043e \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u0441\u043b\u043e\u0432\u0430 \u2014 \u044d\u0442\u043e \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043e\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u0439, \u0441\u043a\u043e\u0440\u0435\u0435 \u043e\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u043c\u0435\u0442\u044c \u0445\u043e\u0440\u043e\u0448\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u043d\u044b\u0435 README \u0432\u043e\u043a\u0440\u0443\u0433, \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u044e\u0449\u0438\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u044d\u0442\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c. \u0418\u0437 \u043c\u043e\u0435\u0433\u043e \u043e\u043f\u044b\u0442\u0430 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0430\u0436\u043d\u043e, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0432\u044b \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0443\u0435\u0442\u0435 \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0435 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u044e, \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u0438 \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u043e \u2014 \u044d\u0442\u043e \u043f\u043e\u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043b\u044e\u0431\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043b\u044e\u0431\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c, \u043d\u0430 \u0442\u043e, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0442\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c (\u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0435, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c, \u0447\u0438\u043d\u0438\u0442\u044c \u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u0442\u0430\u0440\u043e\u0435) \u0434\u043b\u044f \u0444\u0438\u0447, \u044d\u043a\u0440\u0430\u043d\u043e\u0432 \u0438 \u0442. \u0434.<\/p>\n<p><strong>\u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0435\u0439 \u0438 workflow UI Kit<\/strong><\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/aa1\/f83\/adc\/aa1f83adc5de75de090484b7d3900189.webp\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/aa1\/f83\/adc\/aa1f83adc5de75de090484b7d3900189.webp 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/aa1\/f83\/adc\/aa1f83adc5de75de090484b7d3900189.webp 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0417\u0430\u0442\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0431\u0430\u0437\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043a\u043e\u0434\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f:<\/p>\n<pre><code>\/\u251c\u2500\u2500 core \/\/ everything that is not API, data, state, and ui. May contain isolated business logic, but not tied to any specific domain.\u2502   \u251c\u2500\u2500 utils  \/\/ Utility functions, some duplicate isolated logic that is more related to the framework than the app, such as serialization, etc.\u2502   \u251c\u2500\u2500 extensions  \/\/ Extensions for types.\u2502   \u251c\u2500\u2500 hooks  \/\/ Optional hooks for logic duplication reduction. Usually handy for small portions of logic that are used in build methods.\u2502   \u251c\u2500\u2500 l10n  \/\/ Optional localization files.\u2502   \u251c\u2500\u2500 side_services  \/\/ Optional third-party services like Firebase, Analytics, etc.\u251c\u2500\u2500 data_local_api  \/\/ I use word API, as it is just shorter:) but it has the same meaning as services, sources). Prefer to treat it as your local backend server.\u251c\u2500\u2500 data_remote_api  \/\/ (services, sources) Remote APIs, preferably generated from backend schemas (REST or GraphQL or any other).\u251c\u2500\u2500 data_repositories  \/\/ (optional) Handles both local and remote APIs.\u251c\u2500\u2500 data_models\u2502   \u251c\u2500\u2500 api_dto  \/\/ (optional) Data Transfer Objects for APIs. Preferably generated for remote APIs, can be useful for local APIs too.\u2502   \u251c\u2500\u2500 {domain}_models  \/\/ (optional) Domain-specific models.\u251c\u2500\u2500 data_states  \/\/ Global level states for runtime data (notifiers, controllers, blocs, commands, etc.). Its purpose mostly to keep runtime data prepared to use in UI. These states can be used in all domains.\u251c\u2500\u2500 di  \/\/ Dependency injection setup (it may be provider, get_it, inherited_models, etc.). Will be available for all domains in the app. Here you can set up API, states + methods to initialize them and use in `ui_root`.\u251c\u2500\u2500 ui_root  \/\/ Place here everything that is needed for the app to start: bootstrap methods, data_state and side_services initialization, error catching (Firebase, Sentry), Analytics, etc.\u251c\u2500\u2500 ui_kit \/\/ uses below two Atomic Design principles: atoms and molecules, but you can use any other principles, such as Material, Human Guidelines, FluentUI, etc.\u2502   \u251c\u2500\u2500 UI_KIT_README.md  \/\/ Short Rules and main principles defining how and why you made certain choices in underlying structure and links to the underlying READMEs. The last part is important, because as I found out, AI tools like to use README for designing or development.\u2502   \u251c\u2500\u2500 atoms\u2502   \u2502   \u251c\u2500\u2500 ATOM_README.md  \/\/ Domain knowledge for atoms.\u2502   \u251c\u2500\u2500 molecules\u2502   \u2502   \u251c\u2500\u2500 MOLECULE_README.md  \/\/ Domain knowledge for molecules.\u251c\u2500\u2500 ui_{domain} \/\/ all ui domains\u2502   \u251c\u2500\u2500 {DOMAIN}_KNOWLEDGE.md  \/\/ Domain knowledge for the specific UI domain.\u2502   \u251c\u2500\u2500 {flow} \/\/ one or more screens or views united into one flow. Every flow has one entry point screen (or at least one) and every screen has one or more features.\u2502   \u2502   \u251c\u2500\u2500 {flow}_screen.dart  \/\/ Entry point for the flow.\u2502   \u2502   \u251c\u2500\u2500 {feature_name}  \/\/ Domain and flow-specific features.\u251c\u2500\u2500 envs.dart  \/\/ [Environment variables](https:\/\/codewithandrea.com\/tips\/dart-define-from-file-env-json\/)\u251c\u2500\u2500 router.dart  \/\/ Your preferred router setup with defined routes\u251c\u2500\u2500 {platform}_app.dart  \/\/ Entry point for the platform-specific app.\u251c\u2500\u2500 common_imports.dart  \/\/ Optional. Place here all imports that are used in the whole app. Also, it is handy to place here all exports from barrel files from each top folder.<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0418 \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0434\u043e\u043c\u0435\u043d\u044b <code>ui_{domains}<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432 \u0441\u0435\u0431\u044f \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u044b\u0439 \u043e\u043f\u044b\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0438 \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0439\u0442\u0435 \u043d\u0430\u0434 \u043d\u0438\u043c\u0438.<\/p>\n<h4>\u0417\u0430\u043c\u0435\u0442\u043a\u0430 \u043e UI Domains<\/h4>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/487\/fc2\/a9d\/487fc2a9d9f72e4111fe31fdef3aad39.webp\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/487\/fc2\/a9d\/487fc2a9d9f72e4111fe31fdef3aad39.webp 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/487\/fc2\/a9d\/487fc2a9d9f72e4111fe31fdef3aad39.webp 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0421\u0445\u0435\u043c\u0430\u0442\u0438\u0447\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u0433\u043e, \u0447\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f, \u0430 \u0447\u0435\u043c \u043d\u0435\u043b\u044c\u0437\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0434\u043e\u043c\u0435\u043d\u0430. \u0412\u043d\u0443\u0442\u0440\u0438 \u0434\u043e\u043c\u0435\u043d\u0430 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0442\u0438\u043f\u0430\u043c\u0438 data layer, screen states, widget states (\u0432\u043e Flutter \u044d\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f Ephemeral state <a href=\"https:\/\/www.google.com\/search?q=https:\/\/docs.flutter.dev\/data-and-backend\/state-mgmt\/ephemeral-vs-app%23ephemeral-state\" rel=\"noopener noreferrer nofollow\">https:\/\/docs.flutter.dev\/data-and-backend\/state-mgmt\/ephemeral-vs-app#ephemeral-state<\/a>), \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u043e\u0439, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u043c\u0438 \u0434\u043b\u044f \u0444\u0438\u0447\u0438 \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0435 \u0440\u0430\u0441\u0448\u0430\u0440\u0438\u0432\u0430\u0442\u044c \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0434\u043e\u043c\u0435\u043d\u0430\u043c\u0438. \u042f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0432\u044f\u0437\u044f\u043c\u0438 \u043c\u0435\u0436\u0434\u0443 \u0434\u043e\u043c\u0435\u043d\u0430\u043c\u0438 \u2014 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0438\u0434\u0436\u0435\u0442\u044b (flows, screens, features), \u043d\u0435 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\/\u043d\u0435 \u0440\u0430\u0441\u0448\u0430\u0440\u0438\u0432\u0430\u0439\u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 (data). \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0447\u0435\u043c-\u0442\u043e \u0438\u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e data layer \u0434\u043e\u043c\u0435\u043d\u0430 \u2014 \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u0435 \u044d\u0442\u043e \u0432 global data layer, \u043e\u0442\u043a\u0443\u0434\u0430 \u044d\u0442\u043e \u0441\u0442\u0430\u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0434\u043e\u043c\u0435\u043d\u043e\u0432. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 <code>data_models<\/code>, \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u044d\u043a\u0440\u0430\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0435\u043d\u043e \u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 <code>data_states<\/code>.<\/p>\n<p>\u0421\u043b\u043e\u0432\u043e \u043e <code>data_state<\/code> \u2014 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f Flutter \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u044d\u0442\u043e App State <a href=\"https:\/\/www.google.com\/search?q=https:\/\/docs.flutter.dev\/data-and-backend\/state-mgmt\/ephemeral-vs-app%23app-state\" rel=\"noopener noreferrer nofollow\">https:\/\/docs.flutter.dev\/data-and-backend\/state-mgmt\/ephemeral-vs-app#app-state<\/a>. \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u044d\u0442\u043e \u043a\u0430\u043a global-level states \u0434\u043b\u044f runtime-\u0434\u0430\u043d\u043d\u044b\u0445 (notifiers, controllers, blocs, commands \u0438 \u0442. \u0434.). \u0418\u0445 \u0446\u0435\u043b\u044c \u2014 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0434\u0435\u0440\u0436\u0430\u0442\u044c runtime-\u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 UI. \u042d\u0442\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u043e \u0432\u0441\u0435\u0445 \u0434\u043e\u043c\u0435\u043d\u0430\u0445.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/p>\n<h4>\u0421\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u044f\u043c\u0438 (Relations between global layers)<\/h4>\n<p><strong>Option 1 \u2014 \u0441 common_imports<\/strong> <\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/6cd\/26f\/56a\/6cd26f56a17bbbfa0134fac31f70a51b.webp\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/6cd\/26f\/56a\/6cd26f56a17bbbfa0134fac31f70a51b.webp 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/6cd\/26f\/56a\/6cd26f56a17bbbfa0134fac31f70a51b.webp 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><strong>Option 2 \u2014 \u0431\u0435\u0437 common_imports<\/strong><\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/b34\/fcd\/0c5\/b34fcd0c5934a4f93b7166546e7e194f.webp\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/b34\/fcd\/0c5\/b34fcd0c5934a4f93b7166546e7e194f.webp 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/b34\/fcd\/0c5\/b34fcd0c5934a4f93b7166546e7e194f.webp 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><strong>Note. Barrel file.<\/strong><\/p>\n<p>\u041c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c barrel files \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u043f\u0430\u043f\u043a\u0435, \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u044f \u043b\u0435\u0436\u0430\u0449\u0438\u0435 \u043d\u0438\u0436\u0435 \u043a\u043b\u0430\u0441\u0441\u044b \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u0430\u043a Dart \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 <a href=\"https:\/\/dart.dev\/tools\/pub\/create-packages\" rel=\"noopener noreferrer nofollow\">https:\/\/dart.dev\/tools\/pub\/create-packages<\/a>. \u042d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0431\u0443\u0434\u0443\u0449\u0438\u0439 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433 \u043f\u0440\u043e\u0449\u0435 \u0438 \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0435 \u043f\u0443\u0442\u0430\u0442\u044c\u0441\u044f \u0441 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438 \u0432 git, \u043a\u043e\u0433\u0434\u0430 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0444\u0430\u0439\u043b \u043f\u043e\u0437\u0436\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f. \u0422\u0430\u043a\u0436\u0435 \u044d\u0442\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043b\u0435\u0433\u0447\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u044c\u0441\u044f \u043a\u043e \u0432\u0441\u0435\u043c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0430\u043f\u043a\u0430\u043c \u043a\u0430\u043a \u043a packages \/ libraries, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b \u0438 \u043c\u043e\u0433\u0443\u0442 \u043c\u0435\u043d\u044f\u0442\u044c \u0441\u0432\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435, \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044e\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u0432\u043d\u0435\u0448\u043d\u0438\u043c API. \u0412 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0442 \u043e\u043f\u044b\u0442\u0430 \u0432 \u0442\u043e\u043c, \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f deferred imports <a href=\"https:\/\/www.google.com\/search?q=https:\/\/dart.dev\/language\/libraries%23lazily-loading-a-library\" rel=\"noopener noreferrer nofollow\">https:\/\/dart.dev\/language\/libraries#lazily-loading-a-library<\/a>. \u042f \u0434\u0443\u043c\u0430\u044e, \u0432\u044b \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0436\u0438\u0434\u0430\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435 \u043f\u043e\u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435, \u043d\u043e \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u043e \u0441\u043f\u043e\u0441\u043e\u0431 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u2014 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u0442\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u043d\u0430 Stage 4.<\/p>\n<p><strong>Second note. Domain Knowledge.<\/strong><\/p>\n<p><strong>\u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0435\u0439 UI Domain \u0438 workflow<\/strong><\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/e87\/17b\/aae\/e8717baaefd563d839fe7ed47e2e09fe.webp\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/e87\/17b\/aae\/e8717baaefd563d839fe7ed47e2e09fe.webp 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/e87\/17b\/aae\/e8717baaefd563d839fe7ed47e2e09fe.webp 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u0444\u0430\u0439\u043b Domain Knowledge \u0432\u043e \u0432\u0441\u0435\u0445 \u043f\u0430\u043f\u043a\u0430\u0445 data \u0438 ui \u0441\u043b\u043e\u0435\u0432. \u041e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u043c, \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0440\u0435\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0438\u0442\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e AI \u2014 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0434\u0430\u0442\u044c \u0432\u0430\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0444\u0438\u0447\u0430\u043c\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430, \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u043b\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438.<\/p>\n<p>\u0421\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044e, \u0431\u044b\u043b\u043e \u0431\u044b \u0437\u0434\u043e\u0440\u043e\u0432\u043e, \u0435\u0441\u043b\u0438 \u0431\u044b \u0432\u044b \u0432\u044b\u0440\u043e\u0432\u043d\u044f\u043b\u0438 \u0435\u0433\u043e \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u0432\u044b\u0448\u0435\u0441\u0442\u043e\u044f\u0449\u0435\u0439 \u043f\u0430\u043f\u043a\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: \u0415\u0441\u043b\u0438 \u043f\u0430\u043f\u043a\u0430 \u0432\u044b\u0448\u0435 \u2014 <code>ui_guide<\/code>, \u0442\u043e \u043d\u0438\u0436\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0444\u0430\u0439\u043b <code>UI_GUIDE_CONTEXT.md<\/code> \u0438\u043b\u0438 <code>UI_GUIDE_KNOWLEDGE.md<\/code>. \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u0430: \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u043f\u043e\u0438\u0441\u043a \u043f\u043e \u0444\u0430\u0439\u043b\u0430\u043c \u2014 \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u043d\u0430\u0439\u0442\u0438 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b; \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043e\u0431\u0449\u0430\u0435\u0442\u0435\u0441\u044c \u0441 AI-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u2014 \u0432\u044b \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u0431\u0440\u0430\u0442\u0438\u043c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0443.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/ee1\/6f9\/2d5\/ee16f92d51341f650da2e22b1abca3e4.webp\" alt=\"Visual representation of layers separation, its relations and building order\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/ee1\/6f9\/2d5\/ee16f92d51341f650da2e22b1abca3e4.webp 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/ee1\/6f9\/2d5\/ee16f92d51341f650da2e22b1abca3e4.webp 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>Visual representation of layers separation, its relations and building order<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0432\u0435\u0441\u044c \u0441\u043b\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 <code>data<\/code> \u043f\u043e \u0434\u0432\u0443\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c:<\/p>\n<ul>\n<li>\n<p>\u0447\u0442\u043e\u0431\u044b \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0430\u043f\u043a\u0438 <code>lib<\/code>, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044f \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f<\/p>\n<\/li>\n<li>\n<p>\u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u0433\u043e\u043b\u043e\u0432\u0435, \u0447\u0442\u043e \u044d\u0442\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e data layer<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0434\u043e\u043c\u0435\u043d\u044b (\u0438\u043b\u0438 UI-\u0441\u043b\u043e\u0439) \u0438\u043c\u0435\u044e\u0442 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 <code>ui<\/code>. \u042d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u043b\u043e\u0439:<\/p>\n<ul>\n<li>\n<p>\u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u0438 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u043e\u0442 data layer<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0449\u0438\u043c \u0432\u0441\u0435 UI-\u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0434\u043e\u043c\u0435\u043d\u044b \u0432\u043c\u0435\u0441\u0442\u0435<\/p>\n<\/li>\n<\/ul>\n<p>\u0425\u043e\u0442\u044f \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u043f\u044b\u0442\u043a\u043e\u0439 overengineering, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 data \u0438 ui \u0441\u043b\u043e\u0435\u0432, \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0445 \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430, \u043f\u043e\u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0442\u043e, \u043a\u0430\u043a \u0432\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0435 \u0441\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0432\u0438\u0434\u0435\u0442\u044c \u0435\u0433\u043e \u0438\u043d\u0430\u0447\u0435 \u2014 \u0431\u043e\u043b\u0435\u0435 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (end-user perspective).<\/p>\n<p>\u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u0431\u043e\u0431\u0449\u0438\u043c \u0432\u0441\u0435 \u0441\u043b\u043e\u0432\u0430 \u0432 \u0433\u0440\u0430\u0444\u0438\u043a\u0443:<\/p>\n<p><strong>Abstract code structure<\/strong><\/p>\n<pre><code>\/\u251c\u2500\u2500 pubspec.yaml  \/\/ &lt;- define workspace to use the whole space as monorepo https:\/\/dart.dev\/tools\/pub\/workspaces\u251c\u2500\u2500 apps\/\u2502   \u2514\u2500\u2500 {platform}_app\/  \/\/ &lt;- platform can be replaced by your first target platform, for example mobile_app\u2502       \u251c\u2500\u2500 core\/\u2502       \u2502   \u251c\u2500\u2500 core.dart\u2502       \u2502   \u251c\u2500\u2500 utils\/\u2502       \u2502   \u251c\u2500\u2500 extensions\/\u2502       \u2502   \u251c\u2500\u2500 hooks\/\u2502       \u2502   \u251c\u2500\u2500 l10n\/\u2502       \u2502   \u2514\u2500\u2500 services\/\u2502       \u251c\u2500\u2500 data_local_api\/\u2502       \u251c\u2500\u2500 data_remote_api\/\u2502       \u251c\u2500\u2500 data_repositories\/\u2502       \u251c\u2500\u2500 data_models\/\u2502       \u2502   \u251c\u2500\u2500 api_dto\/\u2502       \u2502   \u2514\u2500\u2500 {domain}_models\/\u2502       \u251c\u2500\u2500 data_states\/\u2502       \u251c\u2500\u2500 di\/\u2502       \u251c\u2500\u2500 ui_root\/\u2502       \u251c\u2500\u2500 ui_kit\/\u2502       \u2502   \u251c\u2500\u2500 ui_kit.dart  \/\/ &lt;- place ui kit initially as a folder of mobile_app to keep initial simplicity\u2502       \u2502   \u251c\u2500\u2500 UI_KIT_README.md\u2502       \u2502   \u251c\u2500\u2500 atoms\/\u2502       \u2502   \u2502   \u2514\u2500\u2500 ATOM_README.md\u2502       \u2502   \u2514\u2500\u2500 molecules\/\u2502       \u2502       \u2514\u2500\u2500 MOLECULES_README.md\u2502       \u251c\u2500\u2500 ui_{domain}\/\u2502       \u2502   \u251c\u2500\u2500 {DOMAIN}_KNOWLEDGE.md\u2502       \u2502   \u251c\u2500\u2500 {flow}\/\u2502       \u2502   \u2502   \u2514\u2500\u2500 {feature_name}\/\u2502       \u251c\u2500\u2500 envs.dart\u2502       \u251c\u2500\u2500 router.dart\u2502       \u251c\u2500\u2500 common_imports.dart\u2502       \u2514\u2500\u2500 {platform}_app.dart\u2514\u2500\u2500 prototypes\/    \u2514\u2500\u2500 {prototype_name}\/        \u2514\u2500\u2500 idea.md  \/\/ This file contains the initial ideas and AI-generated insights for the prototype.    \u2514\u2500\u2500 prompts\/        \u251c\u2500\u2500 agents\/        \u2502   \u2514\u2500\u2500 {name}_agent.md        \u2514\u2500\u2500 ideas\/            \u251c\u2500\u2500 {idea}_gen.md            \u2514\u2500\u2500 {idea}.md<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><strong>Example code structure:<\/strong><\/p>\n<pre><code>\/\u251c\u2500\u2500 pubspec.yaml\u251c\u2500\u2500 apps\/\u2502   \u2514\u2500\u2500 mobile_app\/\u2502       \u251c\u2500\u2500 core\/\u2502       \u2502   \u251c\u2500\u2500 core.dart\u2502       \u2502   \u251c\u2500\u2500 utils\/\u2502       \u2502   \u251c\u2500\u2500 extensions\/\u2502       \u2502   \u251c\u2500\u2500 hooks\/\u2502       \u2502   \u251c\u2500\u2500 l10n\/\u2502       \u2502   \u2514\u2500\u2500 services\/\u2502       \u251c\u2500\u2500 data_local_api\/\u2502       \u251c\u2500\u2500 data_remote_api\/\u2502       \u251c\u2500\u2500 data_repositories\/\u2502       \u251c\u2500\u2500 data_models\/\u2502       \u2502   \u251c\u2500\u2500 data_models.dart\u2502       \u2502   \u251c\u2500\u2500 api_dto\/\u2502       \u2502   \u251c\u2500\u2500 payments_models\/\u2502       \u2502   \u251c\u2500\u2500 chat_models\/\u2502       \u2502   \u2514\u2500\u2500 profile_models\/\u2502       \u251c\u2500\u2500 data_states\/\u2502       \u2502   \u251c\u2500\u2500 data_states.dart\u2502       \u2502   \u251c\u2500\u2500 app_settings_notifier.dart\u2502       \u2502   \u2514\u2500\u2500 user_profile_cubit.dart\u2502       \u251c\u2500\u2500 di\/\u2502       \u2502   \u251c\u2500\u2500 di.dart\u2502       \u2502   \u251c\u2500\u2500 dependency_injector.dart\u2502       \u2502   \u251c\u2500\u2500 global_initializer.dart\u2502       \u2502   \u251c\u2500\u2500 global_state_initializer.dart\u2502       \u2502   \u2514\u2500\u2500 global_state_providers.dart\u2502       \u251c\u2500\u2500 ui_root\/\u2502       \u2502   \u251c\u2500\u2500 ui_root.dart\u2502       \u2502   \u251c\u2500\u2500 app_scaffold.dart\u2502       \u2502   \u2514\u2500\u2500 bootstrap.dart\u2502       \u251c\u2500\u2500 ui_kit\/\u2502       \u2502   \u251c\u2500\u2500 ui_kit.dart\u2502       \u2502   \u251c\u2500\u2500 UI_KIT_README.md\u2502       \u2502   \u251c\u2500\u2500 atoms\/\u2502       \u2502   \u2502   \u251c\u2500\u2500 atoms.dart\u2502       \u2502   \u2502   \u251c\u2500\u2500 ATOM_README.md\u2502       \u2502   \u2502   \u251c\u2500\u2500 ui_text_field.dart\u2502       \u2502   \u2502   \u251c\u2500\u2500 ui_icon.dart\u2502       \u2502   \u2502   \u2514\u2500\u2500 ui_badge.dart\u2502       \u2502   \u2514\u2500\u2500 molecules\/\u2502       \u2502       \u251c\u2500\u2500 molecules.dart\u2502       \u2502       \u251c\u2500\u2500 MOLECULES_README.md\u2502       \u2502       \u251c\u2500\u2500 ui_search_field.dart\u2502       \u2502       \u251c\u2500\u2500 ui_app_bar.dart\u2502       \u2502       \u2514\u2500\u2500 ui_animated_grid.dart\u2502       \u251c\u2500\u2500 ui_payments\/\u2502       \u2502   \u251c\u2500\u2500 ui_payments.dart\u2502       \u2502   \u251c\u2500\u2500 PAYMENTS_KNOWLEDGE.md\u2502       \u2502   \u251c\u2500\u2500 transactions_flow\/\u2502       \u2502   \u2502   \u251c\u2500\u2500 transactions_screen.dart\u2502       \u2502   \u2502   \u251c\u2500\u2500 features\/ \/\/ consider making this name adaptive; if a screen lacks features, it may not need them. If features are complex, naming them may be more efficient than grouping them.\u2502       \u2502   \u2502   \u2502   \u251c\u2500\u2500 transactions_list.dart\u2502       \u2502   \u2502   \u2502   \u2514\u2500\u2500 edit_transaction_popup.dart\u2502       \u2502   \u2514\u2500\u2500 pay\/\u2502       \u2502       \u251c\u2500\u2500 pay_screen.dart\u2502       \u2502       \u251c\u2500\u2500 qr_pay\/\u2502       \u2502       \u2502   \u251c\u2500\u2500 *\u2502       \u2502       \u2502   \u2514\u2500\u2500 qr_pay_feature.dart\u2502       \u2502       \u251c\u2500\u2500 provider_pay\/\u2502       \u2502       \u2502   \u251c\u2500\u2500 *\u2502       \u2502       \u2502   \u2514\u2500\u2500 provider_pay.dart\u2502       \u2502       \u2514\u2500\u2500 crypto_provider_pay\/\u2502       \u2502           \u251c\u2500\u2500 *\u2502       \u2502           \u2514\u2500\u2500 crypto_provider_pay.dart\u2502       \u251c\u2500\u2500 ui_profile\/\u2502       \u2502   \u251c\u2500\u2500 ui_profile.dart\u2502       \u2502   \u251c\u2500\u2500 PROFILE_KNOWLEDGE.md\u2502       \u2502   \u251c\u2500\u2500 auth\/\u2502       \u2502   \u2514\u2500\u2500 settings\/\u2502       \u251c\u2500\u2500 envs.dart\u2502       \u251c\u2500\u2500 router.dart\u2502       \u2514\u2500\u2500 mobile_app.dart\u2514\u2500\u2500 prototypes\/    \u251c\u2500\u2500 flutter\/todo_with_amazing_animation\/    \u2502   \u2514\u2500\u2500 idea.md    \u251c\u2500\u2500 typescript_yjs_prototype\/    \u2502   \u2514\u2500\u2500 idea.md    \u251c\u2500\u2500 dart_frog_server\/    \u2502   \u2514\u2500\u2500 idea.md    \u2514\u2500\u2500 just_cool_feature\/        \u2514\u2500\u2500 idea.md\/prompts\/\u251c\u2500\u2500 agents\/\u2502   \u251c\u2500\u2500 flutter_agent.md\u2502   \u251c\u2500\u2500 flutter_architector_agent.md\u2502   \u2514\u2500\u2500 rust_agent.md\u2514\u2500\u2500 ideas\/    \u251c\u2500\u2500 charmed_animated_scroll_gen.md    \u2514\u2500\u2500 that_gradient_shader.md<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041b\u0438\u0447\u043d\u043e \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0441\u043b\u043e\u0436\u043d\u044b\u043c \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c flows \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0434\u0435\u0441\u044c \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u0432\u044b\u0431\u043e\u0440\u0430:<\/p>\n<ul>\n<li>\n<p>\u043a\u043e\u0433\u0434\u0430 flow \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0438\u043b\u0438 \u043e\u0449\u0443\u0449\u0430\u0435\u0442\u0441\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u044b\u043c \u2014 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u044c \u0435\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u043e\u043c (Domain) \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043d\u0430 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043a\u0430\u043a Domain.<\/p>\n<\/li>\n<li>\n<p>\u043b\u0438\u0431\u043e \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u044d\u0442\u043e\u0442 flow \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e flows, \u0435\u0441\u043b\u0438 \u0447\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u0441\u043e\u0431\u0440\u0430\u043d\u043e \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u042f \u0434\u0443\u043c\u0430\u044e, \u0447\u0442\u043e \u0441\u0430\u043c\u0430\u044f \u0432\u0430\u0436\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u044d\u0442\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430 \u2014 \u043d\u0430\u043a\u043e\u043f\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e Domain knowledge \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u043f\u043e\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0432 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u0444\u0438\u0447\u0438.<\/p>\n<hr\/>\n<h3>Stage 3 \u2014 Feature iterations<\/h3>\n<ul>\n<li>\n<p><strong>Team:<\/strong> 2 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430<\/p>\n<\/li>\n<li>\n<p><strong>Main focus:<\/strong> \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0444\u0438\u0447\u0438 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0434\u043e\u043c\u0435\u043d\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u0438 \u0434\u043e\u043c\u0435\u043d\u044b \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u044b\u043c\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u0425\u043e\u0442\u044f \u044d\u0442\u0430 \u0447\u0430\u0441\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043c\u0430\u043b\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0438 \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u043d\u0435\u0441\u0442\u0438 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0440\u0430\u0434\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0434\u0432\u0438\u0433\u043e\u0432 \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435, \u044f \u0441\u0447\u0438\u0442\u0430\u044e, \u0447\u0442\u043e \u043d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0434\u0432\u0443\u043c \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u043c:<\/p>\n<ul>\n<li>\n<p>\u041f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c, \u0443\u0442\u043e\u043d\u044f\u0442\u044c \u0438 \u0430\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c domain knowledge \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p>\u0414\u0435\u0440\u0436\u0430\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043a\u0430\u0436\u0434\u043e\u0439 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0444\u0438\u0447\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043e\u0442 \u044d\u043a\u0440\u0430\u043d\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0430. \u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u0441\u044c \u043a \u044d\u043a\u0440\u0430\u043d\u0443 \u043a\u0430\u043a \u043a \u043b\u0435\u0439\u0430\u0443\u0442\u0443, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u044b \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u0442\u0435 \u0432\u0438\u0434\u0436\u0435\u0442\u044b, \u0438 \u0442\u043e\u0433\u0434\u0430 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0444\u0438\u0447\u0430\u043c\u0438 \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0449\u0435, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432\u0435\u0441\u0442\u0438 \u0441\u0435\u0431\u044f \u043a\u0430\u043a \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u044b\u0435 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<\/ul>\n<hr\/>\n<h3>Stage 4 &#8212; Scaling<\/h3>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/6aa\/960\/8d1\/6aa9608d1ca27762049fe989c0ff7bff.webp\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/6aa\/960\/8d1\/6aa9608d1ca27762049fe989c0ff7bff.webp 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/6aa\/960\/8d1\/6aa9608d1ca27762049fe989c0ff7bff.webp 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<ul>\n<li>\n<p><strong>Team:<\/strong> 2 &#8212; 3 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e \u043c\u043e\u0435\u043c\u0443 \u043c\u043d\u0435\u043d\u0438\u044e, \u0437\u0434\u0435\u0441\u044c \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u043f\u0443\u0442\u0438:<\/p>\n<h4>Path 1 \u2014 \u041c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b (Scaling to other platforms).<\/h4>\n<p>\u042d\u0442\u043e\u0442 \u044d\u0442\u0430\u043f \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u0442\u043e\u0440\u0430\u0445 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u0442\u044c \u0434\u0435\u043b\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0444\u043e\u0440\u043c-\u0444\u0430\u043a\u0442\u043e\u0440\u0430\u043c\u0438, \u043d\u043e \u0438 \u0441 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c (<a href=\"https:\/\/docs.flutter.dev\/ui\/adaptive-responsive\/best-practices\" rel=\"noopener noreferrer nofollow\">https:\/\/docs.flutter.dev\/ui\/adaptive-responsive\/best-practices<\/a>).<\/p>\n<p>\u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043b\u0443\u0447\u0448\u0435 \u0432\u043d\u0435\u0441\u0442\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u0435 \u0432\u0435\u0441\u044c data layer (\u043f\u0430\u043f\u043a\u0438 \u0441 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430\u043c\u0438 <code>data<\/code>) \u0438 <code>core<\/code> \u0432 \u043d\u043e\u0432\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u201ccore\u201d.<\/p>\n<pre><code>\/packages\/\u251c\u2500\u2500 core\/\u2502   \u251c\u2500\u2500 core.dart\u2502   \u251c\u2500\u2500 src\/\u2502   \u2502   \u251c\u2500\u2500 core\/ \/\/ I prefer to keep core as a separate package, as it often has tendency to be reused in other projects, and this way it would be easier to separate it in future to a separate package.\u2502   \u2502   \u2502   \u251c\u2500\u2500 utils\/\u2502   \u2502   \u2502   \u251c\u2500\u2500 extensions\/\u2502   \u2502   \u2502   \u251c\u2500\u2500 hooks\/\u2502   \u2502   \u2502   \u251c\u2500\u2500 l10n\/\u2502   \u2502   \u2502   \u2514\u2500\u2500 side_services\/\u2502   \u2502   \u251c\u2500\u2500 data_local_api\/\u2502   \u2502   \u251c\u2500\u2500 data_remote_api\/\u2502   \u2502   \u251c\u2500\u2500 data_repositories\/\u2502   \u2502   \u251c\u2500\u2500 data_models\/\u2502   \u2502   \u2502   \u251c\u2500\u2500 api_dto\/\u2502   \u2502   \u2502   \u2514\u2500\u2500 {domain}_models\/\u2502   \u2502   \u251c\u2500\u2500 data_states\/\u2502   \u2502   \u251c\u2500\u2500 di\/<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0432\u044b\u043d\u0435\u0441\u0438\u0442\u0435 \u0432\u0435\u0441\u044c <code>ui_kit<\/code> \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442.<\/p>\n<pre><code>\/packages\/\u251c\u2500\u2500 ui_kit\/\u2502   \u251c\u2500\u2500 ui_kit.dart\u2502   \u251c\u2500\u2500 UI_KIT_README.md\u2502   \u251c\u2500\u2500 atoms\/\u2502   \u2502   \u251c\u2500\u2500 ATOM_README.md\u2502   \u251c\u2500\u2500 molecules\/\u2502   \u2502   \u251c\u2500\u2500 MOLECULES_README.md<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412-\u0442\u0440\u0435\u0442\u044c\u0438\u0445, \u0432\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 \u0434\u043e\u043c\u0435\u043d\u044b \u0438 \u0444\u0438\u0447\u0438 \u0438 \u0442\u043e, \u0433\u0434\u0435 \u043e\u043d\u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u044b.<\/p>\n<p>\u0412\u044b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u0435, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0444\u0438\u0447 \u0431\u044b\u043b\u0438 \u043e\u0442\u0434\u0435\u043b\u0435\u043d\u044b \u043e\u0442 \u044d\u043a\u0440\u0430\u043d\u043e\u0432 \u0432\u043d\u0443\u0442\u0440\u0438 flows, \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u044d\u043a\u0440\u0430\u043d \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043b\u0435\u0433\u043a\u043e:<\/p>\n<ol>\n<li>\n<p><strong>View Layouts<\/strong> \/\/ &lt;- \u043b\u0435\u0439\u0430\u0443\u0442, \u0433\u0434\u0435 \u0431\u044b\u043b\u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u044b \u0444\u0438\u0447\u0438.<\/p>\n<\/li>\n<li>\n<p><strong>Flow logic<\/strong> \/\/ &lt;- \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u043c\u0435\u0436\u0434\u0443 views<\/p>\n<\/li>\n<li>\n<p><strong>Features<\/strong> \/\/ &lt;- \u0431\u0438\u0437\u043d\u0435\u0441-\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/p>\n<\/li>\n<\/ol>\n<p>\u0417\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u0435 \u0432\u0441\u044e \u0434\u043e\u043c\u0435\u043d\u043d\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443 \u2014 layouts (\u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e), flow (\u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e), features \u2014 \u0432 \u043d\u043e\u0432\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u201cui_domains\u201d. \u042d\u0442\u043e \u0441\u0442\u0430\u043d\u0435\u0442 \u0432\u0430\u0448\u0438\u043c \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u043e\u043c, \u0433\u0434\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0432\u0441\u0435 \u0444\u0438\u0447\u0438, \u0448\u0435\u0440\u0438\u043d\u0433\u043e\u0432\u044b\u0435 \u043b\u0435\u0439\u0430\u0443\u0442\u044b \u0438 flows \u0434\u043b\u044f \u0434\u043e\u043c\u0435\u043d\u043e\u0432. \u0414\u0443\u043c\u0430\u0439\u0442\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c \u043a\u0430\u043a \u043e \u043a\u043e\u0440\u043e\u0431\u043a\u0435 \u0441 \u043a\u0443\u0431\u0438\u043a\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438\u043c\u0435\u044e\u0442 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430.<\/p>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0443 \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0441\u0432\u043e\u0438 \u043b\u0435\u0439\u0430\u0443\u0442\u044b, flows \u043c\u043e\u0433\u0443\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0430\u043c, \u0433\u0434\u0435 \u043d\u0430 mobile \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043a\u0440\u0430\u043d\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 push, \u043d\u0430 desktop \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u043d\u043e \u043e\u043a\u043d\u043e.<\/p>\n<p>\u0417\u0430\u0442\u0435\u043c, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0430\u0448\u0435\u0439 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0446\u0435\u043b\u0438, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043d\u0443\u0436\u043d\u043e\u0439 \u0432\u0430\u043c \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0438\u0439\u0442\u0438 \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435:<\/p>\n<p><strong>Abstract code structure<\/strong><\/p>\n<pre><code>\/\/apps\/\u251c\u2500\u2500 {platform}_app\/  \/\/ &lt;- separate applications with new entry main, which can use different layouts, based on ui_domains package.\/packages\/\u2502   \u251c\u2500\u2500 core\/\u2502   \u251c\u2500\u2500 ui_kit\/\u2502   \u251c\u2500\u2500 ui_domains\/ \/\/ &lt;- this new package will be used in all apps\u2502   \u2502   \u251c\u2500\u2500 src\/\u2502   \u2502   \u2502   \u251c\u2500\u2500 ui_{domain}\/\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 {DOMAIN}_KNOWLEDGE.md\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 {flow}\/\u2502   \u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 {feature_name}\/\u2502   \u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 \u251c\u2500\u2500 {feature_name}.dart \/\/ barrel file with conditional exports, which are extremly useful for platform dependent features https:\/\/dart.dev\/tools\/pub\/create-packages#conditionally-importing-and-exporting-library-files\u2502   \u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 \u251c\u2500\u2500 {feature_name}_{platform}\/\u2502   \u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 layouts\/ \/\/ &lt;- typically you may have different layouts for same features, so it is make sense to place it directly in the flow folder. But in same time, if you need to move to different place - thats fine too - since in my opinion, that's more business\/design related decision.<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><strong>Example code structure:<\/strong><\/p>\n<pre><code>\/\/apps\/\u251c\u2500\u2500 desktop_app\/\u251c\u2500\u2500 web_app\/\u251c\u2500\u2500 mobile_app\/\/packages\/\u251c\u2500\u2500 core\/\u251c\u2500\u2500 ui_kit\/\u251c\u2500\u2500 ui_domains\/\u2502   \u251c\u2500\u2500 src\/\u2502   \u2502   \u251c\u2500\u2500 ui_payments\/ \/\/ &lt;- domain\u2502   \u2502   \u2502   \u251c\u2500\u2500 ui_payments.dart \/\/ &lt;- barrel file with exports\u2502   \u2502   \u2502   \u251c\u2500\u2500 PAYMENTS_KNOWLEDGE.md \/\/ &lt;- domain knowledge\u2502   \u2502   \u2502   \u251c\u2500\u2500 pay\/ \/\/ &lt;- flow\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 qr_pay\/ \/\/ &lt;- feature\u2502   \u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 qr_pay_feature.dart \/\/ &lt;- feature barrel file with conditional imports\u2502   \u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 qr_pay_ios\/ \/\/ &lt;- platform feature implementation\u2502   \u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 qr_pay_android\/\u2502   \u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 qr_pay_web\/\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 provider_pay\/ \/\/ &lt;- feature\u2502   \u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 provider_pay.dart \/\/ &lt;- feature barrel file\u2502   \u2502   \u2502   \u2502   \u2502   layouts\/ \/\/ &lt;- flow layouts\u2502   \u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 desktop\/\u2502   \u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 mobile\/\u2502   \u2502   \u2502   ui_profile\/ \/\/ &lt;- domain\u2502   \u2502   \u2502   \u251c\u2500\u2500 ui_profile.dart \/\/ &lt;- domain barrel file\u2502   \u2502   \u2502   \u251c\u2500\u2500 PROFILE_KNOWLEDGE.md \/\/ &lt;- domain knowledge\u2502   \u2502   \u2502   \u251c\u2500\u2500 auth\/ \/\/ &lt;- flow, but as you can imagine, if it will outgrow just auth logical domain, the transform it into a domain and move up.\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 login\/ \/\/ &lt;- feature\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 \u251c\u2500\u2500 login_ios\/\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 \u251c\u2500\u2500 login_android\/\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 \u251c\u2500\u2500 login_web\/\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 registration\/\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 \u251c\u2500\u2500 registration_ios\/\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 \u251c\u2500\u2500 registration_android\/\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 \u251c\u2500\u2500 registration_web\/\u2502   \u2502   \u2502   \u2502   \u2502   layouts\/ \/\/ &lt;- flow layouts\u2502   \u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 desktop\/\u2502   \u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 mobile\/\u2502   \u2502   \u2502   \u251c\u2500\u2500 settings\/ \/\/ &lt;- flow\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 settings.dart \/\/ &lt;- flow barrel file\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 customization\/ \/\/ &lt;- feature\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 \u251c\u2500\u2500 customization_ios\/\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 \u251c\u2500\u2500 customization_android\/\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 \u251c\u2500\u2500 customization_web\/<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u0438\u0435 \u0444\u0438\u0447\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c iOS \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043d\u0430 Linux desktop. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0434\u043b\u044f Linux, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u0443\u044e \u0434\u043b\u044f \u0444\u0438\u0447\u0438, \u0438\u043b\u0438 \u0441\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u043e\u043f\u044b\u0442, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u044c \u0444\u0438\u0447 \u0438\u0437 iOS.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/1a6\/598\/1df\/1a65981dfc79ef020f46a721846f88ea.webp\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/1a6\/598\/1df\/1a65981dfc79ef020f46a721846f88ea.webp 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/1a6\/598\/1df\/1a65981dfc79ef020f46a721846f88ea.webp 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>Path 2 \u2014 \u041e\u0434\u043d\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u2014 \u0440\u0430\u0437\u043d\u044b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 (Same app &#8212; different configurations).<\/h4>\n<p>\u0414\u0440\u0443\u0433\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u2014 \u0438\u043c\u0435\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 flavors <a href=\"https:\/\/docs.flutter.dev\/deployment\/flavors\" rel=\"noopener noreferrer nofollow\">https:\/\/docs.flutter.dev\/deployment\/flavors<\/a>. \u041d\u043e \u0432 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f, \u0435\u0441\u043b\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u043e\u0433\u0440\u043e\u043c\u043d\u044b, \u0440\u0430\u0437\u0443\u043c\u043d\u043e \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0438\u0445 \u043a\u0430\u043a \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 Path 1, \u044f \u0434\u0443\u043c\u0430\u044e, \u043d\u0430 \u044d\u0442\u043e\u043c \u043f\u0443\u0442\u0438 \u0443 \u0432\u0430\u0441 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0442\u0435 \u0436\u0435 \u043b\u0435\u0439\u0430\u0443\u0442\u044b, \u043d\u043e \u043d\u043e\u0432\u044b\u0435 \u0434\u043e\u043c\u0435\u043d\u044b, \u043d\u043e\u0432\u044b\u0435 flows \u0438 \u043d\u043e\u0432\u044b\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0444\u0438\u0447\u0438 \u0434\u043b\u044f \u043d\u043e\u0432\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u0412\u0430\u0436\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0438\u043b\u0438 \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0434\u043e\u043c\u0435\u043d\u044b, flows \u0438\u043b\u0438 \u0444\u0438\u0447\u0438 \u0432 \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p><strong>Abstract code structure:<\/strong><\/p>\n<pre><code>\/\/apps\/{mobile_app_with_different_flows}\/\/packages\/\u2502   \u251c\u2500\u2500 core\/\u2502   \u251c\u2500\u2500 ui_kit\/\u2502   \u251c\u2500\u2500 ui_domains\/\u2502   \u2502   \u251c\u2500\u2500 src\/\u2502   \u2502   \u2502   \u251c\u2500\u2500 ui_{domain}\/\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 {DOMAIN}_KNOWLEDGE.md\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 {flow}\/\u2502   \u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 {feature_name}\/\u2502   \u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 {experimental_feature_name}\/\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 {experimental_flows}\/\u2502   \u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 {feature_name}\/\u2502   \u2502   \u2502   \u251c\u2500\u2500 ui_{experimental_domain}\/\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 {DOMAIN}_KNOWLEDGE.md\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 {flow}\/\u2502   \u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 {feature_name}\/\u2502   \u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 \u251c\u2500\u2500 {feature_name}_{platform}\/<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><strong>Example code structure:<\/strong><\/p>\n<pre><code>\/\/apps\/\u251c\u2500\u2500 mobile_app_spring_edition \/\/ &lt;- separate applications with new entry main, which can use different layouts, based on ui_domains package.\u251c\u2500\u2500 mobile_app_with_gamification\/\u251c\u2500\u2500 mobile_app_with_ai\/\/packages\/\u251c\u2500\u2500 core\/\u251c\u2500\u2500 ui_kit\/\u251c\u2500\u2500 ui_domains\/\u2502   \u251c\u2500\u2500 src\/\u2502   \u2502   \u251c\u2500\u2500 ui_payments\/\u2502   \u2502   \u2502   \u251c\u2500\u2500 ui_payments.dart\u2502   \u2502   \u2502   \u251c\u2500\u2500 PAYMENTS_KNOWLEDGE.md\u2502   \u2502   \u2502   \u251c\u2500\u2500 pay\/ \/\/ &lt;- flow\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 galactical_pay\/ \/\/ &lt;- experimental feature\u2502   \u2502   \u2502   \u251c\u2500\u2500 scan_and_pay\/ \/\/ &lt;- experimental flow\u2502   \u2502   \u2502   ui_ai_chatbot\/ \/\/ &lt;- experimental domain\u2502   \u2502   \u2502   \u251c\u2500\u2500 ui_ai_chatbot.dart\u2502   \u2502   \u2502   \u251c\u2500\u2500 AI_CHATBOT_KNOWLEDGE.md\u2502   \u2502   \u2502   ui_waiting_game\/\u2502   \u2502   \u2502   \u251c\u2500\u2500 ui_waiting_game.dart\u2502   \u2502   \u2502   \u251c\u2500\u2500 WAITING_GAME_KNOWLEDGE.md\u2502   \u2502   \u2502   ui_picture_board\/\u2502   \u2502   \u2502   \u251c\u2500\u2500 ui_picture_board.dart\u2502   \u2502   \u2502   \u251c\u2500\u2500 PICTURE_BOARD_KNOWLEDGE.md<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<hr\/>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/b6e\/5f0\/a0a\/b6e5f0a0a664b338676de85fae1f504e.webp\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/b6e\/5f0\/a0a\/b6e5f0a0a664b338676de85fae1f504e.webp 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/b6e\/5f0\/a0a\/b6e5f0a0a664b338676de85fae1f504e.webp 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h3>Stage 5 \u2014 Scaling application domains<\/h3>\n<ul>\n<li>\n<p><strong>Team:<\/strong> 3-6 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u0444\u0438\u0447\u0430 \u0440\u0430\u0437\u0440\u0430\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0441\u0438\u043b\u044c\u043d\u043e, \u0438 \u0443 \u0432\u0430\u0441 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0434\u043b\u044f \u0435\u0451 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438.<\/p>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b \u0447\u0435\u0442\u043a\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u043b\u0438 \u0434\u043e\u043c\u0435\u043d\u044b, \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432:<\/p>\n<ol>\n<li>\n<p>\u0412\u044b\u043d\u0435\u0441\u0442\u0438 \u0434\u043e\u043c\u0435\u043d \u043a\u0430\u043a \u043f\u0430\u043a\u0435\u0442<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u043d\u0435\u0441\u0442\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 flows \u043a\u0430\u043a \u043f\u0430\u043a\u0435\u0442<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u043d\u0435\u0441\u0442\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0444\u0438\u0447\u0438 \u043a\u0430\u043a \u043f\u0430\u043a\u0435\u0442<\/p>\n<\/li>\n<\/ol>\n<p><strong>Abstract code structure:<\/strong><\/p>\n<pre><code>\/packages\/\u251c\u2500\u2500 core\/\u251c\u2500\u2500 ui_kit\/\u251c\u2500\u2500 ui_{domain}\/\u2502   \u251c\u2500\u2500 {DOMAIN}\\_KNOWLEDGE.md\u2502   \u251c\u2500\u2500 src\/\u2502   \u2502   \u251c\u2500\u2500 {flow}\/\u2502   \u2502   \u2502   \u251c\u2500\u2500 {feature_name}\/\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 {feature_name}_{platform}\/\u2502   \u2502   \u2502   \u251c\u2500\u2500 layouts\/\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 {layout_name}\/<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><strong>\u041f\u0440\u0438\u043c\u0435\u0440 \u2014 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0434\u043e\u043c\u0435\u043d\u0430 <\/strong><code><strong>ui_payments<\/strong><\/code><strong> \u0432 <\/strong><code><strong>packages<\/strong><\/code><strong>:<\/strong><\/p>\n<pre><code>\/packages\/\u251c\u2500\u2500 ui_payments\/\u2502   \u251c\u2500\u2500 ui_payments.dart\u2502   \u251c\u2500\u2500 README.md\u2502   \u251c\u2500\u2500 PAYMENTS_KNOWLEDGE.md\u2502   \u251c\u2500\u2500 src\/\u2502   \u2502   \u251c\u2500\u2500 provider_pay\/ \/\/ &lt;- flow\u2502   \u2502   \u2502   \u251c\u2500\u2500 provider_pay.dart \/\/ &lt;- feature\u2502   \u2502   \u2502   \u251c\u2500\u2500 \u251c\u2500\u2500 provider_pay_ios\/ \/\/ &lt;- platform feature implementation\u2502   \u2502   \u2502   \u251c\u2500\u2500 \u251c\u2500\u2500 provider_pay_android\/\u2502   \u2502   \u2502   \u251c\u2500\u2500 \u251c\u2500\u2500 provider_pay_web\/\u2502   \u2502   \u2502   \u2502   layouts\/\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 desktop\/\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 mobile\/\u2502   \u2502   \u2502   pay\/ \/\/ &lt;- flow\u2502   \u2502   \u2502   \u251c\u2500\u2500 qr_pay\/ \/\/ &lt;- feature\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 qr_pay_feature.dart \/\/ &lt;- feature\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 \u251c\u2500\u2500 qr_pay_ios\/ \/\/ &lt;- platform feature implementation\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 \u251c\u2500\u2500 qr_pay_android\/\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 \u251c\u2500\u2500 qr_pay_web\/\u2502   \u2502   \u2502   \u2502   layouts\/\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 desktop\/\u2502   \u2502   \u2502   \u2502   \u251c\u2500\u2500 mobile\/<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u044d\u0442\u0430\u043f\u0435 \u0443 \u0432\u0430\u0441 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0439 data layer \u0432 \u0432\u0438\u0434\u0435 \u043f\u0430\u043a\u0435\u0442\u0430 + \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0439 UI Kit, \u0432\u0430\u0448\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0430 \u2014 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u044c\u0441\u044f \u043a\u043e \u0432\u0441\u0435\u043c\u0443 \u044d\u0442\u043e\u043c\u0443 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043a\u0430\u043a API, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0432\u0438\u0434\u0436\u0435\u0442\u044b Flutter \u0438\u043b\u0438 \u043b\u044e\u0431\u043e\u0439 \u043f\u0430\u043a\u0435\u0442 \u0438\u0437 pub.<\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0443 \u0432\u0430\u0441 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u043d\u0435\u0441\u043b\u043e\u043c\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 (\u043f\u043e\u043c\u043d\u0438\u0442\u0435 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044e: barrel files + \u0447\u0435\u0442\u043a\u0438\u0435 \u0438 \u0432\u0438\u0434\u0438\u043c\u044b\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u0435\u0436\u0434\u0443 data layers \u0438 UI, \u0434\u043e\u043c\u0435\u043d\u0430\u043c\u0438, flows \u0438 \u0444\u0438\u0447\u0430\u043c\u0438), \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044f \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c \u0434\u043b\u044f \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439 \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. Hoorey!<\/p>\n<hr\/>\n<h3>Conclusion<\/h3>\n<p>\u041f\u043e \u043c\u043e\u0435\u043c\u0443 \u043c\u043d\u0435\u043d\u0438\u044e, \u0435\u0441\u043b\u0438 \u0432\u044b indie-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u043c\u0430\u043b\u043e\u0433\u043e \u0438 \u0440\u0430\u0441\u0442\u0438. \u0414\u043b\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0434\u0438\u0437\u0430\u0439\u043d\u0435\u0440\u0430 \u0438 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0430, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043f\u0440\u0435\u0434\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0434\u0438\u0437\u0430\u0439\u043d, \u043b\u0443\u0447\u0448\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0441 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u0438\u0445 \u044d\u0442\u0430\u043f\u043e\u0432, \u0442\u0430\u043a \u043a\u0430\u043a \u0443 \u0432\u0430\u0441 \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439 \u0443\u0436\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u0441 \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e.<\/p>\n<p>\u041d\u043e \u0442\u0430\u043a\u0436\u0435 \u044f \u0434\u0443\u043c\u0430\u044e, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u043e\u0431\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u0430\u0448 \u0431\u0438\u0437\u043d\u0435\u0441 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043a\u0440\u0438\u0437\u0438\u0441\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0438 \u0432\u0430\u0448\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f, \u044d\u0442\u043e \u043f\u043e \u0441\u0443\u0442\u0438 \u0431\u0443\u0434\u0435\u0442 \u043e\u0437\u043d\u0430\u0447\u0430\u0442\u044c, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0434\u043b\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u0431\u0443\u0434\u0435\u0442 \u0447\u0440\u0435\u0437\u0432\u044b\u0447\u0430\u0439\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043f\u043b\u0430\u0432\u043d\u043e \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u0440\u0430\u043d\u043d\u0438\u043c \u044d\u0442\u0430\u043f\u0430\u043c \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u043e\u0442\u0442\u0443\u0434\u0430 \u2014 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u043f\u0430\u0441\u0442\u0438 \u0432\u0430\u0441 \u043e\u0442 \u0432\u044b\u0433\u043e\u0440\u0430\u043d\u0438\u044f. \u0418 \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0439\u0442\u0435 \u043e \u0441\u0432\u043e\u0438\u0445 \u0438\u0434\u0435\u044f\u0445 \u0432 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430\u0445 \u2014 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u043e\u043d\u0438 \u0441\u043f\u0430\u0441\u0443\u0442 \u0432\u0430\u0448\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0443:)<\/p>\n<p>\u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u044d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434 \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u0438\u0442 \u0432\u0430\u0441 \u0438\u0442\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0441\u0432\u043e\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u043f\u043e\u0434 \u0434\u0440\u0443\u0433\u0438\u043c \u0443\u0433\u043b\u043e\u043c \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043b\u0443\u0447\u0448\u0435\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e.<\/p>\n<p>\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u0435\u0441\u044c \u0441\u0432\u043e\u0438\u043c\u0438 \u043c\u044b\u0441\u043b\u044f\u043c\u0438 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 (\u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0438 \u043c\u043e\u0442\u0438\u0432\u0430\u0446\u0438\u0435\u0439)! \ud83d\ude42<\/p>\n<p>\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u0430\u0448\u0435 \u0432\u0440\u0435\u043c\u044f \u0438 \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e \u0434\u043d\u044f! \u0410\u043d\u0442\u043e\u043d<\/p>\n<\/div>\n<p>\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\/1061508\/\">https:\/\/habr.com\/ru\/articles\/1061508\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Short description: \u041c\u044b\u0441\u043b\u0438 \u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0434\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0438 \u0444\u0438\u043b\u043e\u0441\u043e\u0444\u0438\u0438 \u00abdeveloper as a user\u00bb; \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f indie-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0438 \u0441\u0442\u0430\u0440\u0442\u0430\u043f\u043e\u0432 \u043d\u0430 \u0440\u0430\u043d\u043d\u0438\u0445 \u0441\u0442\u0430\u0434\u0438\u044f\u0445.disclaimer: \u0445\u043e\u0442\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u0431\u044b\u043b\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 25 \u0433\u043e\u0434\u0430, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u0435\u0449\u0435\u0439 \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u043d\u0435 \u043f\u043e\u0442\u0435\u0440\u044f\u043b\u0438 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u043c\u043d\u043e\u0433\u0438\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0443 \u0432\u0441\u0435 \u0435\u0449\u0451 \u0442\u0430\u043a\u0436\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b \u0438 \u044d\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435.\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441\u0432\u043e\u0438\u043c\u0438 \u043c\u044b\u0441\u043b\u044f\u043c\u0438 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u044d\u0442\u0430\u043f\u0430\u0445 \u0440\u043e\u0441\u0442\u0430 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430.Note: \u0412\u0441\u0435 \u043c\u043e\u0438 \u043c\u044b\u0441\u043b\u0438 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u044b \u043d\u0430 \u043b\u0438\u0447\u043d\u043e\u043c \u043e\u043f\u044b\u0442\u0435, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u043c \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f \u0437\u0430 \u0442\u0435\u043c, \u043a\u0430\u043a\u0438\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u043e\u043f\u0440\u0430\u0432\u0434\u0430\u043b\u0438 \u0441\u0435\u0431\u044f, \u0430 \u043a\u0430\u043a\u0438\u0435 \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u043b\u0438\u0441\u044c. \u042d\u0442\u043e \u043c\u043e\u044f \u0440\u0435\u0444\u043b\u0435\u043a\u0441\u0438\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438 \u043a\u0430\u043a, \u0430 \u043d\u0435 \u0441\u0442\u0440\u043e\u0433\u0438\u0435 guidelines \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u2014 \u0441\u043a\u043e\u0440\u0435\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u0438.\u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0434\u043e\u043f\u043e\u043b\u043d\u044f\u0442\u044c (\u0438\u043b\u0438 \u043d\u0435\u0442) \u043e\u0431\u0449\u0438\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f\u0445 \u0438\u043b\u0438 \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u043e\u0442\u0440\u044f\u0441\u0430\u044e\u0449\u0435\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e https:\/\/docs.flutter.dev\/app-architecture. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u044f \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0443\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0440\u0430\u043d\u043d\u0438\u0445 \u0441\u0442\u0430\u0434\u0438\u044f\u0445 \u0441\u0442\u0430\u0440\u0442\u0430\u043f\u0430 \u2014 \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0441\u0432\u043e\u0439 \u043f\u0443\u0442\u044c \u0441 \u043e\u0434\u043d\u043e\u0433\u043e Flutter-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0438 \u0438\u0449\u0435\u0442 \u0441\u043f\u043e\u0441\u043e\u0431 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 (\u0441\u043a\u0430\u0436\u0435\u043c, \u043f\u044f\u0442\u0438-\u0448\u0435\u0441\u0442\u0438) \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c.Second Note: \u041f\u0443\u0442\u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (product development) \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u043e\u0434 \u0437\u0430\u043a\u0430\u0437 \u0432 \u0441\u0442\u0443\u0434\u0438\u044f\u0445 (ordered product in-studio) \u043c\u043e\u0433\u0443\u0442 \u043a\u0430\u0440\u0434\u0438\u043d\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0439 \u0441\u043e\u0432\u0435\u0442 \u2014 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0439\u0442\u0435 \u044d\u0442\u0430\u043f\u044b \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0438\u0445 \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u043b\u0438\u0447\u043d\u044b\u043c \u043e\u043f\u044b\u0442\u043e\u043c.Third Note: \u041d\u0430 \u043f\u0440\u043e\u0442\u044f\u0436\u0435\u043d\u0438\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u044f \u0431\u0443\u0434\u0443 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u044c\u0441\u044f \u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u043a\u0430\u043a \u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e (developer as a user) \u2014 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043a\u043e\u0434\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043f\u0430\u043f\u043e\u043a \u0438 \u0444\u0430\u0439\u043b\u043e\u0432, \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a, \u043a\u0430\u043a \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0441\u043c\u043e\u0442\u0440\u044f\u0442 \u043d\u0430 \u0441\u0432\u043e\u0439 \u043a\u043e\u0434. \u0414\u043b\u044f \u043c\u0435\u043d\u044f \u0441\u0442\u0430\u043b\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u0441\u0430\u043c\u044b\u0439 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0430 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435 (maintenance) \u0438\u043b\u0438 \u0434\u043b\u044f \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0444\u0438\u0447-\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 (feature changes). \u0427\u0430\u0441\u0442\u044c\u044e \u044d\u0442\u043e\u0433\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0431\u044b\u043b \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0432\u0438\u0434\u0435\u043e \u043e Clean Architecture \u0438 Design https:\/\/youtu.be\/Nsjsiz2A9mg?si=LDSqhU_6DlyyVL1K&amp;t=527, \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0447\u0430\u0441\u0442\u044f\u043c\u0438 \u0441\u0442\u0430\u043b\u0438 Domain-Driven Design (DDD) https:\/\/en.wikipedia.org\/wiki\/Domain-driven_design, Test-Driven Development (TDD) \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0443\u0442\u0438\u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0438 \u044f \u043d\u0430\u0434\u0435\u044e\u0441\u044c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0443\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435:)\u041f\u0440\u043e\u0449\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u0432\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u0435\u043a\u043b\u0430\u0440\u0438\u0440\u0443\u0435\u0442, \u043a\u0430\u043a \u0432\u0430\u0448 \u043a\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0435 \u043a \u043d\u0435\u0439 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0435 \u0432\u0430\u043c\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b.Fourth Note:\u041f\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u043d\u0430 27 \u044f\u043d\u0432\u0430\u0440\u044f 2025 \u0433\u043e\u0434\u0430 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 AI-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u0438\u043b\u0438 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u0439. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u043a\u043e\u0433\u0434\u0430 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u0440\u043c\u0438\u043d \u2018prompt\u2019, \u044d\u0442\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u043e\u043c\u0443 \u0432\u043e\u043f\u0440\u043e\u0441\u0443 \u0438\u043b\u0438 \u043e\u0442\u0432\u0435\u0442\u0443, \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 AI-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435.Fifth Note:\u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u043b\u0438 \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u044d\u0442\u0430\u043f\u0435: \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 AI preferences \/ agent-rules \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043b\u044e\u0431\u0438\u043c\u043e\u0433\u043e AI-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0438 project-wide preferences, \u0447\u0442\u043e\u0431\u044b \u0434\u0440\u0443\u0433\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043c\u043e\u0433\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 Cursor, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043d\u0430 https:\/\/cursor.directory. \u0418\u043c\u0435\u0439\u0442\u0435 \u0432 \u0432\u0438\u0434\u0443, \u0447\u0442\u043e \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0447\u0430\u0441\u0442\u044c\u044e \u0432\u0430\u0448\u0435\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u2014 \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0438\u0442\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0434 \u044d\u0442\u0438\u043c\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438, \u043e\u0442\u043a\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0438\u0445, \u043f\u0438\u0441\u0430\u0442\u044c, \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c, \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0442. \u0434. \u0422\u0430\u043a \u0447\u0442\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u0441\u044c \u043a \u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u0430\u043a \u043a \u0447\u0430\u0441\u0442\u0438 \u0432\u0430\u0448\u0435\u0433\u043e codebase.\u0412 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u0442\u0435\u0445\u043d\u0438\u043a\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043a \u043d\u0435\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u044b\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c. \u0411\u0443\u0434\u044c\u0442\u0435 \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u044b \u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043b\u0430\u0433\u0430\u0439\u0442\u0435\u0441\u044c \u043d\u0430 \u0441\u0432\u043e\u0438 \u043d\u0430\u0432\u044b\u043a\u0438.Sixth Note: \u0422\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u044f.\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u0432 (\u0445\u043e\u0442\u044f \u0438\u0445 \u043c\u043d\u043e\u0433\u043e, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u044d\u0442\u0438\u0445, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0447\u0435\u0442\u043a\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0434\u043b\u044f \u0437\u0430\u043c\u0435\u0442\u043e\u043a):End user \u2014 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435: iOS, Android, macOS, Windows, Linux, web \u0438 \u0442. \u0434.Domain \u2014 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0430\u044f \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u0430\u044f \u0441\u0432\u043e\u0435\u0439 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u044c\u044e (scope) \u0447\u0430\u0441\u0442\u044c \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u0430\u044f \u043e\u043f\u044b\u0442\u043e\u043c \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (end user experience) \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.https:\/\/en.wikipedia.org\/wiki\/Domain_(software_engineering\u041f\u0440\u0438\u043c\u0435\u0440 \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f (Complex App Example):\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0433\u0434\u0435 \u0432\u044b \u2014 end user. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0436\u0438\u0434\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u043e\u043c\u0435\u043d\u044b:(Intro) \u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f (Guide), \u0432\u0438\u043a\u0442\u043e\u0440\u0438\u043d\u0430 (quiz) \u0438\u043b\u0438 \u043d\u043e\u0432\u043e\u0441\u0442\u0438 \u2014 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044d\u043a\u0440\u0430\u043d\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0434\u043e \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f Home.(Home) \u0421\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u043e \u0434\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0441\u0442\u043e\u043b\u0430, \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0447\u0430\u0441\u0442\u044b\u0435 \u0444\u0438\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c. \u042d\u0442\u043e\u0442 \u0434\u043e\u043c\u0435\u043d \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0438\u0447\u0438 \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u0434\u043e\u043c\u0435\u043d\u043e\u0432. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043e\u0436\u0438\u0434\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u043c \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u0437\u043e\u0432\u0435\u043c \u044d\u0442\u043e fast functions experience.(Payments) \u2014 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0436\u0438\u0434\u0430\u0442\u044c, \u0447\u0442\u043e \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d \u0432\u0435\u0434\u0435\u0442 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u044d\u043a\u0440\u0430\u043d\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b \u0431\u0430\u043d\u043a\u043e\u0432, \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0435 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u044b \u0438 \u0442. \u0434\u2026 \u043d\u043e \u0432\u0441\u0435 \u044d\u0442\u0438 \u044d\u043a\u0440\u0430\u043d\u044b \u0431\u0443\u0434\u0443\u0442 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u044b \u043a \u043e\u0434\u043d\u043e\u0439 \u0442\u0435\u043c\u0435 (scope) payment experience.(Profile) End user \u043c\u043e\u0436\u0435\u0442 \u043e\u0436\u0438\u0434\u0430\u0442\u044c, \u0447\u0442\u043e \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0439\u0442\u0438\/\u0432\u044b\u0439\u0442\u0438 (sign in \/ sign out), \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442, \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u0437\u043e\u0432\u0435\u043c \u044d\u0442\u043e profile experience.(Support) \u042d\u0442\u043e\u0442 \u0434\u043e\u043c\u0435\u043d \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u044d\u043a\u0440\u0430\u043d \u0441 \u0447\u0430\u0442\u043e\u043c, \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0434\u0438\u0430\u043b\u043e\u0433\u0438 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u044d\u043a\u0440\u0430\u043d\u0430\u0445, \u043d\u043e \u0432 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u0441\u0435 \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u043f\u0440\u0435\u0434\u043c\u0435\u0442 support experience.\u0427\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u043e\u043c\u0435\u043d, \u0432\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043a\u0430\u043a \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438, \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u044b \u0438\u043b\u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u044b \u043f\u0440\u043e\u0436\u0438\u0432\u0430\u044e\u0442 \u044d\u0442\u043e\u0442 \u043e\u043f\u044b\u0442, \u043b\u0438\u0431\u043e \u043f\u0435\u0440\u0435\u0436\u0438\u0442\u044c \u0435\u0433\u043e \u0441\u0430\u043c\u043e\u043c\u0443. \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u2014 \u0432\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0438 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c domain knowledge.Domain knowledge \u2014 \u00ab\u0437\u043d\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u044b\u00bb, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0435 \u043e\u0442 \u0434\u043e\u043c\u0435\u043d\u043d\u044b\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u043e\u0432\/\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0443, \u0434\u0438\u0437\u0430\u0439\u043d\u0435\u0440\u043e\u0432 \u0438\u043b\u0438 \u043f\u0443\u0442\u0435\u043c \u0438\u0442\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0434\u0438\u0437\u0430\u0439\u043d\u0430, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u043f\u044b\u0442\u0430 \u0438\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u044b. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u044b\u0442 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (end user), \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. https:\/\/en.wikipedia.org\/wiki\/Domain_knowledgeFlow \u2014 \u043e\u0434\u0438\u043d \u044d\u043a\u0440\u0430\u043d \u0438\u043b\u0438 \u0441\u0435\u0440\u0438\u044f \u044d\u043a\u0440\u0430\u043d\u043e\u0432, \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0438\u043b\u0438 views, \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u2014 Auth Flow.Screen \u2014 \u0432\u0438\u0434\u0436\u0435\u0442, \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u044d\u043a\u0440\u0430\u043d, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u0437 \u0444\u0438\u0447, \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u043d\u044b\u0445 \u043d\u0430 \u044d\u0442\u043e\u0439\/\u044d\u0442\u043e\u043c screen \/ page \/ view. \u041b\u0438\u0447\u043d\u043e \u043c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u044c\u0441\u044f \u043a \u043b\u044e\u0431\u043e\u043c\u0443 screen \u043a\u0430\u043a \u043a page \u0438\u043b\u0438 view, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0432\u0435\u0441\u044c \u044d\u043a\u0440\u0430\u043d \u0438\u043b\u0438 \u0431\u044b\u0442\u044c \u0447\u0430\u0441\u0442\u044c\u044e \u043b\u0435\u0439\u0430\u0443\u0442\u0430, \u0441\u0442\u0440\u043e\u044f\u0449\u0435\u0433\u043e\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0439 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 (nested navigation: https:\/\/pub.dev\/documentation\/go_router\/latest\/go_router\/ShellRoute-class.html) \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0442\u043e\u043c\u0443, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 JS-\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438 \u0432 \u0432\u0435\u0431 (https:\/\/router.vuejs.org\/guide\/essentials\/nested-routes).Feature \u2014 \u00ab\u043e\u0442\u043b\u0438\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u043f\u043e\u0440\u0442\u0430\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0438\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c)\u00bb. \u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a \u0434\u043e\u043c\u0435\u043d\u0443 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u0435\u0451 \u043a\u0430\u043a \u0443\u0437\u043a\u043e\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\/\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c (capability\/functionality), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0444\u0438\u0447\u0430\u043c\u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 end user \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0434\u043e\u043c\u0435\u043d \u043a\u0430\u043a \u0435\u0434\u0438\u043d\u043e\u0435 \u0446\u0435\u043b\u043e\u0435. https:\/\/en.wikipedia.org\/wiki\/Software_featureStage 1 \u2014 PrototypingTeam: 1 (\u0438\u043b\u0438 \u0432 \u043b\u0443\u0447\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 2) \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430Main focus: \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u0443\u044e \u0447\u0430\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u0430\u043c \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u043a\u0430\u043a ClientUser (\u0438\u043b\u0438, \u043d\u0430\u0437\u043e\u0432\u0435\u043c \u044d\u0442\u043e, \u0431\u0438\u0437\u043d\u0435\u0441\u0443).\u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u0441\u044c \u043a \u0441\u0432\u043e\u0435\u043c\u0443 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044e \u043a\u0430\u043a \u043a \u0432\u0435\u0440\u0441\u0442\u0430\u043a\u0443 (workbench) \u2014 \u0432\u044b \u043d\u0435 \u0437\u043d\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u0443\u0434\u044c\u0442\u0435 \u0433\u043e\u0442\u043e\u0432\u044b \u043a \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e, \u0434\u0430\u0436\u0435 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430\u0445 \u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u0430\u0445.\u042f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043f\u0430\u043f\u043e\u043a \u043d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435.Abstract code structure\/\u251c\u2500\u2500 prototypes\u2502   \u251c\u2500\u2500 {prototype_name}\u2502   \u2502   \u251c\u2500\u2500 idea.md  \/\/ This file contains the initial ideas and AI-generated insights for the prototype.\u251c\u2500\u2500 prompts\u2502   \u251c\u2500\u2500 agents\u2502   \u2502   \u251c\u2500\u2500 {name}_agent.md  \/\/ Rules and guidelines for AI agents used in the project.\u2502   \u251c\u2500\u2500 ideas\u2502   \u2502   \u251c\u2500\u2500 {idea}_gen.md  \/\/ Only AI-generated answers &#8212; ideas and prompts.\u2502   \u2502   \u251c\u2500\u2500 {idea}.md  \/\/ Handwritten notes and domain knowledge. May include AI-generated answers too.Example code structure\/\u251c\u2500\u2500 prototypes\u2502   \u251c\u2500\u2500 flutter\/todo_with_amazing_animation\u2502   \u2502   \u251c\u2500\u2500 idea.md\u2502   \u251c\u2500\u2500 typescript\/yjs_prototype\u2502   \u2502   \u251c\u2500\u2500 idea.md\u2502   \u251c\u2500\u2500 dart\/frog_server\u2502   \u2502   \u251c\u2500\u2500 idea.md\u2502   \u251c\u2500\u2500 just_cool_feature\u2502   \u2502   \u251c\u2500\u2500 idea.md\u251c\u2500\u2500 prompts\u2502   \u251c\u2500\u2500 agents\u2502   \u2502   \u251c\u2500\u2500 flutter_agent.md\u2502   \u2502   \u251c\u2500\u2500 flutter_architector_agent.md\u2502   \u2502   \u251c\u2500\u2500 rust_agent.md\u2502   \u251c\u2500\u2500 ideas\u2502   \u2502   \u251c\u2500\u2500 charmed_animated_scroll_gen.md\u2502   \u2502   \u251c\u2500\u2500 that_gradient_shader.md\u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0441\u043b\u043e\u0432\u043e prototype, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 playground \u0438\u043b\u0438 experiments \u2014 \u044d\u0442\u043e \u0441\u043b\u043e\u0432\u043e \u0432\u0430\u0436\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u0438\u0445 \u044d\u0442\u0430\u043f\u0430\u0445 \u0432\u044b \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u044d\u0442\u0438 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c (playable), \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432, \u043d\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c (movable), \u0447\u0442\u043e\u0431\u044b \u0432\u0430\u0448 git commit \u043d\u0435 \u0432\u0437\u043e\u0440\u0432\u0430\u043b\u0441\u044f xD\u041a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u043c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u2014 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u043e \u0442\u0440\u0435\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u043f\u0440\u043e\u0441\u0442\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043f\u0440\u043e\u0447\u0443\u0432\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432\u0430\u0448\u0443 \u0438\u0434\u0435\u044e. \u042f \u0431\u044b \u043f\u043e\u0441\u043e\u0432\u0435\u0442\u043e\u0432\u0430\u043b \u043d\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u0433\u0438\u0435 lints \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u0434 \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u0441\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0438 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u043c, \u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u0442\u0435 \u0438\u0445 \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u044f\u0437\u044b\u043a \u2014 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435.Stage 2 \u2014 Main idea or MVP (Minimum Viable Product). Domain iterations.Team: 1-2 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430Main focus: \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u044b\u043c \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f\u043c \u0432 \u0434\u043e\u043c\u0435\u043d\u0430\u0445, \u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0445.\u042d\u0442\u0430\u043f, \u043a\u043e\u0433\u0434\u0430 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u0430 \u0438\u0434\u0435\u044f, \u0438 \u0432\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0435\u0441\u044c \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 MVP. \u0418 \u0432\u044b \u0441\u043d\u043e\u0432\u0430 \u0438 \u0441\u043d\u043e\u0432\u0430 \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0435 \u043f\u043e \u0434\u043e\u043c\u0435\u043d\u0430\u043c, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0439\u0442\u0438 \u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0438\u0439 (\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442) \u043e\u043f\u044b\u0442 \u0434\u043b\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.\u0417\u0430\u043c\u0435\u0442\u043a\u0430 \u043e linter rules\u0421\u0442\u0440\u0430\u043d\u043d\u043e, \u043d\u043e \u0432\u0441\u0435\u0433\u043e \u043f\u0430\u0440\u0430 linter rules \u2014 \u0438 \u0432\u0430\u0448 \u043f\u0443\u0442\u044c \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0438\u043b\u0438 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0438 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0434\u043e\u043b\u0433\u0430 \u0437\u0430\u0434\u0430\u043d.\u0412\u044b\u0431\u0438\u0440\u0430\u0439\u0442\u0435 \u0441\u0432\u043e\u0438 linter rules \u0435\u0449\u0435 \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0437\u0430\u0433\u043b\u044f\u043d\u0435\u0442\u0435 \u0432 \u043a\u043e\u0434, \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0439\u0442\u0435 \u043c\u0443\u0434\u0440\u043e. \u042d\u0442\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043f\u043e\u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0432\u0430\u0441, \u043d\u043e \u0438 \u043d\u0430 \u0432\u0430\u0448 AI-generated \u043a\u043e\u0434, \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u0434\u0430 \u0438 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u043e\u043b\u0433, \u0442\u0430\u043a \u043a\u0430\u043a \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0432\u0430\u0448 codebase \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0442\u0438, \u0438 \u0435\u0441\u043b\u0438 \u0432\u044b \u0440\u0435\u0448\u0438\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e linter warnings, \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u044b\u0445 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u0439.UI Kit\u042d\u0442\u043e\u0442 \u044d\u0442\u0430\u043f \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441\u0430: \u0432\u044b \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043e\u0434\u0438\u043d\u043e\u043a\u0438\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0438\u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0441&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-488073","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/488073","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=488073"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/488073\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=488073"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=488073"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=488073"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}