Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion sitemap.xml
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@
<url><loc>https://appdevelopsk.com/support/nodo/</loc><lastmod>2026-08-18</lastmod><changefreq>monthly</changefreq><priority>0.8</priority></url>
<url><loc>https://appdevelopsk.com/support/now-snap/</loc><lastmod>2026-08-18</lastmod><changefreq>monthly</changefreq><priority>0.8</priority></url>
<url><loc>https://appdevelopsk.com/support/ogiri/</loc><lastmod>2026-08-18</lastmod><changefreq>monthly</changefreq><priority>0.8</priority></url>
<url><loc>https://appdevelopsk.com/support/one-tap-routine/</loc><lastmod>2026-08-18</lastmod><changefreq>monthly</changefreq><priority>0.8</priority></url>
<url><loc>https://appdevelopsk.com/support/one-tap-routine/</loc><lastmod>2026-11-08</lastmod><changefreq>monthly</changefreq><priority>0.8</priority></url>
<url><loc>https://appdevelopsk.com/support/pantry-ai/</loc><lastmod>2026-08-18</lastmod><changefreq>monthly</changefreq><priority>0.8</priority></url>
<url><loc>https://appdevelopsk.com/support/percent-pulse/</loc><lastmod>2026-08-18</lastmod><changefreq>monthly</changefreq><priority>0.8</priority></url>
<url><loc>https://appdevelopsk.com/support/pixelspot/</loc><lastmod>2026-08-18</lastmod><changefreq>monthly</changefreq><priority>0.8</priority></url>
Expand Down
143 changes: 85 additions & 58 deletions support/one-tap-routine/index.html
Original file line number Diff line number Diff line change
@@ -1,79 +1,106 @@
<!DOCTYPE html>
<!doctype html>
<html lang="en">
<head>
<link rel="canonical" href="https://appdevelopsk.com/support/one-tap-routine/">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="canonical" href="https://appdevelopsk.com/support/one-tap-routine/">
<meta name="robots" content="index,follow">
<title>One Tap Routine – Habit Tracker &amp; Daily Streaks | SK APPS</title>
<meta name="description" content="One Tap Routine is a one-tap habit tracker with daily targets, progress charts, streaks, optional reminders and local JSON export. Get help and answers here.">
<meta property="og:type" content="website">
<meta property="og:site_name" content="SK APPS">
<meta property="og:title" content="One Tap Routine – Phone Lock Focus Timer">
<meta property="og:description" content="One Tap Routine - Lock your phone for a set time, beat distractions, and build a daily focus habit. Support and FAQ.">
<meta property="og:title" content="One Tap Routine – Simple Habit Tracker">
<meta property="og:description" content="Track small habits with one tap, see progress and keep your streak going. Help and FAQ.">
<meta property="og:url" content="https://appdevelopsk.com/support/one-tap-routine/">
<meta property="og:image" content="https://appdevelopsk.com/og-image.png">
<meta name="twitter:card" content="summary_large_image">
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width,initial-scale=1.0"/>
<title>One Tap Routine – Phone Lock Focus Timer | SK APPS</title>
<meta name="description" content="One Tap Routine - Lock your phone for a set time, beat distractions, and build a daily focus habit. Support and FAQ."/>
<style>
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;line-height:1.7;color:#1d2330;background:#f7f8fc;padding:0 20px}
.wrap{max-width:760px;margin:0 auto;padding:48px 0 80px}
header{text-align:center;margin-bottom:40px}
h1{font-size:2rem;color:#3f51b5}
h2{font-size:1.25rem;margin:32px 0 12px;color:#283593}
p,li{margin-bottom:10px}
ul{padding-left:22px}
a{color:#3f51b5}
.card{background:#fff;border-radius:16px;padding:28px;box-shadow:0 2px 16px rgba(20,30,60,.06)}
footer{text-align:center;margin-top:40px;color:#8a90a6;font-size:.85rem}
:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color-scheme:light}
*{box-sizing:border-box}
body{margin:0;background:#f6f8ff;color:#1b2441;line-height:1.65}
.wrap{width:min(100% - 32px,800px);margin:0 auto;padding:40px 0 72px}
a{color:#244bc7}
nav{margin-bottom:30px;font-size:.95rem}
header{margin-bottom:28px}
h1{font-size:clamp(2rem,5vw,2.75rem);line-height:1.2;margin:0 0 12px}
.lede{font-size:1.1rem;color:#485675;margin:0}
.card{background:white;border:1px solid #e2e7f3;border-radius:18px;padding:24px;margin:18px 0}
h2{font-size:1.3rem;margin:0 0 14px}
h3{font-size:1.05rem;margin:24px 0 8px}
h3:first-of-type{margin-top:8px}
p{margin:0 0 12px}
.features{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px}
.feature{background:#f1f5ff;border-radius:12px;padding:14px}
.feature strong{display:block;margin-bottom:4px}
footer{color:#5b6883;font-size:.9rem;margin-top:30px}
@media(prefers-color-scheme:dark){
body{background:#101522;color:#f0f4ff}
.lede,footer{color:#b3bfd9}
.card{background:#1b2540;border-color:#364667}
.feature{background:#273352}a{color:#9db6ff}
}
</style>
<!-- GA4 (same property as home: G-5Z588FVC81) -->
<script type="application/ld+json">
{
"@context":"https://schema.org",
"@type":"FAQPage",
"mainEntity":[
{"@type":"Question","name":"How do I track a habit in One Tap Routine?","acceptedAnswer":{"@type":"Answer","text":"Add a routine with a daily target, then tap its card whenever you complete it."}},
{"@type":"Question","name":"Does One Tap Routine lock my phone?","acceptedAnswer":{"@type":"Answer","text":"No. One Tap Routine is a habit tracker, not a phone-locking application."}},
{"@type":"Question","name":"Can I export my history?","acceptedAnswer":{"@type":"Answer","text":"Yes. Use Export data in Settings to share a JSON backup of local routines and completion history."}}
]
}
</script>
<!-- Same website GA4 property; analytics is not evidence of store installs. -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-5Z588FVC81"></script>
<script>
window.dataLayer = window.dataLayer || [];
window.dataLayer=window.dataLayer||[];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-5Z588FVC81');
document.addEventListener('click', function (e) {
var a = e.target.closest && e.target.closest('a[href]');
if (!a) return;
var href = a.getAttribute('href') || '';
if (/play\.google\.com/.test(href)) {
gtag('event', 'download_click', { store: 'google_play', location: 'support', link_url: href });
}
}, true);
gtag('js',new Date());
gtag('config','G-5Z588FVC81');
</script>
</head>
<body>
<div class="wrap">
<nav><a href="https://appdevelopsk.com/apps">SK APPS · All apps</a></nav>
<header>
<h1>One Tap Routine Support</h1>
<p>Lock your phone, beat distractions, build a focus habit.</p>
<h1>One Tap Routine</h1>
<p class="lede">A simple habit tracker: complete a small routine with one tap, then see your daily progress and streaks.</p>
</header>
<div class="card">
<h2>Contact</h2>
<p>Questions, feedback, or bug reports? Email us and we usually reply within 48 hours.</p>
<p><strong>Email:</strong> <a href="mailto:skky1839@gmail.com">skky1839@gmail.com</a></p>

<h2>Frequently asked questions</h2>
<p><strong>How do I start a focus lock?</strong><br/>
Open One Tap Routine, tap “Lock now” or one of the quick buttons (15/30/60 min), choose a duration and unlock method, then start. A countdown keeps you on track.</p>

<p><strong>How do I unlock in an emergency?</strong><br/>
An emergency unlock is always available — long press, type the confirmation word, or enter the parent PIN, depending on the method you chose. Every unlock is logged.</p>

<p><strong>Does it fully block other apps?</strong><br/>
On iOS, One Tap Routine uses a focus lock with away detection and is designed to be used together with Guided Access. On Android, a real lock of Home and Recents is available on devices set up as Device Owner via Lock Task Mode.</p>

<p><strong>What does “Remove ads” buy?</strong><br/>
It is a one-time purchase that permanently removes ads. It is not a subscription and does not auto-renew. Use “Restore purchase” on a new device.</p>

<p><strong>How do I set a daily reminder?</strong><br/>
One Tap Routine can send a gentle reminder at 9:00 each day once you allow notifications.</p>

<h2>Privacy</h2>
<p>See our <a href="https://appdevelopsk.com/privacy-policy/one-tap-routine/">Privacy Policy</a>.</p>
</div>
<footer>© 2026 AppDevelopSK</footer>
<main>
<section class="card" aria-labelledby="features">
<h2 id="features">What you can do</h2>
<div class="features">
<div class="feature"><strong>One-tap check-ins</strong>Tap a routine each time you finish it. Undo a mistaken tap.</div>
<div class="feature"><strong>Progress &amp; streaks</strong>Review recent activity, totals and completion history.</div>
<div class="feature"><strong>Optional reminders</strong>Turn a daily reminder on or off in Settings.</div>
<div class="feature"><strong>Home widgets</strong>Check today’s routines from supported home-screen widgets.</div>
</div>
</section>
<section class="card" aria-labelledby="faq">
<h2 id="faq">Frequently asked questions</h2>
<h3>How do I start?</h3>
<p>Open the app. Sample routines may be shown for your first session. You can also tap Add routine, give it a name and daily target, then save. Tap a routine card when you complete that activity.</p>
<h3>How do I see progress and streaks?</h3>
<p>Use Stats to review completed routines and recent activity. Use History to look back at recorded completions. A weekly review is being tested separately and may not yet be available in released versions.</p>
<h3>How do reminders work?</h3>
<p>Reminders are optional and require notification permission. You can turn the daily reminder on or off in Settings. The default scheduled reminder is at 9:00 AM.</p>
<h3>Does the app lock my phone or block other apps?</h3>
<p>No. One Tap Routine tracks habits and daily targets. It is not a phone-locking, device-management or screen-blocking app.</p>
<h3>Where is my routine data?</h3>
<p>Your routine records are saved locally on your device. Settings lets you export a JSON backup, hide routine names with Privacy mode, or delete local data. Exported backups may contain private routine names, so share them only with someone you trust.</p>
<h3>Can I restore an earlier purchase?</h3>
<p>If you bought a premium upgrade previously, use Restore purchase in Settings. This does not start a new subscription. Availability depends on the store and your purchase history.</p>
<h3>Why is there no store install button here?</h3>
<p>We show store download links only after verifying the exact public listing. An unverified link is not a real way to install an app.</p>
</section>
<section class="card" aria-labelledby="contact">
<h2 id="contact">Help and privacy</h2>
<p>Questions, feedback or bug reports? Contact the support team at <a href="mailto:skky1839@gmail.com">skky1839@gmail.com</a>.</p>
<p>Read the <a href="https://appdevelopsk.com/privacy-policy/one-tap-routine/">One Tap Routine Privacy Policy</a>.</p>
</section>
</main>
<footer>© 2026 SK APPS · One-tap daily habit tracking support.</footer>
</div>
</body>
</html>
31 changes: 31 additions & 0 deletions tests/one-tap-routine-support-growth.test.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import test from 'node:test';
import assert from 'node:assert/strict';
import {readFileSync} from 'node:fs';

const html=readFileSync(new URL('../support/one-tap-routine/index.html',import.meta.url),'utf8');

test('support page accurately describes the one-tap habit tracker',()=>{
assert.match(html,/<title>One Tap Routine – Habit Tracker/);
assert.match(html,/One-tap check-ins/);
assert.match(html,/Progress &amp; streaks/);
assert.match(html,/Exported backups may contain private routine names/);
assert.match(html,/not a phone-locking, device-management or screen-blocking app/);
assert.doesNotMatch(html,/Lock now|15\/30\/60 min|emergency unlock|Guided Access|Device Owner|Lock Task Mode|focus lock with away detection/i);
});

test('has one canonical and accurate FAQ structured data',()=>{
assert.equal((html.match(/rel="canonical"/g)||[]).length,1);
assert.match(html,/https:\/\/appdevelopsk\.com\/support\/one-tap-routine\//);
assert.match(html,/"@type":"FAQPage"/);
assert.match(html,/One Tap Routine is a habit tracker, not a phone-locking application/);
assert.doesNotMatch(html,/FocusLock/i);
assert.match(html,/https:\/\/appdevelopsk\.com\/privacy-policy\/one-tap-routine\//);
assert.doesNotMatch(html,/play\.google\.com\/store\/apps\/details\?id=/);
});

test('does not fake a released weekly review or currently available premium purchase',()=>{
assert.match(html,/weekly review is being tested separately/);
assert.match(html,/may not yet be available in released versions/);
assert.match(html,/If you bought a premium upgrade previously/);
assert.doesNotMatch(html,/permanently removes ads|Subscribe now|Click to download/i);
});
Loading