@hy-capital/api-habit-tracker-types 1.0.51 → 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 +4 -0
- package/dist/habit.js +212 -43
- package/package.json +1 -1
- package/src/habit.ts +217 -44
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;
|
package/dist/habit.js
CHANGED
@@ -47,48 +47,88 @@ exports.habitTypesByTopicType = {
|
|
47
47
|
Dating: [
|
48
48
|
{
|
49
49
|
name: 'Talk to new person',
|
50
|
-
description: 'No pressure, just talk about whatever,
|
51
|
-
difficulty:
|
50
|
+
description: 'No pressure, just talk about whatever, no matter how long or short.',
|
51
|
+
difficulty: 3,
|
52
52
|
topicType: 'Dating',
|
53
53
|
habitTime: 'Anytime',
|
54
54
|
habitDays: exports.allHabitDays,
|
55
|
-
frequency: 'Daily'
|
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
|
+
]
|
56
64
|
},
|
57
65
|
{
|
58
66
|
name: 'Ask for date/social media',
|
59
67
|
description: 'Turn a conversation into an actual opportunity. Get her contact or set up a date.',
|
60
|
-
difficulty:
|
68
|
+
difficulty: 3,
|
61
69
|
topicType: 'Dating',
|
62
70
|
habitTime: 'Anytime',
|
63
71
|
habitDays: exports.allHabitDays,
|
64
|
-
frequency: 'Daily'
|
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
|
+
]
|
65
81
|
},
|
66
82
|
{
|
67
83
|
name: 'Grooming',
|
68
84
|
description: 'Wear your best clothes, keep hair in check. Always.',
|
69
|
-
difficulty:
|
85
|
+
difficulty: 1,
|
70
86
|
topicType: 'Dating',
|
71
87
|
habitTime: 'Anytime',
|
72
88
|
habitDays: exports.allHabitDays,
|
73
|
-
frequency: 'Daily'
|
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
|
+
]
|
74
98
|
},
|
75
99
|
{
|
76
100
|
name: 'Get new photos',
|
77
|
-
description: 'Take new high-quality photos for dating apps
|
101
|
+
description: 'Take new high-quality photos for dating apps.',
|
78
102
|
difficulty: 2,
|
79
103
|
topicType: 'Dating',
|
80
104
|
habitTime: 'Anytime',
|
81
105
|
habitDays: exports.allHabitDays,
|
82
|
-
frequency: 'Daily'
|
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
|
+
]
|
83
115
|
},
|
84
116
|
{
|
85
117
|
name: 'Send messages',
|
86
|
-
description: 'Instead of asking questions,
|
118
|
+
description: 'Instead of asking boring questions, make more assumptions about the girl.',
|
87
119
|
difficulty: 2,
|
88
120
|
topicType: 'Dating',
|
89
121
|
habitTime: 'Anytime',
|
90
122
|
habitDays: exports.allHabitDays,
|
91
|
-
frequency: 'Daily'
|
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
|
+
]
|
92
132
|
}
|
93
133
|
],
|
94
134
|
Sleep: [
|
@@ -96,46 +136,86 @@ exports.habitTypesByTopicType = {
|
|
96
136
|
name: 'No screens before bed',
|
97
137
|
description: 'Put the phone away 1 hour before sleep. Read a book or journal instead.',
|
98
138
|
difficulty: 2,
|
99
|
-
topicType: '
|
139
|
+
topicType: 'Sleep',
|
100
140
|
habitTime: 'Anytime',
|
101
141
|
habitDays: exports.allHabitDays,
|
102
|
-
frequency: 'Daily'
|
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
|
+
]
|
103
151
|
},
|
104
152
|
{
|
105
|
-
name: '
|
153
|
+
name: '> 7hr sleep',
|
106
154
|
description: 'Go to bed and wake up at the same time. No excuses, even on weekends.',
|
107
155
|
difficulty: 2,
|
108
|
-
topicType: '
|
156
|
+
topicType: 'Sleep',
|
109
157
|
habitTime: 'Anytime',
|
110
158
|
habitDays: exports.allHabitDays,
|
111
|
-
frequency: 'Daily'
|
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
|
+
]
|
112
168
|
},
|
113
169
|
{
|
114
170
|
name: 'No late-night snacking',
|
115
171
|
description: 'Stop eating at least 2 hours before bed. Let your body rest, not digest.',
|
116
172
|
difficulty: 2,
|
117
|
-
topicType: '
|
173
|
+
topicType: 'Sleep',
|
118
174
|
habitTime: 'Anytime',
|
119
175
|
habitDays: exports.allHabitDays,
|
120
|
-
frequency: 'Daily'
|
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
|
+
]
|
121
185
|
},
|
122
186
|
{
|
123
187
|
name: 'No caffeine after 2pm',
|
124
188
|
description: 'Cut all caffeine - coffee, pre-workout, energy drinks. Water only.',
|
125
189
|
difficulty: 2,
|
126
|
-
topicType: '
|
190
|
+
topicType: 'Sleep',
|
127
191
|
habitTime: 'Anytime',
|
128
192
|
habitDays: exports.allHabitDays,
|
129
|
-
frequency: 'Daily'
|
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
|
+
]
|
130
202
|
},
|
131
203
|
{
|
132
204
|
name: 'Optimize your sleep environment',
|
133
205
|
description: 'Cool room, blackout curtains, clean sheets, no electronics nearby.',
|
134
206
|
difficulty: 2,
|
135
|
-
topicType: '
|
207
|
+
topicType: 'Sleep',
|
136
208
|
habitTime: 'Anytime',
|
137
209
|
habitDays: exports.allHabitDays,
|
138
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
|
+
]
|
139
219
|
}
|
140
220
|
],
|
141
221
|
Fitness: [
|
@@ -143,84 +223,173 @@ exports.habitTypesByTopicType = {
|
|
143
223
|
name: 'Stay active',
|
144
224
|
description: 'Go to the gym, do cardio or just move. No lazy days.',
|
145
225
|
difficulty: 2,
|
146
|
-
topicType: '
|
226
|
+
topicType: 'Fitness',
|
147
227
|
habitTime: 'Anytime',
|
148
228
|
habitDays: exports.allHabitDays,
|
149
|
-
frequency: 'Daily'
|
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
|
+
]
|
150
238
|
},
|
151
239
|
{
|
152
240
|
name: 'No processed sugars',
|
153
241
|
description: 'Skip added sugars. Stick to natural sources like fruit.',
|
154
242
|
difficulty: 2,
|
155
|
-
topicType: '
|
243
|
+
topicType: 'Fitness',
|
156
244
|
habitTime: 'Anytime',
|
157
245
|
habitDays: exports.allHabitDays,
|
158
|
-
frequency: 'Daily'
|
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
|
+
]
|
159
255
|
},
|
160
256
|
{
|
161
257
|
name: 'No alcohol',
|
162
258
|
description: 'Stay 100% alcohol-free. No exceptions, no slip-ups.',
|
163
259
|
difficulty: 2,
|
164
|
-
topicType: '
|
260
|
+
topicType: 'Fitness',
|
165
261
|
habitTime: 'Anytime',
|
166
262
|
habitDays: exports.allHabitDays,
|
167
|
-
frequency: 'Daily'
|
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
|
+
]
|
168
272
|
},
|
169
273
|
{
|
170
274
|
name: 'Weigh yourself',
|
171
|
-
description: 'Track weight
|
275
|
+
description: 'Track weight your weight, so you know you\'re moving in the right direction.',
|
172
276
|
difficulty: 2,
|
173
|
-
topicType: '
|
277
|
+
topicType: 'Fitness',
|
174
278
|
habitTime: 'Anytime',
|
175
279
|
habitDays: exports.allHabitDays,
|
176
|
-
frequency: 'Daily'
|
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
|
+
]
|
177
289
|
},
|
178
290
|
{
|
179
291
|
name: 'Meal prep',
|
180
292
|
description: 'Cook meals in bulk. No excuses for missing protein or eating junk.',
|
181
293
|
difficulty: 2,
|
182
|
-
topicType: '
|
294
|
+
topicType: 'Fitness',
|
183
295
|
habitTime: 'Anytime',
|
184
296
|
habitDays: exports.allHabitDays,
|
185
|
-
frequency: 'Daily'
|
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
|
+
]
|
186
306
|
}
|
187
307
|
],
|
188
308
|
'Side Hustle': [
|
189
309
|
{
|
190
310
|
name: 'Dedicate 2 hours to hustle',
|
191
|
-
description: '
|
311
|
+
description: '2 focused hours on your hustle. No distractions, no excuses.',
|
192
312
|
difficulty: 2,
|
193
|
-
topicType: '
|
313
|
+
topicType: 'Side Hustle',
|
194
314
|
habitTime: 'Anytime',
|
195
315
|
habitDays: exports.allHabitDays,
|
196
|
-
frequency: 'Daily'
|
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
|
+
]
|
197
325
|
},
|
198
326
|
{
|
199
327
|
name: 'Client outreach',
|
200
328
|
description: 'Contact potential clients or partners.',
|
201
329
|
difficulty: 2,
|
202
|
-
topicType: '
|
330
|
+
topicType: 'Side Hustle',
|
203
331
|
habitTime: 'Anytime',
|
204
332
|
habitDays: exports.allHabitDays,
|
205
|
-
frequency: 'Daily'
|
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
|
+
]
|
206
342
|
},
|
207
343
|
{
|
208
|
-
name: '
|
209
|
-
description: '
|
344
|
+
name: 'Share your journey',
|
345
|
+
description: 'Social media post, blog, tweet, vlog or message someone.',
|
210
346
|
difficulty: 2,
|
211
|
-
topicType: '
|
347
|
+
topicType: 'Side Hustle',
|
212
348
|
habitTime: 'Anytime',
|
213
349
|
habitDays: exports.allHabitDays,
|
214
|
-
frequency: 'Daily'
|
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
|
+
]
|
215
359
|
},
|
216
360
|
{
|
217
361
|
name: 'Get real feedback',
|
218
362
|
description: 'Ask a customer or friend what they’d change about your hustle.',
|
219
363
|
difficulty: 2,
|
220
|
-
topicType: '
|
364
|
+
topicType: 'Side Hustle',
|
221
365
|
habitTime: 'Anytime',
|
222
366
|
habitDays: exports.allHabitDays,
|
223
|
-
frequency: 'Daily'
|
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
|
+
]
|
224
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
|
+
}
|
225
394
|
]
|
226
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 {
|
@@ -130,48 +134,88 @@ export const habitTypesByTopicType: Record<TopicType, HabitType[]> = {
|
|
130
134
|
Dating: [
|
131
135
|
{
|
132
136
|
name: 'Talk to new person',
|
133
|
-
description: 'No pressure, just talk about whatever,
|
134
|
-
difficulty:
|
137
|
+
description: 'No pressure, just talk about whatever, no matter how long or short.',
|
138
|
+
difficulty: 3,
|
135
139
|
topicType: 'Dating',
|
136
140
|
habitTime: 'Anytime',
|
137
141
|
habitDays: allHabitDays,
|
138
|
-
frequency: 'Daily'
|
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
|
+
]
|
139
151
|
},
|
140
152
|
{
|
141
153
|
name: 'Ask for date/social media',
|
142
154
|
description: 'Turn a conversation into an actual opportunity. Get her contact or set up a date.',
|
143
|
-
difficulty:
|
155
|
+
difficulty: 3,
|
144
156
|
topicType: 'Dating',
|
145
157
|
habitTime: 'Anytime',
|
146
158
|
habitDays: allHabitDays,
|
147
|
-
frequency: 'Daily'
|
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
|
+
]
|
148
168
|
},
|
149
169
|
{
|
150
170
|
name: 'Grooming',
|
151
171
|
description: 'Wear your best clothes, keep hair in check. Always.',
|
152
|
-
difficulty:
|
172
|
+
difficulty: 1,
|
153
173
|
topicType: 'Dating',
|
154
174
|
habitTime: 'Anytime',
|
155
175
|
habitDays: allHabitDays,
|
156
|
-
frequency: 'Daily'
|
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
|
+
]
|
157
185
|
},
|
158
186
|
{
|
159
187
|
name: 'Get new photos',
|
160
|
-
description: 'Take new high-quality photos for dating apps
|
188
|
+
description: 'Take new high-quality photos for dating apps.',
|
161
189
|
difficulty: 2,
|
162
190
|
topicType: 'Dating',
|
163
191
|
habitTime: 'Anytime',
|
164
192
|
habitDays: allHabitDays,
|
165
|
-
frequency: 'Daily'
|
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
|
+
]
|
166
202
|
},
|
167
203
|
{
|
168
204
|
name: 'Send messages',
|
169
|
-
description: 'Instead of asking questions,
|
205
|
+
description: 'Instead of asking boring questions, make more assumptions about the girl.',
|
170
206
|
difficulty: 2,
|
171
207
|
topicType: 'Dating',
|
172
208
|
habitTime: 'Anytime',
|
173
209
|
habitDays: allHabitDays,
|
174
|
-
frequency: 'Daily'
|
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
|
+
]
|
175
219
|
}
|
176
220
|
],
|
177
221
|
Sleep: [
|
@@ -179,46 +223,86 @@ export const habitTypesByTopicType: Record<TopicType, HabitType[]> = {
|
|
179
223
|
name: 'No screens before bed',
|
180
224
|
description: 'Put the phone away 1 hour before sleep. Read a book or journal instead.',
|
181
225
|
difficulty: 2,
|
182
|
-
topicType: '
|
226
|
+
topicType: 'Sleep',
|
183
227
|
habitTime: 'Anytime',
|
184
228
|
habitDays: allHabitDays,
|
185
|
-
frequency: 'Daily'
|
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
|
+
]
|
186
238
|
},
|
187
239
|
{
|
188
|
-
name: '
|
240
|
+
name: '> 7hr sleep',
|
189
241
|
description: 'Go to bed and wake up at the same time. No excuses, even on weekends.',
|
190
242
|
difficulty: 2,
|
191
|
-
topicType: '
|
243
|
+
topicType: 'Sleep',
|
192
244
|
habitTime: 'Anytime',
|
193
245
|
habitDays: allHabitDays,
|
194
|
-
frequency: 'Daily'
|
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
|
+
]
|
195
255
|
},
|
196
256
|
{
|
197
257
|
name: 'No late-night snacking',
|
198
258
|
description: 'Stop eating at least 2 hours before bed. Let your body rest, not digest.',
|
199
259
|
difficulty: 2,
|
200
|
-
topicType: '
|
260
|
+
topicType: 'Sleep',
|
201
261
|
habitTime: 'Anytime',
|
202
262
|
habitDays: allHabitDays,
|
203
|
-
frequency: 'Daily'
|
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
|
+
]
|
204
272
|
},
|
205
273
|
{
|
206
274
|
name: 'No caffeine after 2pm',
|
207
275
|
description: 'Cut all caffeine - coffee, pre-workout, energy drinks. Water only.',
|
208
276
|
difficulty: 2,
|
209
|
-
topicType: '
|
277
|
+
topicType: 'Sleep',
|
210
278
|
habitTime: 'Anytime',
|
211
279
|
habitDays: allHabitDays,
|
212
|
-
frequency: 'Daily'
|
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
|
+
]
|
213
289
|
},
|
214
290
|
{
|
215
291
|
name: 'Optimize your sleep environment',
|
216
292
|
description: 'Cool room, blackout curtains, clean sheets, no electronics nearby.',
|
217
293
|
difficulty: 2,
|
218
|
-
topicType: '
|
294
|
+
topicType: 'Sleep',
|
219
295
|
habitTime: 'Anytime',
|
220
296
|
habitDays: allHabitDays,
|
221
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
|
+
]
|
222
306
|
}
|
223
307
|
],
|
224
308
|
Fitness: [
|
@@ -226,84 +310,173 @@ export const habitTypesByTopicType: Record<TopicType, HabitType[]> = {
|
|
226
310
|
name: 'Stay active',
|
227
311
|
description: 'Go to the gym, do cardio or just move. No lazy days.',
|
228
312
|
difficulty: 2,
|
229
|
-
topicType: '
|
313
|
+
topicType: 'Fitness',
|
230
314
|
habitTime: 'Anytime',
|
231
315
|
habitDays: allHabitDays,
|
232
|
-
frequency: 'Daily'
|
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
|
+
]
|
233
325
|
},
|
234
326
|
{
|
235
327
|
name: 'No processed sugars',
|
236
328
|
description: 'Skip added sugars. Stick to natural sources like fruit.',
|
237
329
|
difficulty: 2,
|
238
|
-
topicType: '
|
330
|
+
topicType: 'Fitness',
|
239
331
|
habitTime: 'Anytime',
|
240
332
|
habitDays: allHabitDays,
|
241
|
-
frequency: 'Daily'
|
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
|
+
]
|
242
342
|
},
|
243
343
|
{
|
244
344
|
name: 'No alcohol',
|
245
345
|
description: 'Stay 100% alcohol-free. No exceptions, no slip-ups.',
|
246
346
|
difficulty: 2,
|
247
|
-
topicType: '
|
347
|
+
topicType: 'Fitness',
|
248
348
|
habitTime: 'Anytime',
|
249
349
|
habitDays: allHabitDays,
|
250
|
-
frequency: 'Daily'
|
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
|
+
]
|
251
359
|
},
|
252
360
|
{
|
253
361
|
name: 'Weigh yourself',
|
254
|
-
description: 'Track weight
|
362
|
+
description: 'Track weight your weight, so you know you\'re moving in the right direction.',
|
255
363
|
difficulty: 2,
|
256
|
-
topicType: '
|
364
|
+
topicType: 'Fitness',
|
257
365
|
habitTime: 'Anytime',
|
258
366
|
habitDays: allHabitDays,
|
259
|
-
frequency: 'Daily'
|
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
|
+
]
|
260
376
|
},
|
261
377
|
{
|
262
378
|
name: 'Meal prep',
|
263
379
|
description: 'Cook meals in bulk. No excuses for missing protein or eating junk.',
|
264
380
|
difficulty: 2,
|
265
|
-
topicType: '
|
381
|
+
topicType: 'Fitness',
|
266
382
|
habitTime: 'Anytime',
|
267
383
|
habitDays: allHabitDays,
|
268
|
-
frequency: 'Daily'
|
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
|
+
]
|
269
393
|
}
|
270
394
|
],
|
271
395
|
'Side Hustle': [
|
272
396
|
{
|
273
397
|
name: 'Dedicate 2 hours to hustle',
|
274
|
-
description: '
|
398
|
+
description: '2 focused hours on your hustle. No distractions, no excuses.',
|
275
399
|
difficulty: 2,
|
276
|
-
topicType: '
|
400
|
+
topicType: 'Side Hustle',
|
277
401
|
habitTime: 'Anytime',
|
278
402
|
habitDays: allHabitDays,
|
279
|
-
frequency: 'Daily'
|
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
|
+
]
|
280
412
|
},
|
281
413
|
{
|
282
414
|
name: 'Client outreach',
|
283
415
|
description: 'Contact potential clients or partners.',
|
284
416
|
difficulty: 2,
|
285
|
-
topicType: '
|
417
|
+
topicType: 'Side Hustle',
|
286
418
|
habitTime: 'Anytime',
|
287
419
|
habitDays: allHabitDays,
|
288
|
-
frequency: 'Daily'
|
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
|
+
]
|
289
429
|
},
|
290
430
|
{
|
291
|
-
name: '
|
292
|
-
description: '
|
431
|
+
name: 'Share your journey',
|
432
|
+
description: 'Social media post, blog, tweet, vlog or message someone.',
|
293
433
|
difficulty: 2,
|
294
|
-
topicType: '
|
434
|
+
topicType: 'Side Hustle',
|
295
435
|
habitTime: 'Anytime',
|
296
436
|
habitDays: allHabitDays,
|
297
|
-
frequency: 'Daily'
|
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
|
+
]
|
298
446
|
},
|
299
447
|
{
|
300
448
|
name: 'Get real feedback',
|
301
449
|
description: 'Ask a customer or friend what they’d change about your hustle.',
|
302
450
|
difficulty: 2,
|
303
|
-
topicType: '
|
451
|
+
topicType: 'Side Hustle',
|
304
452
|
habitTime: 'Anytime',
|
305
453
|
habitDays: allHabitDays,
|
306
|
-
frequency: 'Daily'
|
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
|
+
]
|
307
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
|
+
}
|
308
481
|
]
|
309
482
|
};
|