Skip to content
Merged
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 apps.html
Original file line number Diff line number Diff line change
Expand Up @@ -835,7 +835,7 @@ <h3>Chaos - Stranger Missions</h3>
const count = document.getElementById('finder-count');
const empty = document.getElementById('finder-empty');
const groups = {
'quick-games': ['blur','instant-judge','nodo','brain-burst','snap-judge','daily-duel','percent-pulse','two-truths','key-clash','tier-rank-me'],
'quick-games': ['blur','instant-judge','twotaku','nodo','brain-burst','snap-judge','daily-duel','percent-pulse','two-truths','key-clash','tier-rank-me'],
habits: ['true-me','future-me','water-reminder','gratitude-log','gratitude-challenge','mood-log','sleep-prep','eye-break','stretch-reminder','win-log'],
decisions: ['food-roulette','movie-roulette','date-roulette','dinner-home-roulette','trip-roulette','study-roulette','what-to-do','chore-roulette','truth-roulette','quick-local-food'],
ai: ['debate-me','voice-memo','future-me','date-pilot','global-news','pantry-ai','name-maker','idea-market','life-trace']
Expand Down
6 changes: 4 additions & 2 deletions guides/quick-games/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Quick mobile games for a short break | SK Apps</title>
<meta name="description" content="Choose a short mobile game: guess an image, vote on a scenario, solve a number puzzle, or try trivia.">
<meta name="description" content="Choose a short mobile game: guess an image, cast an A-or-B vote, judge a community dilemma, solve a puzzle, or try trivia.">
<link rel="canonical" href="https://appdevelopsk.com/guides/quick-games/">
<meta property="og:type" content="article">
<meta property="og:title" content="Quick mobile games for a short break">
<meta property="og:description" content="Choose a short mobile game: guess an image, vote on a scenario, solve a number puzzle, or try trivia.">
<meta property="og:url" content="https://appdevelopsk.com/guides/quick-games/">
<meta property="og:image" content="https://appdevelopsk.com/og-image.png">
<meta name="twitter:card" content="summary_large_image">
<script type="application/ld+json">{"@context":"https://schema.org","@type":"ItemList","name":"Quick mobile games for a short break","itemListElement":[{"@type":"ListItem","position":1,"name":"Blur: Guess the Image","url":"https://play.google.com/store/apps/details?id=com.blurapp.blur_app"},{"@type":"ListItem","position":2,"name":"Instant Judge: Vote in 3s","url":"https://play.google.com/store/apps/details?id=com.instantjudge.instant_judge"},{"@type":"ListItem","position":3,"name":"Nodo - Daily Node Puzzle","url":"https://play.google.com/store/apps/details?id=com.nodopuzzle.nodoPuzzle"},{"@type":"ListItem","position":4,"name":"BrainBurst - Daily Trivia Quiz","url":"https://play.google.com/store/apps/details?id=com.brainburst.brain_burst"}]}</script>
<script type="application/ld+json">{"@context":"https://schema.org","@type":"ItemList","name":"Quick mobile games for a short break","itemListElement":[{"@type":"ListItem","position":1,"name":"Blur: Guess the Image","url":"https://play.google.com/store/apps/details?id=com.blurapp.blur_app"},{"@type":"ListItem","position":2,"name":"Instant Judge: Vote in 3s","url":"https://play.google.com/store/apps/details?id=com.instantjudge.instant_judge"},{"@type":"ListItem","position":3,"name":"Dotchi: This or That Polls","url":"https://play.google.com/store/apps/details?id=com.dotchi.dotchi_app"},{"@type":"ListItem","position":4,"name":"Nodo - Daily Node Puzzle","url":"https://play.google.com/store/apps/details?id=com.nodopuzzle.nodoPuzzle"},{"@type":"ListItem","position":5,"name":"BrainBurst - Daily Trivia Quiz","url":"https://play.google.com/store/apps/details?id=com.brainburst.brain_burst"}]}</script>
<script async src="https://www.googletagmanager.com/gtag/js?id=G-5Z588FVC81"></script>
<script>window.dataLayer=window.dataLayer||[];window.gtag=function(){dataLayer.push(arguments)};gtag('js',new Date());gtag('config','G-5Z588FVC81');</script>
<style>
Expand All @@ -28,11 +28,13 @@ <h1>Quick mobile games for a short break</h1>
<main>
<section class="how"><h2>How to choose</h2><ol><li><strong>Want a visual surprise?</strong> Choose an image-guessing game where the picture becomes clearer as you play.</li>
<li><strong>Want to react and compare opinions?</strong> Choose a community voting game instead of a puzzle.</li>
<li><strong>Want a simple A-or-B choice?</strong> Pick a poll, vote and compare answers with friends in Dotchi.</li>
<li><strong>Want to think rather than react?</strong> Pick a logic challenge or a trivia quiz.</li></ol></section>
<section aria-labelledby="choices"><h2 id="choices">Apps to explore</h2>
<p>Each option is different. Choose one that matches the kind of break or routine you want, then check its Google Play listing for supported features and availability.</p>
<article class="app"><img src="/icons/apps/blur.png" alt="Blur: Guess the Image app icon" width="76" height="76" loading="lazy"><div><p class="purpose">For picture guessing</p><h3>Blur: Guess the Image</h3><p>Guess the photo as it slowly unblurs — a fun image guessing brain game</p><a class="store" data-app="blur" href="https://play.google.com/store/apps/details?id=com.blurapp.blur_app&amp;utm_source=appdevelopsk&amp;utm_medium=guide&amp;utm_campaign=quick_games&amp;referrer=utm_source%3Dappdevelopsk%26utm_medium%3Dguide%26utm_campaign%3Dquick_games" target="_blank" rel="noopener noreferrer">See on Google Play</a></div></article>
<article class="app"><img src="/icons/apps/instant-judge.png" alt="Instant Judge: Vote in 3s app icon" width="76" height="76" loading="lazy"><div><p class="purpose">For quick opinion votes</p><h3>Instant Judge: Vote in 3s</h3><p>Vote on photos &amp; scenarios in 3 seconds and see what the community thinks</p><a class="store" data-app="instant-judge" href="https://play.google.com/store/apps/details?id=com.instantjudge.instant_judge&amp;utm_source=appdevelopsk&amp;utm_medium=guide&amp;utm_campaign=quick_games&amp;referrer=utm_source%3Dappdevelopsk%26utm_medium%3Dguide%26utm_campaign%3Dquick_games" target="_blank" rel="noopener noreferrer">See on Google Play</a></div></article>
<article class="app"><img src="/icons/apps/twotaku.png" alt="Dotchi: This or That Polls app icon" width="76" height="76" loading="lazy"><div><p class="purpose">For A-or-B polls with friends</p><h3>Dotchi: This or That Polls</h3><p>Pick A or B on everyday questions. Vote, see results and compare opinions with friends.</p><a class="store" data-app="twotaku" href="https://play.google.com/store/apps/details?id=com.dotchi.dotchi_app&amp;utm_source=appdevelopsk&amp;utm_medium=guide&amp;utm_campaign=quick_games&amp;referrer=utm_source%3Dappdevelopsk%26utm_medium%3Dguide%26utm_campaign%3Dquick_games" target="_blank" rel="noopener noreferrer">See on Google Play</a></div></article>
<article class="app"><img src="/icons/apps/nodo.png" alt="Nodo - Daily Node Puzzle app icon" width="76" height="76" loading="lazy"><div><p class="purpose">For logic puzzles</p><h3>Nodo - Daily Node Puzzle</h3><p>Daily logic puzzle: solve number node networks and climb the leaderboard</p><a class="store" data-app="nodo" href="https://play.google.com/store/apps/details?id=com.nodopuzzle.nodoPuzzle&amp;utm_source=appdevelopsk&amp;utm_medium=guide&amp;utm_campaign=quick_games&amp;referrer=utm_source%3Dappdevelopsk%26utm_medium%3Dguide%26utm_campaign%3Dquick_games" target="_blank" rel="noopener noreferrer">See on Google Play</a></div></article>
<article class="app"><img src="/icons/apps/brain-burst.png" alt="BrainBurst - Daily Trivia Quiz app icon" width="76" height="76" loading="lazy"><div><p class="purpose">For daily trivia</p><h3>BrainBurst - Daily Trivia Quiz</h3><p>Daily trivia quiz with 1v1 battles and fresh AI questions to grow your knowledge</p><a class="store" data-app="brain-burst" href="https://play.google.com/store/apps/details?id=com.brainburst.brain_burst&amp;utm_source=appdevelopsk&amp;utm_medium=guide&amp;utm_campaign=quick_games&amp;referrer=utm_source%3Dappdevelopsk%26utm_medium%3Dguide%26utm_campaign%3Dquick_games" target="_blank" rel="noopener noreferrer">See on Google Play</a></div></article>
</section>
Expand Down
4 changes: 4 additions & 0 deletions scripts/check_app_discovery_live.sh
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@ for slug in quick-games daily-habits decision-helpers ai-tools; do
grep -Fq "https://appdevelopsk.com/guides/$slug/" "$tmp/$slug.html" || { echo "FAIL guide $slug content/canonical mismatch" >&2; exit 1; }
grep -Fq 'guide_store_click' "$tmp/$slug.html" || { echo "FAIL $slug click measurement missing" >&2; exit 1; }
done
# Dotchi must be reachable from the live quick-games guide AND from the public catalog filter.
grep -Fq 'data-app="twotaku"' "$tmp/quick-games.html" || { echo 'FAIL quick-games guide missing Dotchi CTA' >&2; exit 1; }
grep -Fq 'id=com.dotchi.dotchi_app' "$tmp/quick-games.html" || { echo 'FAIL quick-games Dotchi listing URL missing' >&2; exit 1; }
grep -Fq "'quick-games': ['blur','instant-judge','twotaku'" "$tmp/apps.html" || { echo 'FAIL public catalog quick-games filter excludes Dotchi' >&2; exit 1; }
fetch '/sitemap.xml' 'sitemap.xml'
for slug in quick-games daily-habits decision-helpers ai-tools; do
grep -Fq "https://appdevelopsk.com/guides/$slug/" "$tmp/sitemap.xml" || { echo "FAIL sitemap missing $slug" >&2; exit 1; }
Expand Down
2 changes: 1 addition & 1 deletion sitemap.xml
Original file line number Diff line number Diff line change
Expand Up @@ -323,7 +323,7 @@
<url><loc>https://appdevelopsk.com/terms/face-vibe/</loc><lastmod>2026-08-18</lastmod><changefreq>yearly</changefreq><priority>0.3</priority></url>
<url><loc>https://appdevelopsk.com/terms/smile-score/</loc><lastmod>2026-08-18</lastmod><changefreq>yearly</changefreq><priority>0.3</priority></url>
<url><loc>https://appdevelopsk.com/csae-standards/</loc><lastmod>2026-08-18</lastmod><changefreq>yearly</changefreq><priority>0.3</priority></url>
<url><loc>https://appdevelopsk.com/guides/quick-games/</loc><lastmod>2026-10-27</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url>
<url><loc>https://appdevelopsk.com/guides/quick-games/</loc><lastmod>2026-10-30</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url>
<url><loc>https://appdevelopsk.com/guides/daily-habits/</loc><lastmod>2026-10-27</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url>
<url><loc>https://appdevelopsk.com/guides/decision-helpers/</loc><lastmod>2026-10-27</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url>
<url><loc>https://appdevelopsk.com/guides/ai-tools/</loc><lastmod>2026-10-27</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url>
Expand Down
29 changes: 28 additions & 1 deletion tests/catalog-growth.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ test('guide landing pages link only to listed published applications and are dis
assert.match(page,/<script type="application\/ld\+json">/);
assert.match(page,/gtag\('event','guide_store_click'/);
const apps=[...page.matchAll(/data-app="([a-z0-9-]+)"/g)].map(m=>m[1]);
assert.equal(apps.length,4);
assert.equal(apps.length,slug==='quick-games'?5:4);
for(const a of apps){
const record=data.find(x=>x.app===a);
assert.ok(record&&!record.hidden,slug+' invalid app '+a);
Expand Down Expand Up @@ -90,6 +90,7 @@ test('purpose filters refer only to visible current catalog slugs, not renamed a
assert.ok(visible.has(slug),'invalid or delisted catalog slug '+slug+' in '+goal);
}
}
assert.ok(groups['quick-games'].includes('twotaku'));
assert.ok(groups.decisions.includes('chore-roulette'));
assert.ok(groups['quick-games'].includes('daily-duel'));
});
Expand All @@ -108,3 +109,29 @@ test('public Dotchi catalog aligns with its real two-choice voting product', ()
assert.doesNotMatch(card, /anime|manga/i);
assert.match(card, /referrer=utm_source%3Dappdevelopsk/);
});


test('Dotchi receives a truthful, measurable quick-games guide placement', () => {
const page=read('guides/quick-games/index.html');
const source=data.find(x=>x.app==='twotaku'&&!x.hidden);
assert.ok(source,'Dotchi must be publicly available in the catalog');
assert.equal(source.pkg,'com.dotchi.dotchi_app');
assert.match(source.desc,/Pick A or B on everyday questions/);
const actual=[...page.matchAll(/<a class="store" data-app="twotaku" href="([^"]+)"/g)];
assert.equal(actual.length,1,'One and only one Dotchi CTA in the guide');
const url=actual[0][1];
assert.match(url,/id=com\.dotchi\.dotchi_app/);
assert.match(url,/utm_campaign=quick_games/);
assert.match(url,/referrer=utm_source%3Dappdevelopsk%26utm_medium%3Dguide%26utm_campaign%3Dquick_games/);
assert.doesNotMatch(url,/user_?id|device_?id|email|answer/i);
assert.match(page,/For A-or-B polls with friends/);
assert.match(page,/Pick A or B on everyday questions/);
assert.match(page,/guide_store_click/);
const schemaText=page.match(/<script type="application\/ld\+json">([^<]+)<\/script>/)?.[1];
assert.ok(schemaText,'missing JSON-LD');
const schema=JSON.parse(schemaText);
assert.equal(schema['@type'],'ItemList');
assert.equal(schema.itemListElement.length,5);
assert.deepEqual(schema.itemListElement.map(item=>item.position),[1,2,3,4,5]);
assert.equal(schema.itemListElement[2].url,'https://play.google.com/store/apps/details?id=com.dotchi.dotchi_app');
});
Loading