@awesomeness-js/server 1.0.1 → 1.1.0

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.
Files changed (130) hide show
  1. package/README.md +61 -0
  2. package/build/build.js +7 -0
  3. package/build/postBuild.js +7 -0
  4. package/example-.awesomeness/componentLocations.js +15 -0
  5. package/example-.awesomeness/config.js +5 -21
  6. package/example-site/example.awesomenessjs.com/api/readme.md +1 -0
  7. package/example-site/example.awesomenessjs.com/components/example/index.js +3 -0
  8. package/example-site/example.awesomenessjs.com/components/notCommonExample/_.css +1 -0
  9. package/example-site/example.awesomenessjs.com/components/notCommonExample/index.js +3 -0
  10. package/example-site/example.awesomenessjs.com/pages/_md/_info.js +15 -0
  11. package/example-site/example.awesomenessjs.com/pages/_md/css/example.css +4 -0
  12. package/example-site/example.awesomenessjs.com/pages/_md/drafts/example.md +32 -0
  13. package/example-site/example.awesomenessjs.com/pages/_md/getBlogData.js +117 -0
  14. package/example-site/example.awesomenessjs.com/pages/_md/getData.js +36 -0
  15. package/example-site/example.awesomenessjs.com/pages/_md/js/callToAction.js +43 -0
  16. package/example-site/example.awesomenessjs.com/pages/_md/js/init.js +88 -0
  17. package/example-site/example.awesomenessjs.com/pages/_md/meta.template.md +33 -0
  18. package/example-site/example.awesomenessjs.com/pages/_md/pages/mission.md +345 -0
  19. package/example-site/example.awesomenessjs.com/pages/_template/_info.js +9 -0
  20. package/example-site/example.awesomenessjs.com/pages/_template/css/_.css +4 -0
  21. package/example-site/example.awesomenessjs.com/pages/_template/getData.js +6 -0
  22. package/example-site/example.awesomenessjs.com/pages/_template/js/init.js +3 -0
  23. package/example-site/example.awesomenessjs.com/pages/blog/_info.js +14 -0
  24. package/example-site/example.awesomenessjs.com/pages/blog/css/topics.css +17 -0
  25. package/example-site/example.awesomenessjs.com/pages/blog/getData.js +22 -0
  26. package/example-site/example.awesomenessjs.com/pages/blog/js/colors.js +159 -0
  27. package/example-site/example.awesomenessjs.com/pages/blog/js/init.js +242 -0
  28. package/example-site/example.awesomenessjs.com/pages/blog/js/tag.js +111 -0
  29. package/example-site/example.awesomenessjs.com/pages/examples/_info.js +9 -0
  30. package/example-site/example.awesomenessjs.com/pages/examples/css/footer.css +6 -0
  31. package/example-site/example.awesomenessjs.com/pages/examples/css/intro.css +67 -0
  32. package/example-site/example.awesomenessjs.com/pages/examples/css/nav.css +221 -0
  33. package/example-site/example.awesomenessjs.com/pages/examples/getData.js +8 -0
  34. package/example-site/example.awesomenessjs.com/pages/examples/js/init.js +15 -0
  35. package/example-site/example.awesomenessjs.com/pages/examples/js/updateState.js +14 -0
  36. package/example-site/example.awesomenessjs.com/pages/start/_info.js +11 -0
  37. package/example-site/example.awesomenessjs.com/pages/start/css/footer.css +6 -0
  38. package/example-site/example.awesomenessjs.com/pages/start/css/intro.css +67 -0
  39. package/example-site/example.awesomenessjs.com/pages/start/css/nav.css +221 -0
  40. package/example-site/example.awesomenessjs.com/pages/start/getData.js +8 -0
  41. package/example-site/example.awesomenessjs.com/pages/start/js/init.js +30 -0
  42. package/example-site/example.awesomenessjs.com/pages/start/js/updateState.js +14 -0
  43. package/example-site/example.awesomenessjs.com/public/images/awesomeness.webp +0 -0
  44. package/example-site/example.awesomenessjs.com/public/manifest.webmanifest.json +8 -0
  45. package/example-site/example.awesomenessjs.com/specialRoutes.js +14 -0
  46. package/index.js +105 -22
  47. package/package.json +5 -2
  48. package/{server → src}/applicationMap.js +1 -1
  49. package/{server → src}/awesomenessNormalizeRequest.js +24 -3
  50. package/{server → src}/componentDependencies.js +11 -5
  51. package/{config.js → src/config.js} +6 -1
  52. package/{server → src}/fetchPage.js +6 -6
  53. package/src/getConfig.js +3 -0
  54. package/src/init.js +3 -0
  55. package/{server → src}/koa/attachAwesomenessRequest.js +5 -6
  56. package/{server → src}/koa/cors.js +2 -4
  57. package/{server → src}/koa/errorHandler.js +3 -3
  58. package/{server → src}/koa/finalFormat.js +2 -5
  59. package/{server → src}/koa/jsonBodyParser.js +3 -3
  60. package/src/koa/routeRequest.js +334 -0
  61. package/{server → src}/koa/serverUp.js +2 -4
  62. package/{server → src}/koa/staticFiles.js +10 -11
  63. package/{server → src}/koa/timeout.js +3 -3
  64. package/{server → src}/pageInfo.js +6 -6
  65. package/{server → src}/reRoute.js +3 -2
  66. package/{server → src}/resolveRealCasePath.js +1 -1
  67. package/{start.js → src/start.js} +14 -13
  68. package/{server → src}/validateRequest.js +1 -1
  69. package/{server → src}/ws/handlers.js +4 -2
  70. package/{server → src}/ws/index.js +2 -2
  71. package/ui/README.md +438 -0
  72. package/ui/awesomeness-ui.instructions.md +156 -0
  73. package/ui/build.js +119 -0
  74. package/ui/commonComponent.test.js +27 -0
  75. package/ui/components/blogPost/all.css +371 -0
  76. package/ui/components/blogPost/headerImage.js +153 -0
  77. package/ui/components/blogPost/index.js +45 -0
  78. package/ui/components/blogPost/marked.js +74 -0
  79. package/ui/components/blogPost/md.js +73 -0
  80. package/ui/components/blogPost/parseAwesomeness.jQuery.js +47 -0
  81. package/ui/components/blogPost/readme.md +8 -0
  82. package/ui/components/colors/README.md +65 -0
  83. package/ui/components/colors/dynamic.css +1884 -0
  84. package/ui/components/colors/dynamic.css.js +135 -0
  85. package/ui/components/colors/dynamic.css.php +79 -0
  86. package/ui/components/colors/example.js +133 -0
  87. package/ui/components/colors/index.js +65 -0
  88. package/ui/components/colors/map.js +13 -0
  89. package/ui/components/colors/random.js +17 -0
  90. package/ui/components/colors/tailwind-colors.css +247 -0
  91. package/ui/components/insertIntoList/insertIntoList.jquery.js +150 -0
  92. package/ui/components/tag/category.js +8 -0
  93. package/ui/components/tag/index.js +33 -0
  94. package/ui/components/tag/list.js +42 -0
  95. package/ui/components/tag/map.js +64 -0
  96. package/ui/components/tag/tagMap.css +60 -0
  97. package/ui/components/tag/tags.css +20 -0
  98. package/ui/core/css/_normalize.css +57 -0
  99. package/ui/core/css/dynamic/flex.js +36 -0
  100. package/ui/core/css/dynamic/grid.js +185 -0
  101. package/ui/core/css/dynamic/shortcuts.js +48 -0
  102. package/ui/core/css/dynamic/spacing.js +61 -0
  103. package/ui/core/css/dynamic/text.js +80 -0
  104. package/ui/core/css/dynamic/width.js +75 -0
  105. package/ui/core/css/dynamic.js +40 -0
  106. package/ui/core/js/app/api.js +143 -0
  107. package/ui/core/js/app/init.js +88 -0
  108. package/ui/core/js/app/initDarkMode.js +26 -0
  109. package/ui/core/js/app/initialScroll.js +28 -0
  110. package/ui/core/js/app/meta/update/components.js +65 -0
  111. package/ui/core/js/app/meta/update/pages.js +86 -0
  112. package/ui/core/js/app/metaUpdates.js +10 -0
  113. package/ui/core/js/app/page.js +319 -0
  114. package/ui/core/js/app/resize.js +52 -0
  115. package/ui/core/js/app/state/back.js +16 -0
  116. package/ui/core/js/app/state/create.js +50 -0
  117. package/ui/core/js/app/state/get.js +5 -0
  118. package/ui/core/js/app/state/init.js +25 -0
  119. package/ui/core/js/app.js +41 -0
  120. package/ui/core/js/jquery-3.7.1.min.js +2 -0
  121. package/ui/core/public/app.css +1 -0
  122. package/ui/core/public/app.js +975 -0
  123. package/ui/core/public/favicon.ico +0 -0
  124. package/ui/core/public/index.html +40 -0
  125. package/server/koa/routeRequest.js +0 -286
  126. /package/{server/errors.js → errors.js} +0 -0
  127. /package/{server → src}/brotliJsonResponse.js +0 -0
  128. /package/{server → src}/checkAccess.js +0 -0
  129. /package/{server → src}/getMD.js +0 -0
  130. /package/{server → src}/specialPaths.js +0 -0
@@ -0,0 +1,345 @@
1
+ ---
2
+ title: "My Mission"
3
+ subTitle: "Freedom."
4
+ readTime: 6
5
+ image: /tools/images/community/downtown.webp
6
+ published: 2026-01-18
7
+ priority: 0.8
8
+ url: /mission
9
+ tags: [ freedom, financial freedom, spiritual freedom, mental freedom, political freedom ]
10
+ tagColor: bg-green-900
11
+ author:
12
+ name: Scott Forte
13
+ title: Pilot, Investor, Realtor ®
14
+ image: /tools/images/scott-forte-america-small-40.webp
15
+ url: https://scottmforte.com
16
+ ---
17
+
18
+ <div class="break height-50"></div>
19
+
20
+ # My Mission ✈️🏠✝️
21
+
22
+ <div class="break height-50"></div>
23
+
24
+ ## Simple — **Freedom.**
25
+
26
+ ✔️ **Mental Freedom**
27
+ ✔️ **Financial Freedom**
28
+ ✔️ **Political Freedom**
29
+ ✔️ **Spiritual Freedom**
30
+
31
+ <div class="break height-100"></div>
32
+
33
+ ## 🎨 Let’s Paint a Picture
34
+
35
+ <div class="break height-25"></div>
36
+
37
+ ![Bob Ross](/tools/images/bob-ross.gif)
38
+
39
+ **For me freedom looks like this:**
40
+ <span class="text-s">(for you it might look different)</span>
41
+
42
+ <div class="break height-25"></div>
43
+
44
+
45
+ **🕺 Physically**
46
+ - NOT being tied to my phone or computer
47
+ - Waking up every day excited about what I get to do
48
+ - Spending time with my family & friends
49
+ - Building businesses
50
+ - Helping others achieve their dreams
51
+ - Helping others find freedom
52
+ - Motivating people
53
+ - Traveling the world
54
+ - Flying airplanes
55
+ - Eating great food
56
+ - Learning new things
57
+ - Trying new stuff
58
+ - Exploring new places
59
+
60
+ **🧠 Mentally**
61
+ - NOT caring about emails or texts
62
+ - If someone needs me, they will figure it out.
63
+ - In control of my thoughts and emotions
64
+ - Focused on what matters
65
+ - Confident in my decisions
66
+ - Free from worry and stress
67
+ - Learning every day
68
+ - Living with purpose and intention
69
+ - __Not feeling like I'm wasting time.__
70
+ - Making the world a better place
71
+ - Being present in the moment
72
+ - Grateful for what God's blessed me with
73
+ - Optimistic about the future
74
+
75
+ **✝️ Spiritually**
76
+ - Confident
77
+ - Continuously growing
78
+ - Knowing where I will go next
79
+ - Growing God's Kingdom
80
+ - Leading others to God through my actions
81
+ - Being a Good and Faithful Servant
82
+
83
+ **💸 Financially**
84
+ - Having the income to do all of the above 👆
85
+ - NO **NEED** to work
86
+ - __NOT worried about__
87
+ - money
88
+ - bills
89
+ - debt
90
+ - expenses
91
+ - sales
92
+ - job security
93
+ - layoffs
94
+ - which way the market moves.
95
+
96
+
97
+ **🗽 Politically**
98
+ <span class="text-s">(we don't really control this)</span>
99
+
100
+ - No inflation
101
+ - No political drama
102
+ - No worries about the market
103
+ - Limited taxes
104
+ - Limited regulations
105
+ - Individual Sovereignty
106
+
107
+ This one is hard... but with the right investments, the right passports, and the right mindset,
108
+ it can __feel like__ it does not matter.
109
+ *Does that mean we should not care about politics?*
110
+ **Absolutely not.**
111
+ We need to defend and grow freedom every day.
112
+
113
+
114
+ <div class="break height-100"></div>
115
+
116
+ ## **Let's break each one down. 👇**
117
+
118
+ <div class="break height-100"></div>
119
+
120
+
121
+
122
+
123
+
124
+
125
+
126
+
127
+
128
+
129
+
130
+ ## 🧠 Mental Freedom
131
+
132
+ <div class="break height-25"></div>
133
+
134
+ **Mental Freedom** is the ability to __control__ your thoughts, emotions, and reactions to the world around you.
135
+ You need to be cool, calm, and collected like a pilot during an emergency -- using reason and systems inform decision-making.
136
+
137
+ Remember
138
+ **Rule #1:** [Fly the airplane.](/engine-failure)
139
+
140
+ <div class="blogPost-next-reads">
141
+
142
+ **Bible Verses on Mental Freedom:**
143
+ - [📖 Bible Verses About Your Thoughts](/bible/thought)
144
+
145
+ </div>
146
+
147
+ <div class="break height-100"></div>
148
+
149
+
150
+
151
+
152
+
153
+
154
+
155
+
156
+
157
+
158
+
159
+ ## 💸 Financial Freedom
160
+
161
+ <div class="break height-25"></div>
162
+
163
+ **Financial Freedom** is the ability to **spend your time** doing whatever you want,
164
+ whenever you want, with whoever you want.
165
+
166
+ It’s one of the most important things we can teach our children.
167
+ And it should be the focus of your financial planning.
168
+
169
+ 💪 Want to work? Sweet — build your dream.
170
+ ❌ Not work? Totally cool.
171
+ 🏖️ Look for pirate treasure with your kids at the beach? Absolutely.
172
+ 🛩️ Explore the world with the fam? Let’s go.
173
+
174
+ **Financial Freedom is about having the choice.** ✔️
175
+
176
+ <div class="break height-50"></div>
177
+
178
+ How do we get there?
179
+
180
+ 1. Know your monthly spending (**burn rate**)
181
+ 2. Build passive income streams that cover your burn rate
182
+ 3. Invest in assets that exceed inflation
183
+
184
+ As long as your passive monthly income exceeds your monthly spending,
185
+ you are financially free.
186
+
187
+ No one can tell you what to do with your time.
188
+ **You are free.**
189
+
190
+ <div class="blogPost-next-reads">
191
+
192
+ **Read the whole post here:**
193
+ - [💸 Financial Freedom: What does it mean?](/financial-freedom)
194
+
195
+ </div>
196
+
197
+ <div class="break height-100"></div>
198
+
199
+
200
+
201
+
202
+
203
+
204
+
205
+
206
+ ## 👨‍✈️ Spiritual Freedom
207
+
208
+ <div class="break height-25"></div>
209
+
210
+ You need someone always there for you.
211
+ You need someone who loves you unconditionally.
212
+ You need someone who has your back no matter what.
213
+
214
+ **Guess what?**
215
+ God told us me was that person from the beginning.
216
+
217
+ You need **God** as your Co-Pilot. ✝️
218
+ (really you are his co-pilot, but let’s not get into that now) 😉
219
+
220
+ Spiritual Freedom is knowing where you will go when you die.
221
+ Hoping — based on deeds — that you’ll get into heaven
222
+ doesn’t give you a firm foundation.
223
+ You need to know --
224
+ We are sinners by nature,
225
+ and even our best efforts will **never be enough**.
226
+
227
+ But... That does not matter. Because,
228
+ **Jesus** was perfect, lived a sinless life,
229
+ and died on the cross and asked God to forgive our sins.
230
+
231
+ God granted Him His request --
232
+ and it is by **Grace** are sins are forgiven
233
+ and we are allowed to enter the Kingdom of Heaven.
234
+
235
+ <div class="data-bible-verse">
236
+ {
237
+ "id": "3349583652731779229",
238
+ "created": "2020-01-25T13:04:45+00:00",
239
+ "labels": [
240
+ "grace",
241
+ "forgiveness",
242
+ "love",
243
+ "work",
244
+ "hard work"
245
+ ],
246
+ "title": "You bookmarked <b>Ephesians 2:8-9 NASB1995</b>",
247
+ "verses": [
248
+ "EPH.2.8",
249
+ "EPH.2.9"
250
+ ],
251
+ "verse": "Ephesians 2:8-9"
252
+ }
253
+ </div>
254
+
255
+ <div class="break height-50"></div>
256
+
257
+ **Spiritual Freedom** is *knowing* — with absolute certainty —
258
+ that when you die, **you will** go to heaven to be with our Maker —
259
+ the Master Architect of the universe.
260
+
261
+ **God wants us to be free.** ✝️
262
+ He sets us free from bondage, sin, and death.
263
+
264
+ ✅ Seek God daily
265
+ ✅ Study the Bible
266
+ ✅ Pray continually
267
+ ✅ Grow your faith with other believers
268
+
269
+ <div class="blogPost-next-reads">
270
+
271
+ **Read the whole post here:**
272
+ - [👨‍✈️ Spiritual Freedom: When Jesus Becomes Your Co-Pilot](/spiritual-freedom)
273
+
274
+ </div>
275
+
276
+
277
+ <div class="break height-100"></div>
278
+
279
+
280
+
281
+
282
+
283
+
284
+
285
+
286
+
287
+
288
+
289
+
290
+
291
+ ## 🗽 Political Freedom
292
+
293
+ <div class="break height-25"></div>
294
+
295
+ **Political Freedom** is the right to enter governance by consent and to exit it unilaterally.
296
+ Government -- like business -- should offer services you can __choose__,
297
+ not a one-size-fits-all mandate imposed on everyone.
298
+
299
+ <div class="blogPost-next-reads">
300
+
301
+ **Read the whole post here:**
302
+ - [🗽 Political Freedom: The Future of Governance is Local and Voluntary](/political-freedom)
303
+
304
+ </div>
305
+
306
+ <div class="break height-100"></div>
307
+
308
+
309
+
310
+
311
+
312
+
313
+
314
+
315
+
316
+
317
+
318
+
319
+ ## 🎯 This Is My Mission
320
+
321
+ <div class="break height-25"></div>
322
+
323
+ Life starts with **Mental Freedom**.
324
+ With the right mental foundation we can pursue **Financial Freedom**.
325
+ With more time and resources, we can try to take back our **Political Freedom**.
326
+ -- But ultimately everything not only leads to **Spiritual Freedom** -- but Spiritual Freedom
327
+ paves the way for Mental, Financial, and Political Freedom.
328
+
329
+ Freedom loving people need to stick together,
330
+ learn together, build together, invest together, grow together.
331
+
332
+ **My mission is Freedom**.
333
+
334
+
335
+ <div class="break height-100"></div>
336
+
337
+ <div class="blogPost-next-reads">
338
+
339
+ ### Next Reads
340
+
341
+ - [🧠 Mental Freedom: What does the Bible say?](/bible/thought)
342
+ - [🗽 Political Freedom: The Future of Governance is Local and Voluntary](/political-freedom)
343
+ - [💸 Financial Freedom: What does it mean?](/financial-freedom)
344
+ - [👨‍✈️ Spiritual Freedom: When Jesus Becomes Your Co-Pilot](/spiritual-freedom)
345
+ </div>
@@ -0,0 +1,9 @@
1
+ export default {
2
+ version: 1,
3
+ name: '',
4
+ description: '',
5
+ permissions: [ '*' ],
6
+ components: [
7
+ 'heroWordsOverText'
8
+ ]
9
+ };
@@ -0,0 +1,4 @@
1
+ /*
2
+ these classes are loaded dynamically ...
3
+ If a class can be re-used it is better to be created in /api/ui/common-css/
4
+ */
@@ -0,0 +1,6 @@
1
+
2
+ export default async function getData(awesomenessRequest) {
3
+
4
+ return { page: 'template' };
5
+
6
+ }
@@ -0,0 +1,3 @@
1
+ app.pages._template.init = function(pageData){
2
+
3
+ };
@@ -0,0 +1,14 @@
1
+ export default {
2
+ version: 1,
3
+ title: 'Wisdom',
4
+ description: '',
5
+ permissions: [ "*" ],
6
+ components: [
7
+ "blogPage",
8
+ "_example",
9
+ "carousel",
10
+ "list",
11
+ "tag",
12
+ "categoryCloud"
13
+ ]
14
+ };
@@ -0,0 +1,17 @@
1
+ /*
2
+ these classes are loaded dynamically ...
3
+ If a class can be re-used it is better to be created in /api/ui/common-css/
4
+ */
5
+ .blog-topic{
6
+ position: relative;
7
+ border: solid 1px var(--neutral-200);
8
+ text-align: center;
9
+ }
10
+
11
+ .blog-topic-image{
12
+ width: 250px;
13
+ height: 200px;
14
+ background-repeat: no-repeat;
15
+ background-size: cover;
16
+ background-position: center center;
17
+ }
@@ -0,0 +1,22 @@
1
+ import getBlogData from '../_md/getBlogData.js';
2
+
3
+ export default async function getData(awesomenessRequest) {
4
+
5
+ const t1 = performance.now();
6
+
7
+ const {
8
+ tags,
9
+ posts,
10
+ links
11
+ } = await getBlogData();
12
+
13
+ const t2 = performance.now();
14
+
15
+ return {
16
+ tag: awesomenessRequest.data.tag ?? null,
17
+ tags,
18
+ links,
19
+ posts
20
+ };
21
+
22
+ }
@@ -0,0 +1,159 @@
1
+ app.pages.wisdom.colors = {
2
+ 'action plan': 'lime-600',
3
+ 'all': 'slate-900',
4
+ 'alternative assets': 'purple-500',
5
+ 'america': 'red-600',
6
+ 'analysis': 'blue-700',
7
+ 'asset protection': 'stone-700',
8
+ 'aviation': 'sky-500',
9
+ 'aviation': 'sky-600',
10
+ 'bankruptcy': 'rose-700',
11
+ 'beginners': 'amber-400',
12
+ 'biography': 'slate-800',
13
+ 'bonds': 'green-500',
14
+ 'books': 'amber-700',
15
+ 'brrrr': 'cyan-700',
16
+ 'business strategy': 'violet-600',
17
+ 'business structure': 'neutral-600',
18
+ 'business': 'indigo-700',
19
+ 'cancer': 'slate-900',
20
+ 'cash flow': 'teal-500',
21
+ 'cash runway': 'lime-500',
22
+ 'checklist': 'emerald-500',
23
+ 'christianity': 'teal-600',
24
+ 'coding': 'slate-800',
25
+ 'communication': 'lime-400',
26
+ 'community': 'violet-800',
27
+ 'confidence': 'fuchsia-500',
28
+ 'constitution': 'red-600',
29
+ 'courage': 'red-600',
30
+ 'crisis management': 'slate-700',
31
+ 'data': 'pink-600',
32
+ 'day trading': 'rose-700',
33
+ 'decentralization': 'cyan-700',
34
+ 'depreciation': 'gray-600',
35
+ 'derivatives': 'purple-700',
36
+ 'discipline': 'red-700',
37
+ 'discipline': 'slate-600',
38
+ 'diversification': 'violet-500',
39
+ 'due diligence': 'stone-600',
40
+ 'economics': 'green-600',
41
+ 'economics': 'stone-600',
42
+ 'education': 'green-800',
43
+ 'engine failure': 'red-700',
44
+ 'entrepreneurship': 'green-700',
45
+ 'etfs': 'emerald-500',
46
+ 'faith': 'indigo-500',
47
+ 'faith': 'violet-800',
48
+ 'federal reserve': 'neutral-700',
49
+ 'finance': 'green-500',
50
+ 'financial freedom': 'blue-600',
51
+ 'financial': 'green-700',
52
+ 'financing': 'emerald-700',
53
+ 'firearms': 'rose-700',
54
+ 'fixed income': 'zinc-600',
55
+ 'flight instructor': 'sky-700',
56
+ 'flying': 'sky-500',
57
+ 'food': 'orange-600',
58
+ 'free cities': 'teal-700',
59
+ 'free state project': 'yellow-700',
60
+ 'free-cities': 'rose-700',
61
+ 'freedom': 'sky-500',
62
+ 'freedom': 'sky-500',
63
+ 'goals': 'lime-700',
64
+ 'goals': 'orange-500',
65
+ 'government': 'rose-600',
66
+ 'guns': 'slate-900',
67
+ 'habits': 'orange-600',
68
+ 'habits': 'stone-500',
69
+ 'hard money': 'gray-800',
70
+ 'health': 'pink-500',
71
+ 'history': 'pink-600',
72
+ 'homeless': 'blue-950',
73
+ 'house hacking': 'green-700',
74
+ 'housing': 'pink-600',
75
+ 'humor': 'amber-600',
76
+ 'income investing': 'green-700',
77
+ 'inflation': 'emerald-600',
78
+ 'innovation': 'fuchsia-600',
79
+ 'innovation': 'yellow-500',
80
+ 'interest rates': 'amber-600',
81
+ 'investing': 'green-600',
82
+ 'jesus': 'blue-700',
83
+ 'kids': 'yellow-500',
84
+ 'law': 'slate-700',
85
+ 'leadership': 'indigo-700',
86
+ 'leadership': 'violet-800',
87
+ 'leverage': 'rose-500',
88
+ 'libertarian': 'yellow-500',
89
+ 'liberty': 'blue-600',
90
+ 'life hacks': 'orange-600',
91
+ 'life-hacks': 'pink-600',
92
+ 'market education': 'blue-600',
93
+ 'marketing': 'emerald-300',
94
+ 'mental freedom': 'cyan-600',
95
+ 'meritocracy': 'amber-600',
96
+ 'meritocracy': 'slate-900',
97
+ 'metrics': 'zinc-500',
98
+ 'mindset': 'indigo-600',
99
+ 'monetary policy': 'neutral-700',
100
+ 'motivation': 'yellow-500',
101
+ 'multifamily': 'teal-600',
102
+ 'mutual funds': 'green-600',
103
+ 'negotiation': 'blue-500',
104
+ 'new hampshire': 'yellow-500',
105
+ 'options trading': 'emerald-600',
106
+ 'options': 'emerald-500',
107
+ 'overcoming fear': 'pink-500',
108
+ 'parenting': 'yellow-400',
109
+ 'passive income': 'indigo-500',
110
+ 'personal development': 'violet-500',
111
+ 'personal responsibility': 'stone-700',
112
+ 'persuasion': 'fuchsia-600',
113
+ 'philosophy': 'fuchsia-900',
114
+ 'pilot lessons': 'purple-600',
115
+ 'pilot training': 'slate-700',
116
+ 'pilot': 'sky-600',
117
+ 'police': 'red-700',
118
+ 'political freedom': 'fuchsia-600',
119
+ 'politics': 'rose-600',
120
+ 'portfolio diversification': 'violet-600',
121
+ 'portfolio management': 'cyan-600',
122
+ 'portfolio': 'teal-700',
123
+ 'preferred stock': 'purple-500',
124
+ 'psychology': 'pink-700',
125
+ 'psychology': 'pink-700',
126
+ 'public-speaking': 'blue-700',
127
+ 'quantitative easing': 'neutral-600',
128
+ 'real estate': 'red-600',
129
+ 'real-estate': 'yellow-500',
130
+ 'relationships': 'pink-500',
131
+ 'risk management': 'violet-700',
132
+ 'safety': 'indigo-700',
133
+ 'sales': 'emerald-500',
134
+ 'sales': 'orange-500',
135
+ 'scalping': 'red-700',
136
+ 'science': 'teal-600',
137
+ 'self-help': 'red-500',
138
+ 'sound money': 'amber-400',
139
+ 'speaking': 'blue-700',
140
+ 'spiritual freedom': 'pink-600',
141
+ 'spiritual': 'fuchsia-800',
142
+ 'sports': 'red-700',
143
+ 'startup': 'sky-400',
144
+ 'stocks': 'green-600',
145
+ 'stories': 'pink-700',
146
+ 'syndication': 'indigo-500',
147
+ 'systematic approach': 'slate-600',
148
+ 'taxes': 'rose-600',
149
+ 'tech': 'violet-950',
150
+ 'trading': 'green-500',
151
+ 'travel': 'teal-600',
152
+ 'trusts': 'stone-600',
153
+ 'veterans': 'blue-700',
154
+ 'wealth building': 'emerald-700',
155
+ 'wealth preservation': 'teal-700',
156
+ 'wheel strategy': 'amber-600',
157
+ 'young-professionals': 'yellow-500',
158
+ 'youth-development': 'yellow-500',
159
+ };