@hy-capital/api-habit-tracker-types 1.0.58 → 1.0.60

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 CHANGED
@@ -9,6 +9,7 @@ export declare const habitDayToNumberMappings: Record<HabitDay, number>;
9
9
  export declare const numberToHabitDayMappings: Record<number, HabitDay>;
10
10
  export declare const ProgramObjectivesByTopic: Record<TopicType, string[]>;
11
11
  export interface HabitType {
12
+ id: number;
12
13
  name: string;
13
14
  habitTime: HabitTime;
14
15
  topicType: TopicType;
@@ -37,6 +38,7 @@ export interface BaseHabit {
37
38
  habit_dates: number[];
38
39
  possible_notification_descriptions: string[];
39
40
  min_days_per_week: number;
41
+ habit_type_id: number;
40
42
  }
41
43
  export interface PatchHabitRequest {
42
44
  partialHabit: Partial<BaseHabit>;
package/dist/habit.js CHANGED
@@ -66,6 +66,7 @@ exports.habitTimeToClockTime = {
66
66
  exports.habitTypesByTopicType = {
67
67
  Dating: [
68
68
  {
69
+ id: 1,
69
70
  name: 'Talk to new person',
70
71
  description: 'No pressure, just talk about whatever, no matter how long or short.',
71
72
  difficulty: 3,
@@ -75,15 +76,20 @@ exports.habitTypesByTopicType = {
75
76
  frequency: 'Daily',
76
77
  minDaysPerWeek: 5,
77
78
  possibleNotificationDescriptions: [
78
- 'Still haven’t talked to anyone new? Your dating life wont improve itself.',
79
- 'Another day, no balls to chat. Enjoy being alone forever.',
80
- 'Your social skills suck. Talk to a person or stay a useless reject.',
81
- 'Dont let your future self down. Talk to someone new today.'
79
+ 'STILL silent?... Your dating life’s DYING. 🐌',
80
+ 'Too SCARED to chat?... Enjoy rotting alone. 🐔',
81
+ 'You’re steps from LEGEND status... Say "Hey" now. 🔥',
82
+ 'Your games STRONG... Prove it with a convo. 🗣️',
83
+ 'Stat: 80% feel less lonely after a chat... Get talking! 💬',
84
+ 'Stat: 30% mood boost from a 5-minute convo... Start small! ⏳',
85
+ 'Challenge: Say "Hey" to 3 strangers today. You’re a social MACHINE. 🏆',
86
+ 'Challenge: Compliment someone’s style. Confidence LEVEL UP. 🔥'
82
87
  ]
83
88
  },
84
89
  {
90
+ id: 2,
85
91
  name: 'Ask for date/social media',
86
- description: 'Turn a conversation into an actual opportunity. Get her contact or set up a date.',
92
+ description: 'Turn a conversation into an opportunity. Get her contact or set up a date.',
87
93
  difficulty: 3,
88
94
  topicType: 'Dating',
89
95
  habitTime: 'Anytime',
@@ -91,14 +97,18 @@ exports.habitTypesByTopicType = {
91
97
  frequency: 'Daily',
92
98
  minDaysPerWeek: 3,
93
99
  possibleNotificationDescriptions: [
94
- 'No date yet? Keep stalling and stay a nobody.',
95
- 'You didn’t ask. Pathetic. Get her number or keep dreaming.',
96
- 'Your future self is pissed. Close the deal with a date already.',
97
- 'Still too scared to ask? Guess who’s not getting laid.',
98
- 'Don\'t let your boys down. Get her contact or a date today.'
100
+ 'NO MOVE yet?... Stay a NOBODY forever. 👻',
101
+ 'Still TOO SHY?... Guess who’s NOT getting laid. 😱',
102
+ 'She’s WAITING for your move... Ask her out, champ. 📅',
103
+ 'Your future self CLOSES deals... Get her number NOW. 📱',
104
+ 'Stat: 70% say "yes" to spontaneous plans... Go for it! 📅',
105
+ 'Stat: 40% confidence boost from asking for a number... Level UP. 💪',
106
+ 'Challenge: Ask for her socials in under 5 minutes. You’re SMOOTH. 🏆',
107
+ 'Challenge: Plan a coffee date for this week. Future you’s THRIVING. ☕'
99
108
  ]
100
109
  },
101
110
  {
111
+ id: 3,
102
112
  name: 'Grooming',
103
113
  description: 'Wear your best clothes, keep hair in check. Always.',
104
114
  difficulty: 1,
@@ -108,14 +118,18 @@ exports.habitTypesByTopicType = {
108
118
  frequency: 'Daily',
109
119
  minDaysPerWeek: 7,
110
120
  possibleNotificationDescriptions: [
111
- 'Looking like trash today? No girl’s touching that.',
112
- 'Sloppy hair, shitty clothes. Enjoy the friend zone, loser.',
113
- 'Your mom didn’t raise a slob. Clean up and look sharp.',
114
- 'Skipped grooming? Might as well quit dating now.',
115
- 'Dress like a king or stay a peasant. Your call.'
121
+ 'Looking ROUGH today?... No girl’s touching that. 🗑️',
122
+ 'Sloppy hair, BAD clothes... Friend zone’s calling, LOSER. 😒',
123
+ 'You’re a KING, not a mess... Dress like it. 👔',
124
+ 'Looking sharp, feeling SHARP... Grooming wins the game. 💈',
125
+ 'Stat: 50% more likely for well-groomed men to get a second date... FACT. 💈',
126
+ 'Stat: 35% self-esteem boost from dressing sharp... Own it. 👔',
127
+ 'Challenge: Wear your best fit today. You’re a STYLE icon. 🏆',
128
+ 'Challenge: Try a new grooming product. Future you’s FRESH. 🧼'
116
129
  ]
117
130
  },
118
131
  {
132
+ id: 4,
119
133
  name: 'Get new photos',
120
134
  description: 'Take new high-quality photos for dating apps.',
121
135
  difficulty: 2,
@@ -125,14 +139,18 @@ exports.habitTypesByTopicType = {
125
139
  frequency: 'Daily',
126
140
  minDaysPerWeek: 2,
127
141
  possibleNotificationDescriptions: [
128
- 'No new pics? Your dating profile\'s a graveyard.',
129
- 'Old photos still up? No wonder she’s swiping left.',
130
- 'Your future self deserves better. Snap some fresh shots.',
131
- 'Too lazy for new pics? Keep failing at this game.',
132
- 'No new shots? She’ll think you peaked at 16. Fix it.'
142
+ 'NO NEW pics?... Your profiles DEAD. ⚰️',
143
+ 'Old photos UP?... She’s swiping LEFT. 👎',
144
+ 'Your profile’s READY to pop... New pics, new matches. 📸',
145
+ 'Future you is a SWIPE magnet... Fresh shots incoming. 🧲',
146
+ 'Stat: 60% more matches with new photos... FACT. 📸',
147
+ 'Stat: 45% engagement boost from updated pics... Level UP. 🧲',
148
+ 'Challenge: Take 5 new shots today. Your profile’s POPPING. 🏆',
149
+ 'Challenge: Get a friend to snap your best angle. Future you’s a MAGNET. 📸'
133
150
  ]
134
151
  },
135
152
  {
153
+ id: 5,
136
154
  name: 'Send messages',
137
155
  description: 'Instead of asking boring questions, make more assumptions about the girl.',
138
156
  difficulty: 2,
@@ -142,16 +160,20 @@ exports.habitTypesByTopicType = {
142
160
  frequency: 'Daily',
143
161
  minDaysPerWeek: 5,
144
162
  possibleNotificationDescriptions: [
145
- 'No messages sent? Your game’s weaker than your biceps.',
146
- 'Still asking boring questions? She’s already ghosting you.',
147
- 'Your bloodline’s too strong for weak texts. Send a real one.',
148
- 'She’s losing interest. Call out something from her bio and send it now.',
149
- 'No text yet? Drop a line on her pic\'s vibe or kiss her reply goodbye.'
163
+ 'NO TEXTS sent?... Your game’s WEAKER than your biceps. 💪',
164
+ 'Still asking BORING questions?... She’s GHOSTING you. 👻',
165
+ 'Your texts can SLAY... Assume, don’t ask, king. 💬',
166
+ 'Future you OWNS the chat... Drop a slick line. 🔥',
167
+ 'Stat: 50% more replies from bold texts... FACT. 💬',
168
+ 'Stat: 40% engagement boost from assumptions in chats... Go for it! 🔥',
169
+ 'Challenge: Send a message with zero questions. You’re SMOOTH. 🏆',
170
+ 'Challenge: Compliment her vibe in your next text. Future you’s a CHARMER. 💬'
150
171
  ]
151
172
  }
152
173
  ],
153
174
  Sleep: [
154
175
  {
176
+ id: 6,
155
177
  name: 'No screens before bed',
156
178
  description: 'Put the phone away 1 hour before sleep. Read a book or journal instead.',
157
179
  difficulty: 3,
@@ -161,14 +183,18 @@ exports.habitTypesByTopicType = {
161
183
  frequency: 'Daily',
162
184
  minDaysPerWeek: 7,
163
185
  possibleNotificationDescriptions: [
164
- 'Still scrolling? Youll wake up a wrecked zombie.',
165
- 'Phone’s your bedtime pal? Enjoy sucking at life.',
166
- 'Your future self needs sleep. Ditch the screen now.',
167
- 'No book, no journal? Keep tanking your mojo.',
168
- 'Too weak to unplug? Stay a tired nobody.'
186
+ 'STILL scrolling?... Tomorrows RUINED. 🧟‍♂️',
187
+ 'Phone’s your bedtime buddy?... Enjoy being a WRECK. 📵',
188
+ 'You’re TOUGHER than the scroll... Shut it down tonight. 📵',
189
+ 'A sharp tomorrow starts here... Read instead. 📚',
190
+ 'Stat: 25% better sleep without screens before bed... FACT. 😴',
191
+ 'Stat: 68% stress reduction from reading... Wind down right. 📚',
192
+ 'Challenge: Leave your phone outside the bedroom tonight. You’re UNPLUGGED. 🏆',
193
+ 'Challenge: Read 10 pages before sleep. Future you’s SHARP. 📚'
169
194
  ]
170
195
  },
171
196
  {
197
+ id: 7,
172
198
  name: '> 7hr sleep',
173
199
  description: 'Go to bed and wake up at the same time. No excuses, even on weekends.',
174
200
  difficulty: 2,
@@ -178,14 +204,18 @@ exports.habitTypesByTopicType = {
178
204
  frequency: 'Daily',
179
205
  minDaysPerWeek: 7,
180
206
  possibleNotificationDescriptions: [
181
- 'Late again? Your sloppy ass is a walking mess.',
182
- 'No bedtime yet? Youre begging to have a heart attack.',
183
- 'Your ancestors thrived on routine. Get to bed on time.',
184
- 'Still up? Sleep now, your future self will thank you.',
185
- 'Can’t stick to a clock? Good luck winning at anything.'
207
+ 'LATE again?... You’re a walking DISASTER.',
208
+ 'NO BEDTIME yet?... Tomorrows already TRASHED. 💔',
209
+ 'Your brain’s BEGGING for routine... Hit the sack NOW. 🛏️',
210
+ 'Tomorrow’s edge starts TONIGHT... Bedtime’s calling. 💤',
211
+ 'Stat: 30% focus boost from 7+ hours of sleep... FACT.',
212
+ 'Stat: 40% less fatigue with consistent bedtime... Lock it in. 💤',
213
+ 'Challenge: Set a bedtime alarm for 10 PM. You’re DISCIPLINED. 🏆',
214
+ 'Challenge: Sleep 7 hours for 3 nights straight. Future you’s UNSTOPPABLE. 💤'
186
215
  ]
187
216
  },
188
217
  {
218
+ id: 8,
189
219
  name: 'No late-night snacking',
190
220
  description: 'Stop eating at least 2 hours before bed. Let your body rest, not digest.',
191
221
  difficulty: 2,
@@ -195,14 +225,18 @@ exports.habitTypesByTopicType = {
195
225
  frequency: 'Daily',
196
226
  minDaysPerWeek: 7,
197
227
  possibleNotificationDescriptions: [
198
- 'Stuffing your face late? Enjoy that bloated gut.',
199
- 'Snacking before bed? Kiss your gains goodbye, pig.',
200
- 'Your bloodline didn’t bloat. Cut the midnight crap.',
201
- 'Still eating? You’re a sluggish wreck by morning.',
202
- 'Can’t stop munching? Stay fat and useless then.'
228
+ 'Munching LATE?... Enjoy that BLOATED gut. 🤰',
229
+ 'Snacking before bed?... Kiss your gains GOODBYE. 🐷',
230
+ 'You’re above the MUNCHIES... Skip it, king. 🍽️',
231
+ 'Future you is CUT... No late snacks tonight. 💪',
232
+ 'Stat: 20% better sleep without late-night eating... FACT. 🍽️',
233
+ 'Stat: 15% metabolism boost from fasting before bed... Level UP. 💪',
234
+ 'Challenge: No food after 8 PM. You’re DISCIPLINED. 🏆',
235
+ 'Challenge: Drink water instead of snacking. Future you’s LEAN. 💧'
203
236
  ]
204
237
  },
205
238
  {
239
+ id: 9,
206
240
  name: 'No caffeine after 2pm',
207
241
  description: 'Cut all caffeine - coffee, pre-workout, energy drinks. Water only.',
208
242
  difficulty: 2,
@@ -212,14 +246,18 @@ exports.habitTypesByTopicType = {
212
246
  frequency: 'Daily',
213
247
  minDaysPerWeek: 7,
214
248
  possibleNotificationDescriptions: [
215
- 'Caffeine past 2? You’re a jittery disaster.',
216
- 'Still sipping energy drinks? Crash and burn, loser.',
217
- 'Your future self sleeps better. Drop the coffee now.',
218
- 'Late buzz again? Heart’s ticking toward failure. Quit it.',
219
- 'Too dumb to switch to water? Enjoy the insomnia.'
249
+ 'CAFFEINE past 2?... You’re a JITTERY wreck.',
250
+ 'Still sipping ENERGY drinks?... Crash hard, LOSER.',
251
+ 'You’re TOUGHER than coffee... Water wins, king. 💧',
252
+ 'Future you is CHILL... No caffeine after 2. 🧘‍♂️',
253
+ 'Stat: 30% deeper sleep without afternoon caffeine... FACT. ',
254
+ 'Stat: 50% better hydration from water over energy drinks... Level UP. 💧',
255
+ 'Challenge: Swap coffee for herbal tea after 2 PM. You’re CALM. 🏆',
256
+ 'Challenge: Go caffeine-free for 24 hours. Future you’s RESTED. 💤'
220
257
  ]
221
258
  },
222
259
  {
260
+ id: 10,
223
261
  name: 'Optimize your sleep environment',
224
262
  description: 'Cool room, blackout curtains, clean sheets, no electronics nearby.',
225
263
  difficulty: 1,
@@ -229,16 +267,20 @@ exports.habitTypesByTopicType = {
229
267
  frequency: 'Daily',
230
268
  minDaysPerWeek: 7,
231
269
  possibleNotificationDescriptions: [
232
- 'Room’s a dump? You’re sleeping in a pigsty.',
233
- 'No blackout curtains? Keep waking up a tired joke.',
234
- 'Your coffin’s comfier than this. Fix your bedroom now.',
235
- 'Electronics by the bed? Stay a restless nobody.',
236
- 'Too lazy to cool the room? Enjoy being a wreck.'
270
+ 'Room’s a MESS?... You’re sleeping in a DUMP. 🐖',
271
+ 'NO BLACKOUT curtains?... Wake up a tired JOKE. 😴',
272
+ 'You deserve a THRONE... Make your room elite. 🛏️',
273
+ 'Future you sleeps ROYAL... Optimize tonight. 👑',
274
+ 'Stat: 20% better sleep in a cool room... FACT. ❄️',
275
+ 'Stat: 15% melatonin boost from blackout curtains... Level UP. 🌙',
276
+ 'Challenge: Remove all electronics from your room. You’re UNPLUGGED. 🏆',
277
+ 'Challenge: Set your room temp to 19°C. Future you’s RESTED. 🛏️'
237
278
  ]
238
279
  }
239
280
  ],
240
281
  Fitness: [
241
282
  {
283
+ id: 11,
242
284
  name: 'Stay active',
243
285
  description: 'Go to the gym, do cardio or just move. No lazy days.',
244
286
  difficulty: 2,
@@ -248,14 +290,18 @@ exports.habitTypesByTopicType = {
248
290
  frequency: 'Daily',
249
291
  minDaysPerWeek: 7,
250
292
  possibleNotificationDescriptions: [
251
- 'No workout today? You’re a fat mess.',
252
- 'Still sitting on your a*s? Softness doesn’t win.',
253
- 'Your bloodline was tough. Move or shame them.',
254
- 'Skipped the gym? Keep being a weak nobody.',
255
- 'Too lazy to sweat? Enjoy the couch potato life.'
293
+ 'NO MOVEMENT today?... You’re getting FAT. 🏋️‍♂️',
294
+ 'Still SITTING there?... Softness WINS. 🛋️',
295
+ 'You’re built to DOMINATE... Get up now. 🏃‍♂️',
296
+ 'Sweat’s carving your GAINS... Hit it today. 💪',
297
+ 'Stat: 200 calories burned in 20 minutes of movement... FACT. 🏃‍♂️',
298
+ 'Stat: 30% energy boost from daily exercise... Level UP. ⚡',
299
+ 'Challenge: Do 20 push-ups right now. You’re a BEAST. 🏆',
300
+ 'Challenge: Walk 10,000 steps today. Future you’s RIPPED. 🚶‍♂️'
256
301
  ]
257
302
  },
258
303
  {
304
+ id: 12,
259
305
  name: 'No processed sugars',
260
306
  description: 'Skip added sugars. Stick to natural sources like fruit.',
261
307
  difficulty: 3,
@@ -265,14 +311,18 @@ exports.habitTypesByTopicType = {
265
311
  frequency: 'Daily',
266
312
  minDaysPerWeek: 7,
267
313
  possibleNotificationDescriptions: [
268
- 'Sugar binge again? Diabetes is your next date.',
269
- 'Candy over fruit? Heart attacks loading, moron.',
270
- 'Your future self’s fit. Ditch the junk now.',
271
- 'Still eating crap? Enjoy being fat f*ck.',
272
- 'Too weak for clean food? Stay a flabby reject.'
314
+ 'SUGAR binge again?... DIABETES is knocking. 🍭',
315
+ 'Candy over FRUIT?... Youre a ticking BOMB. 🍎',
316
+ 'You’re forged for BETTER... Go clean today. 🍎',
317
+ 'Real food SCULPTS you... Start now. 🥗',
318
+ 'Stat: 10% body fat drop in a month from cutting sugar... FACT. 🍎',
319
+ 'Stat: 20% faster recovery with natural sugars... Level UP. 🥗',
320
+ 'Challenge: No added sugar for 24 hours. You’re DISCIPLINED. 🏆',
321
+ 'Challenge: Swap candy for fruit today. Future you’s LEAN. 🍇'
273
322
  ]
274
323
  },
275
324
  {
325
+ id: 13,
276
326
  name: 'No alcohol',
277
327
  description: 'Stay 100% alcohol-free. No exceptions, no slip-ups.',
278
328
  difficulty: 2,
@@ -282,16 +332,20 @@ exports.habitTypesByTopicType = {
282
332
  frequency: 'Daily',
283
333
  minDaysPerWeek: 7,
284
334
  possibleNotificationDescriptions: [
285
- 'Booze today? Enjoy your beer gut.',
286
- 'Drinking again? You’re a sloppy disaster.',
287
- 'Your ancestors didn’t need vodka shots. Quit now.',
288
- 'Sipped a beer? Your liver is rotting away.',
289
- 'Too soft to go dry? Your gut’s a ticking bomb. Quit now.'
335
+ 'BOOZE today?... Enjoy your BEER belly. 🍺',
336
+ 'DRINKING again?... You’re a sloppy MESS. 🍷',
337
+ 'You’re sculpted for GREATNESS... Stay dry. 🚫',
338
+ 'Clarity SHAPES your body... Skip the buzz. 🧠',
339
+ 'Stat: 25% faster muscle recovery without alcohol... FACT. 🍺',
340
+ 'Stat: 15% testosterone boost from staying dry... Level UP. 💪',
341
+ 'Challenge: Go alcohol-free for 48 hours. You’re UNBREAKABLE. 🏆',
342
+ 'Challenge: Swap beer for water tonight. Future you’s STRONG. 💧'
290
343
  ]
291
344
  },
292
345
  {
346
+ id: 14,
293
347
  name: 'Weigh yourself',
294
- description: 'Track weight your weight, so you know you\'re moving in the right direction.',
348
+ description: 'Track your weight to know youre moving in the right direction.',
295
349
  difficulty: 2,
296
350
  topicType: 'Fitness',
297
351
  habitTime: 'Morning',
@@ -299,14 +353,18 @@ exports.habitTypesByTopicType = {
299
353
  frequency: 'Daily',
300
354
  minDaysPerWeek: 7,
301
355
  possibleNotificationDescriptions: [
302
- 'No weigh-in? Blind to how fat youre getting?',
303
- 'Skipping the scale? Your bulk’s out of control.',
304
- 'Your future self tracks it—step up and weigh in.',
305
- 'Too scared to check? Keep guessing your failure.',
306
- 'No numbers today? Enjoy the clueless bloat.'
356
+ 'Still dodging the scale?... Ignorance isn’t bliss, its FAT. ⚖️',
357
+ 'Afraid of the numbers?... Your gains are just guesses. 📈',
358
+ 'Kings face the truth... Step on the scale. ⚖️',
359
+ 'Precision builds champions... Log your weight now. 📈',
360
+ 'Stat: 40% higher success rate with weight tracking... FACT. ⚖️',
361
+ 'Stat: 20% less overeating from daily weighing... Level UP. 📈',
362
+ 'Challenge: Weigh in 3 days straight. You’re DISCIPLINED. 🏆',
363
+ 'Challenge: Log your weight before breakfast. Future you’s ON POINT. ⏰'
307
364
  ]
308
365
  },
309
366
  {
367
+ id: 15,
310
368
  name: 'Meal prep',
311
369
  description: 'Cook meals in bulk. No excuses for missing protein or eating junk.',
312
370
  difficulty: 3,
@@ -316,16 +374,20 @@ exports.habitTypesByTopicType = {
316
374
  frequency: 'Daily',
317
375
  minDaysPerWeek: 2,
318
376
  possibleNotificationDescriptions: [
319
- 'No prep today? Youre a takeout-fed slob.',
320
- 'Skipped cooking? Enjoy your weak-ass frame.',
321
- 'No meals ready? Obesity’s your future—cook now.',
322
- 'Still eating junk? No muscle, no glory.',
323
- 'Too lazy to cook? Stay scrawny and broke.'
377
+ 'Takeout again?... Your bodys a JUNKYARD. 🍱',
378
+ 'Too lazy to cook?... Your muscles are STARVING. 🍳',
379
+ 'Beasts dominate the kitchen... Prep your power. 🍳',
380
+ 'Fuel your empire... Meal prep for gains. 💪',
381
+ 'Stat: 30% savings on food costs with meal prepping... FACT. 🍱',
382
+ 'Stat: 25% more protein intake from prepped meals... Level UP. 💪',
383
+ 'Challenge: Prep 3 meals today. You’re a CHEF. 🏆',
384
+ 'Challenge: Cook a new recipe this week. Future you’s STACKED. 🍳'
324
385
  ]
325
386
  }
326
387
  ],
327
388
  'Side Hustle': [
328
389
  {
390
+ id: 16,
329
391
  name: 'Dedicate 2 hours to hustle',
330
392
  description: '2 focused hours on your hustle. No distractions, no excuses.',
331
393
  difficulty: 3,
@@ -335,14 +397,18 @@ exports.habitTypesByTopicType = {
335
397
  frequency: 'Daily',
336
398
  minDaysPerWeek: 7,
337
399
  possibleNotificationDescriptions: [
338
- 'No hustle time today? You’re a broke-ass joke.',
339
- 'Skipped your 2 hours? Keep begging for scraps.',
340
- 'Your future self’s rich. Put in the work now.',
341
- 'Distracted again? Retire broke at 80. Or take action now.',
342
- 'Too soft for focus? Die with regrets, loser.'
400
+ 'NO HUSTLE today?... You’re a BROKE joke. 💸',
401
+ 'SKIPPED your 2 hours?... Keep begging for PENNIES.',
402
+ 'You’re destined to RISE... Lock in 2 hours. 💼',
403
+ 'Wealth’s knocking TODAY... Answer with effort. 💰',
404
+ 'Stat: 40% income boost from 2 hours daily... FACT. 💸',
405
+ 'Stat: 50% productivity gain from focused work... Level UP. ⏳',
406
+ 'Challenge: Finish one task in 2 hours. You’re a MACHINE. 🏆',
407
+ 'Challenge: No distractions for 120 minutes. Future you’s WEALTHY. 💰'
343
408
  ]
344
409
  },
345
410
  {
411
+ id: 17,
346
412
  name: 'Client outreach',
347
413
  description: 'Contact potential clients or partners.',
348
414
  difficulty: 2,
@@ -352,16 +418,20 @@ exports.habitTypesByTopicType = {
352
418
  frequency: 'Daily',
353
419
  minDaysPerWeek: 3,
354
420
  possibleNotificationDescriptions: [
355
- 'No outreach yet? Your hustle’s dead in the water.',
356
- 'Too shy to reach out? Stay broke and forgotten.',
357
- 'Your bloodline built empires. Message someone now.',
358
- 'Still silent? No money, no momentum.',
359
- 'Can’t pitch today? Enjoy the empty pockets.'
421
+ 'NO OUTREACH yet?... Your hustle’s DEAD quiet. 📞',
422
+ 'Too SHY to pitch?... Stay BROKE forever. 🤐',
423
+ 'You’re wired to CLOSE... Hit up a client. 📞',
424
+ 'Connections FUEL your rise... Make one today. 🤝',
425
+ 'Stat: 35% client acquisition boost from outreach... FACT. 📞',
426
+ 'Stat: 20% conversion rate from cold pitches... Level UP. 🤝',
427
+ 'Challenge: Send 3 outreach messages today. You’re a CLOSER. 🏆',
428
+ 'Challenge: Pitch a new client this week. Future you’s STACKED. 💼'
360
429
  ]
361
430
  },
362
431
  {
432
+ id: 18,
363
433
  name: 'Share your journey',
364
- description: 'Social media post, blog, tweet, vlog or message someone.',
434
+ description: 'Social media post, blog, tweet, vlog, or message someone.',
365
435
  difficulty: 2,
366
436
  topicType: 'Side Hustle',
367
437
  habitTime: 'Evening',
@@ -369,14 +439,18 @@ exports.habitTypesByTopicType = {
369
439
  frequency: 'Daily',
370
440
  minDaysPerWeek: 7,
371
441
  possibleNotificationDescriptions: [
372
- 'No post today? Your hustle’s a ghost town.',
373
- 'Nothing shared? You’re a lazy nobody.',
374
- 'Your future selfs a boss. Post something worth a damn.',
375
- 'Too lame to share? Keep fading into nothing.',
376
- 'Skipped content? Rot broke in obscurity—post now.'
442
+ 'NO POST today?... Your hustle’s INVISIBLE. 👻',
443
+ 'NOTHING shared?... You’re a LAZY shadow. 😴',
444
+ 'Youre a VOICE... Share your grind, king. 📸',
445
+ 'Future you INSPIRES... Start with today’s post. 🌟',
446
+ 'Stat: 45% engagement boost from journey sharing... FACT. 📸',
447
+ 'Stat: 30% follower growth from consistent posting... Level UP. 🌟',
448
+ 'Challenge: Post one update today. You’re a CREATOR. 🏆',
449
+ 'Challenge: Share a behind-the-scenes moment. Future you’s INFLUENTIAL. 📸'
377
450
  ]
378
451
  },
379
452
  {
453
+ id: 19,
380
454
  name: 'Get real feedback',
381
455
  description: 'Ask a customer or friend what they’d change about your hustle.',
382
456
  difficulty: 3,
@@ -386,14 +460,18 @@ exports.habitTypesByTopicType = {
386
460
  frequency: 'Daily',
387
461
  minDaysPerWeek: 2,
388
462
  possibleNotificationDescriptions: [
389
- 'No feedback yet? Your hustle’s trash and you’re blind.',
390
- 'Too scared to ask? Keep failing in silence, chump.',
391
- 'Your graves waiting. Get input or flop forever.',
392
- 'Still guessing? No critique, no growth.',
393
- 'Can’t face the truth? Stay stuck and broke.'
463
+ 'NO FEEDBACK yet?... Your hustle’s TRASH unseen. 🗑️',
464
+ 'Too SCARED to ask?... Keep failing BLIND. 🤐',
465
+ 'Youre built to GROW... Seek truth, king. 🧠',
466
+ 'Future you is SHARP... Ask for feedback now. 🗣️',
467
+ 'Stat: 40% mistake reduction from feedback loops... FACT. 🧠',
468
+ 'Stat: 30% product quality boost from input... Level UP. 📈',
469
+ 'Challenge: Ask one person for feedback today. You’re WISE. 🏆',
470
+ 'Challenge: Implement one suggestion this week. Future you’s SHARP. 🗣️'
394
471
  ]
395
472
  },
396
473
  {
474
+ id: 20,
397
475
  name: 'Study competitors',
398
476
  description: 'Analyze what your rivals are doing, see what works, what not.',
399
477
  difficulty: 3,
@@ -403,11 +481,14 @@ exports.habitTypesByTopicType = {
403
481
  frequency: 'Daily',
404
482
  minDaysPerWeek: 3,
405
483
  possibleNotificationDescriptions: [
406
- 'No competitor check? They’re crushing you blind.',
407
- 'Skipped studying? You’re a sitting duck, wake up.',
408
- 'Your future self outsmarts them. Scope rivals now.',
409
- 'Too lazy to research? Regrets will bury you broke.',
410
- 'Not watching them? They’ll bury you. Lock in today.'
484
+ 'NO COMPETITOR check?... They’re crushing you BLIND. 👀',
485
+ 'SKIPPED studying?... You’re a sitting DUCK. 🦆',
486
+ 'You’re a HUNTER... Study their moves, king. 🕵️‍♂️',
487
+ 'Future you LEADS... Start with rival intel. 📊',
488
+ 'Stat: 35% strategy boost from competitor analysis... FACT. 🕵️‍♂️',
489
+ 'Stat: 25% fewer market mistakes from knowing rivals... Level UP. 📊',
490
+ 'Challenge: Analyze one competitor today. You’re a STRATEGIST. 🏆',
491
+ 'Challenge: Find one rival’s weakness. Future you’s AHEAD. 🧠'
411
492
  ]
412
493
  }
413
494
  ]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hy-capital/api-habit-tracker-types",
3
- "version": "1.0.58",
3
+ "version": "1.0.60",
4
4
  "main": "dist/index.js",
5
5
  "license": "MIT",
6
6
  "types": "dist/index.d.ts",
package/src/habit.ts CHANGED
@@ -52,6 +52,7 @@ export const ProgramObjectivesByTopic: Record<TopicType, string[]> = {
52
52
  };
53
53
 
54
54
  export interface HabitType {
55
+ id: number;
55
56
  name: string;
56
57
  habitTime: HabitTime;
57
58
  topicType: TopicType;
@@ -81,6 +82,7 @@ export interface BaseHabit {
81
82
  habit_dates: number[]; //TODO: remove
82
83
  possible_notification_descriptions: string[];
83
84
  min_days_per_week: number;
85
+ habit_type_id: number;
84
86
  }
85
87
 
86
88
  export interface PatchHabitRequest {
@@ -162,6 +164,7 @@ export const habitTimeToClockTime: Record<HabitTime, { hour: number, minute: num
162
164
  export const habitTypesByTopicType: Record<TopicType, HabitType[]> = {
163
165
  Dating: [
164
166
  {
167
+ id: 1,
165
168
  name: 'Talk to new person',
166
169
  description: 'No pressure, just talk about whatever, no matter how long or short.',
167
170
  difficulty: 3,
@@ -171,15 +174,20 @@ export const habitTypesByTopicType: Record<TopicType, HabitType[]> = {
171
174
  frequency: 'Daily',
172
175
  minDaysPerWeek: 5,
173
176
  possibleNotificationDescriptions: [
174
- 'Still haven’t talked to anyone new? Your dating life wont improve itself.',
175
- 'Another day, no balls to chat. Enjoy being alone forever.',
176
- 'Your social skills suck. Talk to a person or stay a useless reject.',
177
- 'Dont let your future self down. Talk to someone new today.'
177
+ 'STILL silent?... Your dating life’s DYING. 🐌',
178
+ 'Too SCARED to chat?... Enjoy rotting alone. 🐔',
179
+ 'You’re steps from LEGEND status... Say "Hey" now. 🔥',
180
+ 'Your games STRONG... Prove it with a convo. 🗣️',
181
+ 'Stat: 80% feel less lonely after a chat... Get talking! 💬',
182
+ 'Stat: 30% mood boost from a 5-minute convo... Start small! ⏳',
183
+ 'Challenge: Say "Hey" to 3 strangers today. You’re a social MACHINE. 🏆',
184
+ 'Challenge: Compliment someone’s style. Confidence LEVEL UP. 🔥'
178
185
  ]
179
186
  },
180
187
  {
188
+ id: 2,
181
189
  name: 'Ask for date/social media',
182
- description: 'Turn a conversation into an actual opportunity. Get her contact or set up a date.',
190
+ description: 'Turn a conversation into an opportunity. Get her contact or set up a date.',
183
191
  difficulty: 3,
184
192
  topicType: 'Dating',
185
193
  habitTime: 'Anytime',
@@ -187,14 +195,18 @@ export const habitTypesByTopicType: Record<TopicType, HabitType[]> = {
187
195
  frequency: 'Daily',
188
196
  minDaysPerWeek: 3,
189
197
  possibleNotificationDescriptions: [
190
- 'No date yet? Keep stalling and stay a nobody.',
191
- 'You didn’t ask. Pathetic. Get her number or keep dreaming.',
192
- 'Your future self is pissed. Close the deal with a date already.',
193
- 'Still too scared to ask? Guess who’s not getting laid.',
194
- 'Don\'t let your boys down. Get her contact or a date today.'
198
+ 'NO MOVE yet?... Stay a NOBODY forever. 👻',
199
+ 'Still TOO SHY?... Guess who’s NOT getting laid. 😱',
200
+ 'She’s WAITING for your move... Ask her out, champ. 📅',
201
+ 'Your future self CLOSES deals... Get her number NOW. 📱',
202
+ 'Stat: 70% say "yes" to spontaneous plans... Go for it! 📅',
203
+ 'Stat: 40% confidence boost from asking for a number... Level UP. 💪',
204
+ 'Challenge: Ask for her socials in under 5 minutes. You’re SMOOTH. 🏆',
205
+ 'Challenge: Plan a coffee date for this week. Future you’s THRIVING. ☕'
195
206
  ]
196
207
  },
197
208
  {
209
+ id: 3,
198
210
  name: 'Grooming',
199
211
  description: 'Wear your best clothes, keep hair in check. Always.',
200
212
  difficulty: 1,
@@ -204,14 +216,18 @@ export const habitTypesByTopicType: Record<TopicType, HabitType[]> = {
204
216
  frequency: 'Daily',
205
217
  minDaysPerWeek: 7,
206
218
  possibleNotificationDescriptions: [
207
- 'Looking like trash today? No girl’s touching that.',
208
- 'Sloppy hair, shitty clothes. Enjoy the friend zone, loser.',
209
- 'Your mom didn’t raise a slob. Clean up and look sharp.',
210
- 'Skipped grooming? Might as well quit dating now.',
211
- 'Dress like a king or stay a peasant. Your call.'
219
+ 'Looking ROUGH today?... No girl’s touching that. 🗑️',
220
+ 'Sloppy hair, BAD clothes... Friend zone’s calling, LOSER. 😒',
221
+ 'You’re a KING, not a mess... Dress like it. 👔',
222
+ 'Looking sharp, feeling SHARP... Grooming wins the game. 💈',
223
+ 'Stat: 50% more likely for well-groomed men to get a second date... FACT. 💈',
224
+ 'Stat: 35% self-esteem boost from dressing sharp... Own it. 👔',
225
+ 'Challenge: Wear your best fit today. You’re a STYLE icon. 🏆',
226
+ 'Challenge: Try a new grooming product. Future you’s FRESH. 🧼'
212
227
  ]
213
228
  },
214
229
  {
230
+ id: 4,
215
231
  name: 'Get new photos',
216
232
  description: 'Take new high-quality photos for dating apps.',
217
233
  difficulty: 2,
@@ -221,14 +237,18 @@ export const habitTypesByTopicType: Record<TopicType, HabitType[]> = {
221
237
  frequency: 'Daily',
222
238
  minDaysPerWeek: 2,
223
239
  possibleNotificationDescriptions: [
224
- 'No new pics? Your dating profile\'s a graveyard.',
225
- 'Old photos still up? No wonder she’s swiping left.',
226
- 'Your future self deserves better. Snap some fresh shots.',
227
- 'Too lazy for new pics? Keep failing at this game.',
228
- 'No new shots? She’ll think you peaked at 16. Fix it.'
240
+ 'NO NEW pics?... Your profiles DEAD. ⚰️',
241
+ 'Old photos UP?... She’s swiping LEFT. 👎',
242
+ 'Your profile’s READY to pop... New pics, new matches. 📸',
243
+ 'Future you is a SWIPE magnet... Fresh shots incoming. 🧲',
244
+ 'Stat: 60% more matches with new photos... FACT. 📸',
245
+ 'Stat: 45% engagement boost from updated pics... Level UP. 🧲',
246
+ 'Challenge: Take 5 new shots today. Your profile’s POPPING. 🏆',
247
+ 'Challenge: Get a friend to snap your best angle. Future you’s a MAGNET. 📸'
229
248
  ]
230
249
  },
231
250
  {
251
+ id: 5,
232
252
  name: 'Send messages',
233
253
  description: 'Instead of asking boring questions, make more assumptions about the girl.',
234
254
  difficulty: 2,
@@ -238,16 +258,20 @@ export const habitTypesByTopicType: Record<TopicType, HabitType[]> = {
238
258
  frequency: 'Daily',
239
259
  minDaysPerWeek: 5,
240
260
  possibleNotificationDescriptions: [
241
- 'No messages sent? Your game’s weaker than your biceps.',
242
- 'Still asking boring questions? She’s already ghosting you.',
243
- 'Your bloodline’s too strong for weak texts. Send a real one.',
244
- 'She’s losing interest. Call out something from her bio and send it now.',
245
- 'No text yet? Drop a line on her pic\'s vibe or kiss her reply goodbye.'
261
+ 'NO TEXTS sent?... Your game’s WEAKER than your biceps. 💪',
262
+ 'Still asking BORING questions?... She’s GHOSTING you. 👻',
263
+ 'Your texts can SLAY... Assume, don’t ask, king. 💬',
264
+ 'Future you OWNS the chat... Drop a slick line. 🔥',
265
+ 'Stat: 50% more replies from bold texts... FACT. 💬',
266
+ 'Stat: 40% engagement boost from assumptions in chats... Go for it! 🔥',
267
+ 'Challenge: Send a message with zero questions. You’re SMOOTH. 🏆',
268
+ 'Challenge: Compliment her vibe in your next text. Future you’s a CHARMER. 💬'
246
269
  ]
247
270
  }
248
271
  ],
249
272
  Sleep: [
250
273
  {
274
+ id: 6,
251
275
  name: 'No screens before bed',
252
276
  description: 'Put the phone away 1 hour before sleep. Read a book or journal instead.',
253
277
  difficulty: 3,
@@ -257,14 +281,18 @@ export const habitTypesByTopicType: Record<TopicType, HabitType[]> = {
257
281
  frequency: 'Daily',
258
282
  minDaysPerWeek: 7,
259
283
  possibleNotificationDescriptions: [
260
- 'Still scrolling? Youll wake up a wrecked zombie.',
261
- 'Phone’s your bedtime pal? Enjoy sucking at life.',
262
- 'Your future self needs sleep. Ditch the screen now.',
263
- 'No book, no journal? Keep tanking your mojo.',
264
- 'Too weak to unplug? Stay a tired nobody.'
284
+ 'STILL scrolling?... Tomorrows RUINED. 🧟‍♂️',
285
+ 'Phone’s your bedtime buddy?... Enjoy being a WRECK. 📵',
286
+ 'You’re TOUGHER than the scroll... Shut it down tonight. 📵',
287
+ 'A sharp tomorrow starts here... Read instead. 📚',
288
+ 'Stat: 25% better sleep without screens before bed... FACT. 😴',
289
+ 'Stat: 68% stress reduction from reading... Wind down right. 📚',
290
+ 'Challenge: Leave your phone outside the bedroom tonight. You’re UNPLUGGED. 🏆',
291
+ 'Challenge: Read 10 pages before sleep. Future you’s SHARP. 📚'
265
292
  ]
266
293
  },
267
294
  {
295
+ id: 7,
268
296
  name: '> 7hr sleep',
269
297
  description: 'Go to bed and wake up at the same time. No excuses, even on weekends.',
270
298
  difficulty: 2,
@@ -274,14 +302,18 @@ export const habitTypesByTopicType: Record<TopicType, HabitType[]> = {
274
302
  frequency: 'Daily',
275
303
  minDaysPerWeek: 7,
276
304
  possibleNotificationDescriptions: [
277
- 'Late again? Your sloppy ass is a walking mess.',
278
- 'No bedtime yet? Youre begging to have a heart attack.',
279
- 'Your ancestors thrived on routine. Get to bed on time.',
280
- 'Still up? Sleep now, your future self will thank you.',
281
- 'Can’t stick to a clock? Good luck winning at anything.'
305
+ 'LATE again?... You’re a walking DISASTER.',
306
+ 'NO BEDTIME yet?... Tomorrows already TRASHED. 💔',
307
+ 'Your brain’s BEGGING for routine... Hit the sack NOW. 🛏️',
308
+ 'Tomorrow’s edge starts TONIGHT... Bedtime’s calling. 💤',
309
+ 'Stat: 30% focus boost from 7+ hours of sleep... FACT.',
310
+ 'Stat: 40% less fatigue with consistent bedtime... Lock it in. 💤',
311
+ 'Challenge: Set a bedtime alarm for 10 PM. You’re DISCIPLINED. 🏆',
312
+ 'Challenge: Sleep 7 hours for 3 nights straight. Future you’s UNSTOPPABLE. 💤'
282
313
  ]
283
314
  },
284
315
  {
316
+ id: 8,
285
317
  name: 'No late-night snacking',
286
318
  description: 'Stop eating at least 2 hours before bed. Let your body rest, not digest.',
287
319
  difficulty: 2,
@@ -291,14 +323,18 @@ export const habitTypesByTopicType: Record<TopicType, HabitType[]> = {
291
323
  frequency: 'Daily',
292
324
  minDaysPerWeek: 7,
293
325
  possibleNotificationDescriptions: [
294
- 'Stuffing your face late? Enjoy that bloated gut.',
295
- 'Snacking before bed? Kiss your gains goodbye, pig.',
296
- 'Your bloodline didn’t bloat. Cut the midnight crap.',
297
- 'Still eating? You’re a sluggish wreck by morning.',
298
- 'Can’t stop munching? Stay fat and useless then.'
326
+ 'Munching LATE?... Enjoy that BLOATED gut. 🤰',
327
+ 'Snacking before bed?... Kiss your gains GOODBYE. 🐷',
328
+ 'You’re above the MUNCHIES... Skip it, king. 🍽️',
329
+ 'Future you is CUT... No late snacks tonight. 💪',
330
+ 'Stat: 20% better sleep without late-night eating... FACT. 🍽️',
331
+ 'Stat: 15% metabolism boost from fasting before bed... Level UP. 💪',
332
+ 'Challenge: No food after 8 PM. You’re DISCIPLINED. 🏆',
333
+ 'Challenge: Drink water instead of snacking. Future you’s LEAN. 💧'
299
334
  ]
300
335
  },
301
336
  {
337
+ id: 9,
302
338
  name: 'No caffeine after 2pm',
303
339
  description: 'Cut all caffeine - coffee, pre-workout, energy drinks. Water only.',
304
340
  difficulty: 2,
@@ -308,14 +344,18 @@ export const habitTypesByTopicType: Record<TopicType, HabitType[]> = {
308
344
  frequency: 'Daily',
309
345
  minDaysPerWeek: 7,
310
346
  possibleNotificationDescriptions: [
311
- 'Caffeine past 2? You’re a jittery disaster.',
312
- 'Still sipping energy drinks? Crash and burn, loser.',
313
- 'Your future self sleeps better. Drop the coffee now.',
314
- 'Late buzz again? Heart’s ticking toward failure. Quit it.',
315
- 'Too dumb to switch to water? Enjoy the insomnia.'
347
+ 'CAFFEINE past 2?... You’re a JITTERY wreck.',
348
+ 'Still sipping ENERGY drinks?... Crash hard, LOSER.',
349
+ 'You’re TOUGHER than coffee... Water wins, king. 💧',
350
+ 'Future you is CHILL... No caffeine after 2. 🧘‍♂️',
351
+ 'Stat: 30% deeper sleep without afternoon caffeine... FACT. ',
352
+ 'Stat: 50% better hydration from water over energy drinks... Level UP. 💧',
353
+ 'Challenge: Swap coffee for herbal tea after 2 PM. You’re CALM. 🏆',
354
+ 'Challenge: Go caffeine-free for 24 hours. Future you’s RESTED. 💤'
316
355
  ]
317
356
  },
318
357
  {
358
+ id: 10,
319
359
  name: 'Optimize your sleep environment',
320
360
  description: 'Cool room, blackout curtains, clean sheets, no electronics nearby.',
321
361
  difficulty: 1,
@@ -325,16 +365,20 @@ export const habitTypesByTopicType: Record<TopicType, HabitType[]> = {
325
365
  frequency: 'Daily',
326
366
  minDaysPerWeek: 7,
327
367
  possibleNotificationDescriptions: [
328
- 'Room’s a dump? You’re sleeping in a pigsty.',
329
- 'No blackout curtains? Keep waking up a tired joke.',
330
- 'Your coffin’s comfier than this. Fix your bedroom now.',
331
- 'Electronics by the bed? Stay a restless nobody.',
332
- 'Too lazy to cool the room? Enjoy being a wreck.'
368
+ 'Room’s a MESS?... You’re sleeping in a DUMP. 🐖',
369
+ 'NO BLACKOUT curtains?... Wake up a tired JOKE. 😴',
370
+ 'You deserve a THRONE... Make your room elite. 🛏️',
371
+ 'Future you sleeps ROYAL... Optimize tonight. 👑',
372
+ 'Stat: 20% better sleep in a cool room... FACT. ❄️',
373
+ 'Stat: 15% melatonin boost from blackout curtains... Level UP. 🌙',
374
+ 'Challenge: Remove all electronics from your room. You’re UNPLUGGED. 🏆',
375
+ 'Challenge: Set your room temp to 19°C. Future you’s RESTED. 🛏️'
333
376
  ]
334
377
  }
335
378
  ],
336
379
  Fitness: [
337
380
  {
381
+ id: 11,
338
382
  name: 'Stay active',
339
383
  description: 'Go to the gym, do cardio or just move. No lazy days.',
340
384
  difficulty: 2,
@@ -344,14 +388,18 @@ export const habitTypesByTopicType: Record<TopicType, HabitType[]> = {
344
388
  frequency: 'Daily',
345
389
  minDaysPerWeek: 7,
346
390
  possibleNotificationDescriptions: [
347
- 'No workout today? You’re a fat mess.',
348
- 'Still sitting on your a*s? Softness doesn’t win.',
349
- 'Your bloodline was tough. Move or shame them.',
350
- 'Skipped the gym? Keep being a weak nobody.',
351
- 'Too lazy to sweat? Enjoy the couch potato life.'
391
+ 'NO MOVEMENT today?... You’re getting FAT. 🏋️‍♂️',
392
+ 'Still SITTING there?... Softness WINS. 🛋️',
393
+ 'You’re built to DOMINATE... Get up now. 🏃‍♂️',
394
+ 'Sweat’s carving your GAINS... Hit it today. 💪',
395
+ 'Stat: 200 calories burned in 20 minutes of movement... FACT. 🏃‍♂️',
396
+ 'Stat: 30% energy boost from daily exercise... Level UP. ⚡',
397
+ 'Challenge: Do 20 push-ups right now. You’re a BEAST. 🏆',
398
+ 'Challenge: Walk 10,000 steps today. Future you’s RIPPED. 🚶‍♂️'
352
399
  ]
353
400
  },
354
401
  {
402
+ id: 12,
355
403
  name: 'No processed sugars',
356
404
  description: 'Skip added sugars. Stick to natural sources like fruit.',
357
405
  difficulty: 3,
@@ -361,14 +409,18 @@ export const habitTypesByTopicType: Record<TopicType, HabitType[]> = {
361
409
  frequency: 'Daily',
362
410
  minDaysPerWeek: 7,
363
411
  possibleNotificationDescriptions: [
364
- 'Sugar binge again? Diabetes is your next date.',
365
- 'Candy over fruit? Heart attacks loading, moron.',
366
- 'Your future self’s fit. Ditch the junk now.',
367
- 'Still eating crap? Enjoy being fat f*ck.',
368
- 'Too weak for clean food? Stay a flabby reject.'
412
+ 'SUGAR binge again?... DIABETES is knocking. 🍭',
413
+ 'Candy over FRUIT?... Youre a ticking BOMB. 🍎',
414
+ 'You’re forged for BETTER... Go clean today. 🍎',
415
+ 'Real food SCULPTS you... Start now. 🥗',
416
+ 'Stat: 10% body fat drop in a month from cutting sugar... FACT. 🍎',
417
+ 'Stat: 20% faster recovery with natural sugars... Level UP. 🥗',
418
+ 'Challenge: No added sugar for 24 hours. You’re DISCIPLINED. 🏆',
419
+ 'Challenge: Swap candy for fruit today. Future you’s LEAN. 🍇'
369
420
  ]
370
421
  },
371
422
  {
423
+ id: 13,
372
424
  name: 'No alcohol',
373
425
  description: 'Stay 100% alcohol-free. No exceptions, no slip-ups.',
374
426
  difficulty: 2,
@@ -378,16 +430,20 @@ export const habitTypesByTopicType: Record<TopicType, HabitType[]> = {
378
430
  frequency: 'Daily',
379
431
  minDaysPerWeek: 7,
380
432
  possibleNotificationDescriptions: [
381
- 'Booze today? Enjoy your beer gut.',
382
- 'Drinking again? You’re a sloppy disaster.',
383
- 'Your ancestors didn’t need vodka shots. Quit now.',
384
- 'Sipped a beer? Your liver is rotting away.',
385
- 'Too soft to go dry? Your gut’s a ticking bomb. Quit now.'
433
+ 'BOOZE today?... Enjoy your BEER belly. 🍺',
434
+ 'DRINKING again?... You’re a sloppy MESS. 🍷',
435
+ 'You’re sculpted for GREATNESS... Stay dry. 🚫',
436
+ 'Clarity SHAPES your body... Skip the buzz. 🧠',
437
+ 'Stat: 25% faster muscle recovery without alcohol... FACT. 🍺',
438
+ 'Stat: 15% testosterone boost from staying dry... Level UP. 💪',
439
+ 'Challenge: Go alcohol-free for 48 hours. You’re UNBREAKABLE. 🏆',
440
+ 'Challenge: Swap beer for water tonight. Future you’s STRONG. 💧'
386
441
  ]
387
442
  },
388
443
  {
444
+ id: 14,
389
445
  name: 'Weigh yourself',
390
- description: 'Track weight your weight, so you know you\'re moving in the right direction.',
446
+ description: 'Track your weight to know youre moving in the right direction.',
391
447
  difficulty: 2,
392
448
  topicType: 'Fitness',
393
449
  habitTime: 'Morning',
@@ -395,14 +451,18 @@ export const habitTypesByTopicType: Record<TopicType, HabitType[]> = {
395
451
  frequency: 'Daily',
396
452
  minDaysPerWeek: 7,
397
453
  possibleNotificationDescriptions: [
398
- 'No weigh-in? Blind to how fat youre getting?',
399
- 'Skipping the scale? Your bulk’s out of control.',
400
- 'Your future self tracks it—step up and weigh in.',
401
- 'Too scared to check? Keep guessing your failure.',
402
- 'No numbers today? Enjoy the clueless bloat.'
454
+ 'Still dodging the scale?... Ignorance isn’t bliss, its FAT. ⚖️',
455
+ 'Afraid of the numbers?... Your gains are just guesses. 📈',
456
+ 'Kings face the truth... Step on the scale. ⚖️',
457
+ 'Precision builds champions... Log your weight now. 📈',
458
+ 'Stat: 40% higher success rate with weight tracking... FACT. ⚖️',
459
+ 'Stat: 20% less overeating from daily weighing... Level UP. 📈',
460
+ 'Challenge: Weigh in 3 days straight. You’re DISCIPLINED. 🏆',
461
+ 'Challenge: Log your weight before breakfast. Future you’s ON POINT. ⏰'
403
462
  ]
404
463
  },
405
464
  {
465
+ id: 15,
406
466
  name: 'Meal prep',
407
467
  description: 'Cook meals in bulk. No excuses for missing protein or eating junk.',
408
468
  difficulty: 3,
@@ -412,16 +472,20 @@ export const habitTypesByTopicType: Record<TopicType, HabitType[]> = {
412
472
  frequency: 'Daily',
413
473
  minDaysPerWeek: 2,
414
474
  possibleNotificationDescriptions: [
415
- 'No prep today? Youre a takeout-fed slob.',
416
- 'Skipped cooking? Enjoy your weak-ass frame.',
417
- 'No meals ready? Obesity’s your future—cook now.',
418
- 'Still eating junk? No muscle, no glory.',
419
- 'Too lazy to cook? Stay scrawny and broke.'
475
+ 'Takeout again?... Your bodys a JUNKYARD. 🍱',
476
+ 'Too lazy to cook?... Your muscles are STARVING. 🍳',
477
+ 'Beasts dominate the kitchen... Prep your power. 🍳',
478
+ 'Fuel your empire... Meal prep for gains. 💪',
479
+ 'Stat: 30% savings on food costs with meal prepping... FACT. 🍱',
480
+ 'Stat: 25% more protein intake from prepped meals... Level UP. 💪',
481
+ 'Challenge: Prep 3 meals today. You’re a CHEF. 🏆',
482
+ 'Challenge: Cook a new recipe this week. Future you’s STACKED. 🍳'
420
483
  ]
421
484
  }
422
485
  ],
423
486
  'Side Hustle': [
424
487
  {
488
+ id: 16,
425
489
  name: 'Dedicate 2 hours to hustle',
426
490
  description: '2 focused hours on your hustle. No distractions, no excuses.',
427
491
  difficulty: 3,
@@ -431,14 +495,18 @@ export const habitTypesByTopicType: Record<TopicType, HabitType[]> = {
431
495
  frequency: 'Daily',
432
496
  minDaysPerWeek: 7,
433
497
  possibleNotificationDescriptions: [
434
- 'No hustle time today? You’re a broke-ass joke.',
435
- 'Skipped your 2 hours? Keep begging for scraps.',
436
- 'Your future self’s rich. Put in the work now.',
437
- 'Distracted again? Retire broke at 80. Or take action now.',
438
- 'Too soft for focus? Die with regrets, loser.'
498
+ 'NO HUSTLE today?... You’re a BROKE joke. 💸',
499
+ 'SKIPPED your 2 hours?... Keep begging for PENNIES.',
500
+ 'You’re destined to RISE... Lock in 2 hours. 💼',
501
+ 'Wealth’s knocking TODAY... Answer with effort. 💰',
502
+ 'Stat: 40% income boost from 2 hours daily... FACT. 💸',
503
+ 'Stat: 50% productivity gain from focused work... Level UP. ⏳',
504
+ 'Challenge: Finish one task in 2 hours. You’re a MACHINE. 🏆',
505
+ 'Challenge: No distractions for 120 minutes. Future you’s WEALTHY. 💰'
439
506
  ]
440
507
  },
441
508
  {
509
+ id: 17,
442
510
  name: 'Client outreach',
443
511
  description: 'Contact potential clients or partners.',
444
512
  difficulty: 2,
@@ -448,16 +516,20 @@ export const habitTypesByTopicType: Record<TopicType, HabitType[]> = {
448
516
  frequency: 'Daily',
449
517
  minDaysPerWeek: 3,
450
518
  possibleNotificationDescriptions: [
451
- 'No outreach yet? Your hustle’s dead in the water.',
452
- 'Too shy to reach out? Stay broke and forgotten.',
453
- 'Your bloodline built empires. Message someone now.',
454
- 'Still silent? No money, no momentum.',
455
- 'Can’t pitch today? Enjoy the empty pockets.'
519
+ 'NO OUTREACH yet?... Your hustle’s DEAD quiet. 📞',
520
+ 'Too SHY to pitch?... Stay BROKE forever. 🤐',
521
+ 'You’re wired to CLOSE... Hit up a client. 📞',
522
+ 'Connections FUEL your rise... Make one today. 🤝',
523
+ 'Stat: 35% client acquisition boost from outreach... FACT. 📞',
524
+ 'Stat: 20% conversion rate from cold pitches... Level UP. 🤝',
525
+ 'Challenge: Send 3 outreach messages today. You’re a CLOSER. 🏆',
526
+ 'Challenge: Pitch a new client this week. Future you’s STACKED. 💼'
456
527
  ]
457
528
  },
458
529
  {
530
+ id: 18,
459
531
  name: 'Share your journey',
460
- description: 'Social media post, blog, tweet, vlog or message someone.',
532
+ description: 'Social media post, blog, tweet, vlog, or message someone.',
461
533
  difficulty: 2,
462
534
  topicType: 'Side Hustle',
463
535
  habitTime: 'Evening',
@@ -465,14 +537,18 @@ export const habitTypesByTopicType: Record<TopicType, HabitType[]> = {
465
537
  frequency: 'Daily',
466
538
  minDaysPerWeek: 7,
467
539
  possibleNotificationDescriptions: [
468
- 'No post today? Your hustle’s a ghost town.',
469
- 'Nothing shared? You’re a lazy nobody.',
470
- 'Your future selfs a boss. Post something worth a damn.',
471
- 'Too lame to share? Keep fading into nothing.',
472
- 'Skipped content? Rot broke in obscurity—post now.'
540
+ 'NO POST today?... Your hustle’s INVISIBLE. 👻',
541
+ 'NOTHING shared?... You’re a LAZY shadow. 😴',
542
+ 'Youre a VOICE... Share your grind, king. 📸',
543
+ 'Future you INSPIRES... Start with today’s post. 🌟',
544
+ 'Stat: 45% engagement boost from journey sharing... FACT. 📸',
545
+ 'Stat: 30% follower growth from consistent posting... Level UP. 🌟',
546
+ 'Challenge: Post one update today. You’re a CREATOR. 🏆',
547
+ 'Challenge: Share a behind-the-scenes moment. Future you’s INFLUENTIAL. 📸'
473
548
  ]
474
549
  },
475
550
  {
551
+ id: 19,
476
552
  name: 'Get real feedback',
477
553
  description: 'Ask a customer or friend what they’d change about your hustle.',
478
554
  difficulty: 3,
@@ -482,14 +558,18 @@ export const habitTypesByTopicType: Record<TopicType, HabitType[]> = {
482
558
  frequency: 'Daily',
483
559
  minDaysPerWeek: 2,
484
560
  possibleNotificationDescriptions: [
485
- 'No feedback yet? Your hustle’s trash and you’re blind.',
486
- 'Too scared to ask? Keep failing in silence, chump.',
487
- 'Your graves waiting. Get input or flop forever.',
488
- 'Still guessing? No critique, no growth.',
489
- 'Can’t face the truth? Stay stuck and broke.'
561
+ 'NO FEEDBACK yet?... Your hustle’s TRASH unseen. 🗑️',
562
+ 'Too SCARED to ask?... Keep failing BLIND. 🤐',
563
+ 'Youre built to GROW... Seek truth, king. 🧠',
564
+ 'Future you is SHARP... Ask for feedback now. 🗣️',
565
+ 'Stat: 40% mistake reduction from feedback loops... FACT. 🧠',
566
+ 'Stat: 30% product quality boost from input... Level UP. 📈',
567
+ 'Challenge: Ask one person for feedback today. You’re WISE. 🏆',
568
+ 'Challenge: Implement one suggestion this week. Future you’s SHARP. 🗣️'
490
569
  ]
491
570
  },
492
571
  {
572
+ id: 20,
493
573
  name: 'Study competitors',
494
574
  description: 'Analyze what your rivals are doing, see what works, what not.',
495
575
  difficulty: 3,
@@ -499,11 +579,14 @@ export const habitTypesByTopicType: Record<TopicType, HabitType[]> = {
499
579
  frequency: 'Daily',
500
580
  minDaysPerWeek: 3,
501
581
  possibleNotificationDescriptions: [
502
- 'No competitor check? They’re crushing you blind.',
503
- 'Skipped studying? You’re a sitting duck, wake up.',
504
- 'Your future self outsmarts them. Scope rivals now.',
505
- 'Too lazy to research? Regrets will bury you broke.',
506
- 'Not watching them? They’ll bury you. Lock in today.'
582
+ 'NO COMPETITOR check?... They’re crushing you BLIND. 👀',
583
+ 'SKIPPED studying?... You’re a sitting DUCK. 🦆',
584
+ 'You’re a HUNTER... Study their moves, king. 🕵️‍♂️',
585
+ 'Future you LEADS... Start with rival intel. 📊',
586
+ 'Stat: 35% strategy boost from competitor analysis... FACT. 🕵️‍♂️',
587
+ 'Stat: 25% fewer market mistakes from knowing rivals... Level UP. 📊',
588
+ 'Challenge: Analyze one competitor today. You’re a STRATEGIST. 🏆',
589
+ 'Challenge: Find one rival’s weakness. Future you’s AHEAD. 🧠'
507
590
  ]
508
591
  }
509
592
  ]