@hy-capital/api-habit-tracker-types 1.0.50 → 1.0.52
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/habit.d.ts +5 -0
- package/dist/habit.js +351 -1
- package/package.json +1 -1
- package/src/habit.ts +357 -2
package/dist/habit.d.ts
CHANGED
@@ -16,6 +16,8 @@ export interface HabitType {
|
|
16
16
|
description: string;
|
17
17
|
frequency: HabitFrequency;
|
18
18
|
habitDays: HabitDay[];
|
19
|
+
possibleNotificationDescriptions: string[];
|
20
|
+
minDaysPerWeek: number;
|
19
21
|
}
|
20
22
|
export interface BaseHabit {
|
21
23
|
user_id: number;
|
@@ -33,6 +35,8 @@ export interface BaseHabit {
|
|
33
35
|
frequency: HabitFrequency;
|
34
36
|
habit_days: HabitDay[];
|
35
37
|
habit_dates: number[];
|
38
|
+
possible_notification_descriptions: string[];
|
39
|
+
min_days_per_week: number;
|
36
40
|
}
|
37
41
|
export interface RemindMeAtTime {
|
38
42
|
hour: number;
|
@@ -74,3 +78,4 @@ export interface HabitsResponse {
|
|
74
78
|
habits: DbHabit[];
|
75
79
|
stats: HabitStats;
|
76
80
|
}
|
81
|
+
export declare const habitTypesByTopicType: Record<TopicType, HabitType[]>;
|
package/dist/habit.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.ProgramObjectivesByTopic = exports.numberToHabitDayMappings = exports.habitDayToNumberMappings = exports.habitDateFormat = exports.allHabitDays = void 0;
|
3
|
+
exports.habitTypesByTopicType = exports.ProgramObjectivesByTopic = exports.numberToHabitDayMappings = exports.habitDayToNumberMappings = exports.habitDateFormat = exports.allHabitDays = void 0;
|
4
4
|
exports.allHabitDays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];
|
5
5
|
exports.habitDateFormat = 'DD-MM-YYYY';
|
6
6
|
exports.habitDayToNumberMappings = {
|
@@ -43,3 +43,353 @@ exports.ProgramObjectivesByTopic = {
|
|
43
43
|
'Revenue'
|
44
44
|
]
|
45
45
|
};
|
46
|
+
exports.habitTypesByTopicType = {
|
47
|
+
Dating: [
|
48
|
+
{
|
49
|
+
name: 'Talk to new person',
|
50
|
+
description: 'No pressure, just talk about whatever, no matter how long or short.',
|
51
|
+
difficulty: 3,
|
52
|
+
topicType: 'Dating',
|
53
|
+
habitTime: 'Anytime',
|
54
|
+
habitDays: exports.allHabitDays,
|
55
|
+
frequency: 'Daily',
|
56
|
+
minDaysPerWeek: 5,
|
57
|
+
possibleNotificationDescriptions: [
|
58
|
+
'You haven\'t talked to new person today. No wonder you\'re single.',
|
59
|
+
'Still haven’t talked to anyone new? Your dating life won’t improve itself.',
|
60
|
+
'Another day, no balls to chat. Enjoy being alone forever.',
|
61
|
+
'Your social skills suck. Talk to a person or stay a useless reject.',
|
62
|
+
'Don’t let your future self down. Talk to someone new today.'
|
63
|
+
]
|
64
|
+
},
|
65
|
+
{
|
66
|
+
name: 'Ask for date/social media',
|
67
|
+
description: 'Turn a conversation into an actual opportunity. Get her contact or set up a date.',
|
68
|
+
difficulty: 3,
|
69
|
+
topicType: 'Dating',
|
70
|
+
habitTime: 'Anytime',
|
71
|
+
habitDays: exports.allHabitDays,
|
72
|
+
frequency: 'Daily',
|
73
|
+
minDaysPerWeek: 3,
|
74
|
+
possibleNotificationDescriptions: [
|
75
|
+
'No date yet? Keep stalling and stay a nobody.',
|
76
|
+
'You didn’t ask. Pathetic. Get her number or keep dreaming.',
|
77
|
+
'Your future self is pissed. Close the deal with a date already.',
|
78
|
+
'Still too scared to ask? Guess who’s not getting laid.',
|
79
|
+
'Don\'t let your boys down. Get her contact or a date today.'
|
80
|
+
]
|
81
|
+
},
|
82
|
+
{
|
83
|
+
name: 'Grooming',
|
84
|
+
description: 'Wear your best clothes, keep hair in check. Always.',
|
85
|
+
difficulty: 1,
|
86
|
+
topicType: 'Dating',
|
87
|
+
habitTime: 'Anytime',
|
88
|
+
habitDays: exports.allHabitDays,
|
89
|
+
frequency: 'Daily',
|
90
|
+
minDaysPerWeek: 7,
|
91
|
+
possibleNotificationDescriptions: [
|
92
|
+
'Looking like trash today? No girl’s touching that.',
|
93
|
+
'Sloppy hair, shitty clothes. Enjoy the friend zone, loser.',
|
94
|
+
'Your mom didn’t raise a slob. Clean up and look sharp.',
|
95
|
+
'Skipped grooming? Might as well quit dating now.',
|
96
|
+
'Dress like a king or stay a peasant. Your call.'
|
97
|
+
]
|
98
|
+
},
|
99
|
+
{
|
100
|
+
name: 'Get new photos',
|
101
|
+
description: 'Take new high-quality photos for dating apps.',
|
102
|
+
difficulty: 2,
|
103
|
+
topicType: 'Dating',
|
104
|
+
habitTime: 'Anytime',
|
105
|
+
habitDays: exports.allHabitDays,
|
106
|
+
frequency: 'Daily',
|
107
|
+
minDaysPerWeek: 2,
|
108
|
+
possibleNotificationDescriptions: [
|
109
|
+
'No new pics? Your dating profile\'s a graveyard.',
|
110
|
+
'Old photos still up? No wonder she’s swiping left.',
|
111
|
+
'Your future self deserves better. Snap some fresh shots.',
|
112
|
+
'Too lazy for new pics? Keep failing at this game.',
|
113
|
+
'No new shots? She’ll think you peaked at 16. Fix it.'
|
114
|
+
]
|
115
|
+
},
|
116
|
+
{
|
117
|
+
name: 'Send messages',
|
118
|
+
description: 'Instead of asking boring questions, make more assumptions about the girl.',
|
119
|
+
difficulty: 2,
|
120
|
+
topicType: 'Dating',
|
121
|
+
habitTime: 'Anytime',
|
122
|
+
habitDays: exports.allHabitDays,
|
123
|
+
frequency: 'Daily',
|
124
|
+
minDaysPerWeek: 5,
|
125
|
+
possibleNotificationDescriptions: [
|
126
|
+
'No messages sent? Your game’s weaker than your biceps.',
|
127
|
+
'Still asking boring questions? She’s already ghosting you.',
|
128
|
+
'Your bloodline’s too strong for weak texts. Send a real one.',
|
129
|
+
'She’s losing interest. Call out something from her bio and send it now.',
|
130
|
+
'No text yet? Drop a line on her pic\'s vibe or kiss her reply goodbye.'
|
131
|
+
]
|
132
|
+
}
|
133
|
+
],
|
134
|
+
Sleep: [
|
135
|
+
{
|
136
|
+
name: 'No screens before bed',
|
137
|
+
description: 'Put the phone away 1 hour before sleep. Read a book or journal instead.',
|
138
|
+
difficulty: 2,
|
139
|
+
topicType: 'Sleep',
|
140
|
+
habitTime: 'Anytime',
|
141
|
+
habitDays: exports.allHabitDays,
|
142
|
+
frequency: 'Daily',
|
143
|
+
minDaysPerWeek: 7,
|
144
|
+
possibleNotificationDescriptions: [
|
145
|
+
'Still scrolling? You’ll wake up a wrecked zombie.',
|
146
|
+
'Phone’s your bedtime pal? Enjoy sucking at life.',
|
147
|
+
'Your future self needs sleep. Ditch the screen now.',
|
148
|
+
'No book, no journal? Keep tanking your mojo.',
|
149
|
+
'Too weak to unplug? Stay a tired nobody.'
|
150
|
+
]
|
151
|
+
},
|
152
|
+
{
|
153
|
+
name: '> 7hr sleep',
|
154
|
+
description: 'Go to bed and wake up at the same time. No excuses, even on weekends.',
|
155
|
+
difficulty: 2,
|
156
|
+
topicType: 'Sleep',
|
157
|
+
habitTime: 'Anytime',
|
158
|
+
habitDays: exports.allHabitDays,
|
159
|
+
frequency: 'Daily',
|
160
|
+
minDaysPerWeek: 7,
|
161
|
+
possibleNotificationDescriptions: [
|
162
|
+
'Late again? Your sloppy ass is a walking mess.',
|
163
|
+
'No bedtime yet? You’re begging to have a heart attack.',
|
164
|
+
'Your ancestors thrived on routine. Get to bed on time.',
|
165
|
+
'Still up? Stroke’s coming for you—sleep now.',
|
166
|
+
'Can’t stick to a clock? Good luck winning at anything.'
|
167
|
+
]
|
168
|
+
},
|
169
|
+
{
|
170
|
+
name: 'No late-night snacking',
|
171
|
+
description: 'Stop eating at least 2 hours before bed. Let your body rest, not digest.',
|
172
|
+
difficulty: 2,
|
173
|
+
topicType: 'Sleep',
|
174
|
+
habitTime: 'Anytime',
|
175
|
+
habitDays: exports.allHabitDays,
|
176
|
+
frequency: 'Daily',
|
177
|
+
minDaysPerWeek: 7,
|
178
|
+
possibleNotificationDescriptions: [
|
179
|
+
'Stuffing your face late? Enjoy that bloated gut.',
|
180
|
+
'Snacking before bed? Kiss your gains goodbye, pig.',
|
181
|
+
'Your bloodline didn’t bloat. Cut the midnight crap.',
|
182
|
+
'Still eating? You’re a sluggish wreck by morning.',
|
183
|
+
'Can’t stop munching? Stay fat and useless then.'
|
184
|
+
]
|
185
|
+
},
|
186
|
+
{
|
187
|
+
name: 'No caffeine after 2pm',
|
188
|
+
description: 'Cut all caffeine - coffee, pre-workout, energy drinks. Water only.',
|
189
|
+
difficulty: 2,
|
190
|
+
topicType: 'Sleep',
|
191
|
+
habitTime: 'Anytime',
|
192
|
+
habitDays: exports.allHabitDays,
|
193
|
+
frequency: 'Daily',
|
194
|
+
minDaysPerWeek: 7,
|
195
|
+
possibleNotificationDescriptions: [
|
196
|
+
'Caffeine past 2? You’re a jittery disaster.',
|
197
|
+
'Still sipping energy drinks? Crash and burn, loser.',
|
198
|
+
'Your future self sleeps better. Drop the coffee now.',
|
199
|
+
'Late buzz again? Heart’s ticking toward failure. Quit it.',
|
200
|
+
'Too dumb to switch to water? Enjoy the insomnia.'
|
201
|
+
]
|
202
|
+
},
|
203
|
+
{
|
204
|
+
name: 'Optimize your sleep environment',
|
205
|
+
description: 'Cool room, blackout curtains, clean sheets, no electronics nearby.',
|
206
|
+
difficulty: 2,
|
207
|
+
topicType: 'Sleep',
|
208
|
+
habitTime: 'Anytime',
|
209
|
+
habitDays: exports.allHabitDays,
|
210
|
+
frequency: 'Daily',
|
211
|
+
minDaysPerWeek: 7,
|
212
|
+
possibleNotificationDescriptions: [
|
213
|
+
'Room’s a dump? You’re sleeping in a pigsty.',
|
214
|
+
'No blackout curtains? Keep waking up a tired joke.',
|
215
|
+
'Your coffin’s comfier than this. Fix your bedroom now.',
|
216
|
+
'Electronics by the bed? Stay a restless nobody.',
|
217
|
+
'Too lazy to cool the room? Enjoy being a wreck.'
|
218
|
+
]
|
219
|
+
}
|
220
|
+
],
|
221
|
+
Fitness: [
|
222
|
+
{
|
223
|
+
name: 'Stay active',
|
224
|
+
description: 'Go to the gym, do cardio or just move. No lazy days.',
|
225
|
+
difficulty: 2,
|
226
|
+
topicType: 'Fitness',
|
227
|
+
habitTime: 'Anytime',
|
228
|
+
habitDays: exports.allHabitDays,
|
229
|
+
frequency: 'Daily',
|
230
|
+
minDaysPerWeek: 7,
|
231
|
+
possibleNotificationDescriptions: [
|
232
|
+
'No workout today? You’re a flabby waste.',
|
233
|
+
'Still sitting on your ass? Softness doesn’t win.',
|
234
|
+
'Your bloodline was tough. Move or shame them.',
|
235
|
+
'Skipped the gym? Keep being a weak nobody.',
|
236
|
+
'Too lazy to sweat? Enjoy the couch potato life.'
|
237
|
+
]
|
238
|
+
},
|
239
|
+
{
|
240
|
+
name: 'No processed sugars',
|
241
|
+
description: 'Skip added sugars. Stick to natural sources like fruit.',
|
242
|
+
difficulty: 2,
|
243
|
+
topicType: 'Fitness',
|
244
|
+
habitTime: 'Anytime',
|
245
|
+
habitDays: exports.allHabitDays,
|
246
|
+
frequency: 'Daily',
|
247
|
+
minDaysPerWeek: 7,
|
248
|
+
possibleNotificationDescriptions: [
|
249
|
+
'Sugar binge again? Diabetes is your next date.',
|
250
|
+
'Candy over fruit? Heart attack’s loading, moron.',
|
251
|
+
'Your future self’s fit. Ditch the junk now.',
|
252
|
+
'Still eating crap? Enjoy being fat f*ck.',
|
253
|
+
'Too weak for clean food? Stay a flabby reject.'
|
254
|
+
]
|
255
|
+
},
|
256
|
+
{
|
257
|
+
name: 'No alcohol',
|
258
|
+
description: 'Stay 100% alcohol-free. No exceptions, no slip-ups.',
|
259
|
+
difficulty: 2,
|
260
|
+
topicType: 'Fitness',
|
261
|
+
habitTime: 'Anytime',
|
262
|
+
habitDays: exports.allHabitDays,
|
263
|
+
frequency: 'Daily',
|
264
|
+
minDaysPerWeek: 7,
|
265
|
+
possibleNotificationDescriptions: [
|
266
|
+
'Booze today? Enjoy your beer gut.',
|
267
|
+
'Drinking again? You’re a sloppy disaster.',
|
268
|
+
'Your ancestors didn’t need vodka shots. Quit now.',
|
269
|
+
'Sipped a beer? Your liver is rotting away.',
|
270
|
+
'Too soft to go dry? Your gut’s a ticking bomb. Quit now.'
|
271
|
+
]
|
272
|
+
},
|
273
|
+
{
|
274
|
+
name: 'Weigh yourself',
|
275
|
+
description: 'Track weight your weight, so you know you\'re moving in the right direction.',
|
276
|
+
difficulty: 2,
|
277
|
+
topicType: 'Fitness',
|
278
|
+
habitTime: 'Anytime',
|
279
|
+
habitDays: exports.allHabitDays,
|
280
|
+
frequency: 'Daily',
|
281
|
+
minDaysPerWeek: 7,
|
282
|
+
possibleNotificationDescriptions: [
|
283
|
+
'No weigh-in? Blind to how fat you’re getting?',
|
284
|
+
'Skipping the scale? Your bulk’s out of control.',
|
285
|
+
'Your future self tracks it—step up and weigh in.',
|
286
|
+
'Too scared to check? Keep guessing your failure.',
|
287
|
+
'No numbers today? Enjoy the clueless bloat.'
|
288
|
+
]
|
289
|
+
},
|
290
|
+
{
|
291
|
+
name: 'Meal prep',
|
292
|
+
description: 'Cook meals in bulk. No excuses for missing protein or eating junk.',
|
293
|
+
difficulty: 2,
|
294
|
+
topicType: 'Fitness',
|
295
|
+
habitTime: 'Anytime',
|
296
|
+
habitDays: exports.allHabitDays,
|
297
|
+
frequency: 'Daily',
|
298
|
+
minDaysPerWeek: 2,
|
299
|
+
possibleNotificationDescriptions: [
|
300
|
+
'No prep today? You’re a takeout-fed slob.',
|
301
|
+
'Skipped cooking? Enjoy your weak-ass frame.',
|
302
|
+
'No meals ready? Obesity’s your future—cook now.',
|
303
|
+
'Still eating junk? No muscle, no glory.',
|
304
|
+
'Too lazy to cook? Stay scrawny and broke.'
|
305
|
+
]
|
306
|
+
}
|
307
|
+
],
|
308
|
+
'Side Hustle': [
|
309
|
+
{
|
310
|
+
name: 'Dedicate 2 hours to hustle',
|
311
|
+
description: '2 focused hours on your hustle. No distractions, no excuses.',
|
312
|
+
difficulty: 2,
|
313
|
+
topicType: 'Side Hustle',
|
314
|
+
habitTime: 'Anytime',
|
315
|
+
habitDays: exports.allHabitDays,
|
316
|
+
frequency: 'Daily',
|
317
|
+
minDaysPerWeek: 7,
|
318
|
+
possibleNotificationDescriptions: [
|
319
|
+
'No hustle time today? You’re a broke-ass joke.',
|
320
|
+
'Skipped your 2 hours? Keep begging for scraps.',
|
321
|
+
'Your future self’s rich. Put in the work now.',
|
322
|
+
'Distracted again? Retire broke at 80. Take action now.',
|
323
|
+
'Too soft for focus? Die with regrets, loser.'
|
324
|
+
]
|
325
|
+
},
|
326
|
+
{
|
327
|
+
name: 'Client outreach',
|
328
|
+
description: 'Contact potential clients or partners.',
|
329
|
+
difficulty: 2,
|
330
|
+
topicType: 'Side Hustle',
|
331
|
+
habitTime: 'Anytime',
|
332
|
+
habitDays: exports.allHabitDays,
|
333
|
+
frequency: 'Daily',
|
334
|
+
minDaysPerWeek: 3,
|
335
|
+
possibleNotificationDescriptions: [
|
336
|
+
'No outreach yet? Your hustle’s dead in the water.',
|
337
|
+
'Too shy to reach out? Stay broke and forgotten.',
|
338
|
+
'Your bloodline built empires. Message someone now.',
|
339
|
+
'Still silent? No money, no momentum.',
|
340
|
+
'Can’t pitch today? Enjoy the empty pockets.'
|
341
|
+
]
|
342
|
+
},
|
343
|
+
{
|
344
|
+
name: 'Share your journey',
|
345
|
+
description: 'Social media post, blog, tweet, vlog or message someone.',
|
346
|
+
difficulty: 2,
|
347
|
+
topicType: 'Side Hustle',
|
348
|
+
habitTime: 'Anytime',
|
349
|
+
habitDays: exports.allHabitDays,
|
350
|
+
frequency: 'Daily',
|
351
|
+
minDaysPerWeek: 7,
|
352
|
+
possibleNotificationDescriptions: [
|
353
|
+
'No post today? Your hustle’s a ghost town.',
|
354
|
+
'Nothing shared? You’re a lazy nobody.',
|
355
|
+
'Your future self’s a boss. Post something worth a damn.',
|
356
|
+
'Too lame to share? Keep fading into nothing.',
|
357
|
+
'Skipped content? Rot broke in obscurity—post now.'
|
358
|
+
]
|
359
|
+
},
|
360
|
+
{
|
361
|
+
name: 'Get real feedback',
|
362
|
+
description: 'Ask a customer or friend what they’d change about your hustle.',
|
363
|
+
difficulty: 2,
|
364
|
+
topicType: 'Side Hustle',
|
365
|
+
habitTime: 'Anytime',
|
366
|
+
habitDays: exports.allHabitDays,
|
367
|
+
frequency: 'Daily',
|
368
|
+
minDaysPerWeek: 2,
|
369
|
+
possibleNotificationDescriptions: [
|
370
|
+
'No feedback yet? Your hustle’s trash and you’re blind.',
|
371
|
+
'Too scared to ask? Keep failing in silence, chump.',
|
372
|
+
'Your grave’s waiting. Get input or flop forever.',
|
373
|
+
'Still guessing? No critique, no growth.',
|
374
|
+
'Can’t face the truth? Stay stuck and broke.'
|
375
|
+
]
|
376
|
+
},
|
377
|
+
{
|
378
|
+
name: 'Study competitors',
|
379
|
+
description: 'Analyze what your rivals are doing, see what works, what not.',
|
380
|
+
difficulty: 2,
|
381
|
+
topicType: 'Side Hustle',
|
382
|
+
habitTime: 'Anytime',
|
383
|
+
habitDays: exports.allHabitDays,
|
384
|
+
frequency: 'Daily',
|
385
|
+
minDaysPerWeek: 3,
|
386
|
+
possibleNotificationDescriptions: [
|
387
|
+
'No competitor check? They’re crushing you blind.',
|
388
|
+
'Skipped studying? You’re a sitting duck, wake up.',
|
389
|
+
'Your future self outsmarts them. Scope rivals now.',
|
390
|
+
'Too lazy to spy? Regrets will bury you broke.',
|
391
|
+
'Not watching them? They’ll bury you. Lock in today.'
|
392
|
+
]
|
393
|
+
}
|
394
|
+
]
|
395
|
+
};
|
package/package.json
CHANGED
package/src/habit.ts
CHANGED
@@ -59,6 +59,8 @@ export interface HabitType {
|
|
59
59
|
description: string;
|
60
60
|
frequency: HabitFrequency;
|
61
61
|
habitDays: HabitDay[];
|
62
|
+
possibleNotificationDescriptions: string[];
|
63
|
+
minDaysPerWeek: number;
|
62
64
|
}
|
63
65
|
|
64
66
|
export interface BaseHabit {
|
@@ -73,10 +75,12 @@ export interface BaseHabit {
|
|
73
75
|
description: string;
|
74
76
|
remind_me: boolean;
|
75
77
|
remind_me_at_times: RemindMeAtTime[]; // these are shown in FO
|
76
|
-
notifications: Notification[]; // these are Local notification times
|
78
|
+
notifications: Notification[]; // these are Local notification times (work offline)
|
77
79
|
frequency: HabitFrequency; //TODO: keep only daily
|
78
80
|
habit_days: HabitDay[];
|
79
81
|
habit_dates: number[]; //TODO: remove
|
82
|
+
possible_notification_descriptions: string[];
|
83
|
+
min_days_per_week: number;
|
80
84
|
}
|
81
85
|
|
82
86
|
export interface RemindMeAtTime {
|
@@ -124,4 +128,355 @@ export interface HabitStats {
|
|
124
128
|
export interface HabitsResponse {
|
125
129
|
habits: DbHabit[];
|
126
130
|
stats: HabitStats;
|
127
|
-
}
|
131
|
+
}
|
132
|
+
|
133
|
+
export const habitTypesByTopicType: Record<TopicType, HabitType[]> = {
|
134
|
+
Dating: [
|
135
|
+
{
|
136
|
+
name: 'Talk to new person',
|
137
|
+
description: 'No pressure, just talk about whatever, no matter how long or short.',
|
138
|
+
difficulty: 3,
|
139
|
+
topicType: 'Dating',
|
140
|
+
habitTime: 'Anytime',
|
141
|
+
habitDays: allHabitDays,
|
142
|
+
frequency: 'Daily',
|
143
|
+
minDaysPerWeek: 5,
|
144
|
+
possibleNotificationDescriptions: [
|
145
|
+
'You haven\'t talked to new person today. No wonder you\'re single.',
|
146
|
+
'Still haven’t talked to anyone new? Your dating life won’t improve itself.',
|
147
|
+
'Another day, no balls to chat. Enjoy being alone forever.',
|
148
|
+
'Your social skills suck. Talk to a person or stay a useless reject.',
|
149
|
+
'Don’t let your future self down. Talk to someone new today.'
|
150
|
+
]
|
151
|
+
},
|
152
|
+
{
|
153
|
+
name: 'Ask for date/social media',
|
154
|
+
description: 'Turn a conversation into an actual opportunity. Get her contact or set up a date.',
|
155
|
+
difficulty: 3,
|
156
|
+
topicType: 'Dating',
|
157
|
+
habitTime: 'Anytime',
|
158
|
+
habitDays: allHabitDays,
|
159
|
+
frequency: 'Daily',
|
160
|
+
minDaysPerWeek: 3,
|
161
|
+
possibleNotificationDescriptions: [
|
162
|
+
'No date yet? Keep stalling and stay a nobody.',
|
163
|
+
'You didn’t ask. Pathetic. Get her number or keep dreaming.',
|
164
|
+
'Your future self is pissed. Close the deal with a date already.',
|
165
|
+
'Still too scared to ask? Guess who’s not getting laid.',
|
166
|
+
'Don\'t let your boys down. Get her contact or a date today.'
|
167
|
+
]
|
168
|
+
},
|
169
|
+
{
|
170
|
+
name: 'Grooming',
|
171
|
+
description: 'Wear your best clothes, keep hair in check. Always.',
|
172
|
+
difficulty: 1,
|
173
|
+
topicType: 'Dating',
|
174
|
+
habitTime: 'Anytime',
|
175
|
+
habitDays: allHabitDays,
|
176
|
+
frequency: 'Daily',
|
177
|
+
minDaysPerWeek: 7,
|
178
|
+
possibleNotificationDescriptions: [
|
179
|
+
'Looking like trash today? No girl’s touching that.',
|
180
|
+
'Sloppy hair, shitty clothes. Enjoy the friend zone, loser.',
|
181
|
+
'Your mom didn’t raise a slob. Clean up and look sharp.',
|
182
|
+
'Skipped grooming? Might as well quit dating now.',
|
183
|
+
'Dress like a king or stay a peasant. Your call.'
|
184
|
+
]
|
185
|
+
},
|
186
|
+
{
|
187
|
+
name: 'Get new photos',
|
188
|
+
description: 'Take new high-quality photos for dating apps.',
|
189
|
+
difficulty: 2,
|
190
|
+
topicType: 'Dating',
|
191
|
+
habitTime: 'Anytime',
|
192
|
+
habitDays: allHabitDays,
|
193
|
+
frequency: 'Daily',
|
194
|
+
minDaysPerWeek: 2,
|
195
|
+
possibleNotificationDescriptions: [
|
196
|
+
'No new pics? Your dating profile\'s a graveyard.',
|
197
|
+
'Old photos still up? No wonder she’s swiping left.',
|
198
|
+
'Your future self deserves better. Snap some fresh shots.',
|
199
|
+
'Too lazy for new pics? Keep failing at this game.',
|
200
|
+
'No new shots? She’ll think you peaked at 16. Fix it.'
|
201
|
+
]
|
202
|
+
},
|
203
|
+
{
|
204
|
+
name: 'Send messages',
|
205
|
+
description: 'Instead of asking boring questions, make more assumptions about the girl.',
|
206
|
+
difficulty: 2,
|
207
|
+
topicType: 'Dating',
|
208
|
+
habitTime: 'Anytime',
|
209
|
+
habitDays: allHabitDays,
|
210
|
+
frequency: 'Daily',
|
211
|
+
minDaysPerWeek: 5,
|
212
|
+
possibleNotificationDescriptions: [
|
213
|
+
'No messages sent? Your game’s weaker than your biceps.',
|
214
|
+
'Still asking boring questions? She’s already ghosting you.',
|
215
|
+
'Your bloodline’s too strong for weak texts. Send a real one.',
|
216
|
+
'She’s losing interest. Call out something from her bio and send it now.',
|
217
|
+
'No text yet? Drop a line on her pic\'s vibe or kiss her reply goodbye.'
|
218
|
+
]
|
219
|
+
}
|
220
|
+
],
|
221
|
+
Sleep: [
|
222
|
+
{
|
223
|
+
name: 'No screens before bed',
|
224
|
+
description: 'Put the phone away 1 hour before sleep. Read a book or journal instead.',
|
225
|
+
difficulty: 2,
|
226
|
+
topicType: 'Sleep',
|
227
|
+
habitTime: 'Anytime',
|
228
|
+
habitDays: allHabitDays,
|
229
|
+
frequency: 'Daily',
|
230
|
+
minDaysPerWeek: 7,
|
231
|
+
possibleNotificationDescriptions: [
|
232
|
+
'Still scrolling? You’ll wake up a wrecked zombie.',
|
233
|
+
'Phone’s your bedtime pal? Enjoy sucking at life.',
|
234
|
+
'Your future self needs sleep. Ditch the screen now.',
|
235
|
+
'No book, no journal? Keep tanking your mojo.',
|
236
|
+
'Too weak to unplug? Stay a tired nobody.'
|
237
|
+
]
|
238
|
+
},
|
239
|
+
{
|
240
|
+
name: '> 7hr sleep',
|
241
|
+
description: 'Go to bed and wake up at the same time. No excuses, even on weekends.',
|
242
|
+
difficulty: 2,
|
243
|
+
topicType: 'Sleep',
|
244
|
+
habitTime: 'Anytime',
|
245
|
+
habitDays: allHabitDays,
|
246
|
+
frequency: 'Daily',
|
247
|
+
minDaysPerWeek: 7,
|
248
|
+
possibleNotificationDescriptions: [
|
249
|
+
'Late again? Your sloppy ass is a walking mess.',
|
250
|
+
'No bedtime yet? You’re begging to have a heart attack.',
|
251
|
+
'Your ancestors thrived on routine. Get to bed on time.',
|
252
|
+
'Still up? Stroke’s coming for you—sleep now.',
|
253
|
+
'Can’t stick to a clock? Good luck winning at anything.'
|
254
|
+
]
|
255
|
+
},
|
256
|
+
{
|
257
|
+
name: 'No late-night snacking',
|
258
|
+
description: 'Stop eating at least 2 hours before bed. Let your body rest, not digest.',
|
259
|
+
difficulty: 2,
|
260
|
+
topicType: 'Sleep',
|
261
|
+
habitTime: 'Anytime',
|
262
|
+
habitDays: allHabitDays,
|
263
|
+
frequency: 'Daily',
|
264
|
+
minDaysPerWeek: 7,
|
265
|
+
possibleNotificationDescriptions: [
|
266
|
+
'Stuffing your face late? Enjoy that bloated gut.',
|
267
|
+
'Snacking before bed? Kiss your gains goodbye, pig.',
|
268
|
+
'Your bloodline didn’t bloat. Cut the midnight crap.',
|
269
|
+
'Still eating? You’re a sluggish wreck by morning.',
|
270
|
+
'Can’t stop munching? Stay fat and useless then.'
|
271
|
+
]
|
272
|
+
},
|
273
|
+
{
|
274
|
+
name: 'No caffeine after 2pm',
|
275
|
+
description: 'Cut all caffeine - coffee, pre-workout, energy drinks. Water only.',
|
276
|
+
difficulty: 2,
|
277
|
+
topicType: 'Sleep',
|
278
|
+
habitTime: 'Anytime',
|
279
|
+
habitDays: allHabitDays,
|
280
|
+
frequency: 'Daily',
|
281
|
+
minDaysPerWeek: 7,
|
282
|
+
possibleNotificationDescriptions: [
|
283
|
+
'Caffeine past 2? You’re a jittery disaster.',
|
284
|
+
'Still sipping energy drinks? Crash and burn, loser.',
|
285
|
+
'Your future self sleeps better. Drop the coffee now.',
|
286
|
+
'Late buzz again? Heart’s ticking toward failure. Quit it.',
|
287
|
+
'Too dumb to switch to water? Enjoy the insomnia.'
|
288
|
+
]
|
289
|
+
},
|
290
|
+
{
|
291
|
+
name: 'Optimize your sleep environment',
|
292
|
+
description: 'Cool room, blackout curtains, clean sheets, no electronics nearby.',
|
293
|
+
difficulty: 2,
|
294
|
+
topicType: 'Sleep',
|
295
|
+
habitTime: 'Anytime',
|
296
|
+
habitDays: allHabitDays,
|
297
|
+
frequency: 'Daily',
|
298
|
+
minDaysPerWeek: 7,
|
299
|
+
possibleNotificationDescriptions: [
|
300
|
+
'Room’s a dump? You’re sleeping in a pigsty.',
|
301
|
+
'No blackout curtains? Keep waking up a tired joke.',
|
302
|
+
'Your coffin’s comfier than this. Fix your bedroom now.',
|
303
|
+
'Electronics by the bed? Stay a restless nobody.',
|
304
|
+
'Too lazy to cool the room? Enjoy being a wreck.'
|
305
|
+
]
|
306
|
+
}
|
307
|
+
],
|
308
|
+
Fitness: [
|
309
|
+
{
|
310
|
+
name: 'Stay active',
|
311
|
+
description: 'Go to the gym, do cardio or just move. No lazy days.',
|
312
|
+
difficulty: 2,
|
313
|
+
topicType: 'Fitness',
|
314
|
+
habitTime: 'Anytime',
|
315
|
+
habitDays: allHabitDays,
|
316
|
+
frequency: 'Daily',
|
317
|
+
minDaysPerWeek: 7,
|
318
|
+
possibleNotificationDescriptions: [
|
319
|
+
'No workout today? You’re a flabby waste.',
|
320
|
+
'Still sitting on your ass? Softness doesn’t win.',
|
321
|
+
'Your bloodline was tough. Move or shame them.',
|
322
|
+
'Skipped the gym? Keep being a weak nobody.',
|
323
|
+
'Too lazy to sweat? Enjoy the couch potato life.'
|
324
|
+
]
|
325
|
+
},
|
326
|
+
{
|
327
|
+
name: 'No processed sugars',
|
328
|
+
description: 'Skip added sugars. Stick to natural sources like fruit.',
|
329
|
+
difficulty: 2,
|
330
|
+
topicType: 'Fitness',
|
331
|
+
habitTime: 'Anytime',
|
332
|
+
habitDays: allHabitDays,
|
333
|
+
frequency: 'Daily',
|
334
|
+
minDaysPerWeek: 7,
|
335
|
+
possibleNotificationDescriptions: [
|
336
|
+
'Sugar binge again? Diabetes is your next date.',
|
337
|
+
'Candy over fruit? Heart attack’s loading, moron.',
|
338
|
+
'Your future self’s fit. Ditch the junk now.',
|
339
|
+
'Still eating crap? Enjoy being fat f*ck.',
|
340
|
+
'Too weak for clean food? Stay a flabby reject.'
|
341
|
+
]
|
342
|
+
},
|
343
|
+
{
|
344
|
+
name: 'No alcohol',
|
345
|
+
description: 'Stay 100% alcohol-free. No exceptions, no slip-ups.',
|
346
|
+
difficulty: 2,
|
347
|
+
topicType: 'Fitness',
|
348
|
+
habitTime: 'Anytime',
|
349
|
+
habitDays: allHabitDays,
|
350
|
+
frequency: 'Daily',
|
351
|
+
minDaysPerWeek: 7,
|
352
|
+
possibleNotificationDescriptions: [
|
353
|
+
'Booze today? Enjoy your beer gut.',
|
354
|
+
'Drinking again? You’re a sloppy disaster.',
|
355
|
+
'Your ancestors didn’t need vodka shots. Quit now.',
|
356
|
+
'Sipped a beer? Your liver is rotting away.',
|
357
|
+
'Too soft to go dry? Your gut’s a ticking bomb. Quit now.'
|
358
|
+
]
|
359
|
+
},
|
360
|
+
{
|
361
|
+
name: 'Weigh yourself',
|
362
|
+
description: 'Track weight your weight, so you know you\'re moving in the right direction.',
|
363
|
+
difficulty: 2,
|
364
|
+
topicType: 'Fitness',
|
365
|
+
habitTime: 'Anytime',
|
366
|
+
habitDays: allHabitDays,
|
367
|
+
frequency: 'Daily',
|
368
|
+
minDaysPerWeek: 7,
|
369
|
+
possibleNotificationDescriptions: [
|
370
|
+
'No weigh-in? Blind to how fat you’re getting?',
|
371
|
+
'Skipping the scale? Your bulk’s out of control.',
|
372
|
+
'Your future self tracks it—step up and weigh in.',
|
373
|
+
'Too scared to check? Keep guessing your failure.',
|
374
|
+
'No numbers today? Enjoy the clueless bloat.'
|
375
|
+
]
|
376
|
+
},
|
377
|
+
{
|
378
|
+
name: 'Meal prep',
|
379
|
+
description: 'Cook meals in bulk. No excuses for missing protein or eating junk.',
|
380
|
+
difficulty: 2,
|
381
|
+
topicType: 'Fitness',
|
382
|
+
habitTime: 'Anytime',
|
383
|
+
habitDays: allHabitDays,
|
384
|
+
frequency: 'Daily',
|
385
|
+
minDaysPerWeek: 2,
|
386
|
+
possibleNotificationDescriptions: [
|
387
|
+
'No prep today? You’re a takeout-fed slob.',
|
388
|
+
'Skipped cooking? Enjoy your weak-ass frame.',
|
389
|
+
'No meals ready? Obesity’s your future—cook now.',
|
390
|
+
'Still eating junk? No muscle, no glory.',
|
391
|
+
'Too lazy to cook? Stay scrawny and broke.'
|
392
|
+
]
|
393
|
+
}
|
394
|
+
],
|
395
|
+
'Side Hustle': [
|
396
|
+
{
|
397
|
+
name: 'Dedicate 2 hours to hustle',
|
398
|
+
description: '2 focused hours on your hustle. No distractions, no excuses.',
|
399
|
+
difficulty: 2,
|
400
|
+
topicType: 'Side Hustle',
|
401
|
+
habitTime: 'Anytime',
|
402
|
+
habitDays: allHabitDays,
|
403
|
+
frequency: 'Daily',
|
404
|
+
minDaysPerWeek: 7,
|
405
|
+
possibleNotificationDescriptions: [
|
406
|
+
'No hustle time today? You’re a broke-ass joke.',
|
407
|
+
'Skipped your 2 hours? Keep begging for scraps.',
|
408
|
+
'Your future self’s rich. Put in the work now.',
|
409
|
+
'Distracted again? Retire broke at 80. Take action now.',
|
410
|
+
'Too soft for focus? Die with regrets, loser.'
|
411
|
+
]
|
412
|
+
},
|
413
|
+
{
|
414
|
+
name: 'Client outreach',
|
415
|
+
description: 'Contact potential clients or partners.',
|
416
|
+
difficulty: 2,
|
417
|
+
topicType: 'Side Hustle',
|
418
|
+
habitTime: 'Anytime',
|
419
|
+
habitDays: allHabitDays,
|
420
|
+
frequency: 'Daily',
|
421
|
+
minDaysPerWeek: 3,
|
422
|
+
possibleNotificationDescriptions: [
|
423
|
+
'No outreach yet? Your hustle’s dead in the water.',
|
424
|
+
'Too shy to reach out? Stay broke and forgotten.',
|
425
|
+
'Your bloodline built empires. Message someone now.',
|
426
|
+
'Still silent? No money, no momentum.',
|
427
|
+
'Can’t pitch today? Enjoy the empty pockets.'
|
428
|
+
]
|
429
|
+
},
|
430
|
+
{
|
431
|
+
name: 'Share your journey',
|
432
|
+
description: 'Social media post, blog, tweet, vlog or message someone.',
|
433
|
+
difficulty: 2,
|
434
|
+
topicType: 'Side Hustle',
|
435
|
+
habitTime: 'Anytime',
|
436
|
+
habitDays: allHabitDays,
|
437
|
+
frequency: 'Daily',
|
438
|
+
minDaysPerWeek: 7,
|
439
|
+
possibleNotificationDescriptions: [
|
440
|
+
'No post today? Your hustle’s a ghost town.',
|
441
|
+
'Nothing shared? You’re a lazy nobody.',
|
442
|
+
'Your future self’s a boss. Post something worth a damn.',
|
443
|
+
'Too lame to share? Keep fading into nothing.',
|
444
|
+
'Skipped content? Rot broke in obscurity—post now.'
|
445
|
+
]
|
446
|
+
},
|
447
|
+
{
|
448
|
+
name: 'Get real feedback',
|
449
|
+
description: 'Ask a customer or friend what they’d change about your hustle.',
|
450
|
+
difficulty: 2,
|
451
|
+
topicType: 'Side Hustle',
|
452
|
+
habitTime: 'Anytime',
|
453
|
+
habitDays: allHabitDays,
|
454
|
+
frequency: 'Daily',
|
455
|
+
minDaysPerWeek: 2,
|
456
|
+
possibleNotificationDescriptions: [
|
457
|
+
'No feedback yet? Your hustle’s trash and you’re blind.',
|
458
|
+
'Too scared to ask? Keep failing in silence, chump.',
|
459
|
+
'Your grave’s waiting. Get input or flop forever.',
|
460
|
+
'Still guessing? No critique, no growth.',
|
461
|
+
'Can’t face the truth? Stay stuck and broke.'
|
462
|
+
]
|
463
|
+
},
|
464
|
+
{
|
465
|
+
name: 'Study competitors',
|
466
|
+
description: 'Analyze what your rivals are doing, see what works, what not.',
|
467
|
+
difficulty: 2,
|
468
|
+
topicType: 'Side Hustle',
|
469
|
+
habitTime: 'Anytime',
|
470
|
+
habitDays: allHabitDays,
|
471
|
+
frequency: 'Daily',
|
472
|
+
minDaysPerWeek: 3,
|
473
|
+
possibleNotificationDescriptions: [
|
474
|
+
'No competitor check? They’re crushing you blind.',
|
475
|
+
'Skipped studying? You’re a sitting duck, wake up.',
|
476
|
+
'Your future self outsmarts them. Scope rivals now.',
|
477
|
+
'Too lazy to spy? Regrets will bury you broke.',
|
478
|
+
'Not watching them? They’ll bury you. Lock in today.'
|
479
|
+
]
|
480
|
+
}
|
481
|
+
]
|
482
|
+
};
|