{"id":101983,"date":"2025-03-17T23:07:46","date_gmt":"2025-03-17T19:37:46","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/build-with-lovabledev-part3-kma\/"},"modified":"2025-03-17T23:07:46","modified_gmt":"2025-03-17T19:37:46","slug":"build-with-lovabledev-part3-kma","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/build-with-lovabledev-part3-kma\/","title":{"rendered":"\u0633\u0627\u062e\u062a \u0628\u0627 \u062f\u0648\u0633\u062a \u062f\u0627\u0634\u062a\u0646\u06cc. dev #part3 &#8211; \u062c\u0627\u0645\u0639\u0647 dev"},"content":{"rendered":"<div data-article-id=\"2338602\" id=\"article-body\">\n<p>\u0633\u0644\u0627\u0645 \u0633\u0627\u0632\u0646\u062f\u0647 \u0645\u062d\u0635\u0648\u0644<br \/>\u0628\u0647 \u0642\u0633\u0645\u062a \u0633\u0648\u0645 \u0633\u0631\u06cc &#8220;Build With Lovable.dev&#8221; \u062e\u0648\u0634 \u0622\u0645\u062f\u06cc\u062f.<\/p>\n<p>\u0645\u0646 \u0647\u0648\u0627\u062f\u0627\u0631 \u0628\u0632\u0631\u06af \u062a\u0631\u0627\u0632\u0648 \u060c \u0647\u0648\u0627\u062f\u0627\u0631 \u0628\u0632\u0631\u06af Sung&#39;s Tereling Up Discipline \u0648 \u0637\u0628\u0642\u0647 \u0628\u0646\u062f\u06cc Iigris \u0647\u0633\u062a\u0645. \u0645\u0646 \u0641\u0642\u0637 \u062f\u0631 \u0627\u06cc\u0646\u0633\u062a\u0627\u06af\u0631\u0627\u0645 \u062d\u0644\u0642\u0647 \u0645\u06cc \u0686\u0631\u062e\u06cc\u062f\u0645 \u0648 \u062d\u0644\u0642\u0647 \u0633\u06cc\u0633\u062a\u0645 \u060c \u0641\u0634\u0627\u0631 UPS (0\/100) \u060c SIT UPS (0\/100) \u060c Squats (0\/100) \u060c \u0627\u062c\u0631\u0627 (0\/10 \u06a9\u06cc\u0644\u0648\u0645\u062a\u0631) \u0631\u0627 \u06af\u0631\u0641\u062a\u0645. <\/p>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u060c \u0645\u0646 \u0641\u0642\u0637 \u0641\u06a9\u0631 \u06a9\u0631\u062f\u0645 \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 Tracker \u062a\u0646\u0627\u0633\u0628 \u0627\u0646\u062f\u0627\u0645 \u062a\u0633\u0637\u06cc\u062d \u0627\u0646\u0641\u0631\u0627\u062f\u06cc \u062e\u0648\u062f \u0631\u0627 \u0628\u0633\u0627\u0632\u0645. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0622\u0646 \u0631\u0627 \u0645\u06cc \u0633\u0627\u0632\u0645. <\/p>\n<p>\u0627\u06cc\u0646 \u0627\u0648\u0644\u06cc\u0646 \u0633\u0631\u06cc\u0639 \u0645\u0646 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a UI \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0648\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"nx\">Part<\/span> <span class=\"mi\">1<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Solo<\/span> <span class=\"nx\">Leveling<\/span> <span class=\"nx\">Fitness<\/span> <span class=\"nx\">Tracker<\/span> <span class=\"o\">-<\/span> <span class=\"nx\">UI<\/span> <span class=\"nc\">Design <\/span><span class=\"p\">(<\/span><span class=\"nx\">No<\/span> <span class=\"nx\">Database<\/span><span class=\"p\">)<\/span>\n<span class=\"nx\">Overview<\/span>\n<span class=\"nx\">Design<\/span> <span class=\"nx\">the<\/span> <span class=\"nx\">front<\/span><span class=\"o\">-<\/span><span class=\"nx\">end<\/span> <span class=\"kr\">interface<\/span> <span class=\"k\">for<\/span> <span class=\"nx\">a<\/span> <span class=\"nx\">minimalist<\/span><span class=\"p\">,<\/span> <span class=\"nx\">gamified<\/span> <span class=\"nx\">fitness<\/span> <span class=\"nx\">tracking<\/span> <span class=\"nx\">system<\/span> <span class=\"nx\">inspired<\/span> <span class=\"nx\">by<\/span> <span class=\"nx\">Solo<\/span> <span class=\"nx\">Leveling<\/span> <span class=\"nx\">anime<\/span><span class=\"p\">.<\/span> <span class=\"nx\">This<\/span> <span class=\"nx\">phase<\/span> <span class=\"nx\">focuses<\/span> <span class=\"nx\">solely<\/span> <span class=\"nx\">on<\/span> <span class=\"nx\">UI<\/span> <span class=\"nx\">elements<\/span> <span class=\"nx\">and<\/span> <span class=\"nx\">client<\/span><span class=\"o\">-<\/span><span class=\"nx\">side<\/span> <span class=\"nx\">functionality<\/span> <span class=\"nx\">without<\/span> <span class=\"nx\">database<\/span> <span class=\"nx\">integration<\/span><span class=\"p\">.<\/span>\n<span class=\"nx\">Core<\/span> <span class=\"nx\">Functionality<\/span> <span class=\"nx\">Requirements<\/span>\n<span class=\"nx\">Authentication<\/span> <span class=\"nx\">System<\/span>\n\n<span class=\"nx\">Simple<\/span> <span class=\"nx\">login<\/span> <span class=\"nx\">screen<\/span> <span class=\"kd\">with<\/span> <span class=\"nx\">fixed<\/span> <span class=\"nf\">credentials <\/span><span class=\"p\">(<\/span><span class=\"nx\">Username<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Aizecs<\/span><span class=\"p\">,<\/span> <span class=\"nx\">Password<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Tiger2025<\/span><span class=\"p\">)<\/span>\n<span class=\"nx\">Solo<\/span> <span class=\"nx\">Leveling<\/span><span class=\"o\">-<\/span><span class=\"nx\">inspired<\/span> <span class=\"nx\">design<\/span> <span class=\"nf\">elements <\/span><span class=\"p\">(<\/span><span class=\"nx\">hunter<\/span> <span class=\"nx\">emblem<\/span><span class=\"p\">,<\/span> <span class=\"nx\">gate<\/span> <span class=\"nx\">imagery<\/span><span class=\"p\">)<\/span>\n<span class=\"dl\">\"<\/span><span class=\"s2\">Awaken<\/span><span class=\"dl\">\"<\/span> <span class=\"nx\">button<\/span> <span class=\"nx\">instead<\/span> <span class=\"k\">of<\/span> <span class=\"nx\">standard<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Login<\/span><span class=\"dl\">\"<\/span> <span class=\"nx\">button<\/span>\n<span class=\"nx\">Client<\/span><span class=\"o\">-<\/span><span class=\"nx\">side<\/span> <span class=\"nx\">validation<\/span> <span class=\"nf\">only <\/span><span class=\"p\">(<\/span><span class=\"nx\">store<\/span> <span class=\"nx\">credentials<\/span> <span class=\"k\">in<\/span> <span class=\"nx\">local<\/span> <span class=\"nx\">storage<\/span> <span class=\"k\">for<\/span> <span class=\"k\">this<\/span> <span class=\"nx\">phase<\/span><span class=\"p\">)<\/span>\n\n<span class=\"nx\">Daily<\/span> <span class=\"nx\">Quest<\/span> <span class=\"nx\">Dashboard<\/span>\n\n<span class=\"nx\">Prominent<\/span> <span class=\"nx\">display<\/span> <span class=\"k\">of<\/span> <span class=\"nx\">current<\/span> <span class=\"nx\">date<\/span> <span class=\"nx\">and<\/span> <span class=\"nx\">time<\/span> <span class=\"k\">in<\/span> <span class=\"nx\">India<\/span> <span class=\"nx\">time<\/span> <span class=\"nf\">zone <\/span><span class=\"p\">(<\/span><span class=\"nx\">UTC<\/span><span class=\"o\">+<\/span><span class=\"mi\">5<\/span><span class=\"p\">:<\/span><span class=\"mi\">30<\/span><span class=\"p\">)<\/span>\n<span class=\"nx\">Morning<\/span> <span class=\"nx\">greeting<\/span> <span class=\"nx\">based<\/span> <span class=\"nx\">on<\/span> <span class=\"nx\">login<\/span> <span class=\"nx\">time<\/span>\n<span class=\"nx\">Daily<\/span> <span class=\"nx\">quests<\/span> <span class=\"nx\">displayed<\/span> <span class=\"k\">as<\/span> <span class=\"nx\">a<\/span> <span class=\"nx\">list<\/span> <span class=\"k\">of<\/span> <span class=\"nx\">exercises<\/span> <span class=\"kd\">with<\/span> <span class=\"nx\">completion<\/span> <span class=\"nx\">tracking<\/span><span class=\"p\">:<\/span>\n\n<span class=\"nc\">Pushups <\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"o\">\/<\/span><span class=\"mi\">60<\/span><span class=\"p\">)<\/span>\n<span class=\"nx\">Sit<\/span> <span class=\"nf\">ups <\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"o\">\/<\/span><span class=\"mi\">60<\/span><span class=\"p\">)<\/span>\n<span class=\"nc\">Squats <\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"o\">\/<\/span><span class=\"mi\">60<\/span><span class=\"p\">)<\/span>\n<span class=\"nx\">Kegal<\/span> <span class=\"nx\">Exercise<\/span> <span class=\"mi\">1<\/span><span class=\"o\">-<\/span><span class=\"mi\">5<\/span> <span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"o\">\/<\/span><span class=\"mi\">60<\/span> <span class=\"nx\">each<\/span><span class=\"p\">)<\/span>\n\n\n<span class=\"nx\">Interactive<\/span> <span class=\"nx\">counters<\/span> <span class=\"nx\">allowing<\/span> <span class=\"nx\">the<\/span> <span class=\"nx\">user<\/span> <span class=\"nx\">to<\/span> <span class=\"nx\">increment<\/span> <span class=\"nx\">progress<\/span>\n<span class=\"nx\">Visual<\/span> <span class=\"nx\">progress<\/span> <span class=\"nx\">bars<\/span> <span class=\"k\">for<\/span> <span class=\"nx\">each<\/span> <span class=\"nx\">exercise<\/span>\n<span class=\"nx\">Clear<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Complete Quest<\/span><span class=\"dl\">\"<\/span> <span class=\"nx\">button<\/span>\n\n<span class=\"nx\">Basic<\/span> <span class=\"nx\">Progress<\/span> <span class=\"nx\">Tracking<\/span>\n\n<span class=\"nx\">Temporary<\/span> <span class=\"nx\">local<\/span> <span class=\"nx\">storage<\/span> <span class=\"k\">for<\/span><span class=\"p\">:<\/span>\n\n<span class=\"nx\">Wake<\/span><span class=\"o\">-<\/span><span class=\"nx\">up<\/span> <span class=\"nx\">time<\/span> <span class=\"nx\">input<\/span>\n<span class=\"nx\">Workout<\/span> <span class=\"nx\">completion<\/span> <span class=\"nx\">time<\/span>\n<span class=\"nx\">Percentage<\/span> <span class=\"k\">of<\/span> <span class=\"nx\">daily<\/span> <span class=\"nx\">workout<\/span> <span class=\"nx\">completed<\/span>\n\n\n<span class=\"nx\">Simple<\/span> <span class=\"nx\">visualization<\/span> <span class=\"k\">of<\/span> <span class=\"nx\">today<\/span><span class=\"dl\">'<\/span><span class=\"s1\">s progress\nCurrent rank display (starting at E-rank)\n\nVisual Design Elements\nColor Palette\n\nPrimary: Deep blue (#1A237E) and purple (#4A148C) gradients\nSecondary: Gold (#FFC107) for achievements and completed tasks\nTertiary: Grey scale for incomplete tasks\nAccent: Red (#D50000) for rank indicators\n\nTypography\n\nClean, sans-serif font for readability\nDisplay font for headings inspired by Korean\/anime aesthetics\nDifferent font weights for visual hierarchy\n\nUI Components\n\nMinimalist card-based design for exercise modules\nCustom progress bars that change color when completed\nRank emblem that displays current rank (E-rank initially)\nCustom toggle\/counter buttons for exercise tracking\n\nUser Flow\n\nLogin Screen\n\nEnter credentials (client-side validation only)\nTransition to Daily Quest Dashboard\n\n\nDaily Quest Dashboard\n\nMorning greeting with rank displayed\nView all exercise requirements\nLog exercises as completed\nView completion percentage\n\n\nBasic Progress View\n\nSimple chart showing today<\/span><span class=\"dl\">'<\/span><span class=\"nx\">s<\/span> <span class=\"nx\">completion<\/span> <span class=\"nx\">percentage<\/span>\n<span class=\"nx\">Current<\/span> <span class=\"nx\">rank<\/span> <span class=\"nx\">display<\/span>\n\n\n\n<span class=\"nx\">Technical<\/span> <span class=\"nc\">Implementation <\/span><span class=\"p\">(<\/span><span class=\"nx\">Frontend<\/span> <span class=\"nx\">Only<\/span><span class=\"p\">)<\/span>\n<span class=\"nx\">Local<\/span> <span class=\"nx\">Storage<\/span> <span class=\"nx\">Usage<\/span>\n\n<span class=\"nx\">Store<\/span> <span class=\"nx\">daily<\/span> <span class=\"nx\">exercise<\/span> <span class=\"nx\">progress<\/span> <span class=\"nx\">temporarily<\/span>\n<span class=\"nx\">Track<\/span> <span class=\"nx\">login<\/span> <span class=\"nx\">time<\/span> <span class=\"nx\">and<\/span> <span class=\"nx\">completion<\/span> <span class=\"nx\">time<\/span>\n<span class=\"nx\">Maintain<\/span> <span class=\"nx\">current<\/span> <span class=\"nx\">session<\/span> <span class=\"nx\">data<\/span>\n\n<span class=\"nx\">Client<\/span><span class=\"o\">-<\/span><span class=\"nx\">Side<\/span> <span class=\"nx\">Features<\/span>\n\n<span class=\"nx\">JavaScript<\/span> <span class=\"nx\">time<\/span><span class=\"o\">\/<\/span><span class=\"nx\">date<\/span> <span class=\"nx\">handling<\/span> <span class=\"k\">for<\/span> <span class=\"nx\">India<\/span> <span class=\"nx\">time<\/span> <span class=\"nx\">zone<\/span>\n<span class=\"nx\">Progress<\/span> <span class=\"nx\">calculation<\/span> <span class=\"nx\">functions<\/span>\n<span class=\"nx\">Exercise<\/span> <span class=\"nx\">counter<\/span> <span class=\"nx\">logic<\/span>\n<span class=\"nx\">Basic<\/span> <span class=\"nx\">rank<\/span> <span class=\"nf\">display <\/span><span class=\"p\">(<\/span><span class=\"kd\">static<\/span> <span class=\"k\">in<\/span> <span class=\"k\">this<\/span> <span class=\"nx\">phase<\/span><span class=\"p\">)<\/span>\n\n<span class=\"nx\">Responsive<\/span> <span class=\"nx\">Design<\/span>\n\n<span class=\"nx\">Mobile<\/span><span class=\"o\">-<\/span><span class=\"nx\">first<\/span> <span class=\"nx\">approach<\/span>\n<span class=\"nx\">Tablet<\/span> <span class=\"nx\">and<\/span> <span class=\"nx\">desktop<\/span> <span class=\"nx\">versions<\/span> <span class=\"kd\">with<\/span> <span class=\"nx\">adjusted<\/span> <span class=\"nx\">layouts<\/span>\n<span class=\"nx\">Touch<\/span><span class=\"o\">-<\/span><span class=\"nx\">friendly<\/span> <span class=\"kr\">interface<\/span> <span class=\"kd\">with<\/span> <span class=\"nx\">large<\/span> <span class=\"nx\">tap<\/span> <span class=\"nx\">targets<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><\/p>\n<p>\u0627\u06cc\u0646 \u0633\u0627\u062e\u062a \u062f\u0627\u0634\u0628\u0648\u0631\u062f \u0628\u0627 \u0627\u0639\u0644\u0627\u0646 \u0647\u0627\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0628\u0648\u062f.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx6jflogis6wuqkkm1qz7.png\" alt=\"\u062f\u0627\u0634\u0628\u0648\u0631\u062f \u0631\u062f\u06cc\u0627\u0628 \u062a\u0646\u0627\u0633\u0628 \u0627\u0646\u062f\u0627\u0645 \u062a\u0633\u0637\u06cc\u062d \u0627\u0646\u0641\u0631\u0627\u062f\u06cc\" loading=\"lazy\" width=\"800\" height=\"405\" title=\"\"><\/p>\n<p>\u0648 \u067e\u0633 \u0627\u0632 \u0622\u0646 \u060c \u0645\u0646 \u062f\u0648\u0645\u06cc\u0646 \u0628\u0627\u0631 \u062e\u0648\u062f \u0631\u0627 \u062f\u0627\u062f\u0645 \u060c \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0647\u0646\u0648\u0632 \u0646\u0645\u06cc \u062e\u0648\u0627\u0633\u062a\u0645 Supabase \u0631\u0627 \u062f\u0631\u062c \u06a9\u0646\u0645 \u060c \u0646\u0645\u06cc \u062e\u0648\u0627\u0647\u0645 \u062f\u0631 \u067e\u0633 \u0632\u0645\u06cc\u0646\u0647 \u0646\u06af\u0647 \u062f\u0627\u0631\u0645 \u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u060c \u0645\u0646 \u0641\u0642\u0637 \u0628\u0647 \u0627\u06cc\u0646 \u0641\u0648\u0631\u06cc\u062a \u062f\u0627\u062f\u0647 \u0627\u0645 \u0648 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0631\u0627 \u062f\u0631 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0645\u062d\u0644\u06cc \u0635\u0631\u0641\u0647 \u062c\u0648\u06cc\u06cc \u0645\u06cc \u06a9\u0646\u0645.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"err\">#<\/span> <span class=\"nx\">Part<\/span> <span class=\"mi\">2<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Solo<\/span> <span class=\"nx\">Leveling<\/span> <span class=\"nx\">Fitness<\/span> <span class=\"nx\">Tracker<\/span> <span class=\"o\">-<\/span> <span class=\"nx\">LocalStorage<\/span> <span class=\"nx\">Implementation<\/span> <span class=\"o\">&amp;<\/span> <span class=\"nx\">Advanced<\/span> <span class=\"nx\">Features<\/span>\n\n<span class=\"err\">##<\/span> <span class=\"nx\">LocalStorage<\/span> <span class=\"nx\">Data<\/span> <span class=\"nx\">Architecture<\/span>\n\n<span class=\"err\">###<\/span> <span class=\"nx\">Data<\/span> <span class=\"nx\">Structure<\/span> <span class=\"nx\">Design<\/span>\n<span class=\"o\">-<\/span> <span class=\"nx\">Implement<\/span> <span class=\"nx\">structured<\/span> <span class=\"nx\">localStorage<\/span> <span class=\"nx\">objects<\/span> <span class=\"k\">for<\/span> <span class=\"nx\">persistent<\/span> <span class=\"nx\">data<\/span><span class=\"p\">:<\/span>\n  <span class=\"s2\">`\n  \/\/ User profile\n  soloLeveling_user: {\n    username: \"Aizecs\",\n    currentRank: \"E\",\n    daysAtCurrentRank: 0,\n    totalDaysTracked: 0,\n    currentStreak: 0,\n    bestStreak: 0,\n    lastLoginDate: \"2025-03-11\"\n  }\n\n  \/\/ Workout history (array of daily records)\n  soloLeveling_workouts: [\n    {\n      date: \"2025-03-11\",\n      wakeUpTime: \"06:30\",\n      completionTime: \"07:15\",\n      exercises: {\n        pushups: 60,\n        situps: 60,\n        squats: 45,\n        kegal1: 60,\n        kegal2: 60,\n        kegal3: 60,\n        kegal4: 60,\n        kegal5: 60\n      },\n      completionPercentage: 94.4\n    },\n    \/\/ Previous days...\n  ]\n\n  \/\/ Rank progression rules\n  soloLeveling_rankRules: {\n    \"E\": { daysNeeded: 20, nextRank: \"D\" },\n    \"D\": { daysNeeded: 30, nextRank: \"C\" },\n    \"C\": { daysNeeded: 40, nextRank: \"B\" },\n    \"B\": { daysNeeded: 50, nextRank: \"A\" },\n    \"A\": { daysNeeded: 60, nextRank: \"S\" }\n  }\n  `<\/span>\n\n<span class=\"err\">###<\/span> <span class=\"nx\">Data<\/span> <span class=\"nx\">Management<\/span> <span class=\"nx\">Functions<\/span>\n<span class=\"o\">-<\/span> <span class=\"nx\">Create<\/span> <span class=\"nx\">utility<\/span> <span class=\"nx\">functions<\/span> <span class=\"k\">for<\/span> <span class=\"nx\">data<\/span> <span class=\"nx\">operations<\/span><span class=\"p\">:<\/span>\n  <span class=\"o\">-<\/span> <span class=\"s2\">`saveWorkout(data)`<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Store<\/span> <span class=\"nx\">daily<\/span> <span class=\"nx\">workout<\/span> <span class=\"nx\">data<\/span>\n  <span class=\"o\">-<\/span> <span class=\"s2\">`getWorkoutHistory()`<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Retrieve<\/span> <span class=\"nx\">all<\/span> <span class=\"nx\">stored<\/span> <span class=\"nx\">workouts<\/span>\n  <span class=\"o\">-<\/span> <span class=\"s2\">`calculateCompletion(exercises)`<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Compute<\/span> <span class=\"nx\">daily<\/span> <span class=\"nx\">completion<\/span> <span class=\"nx\">percentage<\/span>\n  <span class=\"o\">-<\/span> <span class=\"s2\">`updateRank()`<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Check<\/span> <span class=\"nx\">and<\/span> <span class=\"nx\">update<\/span> <span class=\"nx\">rank<\/span> <span class=\"nx\">based<\/span> <span class=\"nx\">on<\/span> <span class=\"nx\">streak<\/span> <span class=\"nx\">data<\/span>\n  <span class=\"o\">-<\/span> <span class=\"s2\">`exportData()`<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Generate<\/span> <span class=\"nx\">downloadable<\/span> <span class=\"nx\">JSON<\/span> <span class=\"k\">of<\/span> <span class=\"nx\">all<\/span> <span class=\"nx\">data<\/span>\n  <span class=\"o\">-<\/span> <span class=\"s2\">`importData(json)`<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Replace<\/span> <span class=\"nx\">current<\/span> <span class=\"nx\">data<\/span> <span class=\"kd\">with<\/span> <span class=\"nx\">imported<\/span> <span class=\"nx\">JSON<\/span>\n\n<span class=\"err\">##<\/span> <span class=\"nx\">Enhanced<\/span> <span class=\"nx\">Dashboard<\/span> <span class=\"nx\">Implementation<\/span>\n\n<span class=\"err\">###<\/span> <span class=\"nx\">Progress<\/span> <span class=\"nx\">Dashboard<\/span>\n<span class=\"o\">-<\/span> <span class=\"nx\">Build<\/span> <span class=\"nx\">comprehensive<\/span> <span class=\"nx\">historical<\/span> <span class=\"nx\">data<\/span> <span class=\"nx\">visualization<\/span><span class=\"p\">:<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Weekly<\/span> <span class=\"nx\">progress<\/span> <span class=\"nx\">chart<\/span> <span class=\"nx\">showing<\/span> <span class=\"nx\">daily<\/span> <span class=\"nx\">completion<\/span> <span class=\"nx\">percentages<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Monthly<\/span> <span class=\"nx\">calendar<\/span> <span class=\"nx\">view<\/span> <span class=\"kd\">with<\/span> <span class=\"nx\">color<\/span><span class=\"o\">-<\/span><span class=\"nx\">coded<\/span> <span class=\"nx\">completion<\/span> <span class=\"nx\">indicators<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Streak<\/span> <span class=\"nx\">counter<\/span> <span class=\"nx\">displaying<\/span> <span class=\"nx\">consecutive<\/span> <span class=\"mi\">100<\/span><span class=\"o\">%<\/span> <span class=\"nx\">days<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Projection<\/span> <span class=\"nx\">to<\/span> <span class=\"nx\">next<\/span> <span class=\"nx\">rank<\/span> <span class=\"nx\">based<\/span> <span class=\"nx\">on<\/span> <span class=\"nx\">current<\/span> <span class=\"nx\">performance<\/span>\n\n<span class=\"err\">###<\/span> <span class=\"nx\">Data<\/span> <span class=\"nx\">Visualization<\/span> <span class=\"nx\">Components<\/span>\n<span class=\"o\">-<\/span> <span class=\"nx\">Implement<\/span> <span class=\"nx\">interactive<\/span> <span class=\"nx\">charts<\/span> <span class=\"nx\">using<\/span> <span class=\"nx\">vanilla<\/span> <span class=\"nx\">JavaScript<\/span> <span class=\"nx\">or<\/span> <span class=\"nx\">lightweight<\/span> <span class=\"nx\">libraries<\/span><span class=\"p\">:<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Line<\/span> <span class=\"nx\">chart<\/span> <span class=\"k\">for<\/span> <span class=\"nx\">tracking<\/span> <span class=\"nx\">completion<\/span> <span class=\"nx\">percentage<\/span> <span class=\"nx\">over<\/span> <span class=\"nx\">time<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Bar<\/span> <span class=\"nx\">chart<\/span> <span class=\"nx\">comparing<\/span> <span class=\"nx\">exercise<\/span> <span class=\"nx\">completion<\/span> <span class=\"nx\">across<\/span> <span class=\"nx\">workout<\/span> <span class=\"nx\">types<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Heatmap<\/span> <span class=\"nx\">calendar<\/span> <span class=\"nx\">showing<\/span> <span class=\"nx\">workout<\/span> <span class=\"nx\">consistency<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Progress<\/span> <span class=\"nx\">bar<\/span> <span class=\"k\">for<\/span> <span class=\"nx\">rank<\/span> <span class=\"nx\">advancement<\/span>\n\n<span class=\"err\">###<\/span> <span class=\"nx\">Stats<\/span> <span class=\"o\">&amp;<\/span> <span class=\"nx\">Metrics<\/span> <span class=\"nx\">Display<\/span>\n<span class=\"o\">-<\/span> <span class=\"nx\">Create<\/span> <span class=\"nx\">a<\/span> <span class=\"nx\">statistics<\/span> <span class=\"nx\">panel<\/span> <span class=\"nx\">showing<\/span><span class=\"p\">:<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Current<\/span> <span class=\"nx\">rank<\/span> <span class=\"kd\">with<\/span> <span class=\"nx\">visual<\/span> <span class=\"nx\">emblem<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Days<\/span> <span class=\"nx\">remaining<\/span> <span class=\"nx\">until<\/span> <span class=\"nx\">next<\/span> <span class=\"nx\">rank<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Average<\/span> <span class=\"nx\">completion<\/span> <span class=\"nx\">percentage<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Best<\/span> <span class=\"nx\">and<\/span> <span class=\"nx\">current<\/span> <span class=\"nx\">streaks<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Total<\/span> <span class=\"nx\">workouts<\/span> <span class=\"nx\">completed<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Projected<\/span> <span class=\"nx\">date<\/span> <span class=\"nx\">to<\/span> <span class=\"nx\">reach<\/span> <span class=\"nx\">S<\/span><span class=\"o\">-<\/span><span class=\"nx\">rank<\/span>\n\n<span class=\"err\">##<\/span> <span class=\"nx\">Complete<\/span> <span class=\"nx\">Ranking<\/span> <span class=\"nx\">System<\/span>\n\n<span class=\"err\">###<\/span> <span class=\"nx\">Rank<\/span> <span class=\"nx\">Progression<\/span> <span class=\"nx\">Logic<\/span>\n<span class=\"o\">-<\/span> <span class=\"nx\">Implement<\/span> <span class=\"nx\">full<\/span> <span class=\"nx\">ranking<\/span> <span class=\"nx\">system<\/span> <span class=\"nx\">based<\/span> <span class=\"nx\">on<\/span> <span class=\"nx\">localStorage<\/span> <span class=\"nx\">data<\/span><span class=\"p\">:<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Track<\/span> <span class=\"nx\">consecutive<\/span> <span class=\"nx\">days<\/span> <span class=\"nx\">at<\/span> <span class=\"mi\">100<\/span><span class=\"o\">%<\/span> <span class=\"nx\">completion<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Apply<\/span> <span class=\"nx\">rank<\/span> <span class=\"nx\">advancement<\/span> <span class=\"nx\">rules<\/span> <span class=\"nx\">when<\/span> <span class=\"nx\">thresholds<\/span> <span class=\"nx\">are<\/span> <span class=\"nx\">met<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Store<\/span> <span class=\"nx\">rank<\/span> <span class=\"nx\">history<\/span> <span class=\"kd\">with<\/span> <span class=\"nx\">dates<\/span> <span class=\"k\">of<\/span> <span class=\"nx\">advancement<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Create<\/span> <span class=\"nx\">visual<\/span> <span class=\"nx\">progression<\/span> <span class=\"nx\">path<\/span> <span class=\"k\">from<\/span> <span class=\"nx\">E<\/span> <span class=\"nx\">to<\/span> <span class=\"nx\">S<\/span> <span class=\"nx\">rank<\/span>\n\n<span class=\"err\">###<\/span> <span class=\"nx\">Rank<\/span><span class=\"o\">-<\/span><span class=\"nx\">Up<\/span> <span class=\"nx\">Experience<\/span>\n<span class=\"o\">-<\/span> <span class=\"nx\">Design<\/span> <span class=\"nx\">celebratory<\/span> <span class=\"nx\">experiences<\/span> <span class=\"k\">for<\/span> <span class=\"nx\">rank<\/span> <span class=\"nx\">advancement<\/span><span class=\"p\">:<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Special<\/span> <span class=\"nx\">animation<\/span> <span class=\"nx\">sequence<\/span> <span class=\"nx\">when<\/span> <span class=\"nx\">ranking<\/span> <span class=\"nx\">up<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Sound<\/span> <span class=\"nx\">effects<\/span> <span class=\"nx\">and<\/span> <span class=\"nx\">visual<\/span> <span class=\"nx\">rewards<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Congratulatory<\/span> <span class=\"nx\">message<\/span> <span class=\"kd\">with<\/span> <span class=\"nx\">achievement<\/span> <span class=\"nx\">details<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Updated<\/span> <span class=\"nx\">rank<\/span> <span class=\"nx\">emblem<\/span> <span class=\"kd\">with<\/span> <span class=\"nx\">transitional<\/span> <span class=\"nx\">animation<\/span>\n\n<span class=\"err\">##<\/span> <span class=\"nx\">Data<\/span> <span class=\"nx\">Persistence<\/span> <span class=\"o\">&amp;<\/span> <span class=\"nx\">Portability<\/span>\n\n<span class=\"err\">###<\/span> <span class=\"nx\">Auto<\/span><span class=\"o\">-<\/span><span class=\"nx\">Save<\/span> <span class=\"nx\">Functionality<\/span>\n<span class=\"o\">-<\/span> <span class=\"nx\">Implement<\/span> <span class=\"nx\">real<\/span><span class=\"o\">-<\/span><span class=\"nx\">time<\/span> <span class=\"nx\">saving<\/span> <span class=\"k\">of<\/span> <span class=\"nx\">workout<\/span> <span class=\"nx\">progress<\/span><span class=\"p\">:<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Save<\/span> <span class=\"nx\">partial<\/span> <span class=\"nx\">completion<\/span> <span class=\"k\">as<\/span> <span class=\"nx\">workout<\/span> <span class=\"nx\">progresses<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Recovery<\/span> <span class=\"nx\">system<\/span> <span class=\"k\">if<\/span> <span class=\"nx\">browser<\/span> <span class=\"nx\">closes<\/span> <span class=\"nx\">unexpectedly<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Daily<\/span> <span class=\"nx\">data<\/span> <span class=\"nx\">rollover<\/span> <span class=\"nx\">at<\/span> <span class=\"nx\">midnight<\/span> <span class=\"nx\">IST<\/span>\n\n<span class=\"err\">###<\/span> <span class=\"nx\">Import<\/span><span class=\"o\">\/<\/span><span class=\"nx\">Export<\/span> <span class=\"nx\">System<\/span>\n<span class=\"o\">-<\/span> <span class=\"nx\">Create<\/span> <span class=\"nx\">data<\/span> <span class=\"nx\">portability<\/span> <span class=\"nx\">features<\/span><span class=\"p\">:<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Export<\/span> <span class=\"nx\">button<\/span> <span class=\"nx\">generating<\/span> <span class=\"nx\">a<\/span> <span class=\"nx\">downloadable<\/span> <span class=\"nx\">JSON<\/span> <span class=\"nx\">file<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Import<\/span> <span class=\"kr\">interface<\/span> <span class=\"nx\">accepting<\/span> <span class=\"nx\">JSON<\/span> <span class=\"nx\">files<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Data<\/span> <span class=\"nx\">validation<\/span> <span class=\"nx\">before<\/span> <span class=\"k\">import<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Merge<\/span> <span class=\"nx\">option<\/span> <span class=\"k\">for<\/span> <span class=\"nx\">combining<\/span> <span class=\"nx\">data<\/span> <span class=\"k\">from<\/span> <span class=\"nx\">multiple<\/span> <span class=\"nx\">devices<\/span>\n\n<span class=\"err\">##<\/span> <span class=\"nx\">Advanced<\/span> <span class=\"nx\">Gamification<\/span> <span class=\"nx\">Elements<\/span>\n\n<span class=\"err\">###<\/span> <span class=\"nx\">Achievement<\/span> <span class=\"nx\">System<\/span>\n<span class=\"o\">-<\/span> <span class=\"nx\">Implement<\/span> <span class=\"nx\">achievement<\/span> <span class=\"nx\">tracking<\/span> <span class=\"k\">in<\/span> <span class=\"nx\">localStorage<\/span><span class=\"p\">:<\/span>\n  <span class=\"o\">-<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Perfect Week<\/span><span class=\"dl\">\"<\/span> <span class=\"k\">for<\/span> <span class=\"mi\">7<\/span> <span class=\"nx\">consecutive<\/span> <span class=\"mi\">100<\/span><span class=\"o\">%<\/span> <span class=\"nx\">days<\/span>\n  <span class=\"o\">-<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Early Riser<\/span><span class=\"dl\">\"<\/span> <span class=\"k\">for<\/span> <span class=\"nx\">consistently<\/span> <span class=\"nx\">waking<\/span> <span class=\"nx\">up<\/span> <span class=\"nx\">before<\/span> <span class=\"mi\">6<\/span><span class=\"nx\">am<\/span>\n  <span class=\"o\">-<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Milestone<\/span><span class=\"dl\">\"<\/span> <span class=\"nx\">achievements<\/span> <span class=\"k\">for<\/span> <span class=\"nx\">reaching<\/span> <span class=\"kd\">set<\/span> <span class=\"nx\">thresholds<\/span>\n  <span class=\"o\">-<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Rank Up<\/span><span class=\"dl\">\"<\/span> <span class=\"nx\">achievements<\/span> <span class=\"k\">for<\/span> <span class=\"nx\">each<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">rank<\/span> <span class=\"nx\">attained<\/span>\n\n<span class=\"err\">###<\/span> <span class=\"nx\">Motivational<\/span> <span class=\"nx\">Features<\/span>\n<span class=\"o\">-<\/span> <span class=\"nx\">Add<\/span> <span class=\"nx\">dynamic<\/span> <span class=\"nx\">motivational<\/span> <span class=\"nx\">elements<\/span><span class=\"p\">:<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Solo<\/span> <span class=\"nx\">Leveling<\/span> <span class=\"nx\">quotes<\/span> <span class=\"nx\">appearing<\/span> <span class=\"nx\">based<\/span> <span class=\"nx\">on<\/span> <span class=\"nx\">performance<\/span> <span class=\"nx\">patterns<\/span>\n  <span class=\"o\">-<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Hunter's Journal<\/span><span class=\"dl\">\"<\/span> <span class=\"nx\">showing<\/span> <span class=\"nx\">progression<\/span> <span class=\"nx\">narrative<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Personalized<\/span> <span class=\"nx\">insights<\/span> <span class=\"nx\">based<\/span> <span class=\"nx\">on<\/span> <span class=\"nx\">workout<\/span> <span class=\"nx\">consistency<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Visual<\/span> <span class=\"nx\">power<\/span> <span class=\"nx\">level<\/span> <span class=\"nx\">representation<\/span> <span class=\"nx\">increasing<\/span> <span class=\"kd\">with<\/span> <span class=\"nx\">streaks<\/span>\n\n<span class=\"err\">##<\/span> <span class=\"nx\">Offline<\/span> <span class=\"nx\">Functionality<\/span>\n\n<span class=\"err\">###<\/span> <span class=\"nx\">Service<\/span> <span class=\"nx\">Worker<\/span> <span class=\"nx\">Implementation<\/span>\n<span class=\"o\">-<\/span> <span class=\"nx\">Enable<\/span> <span class=\"nx\">full<\/span> <span class=\"nx\">offline<\/span> <span class=\"nx\">functionality<\/span><span class=\"p\">:<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Cache<\/span> <span class=\"nx\">application<\/span> <span class=\"nx\">assets<\/span> <span class=\"k\">for<\/span> <span class=\"nx\">offline<\/span> <span class=\"nx\">use<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Queue<\/span> <span class=\"nx\">workout<\/span> <span class=\"nx\">data<\/span> <span class=\"nx\">when<\/span> <span class=\"nx\">offline<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Sync<\/span> <span class=\"nx\">data<\/span> <span class=\"nx\">when<\/span> <span class=\"nx\">connection<\/span> <span class=\"nx\">is<\/span> <span class=\"nx\">restored<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Offline<\/span> <span class=\"nx\">notification<\/span> <span class=\"nx\">states<\/span>\n\n<span class=\"err\">###<\/span> <span class=\"nx\">Local<\/span> <span class=\"nx\">Data<\/span> <span class=\"nx\">Integrity<\/span>\n<span class=\"o\">-<\/span> <span class=\"nx\">Ensure<\/span> <span class=\"nx\">data<\/span> <span class=\"nx\">reliability<\/span><span class=\"p\">:<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Version<\/span> <span class=\"nx\">the<\/span> <span class=\"nx\">localStorage<\/span> <span class=\"nx\">schema<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Implement<\/span> <span class=\"nx\">data<\/span> <span class=\"nx\">validation<\/span> <span class=\"nx\">on<\/span> <span class=\"nx\">retrieval<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Add<\/span> <span class=\"nx\">data<\/span> <span class=\"nx\">recovery<\/span> <span class=\"nx\">options<\/span> <span class=\"k\">for<\/span> <span class=\"nx\">corruption<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Periodic<\/span> <span class=\"nx\">reminder<\/span> <span class=\"nx\">to<\/span> <span class=\"k\">export<\/span> <span class=\"nx\">backups<\/span>\n\n<span class=\"err\">##<\/span> <span class=\"nx\">Performance<\/span> <span class=\"nx\">Optimizations<\/span>\n\n<span class=\"err\">###<\/span> <span class=\"nx\">Storage<\/span> <span class=\"nx\">Efficiency<\/span>\n<span class=\"o\">-<\/span> <span class=\"nx\">Optimize<\/span> <span class=\"nx\">localStorage<\/span> <span class=\"nx\">usage<\/span><span class=\"p\">:<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Compress<\/span> <span class=\"nx\">historical<\/span> <span class=\"nx\">data<\/span> <span class=\"k\">for<\/span> <span class=\"nx\">older<\/span> <span class=\"nx\">entries<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Implement<\/span> <span class=\"nx\">cleanup<\/span> <span class=\"k\">for<\/span> <span class=\"nx\">redundant<\/span> <span class=\"nx\">data<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Monitor<\/span> <span class=\"nx\">storage<\/span> <span class=\"nx\">quotas<\/span> <span class=\"nx\">and<\/span> <span class=\"nx\">provide<\/span> <span class=\"nx\">warnings<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Archive<\/span> <span class=\"nx\">older<\/span> <span class=\"nx\">data<\/span> <span class=\"k\">if<\/span> <span class=\"nx\">approaching<\/span> <span class=\"nx\">limits<\/span>\n\n<span class=\"err\">###<\/span> <span class=\"nx\">Rendering<\/span> <span class=\"nx\">Performance<\/span>\n<span class=\"o\">-<\/span> <span class=\"nx\">Ensure<\/span> <span class=\"nx\">smooth<\/span> <span class=\"nx\">UI<\/span> <span class=\"nx\">performance<\/span><span class=\"p\">:<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Optimize<\/span> <span class=\"nx\">chart<\/span> <span class=\"nx\">rendering<\/span> <span class=\"k\">for<\/span> <span class=\"nx\">large<\/span> <span class=\"nx\">datasets<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Implement<\/span> <span class=\"nx\">pagination<\/span> <span class=\"k\">for<\/span> <span class=\"nx\">extensive<\/span> <span class=\"nx\">history<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Use<\/span> <span class=\"nx\">efficient<\/span> <span class=\"nx\">DOM<\/span> <span class=\"nx\">manipulation<\/span> <span class=\"nx\">techniques<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Optimize<\/span> <span class=\"nx\">animations<\/span> <span class=\"k\">for<\/span> <span class=\"nx\">lower<\/span><span class=\"o\">-<\/span><span class=\"nx\">end<\/span> <span class=\"nx\">devices<\/span>\n\n<span class=\"err\">##<\/span> <span class=\"nx\">Additional<\/span> <span class=\"nx\">User<\/span> <span class=\"nx\">Experience<\/span> <span class=\"nx\">Enhancements<\/span>\n\n<span class=\"err\">###<\/span> <span class=\"nx\">Customization<\/span> <span class=\"nx\">Options<\/span>\n<span class=\"o\">-<\/span> <span class=\"nx\">Allow<\/span> <span class=\"nx\">personalization<\/span> <span class=\"nx\">stored<\/span> <span class=\"k\">in<\/span> <span class=\"nx\">localStorage<\/span><span class=\"p\">:<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Custom<\/span> <span class=\"nx\">exercise<\/span> <span class=\"nf\">goals <\/span><span class=\"p\">(<\/span><span class=\"nx\">modify<\/span> <span class=\"nx\">rep<\/span> <span class=\"nx\">targets<\/span><span class=\"p\">)<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Interface<\/span> <span class=\"nx\">theme<\/span> <span class=\"nf\">options <\/span><span class=\"p\">(<\/span><span class=\"nx\">light<\/span><span class=\"o\">\/<\/span><span class=\"nx\">dark<\/span> <span class=\"nx\">mode<\/span><span class=\"p\">)<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Notification<\/span> <span class=\"nx\">preferences<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Display<\/span> <span class=\"nx\">density<\/span> <span class=\"nx\">settings<\/span>\n\n<span class=\"err\">###<\/span> <span class=\"nx\">Progress<\/span> <span class=\"nx\">Insights<\/span>\n<span class=\"o\">-<\/span> <span class=\"nx\">Provide<\/span> <span class=\"nx\">intelligent<\/span> <span class=\"nx\">insights<\/span> <span class=\"k\">from<\/span> <span class=\"nx\">workout<\/span> <span class=\"nx\">data<\/span><span class=\"p\">:<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Identify<\/span> <span class=\"nx\">patterns<\/span> <span class=\"k\">in<\/span> <span class=\"nx\">workout<\/span> <span class=\"nx\">timing<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Highlight<\/span> <span class=\"nx\">consistency<\/span> <span class=\"nx\">improvements<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Show<\/span> <span class=\"nx\">correlation<\/span> <span class=\"nx\">between<\/span> <span class=\"nx\">wake<\/span><span class=\"o\">-<\/span><span class=\"nx\">up<\/span> <span class=\"nx\">time<\/span> <span class=\"nx\">and<\/span> <span class=\"nx\">completion<\/span>\n  <span class=\"o\">-<\/span> <span class=\"nx\">Recognize<\/span> <span class=\"nx\">personal<\/span> <span class=\"nx\">records<\/span> <span class=\"nx\">and<\/span> <span class=\"nx\">achievements<\/span>\n\n<span class=\"nx\">This<\/span> <span class=\"nx\">comprehensive<\/span> <span class=\"nx\">Part<\/span> <span class=\"mi\">2<\/span> <span class=\"nx\">implementation<\/span> <span class=\"nx\">uses<\/span> <span class=\"nx\">localStorage<\/span> <span class=\"k\">for<\/span> <span class=\"nx\">all<\/span> <span class=\"nx\">data<\/span> <span class=\"nx\">persistence<\/span> <span class=\"k\">while<\/span> <span class=\"nx\">providing<\/span> <span class=\"nx\">advanced<\/span> <span class=\"nx\">features<\/span> <span class=\"nx\">typically<\/span> <span class=\"nx\">found<\/span> <span class=\"k\">in<\/span> <span class=\"nx\">database<\/span><span class=\"o\">-<\/span><span class=\"nx\">backed<\/span> <span class=\"nx\">applications<\/span><span class=\"p\">.<\/span> <span class=\"nx\">The<\/span> <span class=\"nx\">system<\/span> <span class=\"nx\">will<\/span> <span class=\"nx\">work<\/span> <span class=\"nx\">entirely<\/span> <span class=\"nx\">client<\/span><span class=\"o\">-<\/span><span class=\"nx\">side<\/span> <span class=\"kd\">with<\/span> <span class=\"nx\">full<\/span> <span class=\"nx\">offline<\/span> <span class=\"nx\">support<\/span> <span class=\"nx\">and<\/span> <span class=\"nx\">data<\/span> <span class=\"nx\">portability<\/span> <span class=\"nx\">through<\/span> <span class=\"nx\">the<\/span> <span class=\"k\">export<\/span><span class=\"sr\">\/import system<\/span><span class=\"err\">.\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u067e\u0633 \u0627\u0632 \u0686\u0646\u062f \u062a\u06a9\u0631\u0627\u0631 \u060c \u0627\u06cc\u0646 \u062e\u0631\u0648\u062c\u06cc \u0646\u0647\u0627\u06cc\u06cc \u0645\u0646 \u0627\u0633\u062a \u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u06af\u0641\u062a \u0627\u0646\u06af\u06cc\u0632 \u0645\u0646 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f \u060c \u0647\u0645\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0628\u0627 \u062a\u0623\u06cc\u06cc\u062f \u0627\u0639\u062a\u0628\u0627\u0631 \u067e\u0633 \u0632\u0645\u06cc\u0646\u0647 \u0648 \u06a9\u0644\u06cc\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647 \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 Supabase. \u0641\u0642\u0637 \u060c \u06a9\u0627\u0631\u0628\u0631 \u062a\u0623\u06cc\u06cc\u062f \u0634\u062f\u0647 \u062b\u0628\u062a \u0646\u0627\u0645 \u06a9\u0631\u062f \u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0631\u0627\u0628\u0637 \u062b\u0628\u062a \u0646\u0627\u0645 \u062e\u0648\u0628 \u0627\u0633\u062a.<\/p>\n<p>https:\/\/solo-fitness-tracker.netlify.app<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5cfhipkm47zw4g95m3we.png\" alt=\"\u0648\u0631\u0648\u062f \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u062a\u0646\u0627\u0633\u0628 \u0627\u0646\u062f\u0627\u0645 \u062a\u0633\u0637\u06cc\u062d \u0627\u0646\u0641\u0631\u0627\u062f\u06cc\" loading=\"lazy\" width=\"800\" height=\"388\" title=\"\"><\/p>\n<p>\u0628\u0628\u06cc\u0646\u06cc\u062f \u060c \u0686\u0642\u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u062a\u0646\u0627\u0633\u0628 \u0627\u0646\u062f\u0627\u0645 \u062a\u0633\u0637\u06cc\u062d \u0627\u0646\u0641\u0631\u0627\u062f\u06cc \u0634\u06af\u0641\u062a \u0627\u0646\u06af\u06cc\u0632 \u0627\u0633\u062a \u0648 \u062a\u0645\u0631\u06cc\u0646 \u062a\u0633\u0637\u06cc\u062d \u0627\u0646\u0641\u0631\u0627\u062f\u06cc \u060c \u0627\u0644\u06af\u0648\u06cc \u062e\u0648\u0627\u0628 \u0648 \u0633\u0627\u0639\u0627\u062a \u062e\u0648\u0627\u0628 \u0631\u0648\u0632\u0627\u0646\u0647 \u062e\u0648\u062f \u0631\u0627 \u067e\u06cc\u06af\u06cc\u0631\u06cc \u06a9\u0646\u06cc\u062f \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u0639\u062a\u0635\u0627\u0628 \u062e\u0648\u062f \u0631\u0627 \u062d\u0641\u0638 \u06a9\u0646\u06cc\u062f \u060c \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062f\u0631 \u062a\u0627\u0628\u0644\u0648\u0647\u0627\u06cc \u0631\u0647\u0628\u0631\u06cc \u06a9\u0634\u0648\u0631\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u06cc\u062f. <\/p>\n<p>\u0628\u0647 \u0645\u0646 \u0627\u0637\u0644\u0627\u0639 \u062f\u0647\u06cc\u062f \u060c \u0686\u06af\u0648\u0646\u0647 \u0627\u06cc\u0646 MVP \u0631\u0627 \u062f\u0648\u0633\u062a \u062f\u0627\u0631\u06cc\u062f\u061f<\/p>\n<p>\u0622\u06cc\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u062a\u0645\u0627\u0645 \u0627\u0639\u0644\u0627\u0646 \u0647\u0627 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u0686\u0646\u06cc\u0646 MVP \u06a9\u0627\u0645\u0644 \u06a9\u0646\u06cc\u062f\u061f \u0628\u0647 \u062c\u0627\u0645\u0639\u0647 \u0633\u0627\u0632\u0646\u062f\u06af\u0627\u0646 \u0645\u062d\u0635\u0648\u0644 \u0645\u0646 \u0628\u067e\u06cc\u0648\u0646\u062f\u06cc\u062f. <\/p>\n<p>\u0686\u0647 \u0686\u06cc\u0632\u06cc \u062f\u0631 \u062c\u0627\u0645\u0639\u0647 \u0647\u0633\u062a\u06cc\u062f\u061f <\/p>\n<ul>\n<li>\u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0647\u0645\u0647 \u0633\u0631\u06cc\u0639\u062a\u0631\u06cc\u0646 \u0633\u0637\u062d \u0628\u0631\u0627\u06cc MVP \u062c\u062f\u06cc\u062f \u0645\u0646 Budilng \u0647\u0633\u062a\u0645<\/li>\n<li>\u0645\u0646\u0627\u0628\u0639 \u0628\u0631\u062a\u0631 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a\u0646 \u0648 \u062a\u0648\u0635\u06cc\u0647 \u0647\u0627\u06cc \u0628\u0631\u062a\u0631 \u0627\u0632 \u0645\u062a\u062e\u0635\u0635\u0627\u0646<\/li>\n<li>\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0628\u0627\u0632\u0627\u0631\u06cc\u0627\u0628\u06cc \u0645\u062d\u0635\u0648\u0644 \u0631\u0627 \u0627\u0632 \u0635\u0641\u0631 \u06a9\u0627\u0645\u0644 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0627 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u06cc\u062f<\/li>\n<\/ul>\n<p>\u062e\u0648\u0628 \u060c \u0634\u0645\u0627 \u0631\u0627 \u062f\u0631 \u0642\u0633\u0645\u062a \u0628\u0639\u062f\u06cc \u0633\u0631\u06cc\u0627\u0644 \u0628\u0627 \u0633\u0627\u062e\u062a\u0645\u0627\u0646 MVP \u062c\u062f\u06cc\u062f \u0645\u06cc \u0628\u06cc\u0646\u06cc\u062f. \u0645\u0646 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u06cc\u0646 \u0647\u0641\u062a\u0647 \u0627\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0628 \u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646\u0633\u062a\u0627\u06af\u0631\u0627\u0645 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u0645. <\/p>\n<p>\u0633\u0627\u062e\u062a\u0645\u0627\u0646 \u0645\u0628\u0627\u0631\u06a9 \u0628\u0627 \u062f\u0648\u0633\u062a \u062f\u0627\u0634\u062a\u0646\u06cc. dev.<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0633\u0644\u0627\u0645 \u0633\u0627\u0632\u0646\u062f\u0647 \u0645\u062d\u0635\u0648\u0644\u0628\u0647 \u0642\u0633\u0645\u062a \u0633\u0648\u0645 \u0633\u0631\u06cc &#8220;Build With Lovable.dev&#8221; \u062e\u0648\u0634 \u0622\u0645\u062f\u06cc\u062f. \u0645\u0646 \u0647\u0648\u0627\u062f\u0627\u0631 \u0628\u0632\u0631\u06af \u062a\u0631\u0627\u0632\u0648 \u060c \u0647\u0648\u0627\u062f\u0627\u0631 \u0628\u0632\u0631\u06af Sung&#39;s Tereling Up Discipline \u0648 \u0637\u0628\u0642\u0647 \u0628\u0646\u062f\u06cc Iigris \u0647\u0633\u062a\u0645. \u0645\u0646 \u0641\u0642\u0637 \u062f\u0631 \u0627\u06cc\u0646\u0633\u062a\u0627\u06af\u0631\u0627\u0645 \u062d\u0644\u0642\u0647 \u0645\u06cc \u0686\u0631\u062e\u06cc\u062f\u0645 \u0648 \u062d\u0644\u0642\u0647 \u0633\u06cc\u0633\u062a\u0645 \u060c \u0641\u0634\u0627\u0631 UPS (0\/100) \u060c SIT UPS (0\/100) \u060c Squats (0\/100) \u060c \u0627\u062c\u0631\u0627 (0\/10 \u06a9\u06cc\u0644\u0648\u0645\u062a\u0631) \u0631\u0627 \u06af\u0631\u0641\u062a\u0645. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":101985,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-101983","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/101983","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=101983"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/101983\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/101985"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=101983"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=101983"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=101983"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}