krz/daybyday

iOS app for children to learn days of the week, months, and seasons with audio assist. education ios kids swift https://krz.sh/apps/daybyday/

Commit ff626fbb8f

ff626fbb8f545fda4b38d2a1e40eebbf6ad2111d

parent: fe0a6573bd

Unsigned

cmc <hello@cleberg.net> · 2026-04-10 16:48 UTC

bump version and update new privacy policy location

Layout: unified · split

DayByDay.xcodeproj/project.pbxproj +9 −9
@@ -24,7 +24,6 @@
24 8B57F7382F63BBBB001F6F5E /* AnimalsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B57F7372F63BBBB001F6F5E /* AnimalsView.swift */; }; 24 8B57F7382F63BBBB001F6F5E /* AnimalsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B57F7372F63BBBB001F6F5E /* AnimalsView.swift */; };
25 8B57F73A2F63BBBD001F6F5E /* LetterCard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B57F7392F63BBBD001F6F5E /* LetterCard.swift */; }; 25 8B57F73A2F63BBBD001F6F5E /* LetterCard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B57F7392F63BBBD001F6F5E /* LetterCard.swift */; };
26 8B57F73C2F63BBBD001F6F5E /* AlphabetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B57F73B2F63BBBD001F6F5E /* AlphabetView.swift */; }; 26 8B57F73C2F63BBBD001F6F5E /* AlphabetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B57F73B2F63BBBD001F6F5E /* AlphabetView.swift */; };
27 8B7051C12F5F90CD00491D58 /* claude.md in Resources */ = {isa = PBXBuildFile; fileRef = 8B7051C02F5F90C800491D58 /* claude.md */; };
28/* End PBXBuildFile section */ 27/* End PBXBuildFile section */
29 28
30/* Begin PBXFileReference section */ 29/* Begin PBXFileReference section */
@@ -46,7 +45,6 @@
46 8B57F7392F63BBBD001F6F5E /* LetterCard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LetterCard.swift; sourceTree = "<group>"; }; 45 8B57F7392F63BBBD001F6F5E /* LetterCard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LetterCard.swift; sourceTree = "<group>"; };
47 8B57F73B2F63BBBD001F6F5E /* AlphabetView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlphabetView.swift; sourceTree = "<group>"; }; 46 8B57F73B2F63BBBD001F6F5E /* AlphabetView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlphabetView.swift; sourceTree = "<group>"; };
48 8B7051B22F5F908800491D58 /* DayByDay.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DayByDay.app; sourceTree = BUILT_PRODUCTS_DIR; }; 47 8B7051B22F5F908800491D58 /* DayByDay.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DayByDay.app; sourceTree = BUILT_PRODUCTS_DIR; };
49 8B7051C02F5F90C800491D58 /* claude.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = claude.md; sourceTree = "<group>"; };
50/* End PBXFileReference section */ 48/* End PBXFileReference section */
51 49
52/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ 50/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */
@@ -84,7 +82,6 @@
84 8B7051A92F5F908800491D58 = { 82 8B7051A92F5F908800491D58 = {
85 isa = PBXGroup; 83 isa = PBXGroup;
86 children = ( 84 children = (
87 8B7051C02F5F90C800491D58 /* claude.md */,
88 8B7051B42F5F908800491D58 /* DayByDay */, 85 8B7051B42F5F908800491D58 /* DayByDay */,
89 8B7051B32F5F908800491D58 /* Products */, 86 8B7051B32F5F908800491D58 /* Products */,
90 8B57F7272F63BBB4001F6F5E /* TodayView.swift */, 87 8B57F7272F63BBB4001F6F5E /* TodayView.swift */,
@@ -148,7 +145,7 @@
148 attributes = { 145 attributes = {
149 BuildIndependentTargetsInParallel = 1; 146 BuildIndependentTargetsInParallel = 1;
150 LastSwiftUpdateCheck = 2630; 147 LastSwiftUpdateCheck = 2630;
151 LastUpgradeCheck = 2630; 148 LastUpgradeCheck = 2640;
152 TargetAttributes = { 149 TargetAttributes = {
153 8B7051B12F5F908800491D58 = { 150 8B7051B12F5F908800491D58 = {
154 CreatedOnToolsVersion = 26.3; 151 CreatedOnToolsVersion = 26.3;
@@ -179,7 +176,6 @@
179 isa = PBXResourcesBuildPhase; 176 isa = PBXResourcesBuildPhase;
180 buildActionMask = 2147483647; 177 buildActionMask = 2147483647;
181 files = ( 178 files = (
182 8B7051C12F5F90CD00491D58 /* claude.md in Resources */,
183 ); 179 );
184 runOnlyForDeploymentPostprocessing = 0; 180 runOnlyForDeploymentPostprocessing = 0;
185 }; 181 };
@@ -272,6 +268,7 @@
272 MTL_FAST_MATH = YES; 268 MTL_FAST_MATH = YES;
273 ONLY_ACTIVE_ARCH = YES; 269 ONLY_ACTIVE_ARCH = YES;
274 SDKROOT = iphoneos; 270 SDKROOT = iphoneos;
271 STRING_CATALOG_GENERATE_SYMBOLS = YES;
275 SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; 272 SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
276 SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 273 SWIFT_OPTIMIZATION_LEVEL = "-Onone";
277 }; 274 };
@@ -329,6 +326,7 @@
329 MTL_ENABLE_DEBUG_INFO = NO; 326 MTL_ENABLE_DEBUG_INFO = NO;
330 MTL_FAST_MATH = YES; 327 MTL_FAST_MATH = YES;
331 SDKROOT = iphoneos; 328 SDKROOT = iphoneos;
329 STRING_CATALOG_GENERATE_SYMBOLS = YES;
332 SWIFT_COMPILATION_MODE = wholemodule; 330 SWIFT_COMPILATION_MODE = wholemodule;
333 VALIDATE_PRODUCT = YES; 331 VALIDATE_PRODUCT = YES;
334 }; 332 };
@@ -340,7 +338,7 @@
340 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 338 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
341 ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 339 ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
342 CODE_SIGN_STYLE = Automatic; 340 CODE_SIGN_STYLE = Automatic;
343 CURRENT_PROJECT_VERSION = 3; 341 CURRENT_PROJECT_VERSION = 5;
344 DEVELOPMENT_TEAM = ZCNAX3VL9D; 342 DEVELOPMENT_TEAM = ZCNAX3VL9D;
345 ENABLE_PREVIEWS = YES; 343 ENABLE_PREVIEWS = YES;
346 GENERATE_INFOPLIST_FILE = YES; 344 GENERATE_INFOPLIST_FILE = YES;
@@ -350,11 +348,12 @@
350 INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; 348 INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
351 INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; 349 INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
352 INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; 350 INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
351 IPHONEOS_DEPLOYMENT_TARGET = 17.5;
353 LD_RUNPATH_SEARCH_PATHS = ( 352 LD_RUNPATH_SEARCH_PATHS = (
354 "$(inherited)", 353 "$(inherited)",
355 "@executable_path/Frameworks", 354 "@executable_path/Frameworks",
356 ); 355 );
357 MARKETING_VERSION = 1.2; 356 MARKETING_VERSION = 1.3.1;
358 PRODUCT_BUNDLE_IDENTIFIER = net.cleberg.DayByDay; 357 PRODUCT_BUNDLE_IDENTIFIER = net.cleberg.DayByDay;
359 PRODUCT_NAME = "$(TARGET_NAME)"; 358 PRODUCT_NAME = "$(TARGET_NAME)";
360 STRING_CATALOG_GENERATE_SYMBOLS = YES; 359 STRING_CATALOG_GENERATE_SYMBOLS = YES;
@@ -373,7 +372,7 @@
373 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 372 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
374 ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 373 ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
375 CODE_SIGN_STYLE = Automatic; 374 CODE_SIGN_STYLE = Automatic;
376 CURRENT_PROJECT_VERSION = 3; 375 CURRENT_PROJECT_VERSION = 5;
377 DEVELOPMENT_TEAM = ZCNAX3VL9D; 376 DEVELOPMENT_TEAM = ZCNAX3VL9D;
378 ENABLE_PREVIEWS = YES; 377 ENABLE_PREVIEWS = YES;
379 GENERATE_INFOPLIST_FILE = YES; 378 GENERATE_INFOPLIST_FILE = YES;
@@ -383,11 +382,12 @@
383 INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; 382 INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
384 INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; 383 INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
385 INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; 384 INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
385 IPHONEOS_DEPLOYMENT_TARGET = 17.5;
386 LD_RUNPATH_SEARCH_PATHS = ( 386 LD_RUNPATH_SEARCH_PATHS = (
387 "$(inherited)", 387 "$(inherited)",
388 "@executable_path/Frameworks", 388 "@executable_path/Frameworks",
389 ); 389 );
390 MARKETING_VERSION = 1.2; 390 MARKETING_VERSION = 1.3.1;
391 PRODUCT_BUNDLE_IDENTIFIER = net.cleberg.DayByDay; 391 PRODUCT_BUNDLE_IDENTIFIER = net.cleberg.DayByDay;
392 PRODUCT_NAME = "$(TARGET_NAME)"; 392 PRODUCT_NAME = "$(TARGET_NAME)";
393 STRING_CATALOG_GENERATE_SYMBOLS = YES; 393 STRING_CATALOG_GENERATE_SYMBOLS = YES;
claude.md deleted −50
@@ -1,50 +0,0 @@
1# DayByDay – Project Context
2
3## What this is
4An iOS app for pre-K children (ages 4–5) that teaches days of the week, months
5of the year, seasons, numbers, colors, shapes, animals, the alphabet, weather,
6body parts, and fruits & vegetables through simple, tap-based interactions.
7
8## Target user
9A single child, approximately 4–5 years old, preparing to start school. Cannot
10read yet. Parent may sit alongside but the child should be able to use the app
11independently.
12
13## Design principles
14- Large tap targets — nothing small or fiddly
15- Bright, clean colors — simple and friendly, not cluttered
16- No text-dependent interactions — the child cannot read
17- Audio is the primary feedback mechanism (names read aloud on tap)
18- Simple animations on interaction — enough to delight, not enough to distract
19- No timers, no failure states, no scores — purely exploratory
20
21## Content (12 categories, accessible from a NavigationStack home grid)
22- Today: summary card with current day, date, month, season
23- Days of the week: Sunday through Saturday
24- Months of the year: January through December
25- Seasons: Spring, Summer, Fall, Winter
26- Numbers: 1 through 10 (numeral + word + dot pattern)
27- Colors: 10 basic colors (Red, Orange, Yellow, Green, Blue, Purple, Pink,
28 Brown, Black, White)
29- Shapes: 8 shapes (Circle, Square, Triangle, Star, Heart, Oval, Diamond,
30 Rectangle)
31- Animals: 12 animals with SF Symbol icons
32- Alphabet: A through Z
33- Weather: 8 weather types (Sunny, Cloudy, Rainy, Snowy, Windy, Stormy,
34 Foggy, Rainbow)
35- Body Parts: 12 body parts (Head, Eyes, Ears, Nose, Mouth, Hands, Fingers,
36 Arms, Legs, Feet, Heart, Belly)
37- Fruits & Vegetables: 12 foods (Apple, Banana, Carrot, Strawberry, Grapes,
38 Lemon, Broccoli, Watermelon, Cherry, Orange, Corn, Pear)
39
40## Technical constraints
41- SwiftUI, iOS only
42- Fully offline — no network requests, no accounts, no analytics
43- No in-app purchases
44- Targets latest iOS
45
46## What good looks like
47Each concept should feel like its own tactile card or object the child can tap
48and explore. Transitions should be smooth. Audio should play immediately on tap
49with no perceptible delay. The home screen is a colorful 2-column grid of square category
50tiles that navigate into each section.
privacypolicy.md deleted −40
@@ -1,40 +0,0 @@
1# Privacy Policy
2
3**DayByDay**
4Last updated: March 9, 2026
5
6## Overview
7
8DayByDay is a children's educational app designed for ages 4–5. This privacy
9policy explains how the app handles data.
10
11## Data Collection
12
13DayByDay does not collect, store, or transmit any personal data. The app has no
14user accounts, no analytics, no advertising, and no internet connection
15requirement.
16
17## Children's Privacy
18
19DayByDay is designed for young children and fully complies with the Children's
20Online Privacy Protection Act (COPPA). No information is collected from any
21user, including children.
22
23## Third-Party Services
24
25DayByDay does not use any third-party services, SDKs, or APIs that collect data.
26
27## Device Permissions
28
29DayByDay does not request access to your camera, microphone, contacts, location,
30or any other device data. Audio is generated on-device using Apple's built-in
31text-to-speech system.
32
33## Changes to This Policy
34
35If this policy changes in a future update, the updated policy will be posted
36here with a revised date.
37
38## Contact
39
40If you have any questions about this policy, contact: privacy@cleberg.net