gaboesquivel 6.4.0 → 7.0.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.
- package/dist/chunk-5UDS4FFQ.mjs +3424 -0
- package/dist/chunk-RJIWM26U.mjs +3343 -0
- package/dist/cli.js +435 -279
- package/dist/cli.mjs +1 -1
- package/dist/content/cv/ai.md +9 -9
- package/dist/content/cv/full.md +1 -1
- package/dist/content/cv/fullstack.md +5 -5
- package/dist/content/cv/web3.md +11 -10
- package/dist/content/experience/bitlauncher.md +11 -2
- package/dist/content/experience/eos-costa-rica.md +2 -1
- package/dist/content/experience/knowledge.md +1 -0
- package/dist/content/experience/legalagent.md +4 -2
- package/dist/content/experience/opyn.md +2 -2
- package/dist/content/experience/raremint.md +1 -1
- package/dist/content/experience/ztx.md +3 -0
- package/dist/content/projects/4tius-fitness-data-tracker.md +3 -4
- package/dist/content/projects/amc-yeah-tv-facebook-app.md +10 -3
- package/dist/content/projects/amex-money-talk.md +9 -3
- package/dist/content/projects/arinc-microfids.md +10 -4
- package/dist/content/projects/asoblockchain.md +4 -5
- package/dist/content/projects/bureau-of-trade-beta.md +13 -10
- package/dist/content/projects/capoeira-abolicao.md +2 -3
- package/dist/content/projects/chaingraph.md +5 -6
- package/dist/content/projects/costa-rica-js.md +7 -7
- package/dist/content/projects/cryptocantinacr.md +5 -5
- package/dist/content/projects/earth.md +2 -2
- package/dist/content/projects/eat-arcade.md +2 -3
- package/dist/content/projects/elder-scrolls-online.md +12 -8
- package/dist/content/projects/emanate.md +4 -4
- package/dist/content/projects/eos-costa-rica.md +2 -2
- package/dist/content/projects/fantasy-tennis.md +2 -3
- package/dist/content/projects/fantasy-top-shots.md +8 -11
- package/dist/content/projects/gridium.md +12 -6
- package/dist/content/projects/jockey-hollow-bar-and-kitchen-menu-kiosk-app.md +7 -5
- package/dist/content/projects/jockey-hollow-bar-and-kitchen.md +8 -2
- package/dist/content/projects/make-sense-labs.md +4 -5
- package/dist/content/projects/masterbots.md +1 -1
- package/dist/content/projects/mobtion.md +2 -2
- package/dist/content/projects/opyn.md +4 -4
- package/dist/content/projects/photo-and-go.md +6 -2
- package/dist/content/projects/proparques.md +1 -1
- package/dist/content/projects/raremint.md +2 -2
- package/dist/content/projects/substrate-contracts-ui.md +3 -5
- package/dist/content/projects/tikr.md +5 -6
- package/dist/content/projects/tractor-supply.md +5 -5
- package/dist/content/projects/wizard-world.md +2 -2
- package/dist/content/tech/docker.md +2 -2
- package/dist/content/tech/ethereum.md +1 -1
- package/dist/content/tech/ethersjs.md +3 -3
- package/dist/content/tech/expo.md +2 -3
- package/dist/content/tech/foundry.md +3 -3
- package/dist/content/tech/javascript.md +2 -2
- package/dist/content/tech/react-native.md +4 -4
- package/dist/content/tech/reactjs.md +1 -1
- package/dist/content/tech/redis.md +3 -3
- package/dist/content/tech/serverless.md +3 -3
- package/dist/content/tech/solidity.md +1 -1
- package/dist/content/tech/tailwind.md +2 -2
- package/dist/content/tech/terraform.md +1 -1
- package/dist/content/tech/typescript.md +2 -2
- package/dist/content/tech/wagmi.md +2 -2
- package/dist/cv.json +15 -15
- package/dist/experience.json +12 -7
- package/dist/index.js +462 -301
- package/dist/index.mjs +28 -23
- package/dist/projects.json +109 -127
- package/dist/tech.json +25 -26
- package/package.json +2 -2
- package/readme.md +5 -2
|
@@ -0,0 +1,3424 @@
|
|
|
1
|
+
// src/generated/projects.ts
|
|
2
|
+
var projects = [
|
|
3
|
+
{
|
|
4
|
+
title: "4Tius Fitness Data Tracker",
|
|
5
|
+
slug: "4tius-fitness-data-tracker",
|
|
6
|
+
description: "A Fitbit-connected fitness data platform with a responsive analytics dashboard and secure API.",
|
|
7
|
+
tech: [
|
|
8
|
+
"NodeJS",
|
|
9
|
+
"AWS",
|
|
10
|
+
"MongoDB",
|
|
11
|
+
"AngularJS"
|
|
12
|
+
],
|
|
13
|
+
type: [
|
|
14
|
+
"contract",
|
|
15
|
+
"frontend",
|
|
16
|
+
"backend",
|
|
17
|
+
"fullstack"
|
|
18
|
+
],
|
|
19
|
+
image: "https://gaboesquivel.com/images/work/4tius.jpg",
|
|
20
|
+
images: [],
|
|
21
|
+
achievements: [
|
|
22
|
+
"Designed and developed a fitness data tracking system with Fitbit integration.",
|
|
23
|
+
"Built a responsive web dashboard for real-time analytics and monitoring.",
|
|
24
|
+
"Implemented secure API endpoints between the app and fitness devices."
|
|
25
|
+
],
|
|
26
|
+
story: [
|
|
27
|
+
"4TIUS is a wellness and fitness software company; on this contract I led the web dashboard and API for tracking activity data from wearables, including Fitbit, with MongoDB and AngularJS on AWS.",
|
|
28
|
+
"I designed the responsive analytics views for steps, distance, calories, and sleep-style metrics, and built the secure API layer between the dashboard and the devices so coaches and users could read progress without manual exports."
|
|
29
|
+
],
|
|
30
|
+
order: 30,
|
|
31
|
+
year: 2013,
|
|
32
|
+
markdown: '---\ntitle: "4Tius Fitness Data Tracker"\nslug: "4tius-fitness-data-tracker"\ndescription: "A Fitbit-connected fitness data platform with a responsive analytics dashboard and secure API."\ntech:\n - NodeJS\n - AWS\n - MongoDB\n - AngularJS\ntype:\n - contract\n - frontend\n - backend\n - fullstack\nimage: "https://gaboesquivel.com/images/work/4tius.jpg"\n\n\nimages: []\nachievements:\n - Designed and developed a fitness data tracking system with Fitbit integration.\n - Built a responsive web dashboard for real-time analytics and monitoring.\n - Implemented secure API endpoints between the app and fitness devices.\nstory:\n - 4TIUS is a wellness and fitness software company; on this contract I led the web dashboard and API for tracking activity data from wearables, including Fitbit, with MongoDB and AngularJS on AWS.\n - I designed the responsive analytics views for steps, distance, calories, and sleep-style metrics, and built the secure API layer between the dashboard and the devices so coaches and users could read progress without manual exports.\norder: 30\nyear: 2013\n---\n\n# 4Tius Fitness Data Tracker\n\nA Fitbit-connected fitness data platform with a responsive analytics dashboard and secure API.\n',
|
|
33
|
+
markdownPath: "content/projects/4tius-fitness-data-tracker.md"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
title: "AMC Yeah TV Facebook App",
|
|
37
|
+
slug: "amc-yeah-tv-facebook-app",
|
|
38
|
+
description: "An interactive movie-streaming experience with chapter navigation, Facebook integration, in-player content, and Brightcove tooling.",
|
|
39
|
+
role: "Lead UI Engineer",
|
|
40
|
+
tech: [
|
|
41
|
+
"PHP",
|
|
42
|
+
"Facebook API",
|
|
43
|
+
"AJAX",
|
|
44
|
+
"Handlebars",
|
|
45
|
+
"Brightcove API",
|
|
46
|
+
"require.js",
|
|
47
|
+
"CSS"
|
|
48
|
+
],
|
|
49
|
+
type: [
|
|
50
|
+
"full-time",
|
|
51
|
+
"lead",
|
|
52
|
+
"frontend",
|
|
53
|
+
"institution"
|
|
54
|
+
],
|
|
55
|
+
link: "http://yeahtv.com",
|
|
56
|
+
image: "https://gaboesquivel.com/images/work/yeahtv.jpg",
|
|
57
|
+
images: [],
|
|
58
|
+
achievements: [
|
|
59
|
+
"Designed and built the frontend architecture for an interactive movie player.",
|
|
60
|
+
"Integrated Brightcove for streaming, chapter playback, and back-office editing.",
|
|
61
|
+
"Implemented Facebook API features for identity, sharing, and in-player content."
|
|
62
|
+
],
|
|
63
|
+
story: [
|
|
64
|
+
"YEAH! launched at SXSW in March 2013 as AMC's streaming movie rental service at YEAHTV.com, built around classic genre films with hundreds of in-player extras (interviews, facts, quizzes) shown without covering the movie. Facebook login was required, and I owned the frontend architecture while we headed toward launch.",
|
|
65
|
+
"I integrated Facebook for identity and sharing and Brightcove for streaming, chapter playback, and back-office editing. Each title carried 400+ interactive elements, and five frontend engineers sat between AMC's creative team and the backend so the film and the extras could share one player surface."
|
|
66
|
+
],
|
|
67
|
+
experienceCompany: "AMC Networks",
|
|
68
|
+
order: 22,
|
|
69
|
+
year: 2012,
|
|
70
|
+
markdown: `---
|
|
71
|
+
title: "AMC Yeah TV Facebook App"
|
|
72
|
+
slug: "amc-yeah-tv-facebook-app"
|
|
73
|
+
description: "An interactive movie-streaming experience with chapter navigation, Facebook integration, in-player content, and Brightcove tooling."
|
|
74
|
+
role: "Lead UI Engineer"
|
|
75
|
+
tech:
|
|
76
|
+
- PHP
|
|
77
|
+
- Facebook API
|
|
78
|
+
- AJAX
|
|
79
|
+
- Handlebars
|
|
80
|
+
- Brightcove API
|
|
81
|
+
- require.js
|
|
82
|
+
- CSS
|
|
83
|
+
type:
|
|
84
|
+
- full-time
|
|
85
|
+
- lead
|
|
86
|
+
- frontend
|
|
87
|
+
- institution
|
|
88
|
+
link: "http://yeahtv.com"
|
|
89
|
+
image: "https://gaboesquivel.com/images/work/yeahtv.jpg"
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
images: []
|
|
93
|
+
achievements:
|
|
94
|
+
- Designed and built the frontend architecture for an interactive movie player.
|
|
95
|
+
- Integrated Brightcove for streaming, chapter playback, and back-office editing.
|
|
96
|
+
- Implemented Facebook API features for identity, sharing, and in-player content.
|
|
97
|
+
story:
|
|
98
|
+
- >-
|
|
99
|
+
YEAH! launched at SXSW in March 2013 as AMC's streaming movie rental service at
|
|
100
|
+
YEAHTV.com, built around classic genre films with hundreds of in-player extras
|
|
101
|
+
(interviews, facts, quizzes) shown without covering the movie. Facebook login was
|
|
102
|
+
required, and I owned the frontend architecture while we headed toward launch.
|
|
103
|
+
- >-
|
|
104
|
+
I integrated Facebook for identity and sharing and Brightcove for streaming,
|
|
105
|
+
chapter playback, and back-office editing. Each title carried 400+ interactive
|
|
106
|
+
elements, and five frontend engineers sat between AMC's creative team and the
|
|
107
|
+
backend so the film and the extras could share one player surface.
|
|
108
|
+
experienceCompany: "AMC Networks"
|
|
109
|
+
order: 22
|
|
110
|
+
year: 2012
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
# AMC Yeah TV Facebook App
|
|
114
|
+
|
|
115
|
+
An interactive movie-streaming experience with chapter navigation, Facebook integration, in-player content, and Brightcove tooling.
|
|
116
|
+
`,
|
|
117
|
+
markdownPath: "content/projects/amc-yeah-tv-facebook-app.md"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
title: "American Express",
|
|
121
|
+
slug: "american-express",
|
|
122
|
+
description: "American Express cardmember and marketing web experiences with responsive interfaces, experimentation, and analytics.",
|
|
123
|
+
role: "UI Engineer",
|
|
124
|
+
tech: [
|
|
125
|
+
"JSP (Struts)",
|
|
126
|
+
"Omniture",
|
|
127
|
+
"Adobe mBox",
|
|
128
|
+
"Facebook API",
|
|
129
|
+
"Dojo",
|
|
130
|
+
"jQuery",
|
|
131
|
+
"CSS",
|
|
132
|
+
"AJAX"
|
|
133
|
+
],
|
|
134
|
+
type: [
|
|
135
|
+
"full-time",
|
|
136
|
+
"frontend",
|
|
137
|
+
"institution"
|
|
138
|
+
],
|
|
139
|
+
link: "https://www.americanexpress.com/",
|
|
140
|
+
image: "https://gaboesquivel.com/images/work/amex.jpg",
|
|
141
|
+
images: [],
|
|
142
|
+
achievements: [
|
|
143
|
+
"Moved the frontend from Dojo to jQuery.",
|
|
144
|
+
"Built credit-card marketing screens: comparison sliders and landing pages.",
|
|
145
|
+
"Wired responsive layouts, A/B testing, and analytics."
|
|
146
|
+
],
|
|
147
|
+
story: [
|
|
148
|
+
"At American Express I built cardmember and marketing web experiences: comparison sliders, landing pages, responsive layouts, A/B testing, and analytics.",
|
|
149
|
+
"I helped move a large frontend from Dojo to jQuery while keeping experimentation and measurement in place on live financial surfaces."
|
|
150
|
+
],
|
|
151
|
+
experienceCompany: "American Express",
|
|
152
|
+
order: 19,
|
|
153
|
+
year: 2010,
|
|
154
|
+
markdown: `---
|
|
155
|
+
title: "American Express"
|
|
156
|
+
slug: "american-express"
|
|
157
|
+
description: "American Express cardmember and marketing web experiences with responsive interfaces, experimentation, and analytics."
|
|
158
|
+
role: "UI Engineer"
|
|
159
|
+
tech:
|
|
160
|
+
- JSP (Struts)
|
|
161
|
+
- Omniture
|
|
162
|
+
- Adobe mBox
|
|
163
|
+
- Facebook API
|
|
164
|
+
- Dojo
|
|
165
|
+
- jQuery
|
|
166
|
+
- CSS
|
|
167
|
+
- AJAX
|
|
168
|
+
type:
|
|
169
|
+
- full-time
|
|
170
|
+
- frontend
|
|
171
|
+
- institution
|
|
172
|
+
link: "https://www.americanexpress.com/"
|
|
173
|
+
image: "https://gaboesquivel.com/images/work/amex.jpg"
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
images: []
|
|
177
|
+
achievements:
|
|
178
|
+
- Moved the frontend from Dojo to jQuery.
|
|
179
|
+
- 'Built credit-card marketing screens: comparison sliders and landing pages.'
|
|
180
|
+
- Wired responsive layouts, A/B testing, and analytics.
|
|
181
|
+
story:
|
|
182
|
+
- "At American Express I built cardmember and marketing web experiences: comparison sliders, landing pages, responsive layouts, A/B testing, and analytics."
|
|
183
|
+
- I helped move a large frontend from Dojo to jQuery while keeping experimentation and measurement in place on live financial surfaces.
|
|
184
|
+
experienceCompany: "American Express"
|
|
185
|
+
order: 19
|
|
186
|
+
year: 2010
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
# American Express
|
|
190
|
+
|
|
191
|
+
American Express cardmember and marketing web experiences with responsive interfaces, experimentation, and analytics.
|
|
192
|
+
`,
|
|
193
|
+
markdownPath: "content/projects/american-express.md"
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
title: "AMEX Money Talk",
|
|
197
|
+
slug: "amex-money-talk",
|
|
198
|
+
description: "An American Express family-finance campaign centered on conversations between parents and teenagers.",
|
|
199
|
+
tech: [
|
|
200
|
+
"JavaScript",
|
|
201
|
+
"CSS"
|
|
202
|
+
],
|
|
203
|
+
type: [
|
|
204
|
+
"other",
|
|
205
|
+
"frontend",
|
|
206
|
+
"institution"
|
|
207
|
+
],
|
|
208
|
+
link: "https://web.archive.org/web/20100816155008/http://www.moneynighttalk.com/",
|
|
209
|
+
image: "https://gaboesquivel.com/images/work/money-talk.jpg",
|
|
210
|
+
images: [],
|
|
211
|
+
achievements: [
|
|
212
|
+
"Built the campaign landing page for American Express National Money Night Talk.",
|
|
213
|
+
"Built a responsive landing page that held up on phones as well as desktops."
|
|
214
|
+
],
|
|
215
|
+
story: [
|
|
216
|
+
"The National Money Night Talk was an American Express campaign with personal-finance expert Jean Chatzky, built around a September 16, 2010 pledge for parents to talk with their kids about money. The site at moneynighttalk.com offered videos, talking points for middle school, high school, and college tracks, and launched alongside the PASS prepaid card for teens.",
|
|
217
|
+
"I built the responsive campaign landing page where visitors signed the pledge and reached those resources on desktop and mobile."
|
|
218
|
+
],
|
|
219
|
+
experienceCompany: "American Express",
|
|
220
|
+
order: 20,
|
|
221
|
+
year: 2010,
|
|
222
|
+
markdown: '---\ntitle: "AMEX Money Talk"\nslug: "amex-money-talk"\ndescription: "An American Express family-finance campaign centered on conversations between parents and teenagers."\ntech:\n - JavaScript\n - CSS\ntype:\n - other\n - frontend\n - institution\nexperienceCompany: "American Express"\nlink: "https://web.archive.org/web/20100816155008/http://www.moneynighttalk.com/"\nimage: "https://gaboesquivel.com/images/work/money-talk.jpg"\n\n\nimages: []\nachievements:\n - Built the campaign landing page for American Express National Money Night Talk.\n - Built a responsive landing page that held up on phones as well as desktops.\nstory:\n - >-\n The National Money Night Talk was an American Express campaign with personal-finance\n expert Jean Chatzky, built around a September 16, 2010 pledge for parents to talk\n with their kids about money. The site at moneynighttalk.com offered videos,\n talking points for middle school, high school, and college tracks, and launched\n alongside the PASS prepaid card for teens.\n - I built the responsive campaign landing page where visitors signed the pledge and reached those resources on desktop and mobile.\norder: 20\nyear: 2010\n---\n\n# AMEX Money Talk\n\nAn American Express family-finance campaign centered on conversations between parents and teenagers.\n',
|
|
223
|
+
markdownPath: "content/projects/amex-money-talk.md"
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
title: "ARINC Microfids",
|
|
227
|
+
slug: "arinc-microfids",
|
|
228
|
+
description: "A realtime flight-information display for hotels and airport businesses, backed by Ruby on Rails.",
|
|
229
|
+
tech: [
|
|
230
|
+
"Ruby on Rails",
|
|
231
|
+
"AngularJS",
|
|
232
|
+
"Faye",
|
|
233
|
+
"LESS",
|
|
234
|
+
"Heroku"
|
|
235
|
+
],
|
|
236
|
+
type: [
|
|
237
|
+
"contract",
|
|
238
|
+
"frontend"
|
|
239
|
+
],
|
|
240
|
+
image: "https://gaboesquivel.com/images/work/arinc.png",
|
|
241
|
+
images: [],
|
|
242
|
+
achievements: [
|
|
243
|
+
"Developed a real-time flight information display system.",
|
|
244
|
+
"Connected the Ruby on Rails backend to AngularJS so flight data updated without a page reload.",
|
|
245
|
+
"Tuned frontend performance for realtime updates."
|
|
246
|
+
],
|
|
247
|
+
story: [
|
|
248
|
+
"ARINC microFIDS is a compact wireless flight board for hotels and airport-adjacent properties, with screen sizes from tablet to large-format displays and hotel promotions alongside live departures and arrivals. I built the web frontend and realtime integration on Ruby on Rails.",
|
|
249
|
+
"I connected the Rails backend to AngularJS and used Faye for push updates, so flight changes reached the boards travelers were reading in lobbies and guest rooms without a full page reload."
|
|
250
|
+
],
|
|
251
|
+
order: 35,
|
|
252
|
+
year: 2013,
|
|
253
|
+
markdown: '---\ntitle: "ARINC Microfids"\nslug: "arinc-microfids"\ndescription: "A realtime flight-information display for hotels and airport businesses, backed by Ruby on Rails."\ntech:\n - Ruby on Rails\n - AngularJS\n - Faye\n - LESS\n - Heroku\ntype:\n - contract\n - frontend\nimage: "https://gaboesquivel.com/images/work/arinc.png"\n\n\nimages: []\nachievements:\n - Developed a real-time flight information display system.\n - Connected the Ruby on Rails backend to AngularJS so flight data updated without a page reload.\n - Tuned frontend performance for realtime updates.\nstory:\n - >-\n ARINC microFIDS is a compact wireless flight board for hotels and airport-adjacent\n properties, with screen sizes from tablet to large-format displays and hotel\n promotions alongside live departures and arrivals. I built the web frontend and\n realtime integration on Ruby on Rails.\n - >-\n I connected the Rails backend to AngularJS and used Faye for push updates, so\n flight changes reached the boards travelers were reading in lobbies and guest\n rooms without a full page reload.\norder: 35\nyear: 2013\n---\n\n# ARINC Microfids\n\nA realtime flight-information display for hotels and airport businesses, backed by Ruby on Rails.\n',
|
|
254
|
+
markdownPath: "content/projects/arinc-microfids.md"
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
title: "AsoBlockchain",
|
|
258
|
+
slug: "asoblockchain",
|
|
259
|
+
description: "A Costa Rican nonprofit association for blockchain education, industry collaboration, events, and policy engagement.",
|
|
260
|
+
tech: [
|
|
261
|
+
"Blockchain"
|
|
262
|
+
],
|
|
263
|
+
type: [
|
|
264
|
+
"other",
|
|
265
|
+
"lead"
|
|
266
|
+
],
|
|
267
|
+
link: "https://asoblockchain.org",
|
|
268
|
+
image: "https://gaboesquivel.com/images/2018/06/blockchain-costa-rica.jpg",
|
|
269
|
+
video: "https://www.youtube.com/watch?v=-1y0fGs8Xgw",
|
|
270
|
+
images: [
|
|
271
|
+
"https://gaboesquivel.com/images/work/ticoblockchain.jpg",
|
|
272
|
+
"https://gaboesquivel.com/images/2019/02/ticoblockchain_eosio_workshop.jpg"
|
|
273
|
+
],
|
|
274
|
+
achievements: [
|
|
275
|
+
"Co-founded Costa Rica's blockchain association at its October 2018 launch in San Jos\xE9.",
|
|
276
|
+
"Helped start CryptoCantinaCR under the BlockchainCR community before the association's formal programs.",
|
|
277
|
+
"Organized TicoBlockchain, Costa Rica's first international crypto and blockchain conference.",
|
|
278
|
+
"Developed advocacy programs for blockchain policy and regulation.",
|
|
279
|
+
"Ran educational programs, industry partnerships, and community events for members."
|
|
280
|
+
],
|
|
281
|
+
story: [
|
|
282
|
+
"AsoBlockchain is a Costa Rican nonprofit for blockchain education, industry collaboration, events, and policy. As a co-founder, I helped set the organization's direction and first programs.",
|
|
283
|
+
"I helped start CryptoCantinaCR under BlockchainCR and co-organized the first TicoBlockchain in February 2019 as education and gathering points for the association's launch year.",
|
|
284
|
+
"I also took part in policy discussions around regulation, representing members while keeping the association's work on education, partnerships, and events."
|
|
285
|
+
],
|
|
286
|
+
related: [
|
|
287
|
+
{
|
|
288
|
+
url: "2019-03-ticoblockchain-2019-recap",
|
|
289
|
+
title: "TicoBlockchain 2019 Recap",
|
|
290
|
+
publishedAt: "2019-03-01"
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
url: "2019-01-international-crypto-conference-in-costa-rica",
|
|
294
|
+
title: "International Crypto Conference in Costa Rica",
|
|
295
|
+
publishedAt: "2019-01-01"
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
url: "2018-07-costa-rica-crypto-cantina",
|
|
299
|
+
title: "Costa Rica Crypto Cantina",
|
|
300
|
+
publishedAt: "2018-07-01"
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
url: "2018-06-blockchain-technology-in-costa-rica",
|
|
304
|
+
title: "Blockchain Technology in Costa Rica",
|
|
305
|
+
publishedAt: "2018-06-01"
|
|
306
|
+
}
|
|
307
|
+
],
|
|
308
|
+
order: 46,
|
|
309
|
+
year: 2018,
|
|
310
|
+
markdown: `---
|
|
311
|
+
title: "AsoBlockchain"
|
|
312
|
+
slug: "asoblockchain"
|
|
313
|
+
description: "A Costa Rican nonprofit association for blockchain education, industry collaboration, events, and policy engagement."
|
|
314
|
+
tech:
|
|
315
|
+
- Blockchain
|
|
316
|
+
type:
|
|
317
|
+
- other
|
|
318
|
+
- lead
|
|
319
|
+
link: "https://asoblockchain.org"
|
|
320
|
+
image: "https://gaboesquivel.com/images/2018/06/blockchain-costa-rica.jpg"
|
|
321
|
+
|
|
322
|
+
video: "https://www.youtube.com/watch?v=-1y0fGs8Xgw"
|
|
323
|
+
images:
|
|
324
|
+
- https://gaboesquivel.com/images/work/ticoblockchain.jpg
|
|
325
|
+
- https://gaboesquivel.com/images/2019/02/ticoblockchain_eosio_workshop.jpg
|
|
326
|
+
achievements:
|
|
327
|
+
- Co-founded Costa Rica's blockchain association at its October 2018 launch in San Jos\xE9.
|
|
328
|
+
- Helped start CryptoCantinaCR under the BlockchainCR community before the association's formal programs.
|
|
329
|
+
- Organized TicoBlockchain, Costa Rica's first international crypto and blockchain conference.
|
|
330
|
+
- Developed advocacy programs for blockchain policy and regulation.
|
|
331
|
+
- Ran educational programs, industry partnerships, and community events for members.
|
|
332
|
+
story:
|
|
333
|
+
- AsoBlockchain is a Costa Rican nonprofit for blockchain education, industry collaboration, events, and policy. As a co-founder, I helped set the organization's direction and first programs.
|
|
334
|
+
- I helped start CryptoCantinaCR under BlockchainCR and co-organized the first TicoBlockchain in February 2019 as education and gathering points for the association's launch year.
|
|
335
|
+
- I also took part in policy discussions around regulation, representing members while keeping the association's work on education, partnerships, and events.
|
|
336
|
+
related:
|
|
337
|
+
- url: "2019-03-ticoblockchain-2019-recap"
|
|
338
|
+
title: "TicoBlockchain 2019 Recap"
|
|
339
|
+
publishedAt: "2019-03-01"
|
|
340
|
+
- url: "2019-01-international-crypto-conference-in-costa-rica"
|
|
341
|
+
title: "International Crypto Conference in Costa Rica"
|
|
342
|
+
publishedAt: "2019-01-01"
|
|
343
|
+
- url: "2018-07-costa-rica-crypto-cantina"
|
|
344
|
+
title: "Costa Rica Crypto Cantina"
|
|
345
|
+
publishedAt: "2018-07-01"
|
|
346
|
+
- url: "2018-06-blockchain-technology-in-costa-rica"
|
|
347
|
+
title: "Blockchain Technology in Costa Rica"
|
|
348
|
+
publishedAt: "2018-06-01"
|
|
349
|
+
order: 46
|
|
350
|
+
year: 2018
|
|
351
|
+
---
|
|
352
|
+
|
|
353
|
+
# AsoBlockchain
|
|
354
|
+
|
|
355
|
+
A Costa Rican nonprofit association for blockchain education, industry collaboration, events, and policy engagement.
|
|
356
|
+
`,
|
|
357
|
+
markdownPath: "content/projects/asoblockchain.md"
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
title: "Bitcash",
|
|
361
|
+
slug: "bitcashbank",
|
|
362
|
+
description: "A fiat-to-stablecoin and cryptocurrency exchange with peer-to-peer trading, realtime chat, browser signing, and EOS data.",
|
|
363
|
+
role: "Lead Engineer",
|
|
364
|
+
tech: [
|
|
365
|
+
"Antelope",
|
|
366
|
+
"C++",
|
|
367
|
+
"ReactJS",
|
|
368
|
+
"WebAuthN",
|
|
369
|
+
"Biometrics",
|
|
370
|
+
"GCP",
|
|
371
|
+
"NodeJS",
|
|
372
|
+
"GraphQL",
|
|
373
|
+
"PostgreSQL",
|
|
374
|
+
"Supabase",
|
|
375
|
+
"TypeScript",
|
|
376
|
+
"Tailwind",
|
|
377
|
+
"Stitches",
|
|
378
|
+
"Zustand"
|
|
379
|
+
],
|
|
380
|
+
type: [
|
|
381
|
+
"web3",
|
|
382
|
+
"part-time",
|
|
383
|
+
"lead",
|
|
384
|
+
"frontend",
|
|
385
|
+
"backend",
|
|
386
|
+
"fullstack",
|
|
387
|
+
"mobile",
|
|
388
|
+
"startup"
|
|
389
|
+
],
|
|
390
|
+
link: "https://bitcash.org",
|
|
391
|
+
image: "https://gaboesquivel.com/images/work/bitcash-bank.png",
|
|
392
|
+
repo: "https://github.com/bitcashorg",
|
|
393
|
+
video: "https://www.youtube.com/watch?v=2JuHy_w0Ct4",
|
|
394
|
+
images: [],
|
|
395
|
+
achievements: [
|
|
396
|
+
"Architected the React, Vite, Node.js, PostgreSQL, Hasura, and Google Cloud stack.",
|
|
397
|
+
"Built the peer-to-peer exchange, realtime chat, and matching engine.",
|
|
398
|
+
"Built a realtime EOS indexer with Node.js worker threads, binary deserialization, and PostgreSQL.",
|
|
399
|
+
"Built WebAuthn key management for in-browser transaction signing without an external wallet.",
|
|
400
|
+
"Added EOS contract multisig while BitcashDAO voting was still being built."
|
|
401
|
+
],
|
|
402
|
+
story: [
|
|
403
|
+
"Bitcash was a fiat-to-stablecoin and crypto exchange. I architected the stack and built the peer-to-peer exchange, realtime chat, and matching engine.",
|
|
404
|
+
"Browser signing without an external wallet was the constraint. QR signature requests over Supabase subscriptions and webhooks later let bitlauncher.ai and other partner apps authenticate and sign through the Bitcash session.",
|
|
405
|
+
"The exchange never found traction past about 500 users, mostly in developing-country markets. Marketing and distribution stayed behind the product."
|
|
406
|
+
],
|
|
407
|
+
experienceCompany: "Bitcash",
|
|
408
|
+
order: 7,
|
|
409
|
+
year: 2020,
|
|
410
|
+
markdown: '---\ntitle: "Bitcash"\nslug: "bitcashbank"\ndescription: "A fiat-to-stablecoin and cryptocurrency exchange with peer-to-peer trading, realtime chat, browser signing, and EOS data."\nrole: "Lead Engineer"\ntech:\n - Antelope\n - C++\n - ReactJS\n - WebAuthN\n - Biometrics\n - GCP\n - NodeJS\n - GraphQL\n - PostgreSQL\n - Supabase\n - TypeScript\n - Tailwind\n - Stitches\n - Zustand\ntype:\n - web3\n - part-time\n - lead\n - frontend\n - backend\n - fullstack\n - mobile\n - startup\nlink: "https://bitcash.org"\nimage: "https://gaboesquivel.com/images/work/bitcash-bank.png"\nrepo: "https://github.com/bitcashorg"\nvideo: "https://www.youtube.com/watch?v=2JuHy_w0Ct4"\nimages: []\nachievements:\n - Architected the React, Vite, Node.js, PostgreSQL, Hasura, and Google Cloud stack.\n - Built the peer-to-peer exchange, realtime chat, and matching engine.\n - Built a realtime EOS indexer with Node.js worker threads, binary deserialization, and PostgreSQL.\n - Built WebAuthn key management for in-browser transaction signing without an external wallet.\n - Added EOS contract multisig while BitcashDAO voting was still being built.\nstory:\n - Bitcash was a fiat-to-stablecoin and crypto exchange. I architected the stack and built the peer-to-peer exchange, realtime chat, and matching engine.\n - Browser signing without an external wallet was the constraint. QR signature requests over Supabase subscriptions and webhooks later let bitlauncher.ai and other partner apps authenticate and sign through the Bitcash session.\n - The exchange never found traction past about 500 users, mostly in developing-country markets. Marketing and distribution stayed behind the product.\nexperienceCompany: "Bitcash"\norder: 7\nyear: 2020\n---\n\n# Bitcash\n\nA fiat-to-stablecoin and cryptocurrency exchange with peer-to-peer trading, realtime chat, browser signing, and EOS data.\n',
|
|
411
|
+
markdownPath: "content/projects/bitcashbank.md"
|
|
412
|
+
},
|
|
413
|
+
{
|
|
414
|
+
title: "Bitlauncher",
|
|
415
|
+
slug: "bitlauncher",
|
|
416
|
+
description: "AI and crypto launchpad for token sales, batch auctions, cross-chain wallets, bridges, indexed market data, and AI-assisted investor tools.",
|
|
417
|
+
role: "Product Engineer",
|
|
418
|
+
tech: [
|
|
419
|
+
"TypeScript",
|
|
420
|
+
"Solidity",
|
|
421
|
+
"Hardhat",
|
|
422
|
+
"Antelope",
|
|
423
|
+
"NextJS",
|
|
424
|
+
"ReactJS",
|
|
425
|
+
"Viem",
|
|
426
|
+
"Wagmi",
|
|
427
|
+
"NodeJS",
|
|
428
|
+
"PostgreSQL",
|
|
429
|
+
"Ethereum",
|
|
430
|
+
"GCP",
|
|
431
|
+
"Docker",
|
|
432
|
+
"Alchemy",
|
|
433
|
+
"Trigger",
|
|
434
|
+
"Supabase",
|
|
435
|
+
"ShadcnUI",
|
|
436
|
+
"Tailwind",
|
|
437
|
+
"TanStack Query",
|
|
438
|
+
"Zod",
|
|
439
|
+
"nuqs",
|
|
440
|
+
"OpenAI",
|
|
441
|
+
"AI SDK",
|
|
442
|
+
"Artificial Intelligence"
|
|
443
|
+
],
|
|
444
|
+
type: [
|
|
445
|
+
"web3",
|
|
446
|
+
"ai",
|
|
447
|
+
"oss",
|
|
448
|
+
"full-time",
|
|
449
|
+
"lead",
|
|
450
|
+
"defi",
|
|
451
|
+
"featured",
|
|
452
|
+
"frontend",
|
|
453
|
+
"backend",
|
|
454
|
+
"fullstack",
|
|
455
|
+
"startup"
|
|
456
|
+
],
|
|
457
|
+
link: "https://bitlauncher.ai",
|
|
458
|
+
image: "https://gaboesquivel.com/images/work/bitlauncher.png",
|
|
459
|
+
repo: "https://github.com/bitcashorg/smartevm",
|
|
460
|
+
video: "https://www.youtube.com/watch?v=U6vn3KOEwcQ",
|
|
461
|
+
images: [],
|
|
462
|
+
achievements: [
|
|
463
|
+
"Architected the platform on Next.js 14, Supabase, viem, wagmi, Alchemy, Trigger.dev, and shadcn/ui.",
|
|
464
|
+
"Built a token bridge for swapping USDT, USDC, and BITUSD to USDCred so bids could settle in protocol tokens.",
|
|
465
|
+
"Indexed transactions in Supabase for queries, realtime subscriptions, and aggregate market data.",
|
|
466
|
+
"Deployed Gnosis auction Solidity contracts to EOS EVM and developed a bidding interface with real-time updates via Supabase subscriptions.",
|
|
467
|
+
"Created a wallet interface that displays real-time EVM balances through Wagmi token balance subscriptions and EOS token balances via RPC polling.",
|
|
468
|
+
"Built a custom indexer for EOS EVM using Node.js, Viem EVM event subscriptions, and dFuse stream for EOS.",
|
|
469
|
+
"Developed the chatbot at bitlauncher.ai, with tool calls for current news and YouTube content, and RAG for longer answers.",
|
|
470
|
+
"Implemented Masterbots prompting and AI-assisted internationalization.",
|
|
471
|
+
"Automated the AI-assisted workflow with v0.dev, Claude Sonnet, Cursor, and SourceryAI."
|
|
472
|
+
],
|
|
473
|
+
story: [
|
|
474
|
+
"Bitlauncher was an AI and crypto launchpad I helped form with a business partner. I owned product direction, scope, technical decisions, and delivery from concept through implementation.",
|
|
475
|
+
"The engineering team had two full-time developers, with up to five part-time contributors working on specific tickets. I coordinated delivery while remaining hands-on across the stack.",
|
|
476
|
+
"The product combined onchain auctions, wallet and bridge flows, indexed market data, and AI tools for project research. My work covered the boundaries between those systems rather than a single layer."
|
|
477
|
+
],
|
|
478
|
+
related: [
|
|
479
|
+
{
|
|
480
|
+
url: "2024-07-viem-wagmi-ethers",
|
|
481
|
+
title: "Viem, Wagmi, and Ethers",
|
|
482
|
+
publishedAt: "2024-07-01"
|
|
483
|
+
},
|
|
484
|
+
{
|
|
485
|
+
url: "2024-07-ai-and-web3",
|
|
486
|
+
title: "AI and Web3",
|
|
487
|
+
publishedAt: "2024-07-01"
|
|
488
|
+
},
|
|
489
|
+
{
|
|
490
|
+
url: "2025-11-web3-and-ai",
|
|
491
|
+
title: "Web3 and AI",
|
|
492
|
+
publishedAt: "2025-11-01"
|
|
493
|
+
}
|
|
494
|
+
],
|
|
495
|
+
experienceCompany: "Bitlauncher",
|
|
496
|
+
order: 3,
|
|
497
|
+
year: 2023,
|
|
498
|
+
markdown: '---\ntitle: "Bitlauncher"\nslug: "bitlauncher"\ndescription: "AI and crypto launchpad for token sales, batch auctions, cross-chain wallets, bridges, indexed market data, and AI-assisted investor tools."\nrole: "Product Engineer"\ntech:\n - TypeScript\n - Solidity\n - Hardhat\n - Antelope\n - NextJS\n - ReactJS\n - Viem\n - Wagmi\n - NodeJS\n - PostgreSQL\n - Ethereum\n - GCP\n - Docker\n - Alchemy\n - Trigger\n - Supabase\n - ShadcnUI\n - Tailwind\n - TanStack Query\n - Zod\n - nuqs\n - OpenAI\n - AI SDK\n - Artificial Intelligence\ntype:\n - web3\n - ai\n - oss\n - full-time\n - lead\n - defi\n - featured\n - frontend\n - backend\n - fullstack\n - startup\nlink: "https://bitlauncher.ai"\nimage: "https://gaboesquivel.com/images/work/bitlauncher.png"\nrepo: "https://github.com/bitcashorg/smartevm"\nvideo: "https://www.youtube.com/watch?v=U6vn3KOEwcQ"\nimages: []\nachievements:\n - Architected the platform on Next.js 14, Supabase, viem, wagmi, Alchemy, Trigger.dev, and shadcn/ui.\n - Built a token bridge for swapping USDT, USDC, and BITUSD to USDCred so bids could settle in protocol tokens.\n - Indexed transactions in Supabase for queries, realtime subscriptions, and aggregate market data.\n - Deployed Gnosis auction Solidity contracts to EOS EVM and developed a bidding interface with real-time updates via Supabase subscriptions.\n - Created a wallet interface that displays real-time EVM balances through Wagmi token balance subscriptions and EOS token balances via RPC polling.\n - Built a custom indexer for EOS EVM using Node.js, Viem EVM event subscriptions, and dFuse stream for EOS.\n - Developed the chatbot at bitlauncher.ai, with tool calls for current news and YouTube content, and RAG for longer answers.\n - Implemented Masterbots prompting and AI-assisted internationalization.\n - Automated the AI-assisted workflow with v0.dev, Claude Sonnet, Cursor, and SourceryAI.\nstory:\n - Bitlauncher was an AI and crypto launchpad I helped form with a business partner. I owned product direction, scope, technical decisions, and delivery from concept through implementation.\n - The engineering team had two full-time developers, with up to five part-time contributors working on specific tickets. I coordinated delivery while remaining hands-on across the stack.\n - The product combined onchain auctions, wallet and bridge flows, indexed market data, and AI tools for project research. My work covered the boundaries between those systems rather than a single layer.\nexperienceCompany: "Bitlauncher"\norder: 3\nyear: 2023\nrelated:\n - url: "2024-07-viem-wagmi-ethers"\n title: "Viem, Wagmi, and Ethers"\n publishedAt: "2024-07-01"\n - url: "2024-07-ai-and-web3"\n title: "AI and Web3"\n publishedAt: "2024-07-01"\n - url: "2025-11-web3-and-ai"\n title: "Web3 and AI"\n publishedAt: "2025-11-01"\n---\n\n# Bitlauncher\n\nAI and crypto launchpad for token sales, batch auctions, cross-chain wallets, bridges, indexed market data, and AI-assisted investor tools.\n',
|
|
499
|
+
markdownPath: "content/projects/bitlauncher.md"
|
|
500
|
+
},
|
|
501
|
+
{
|
|
502
|
+
title: "Bureau of Trade (Beta)",
|
|
503
|
+
slug: "bureau-of-trade-beta",
|
|
504
|
+
description: "A men's editorial marketplace in public beta with responsive browsing and animated product interfaces.",
|
|
505
|
+
tech: [
|
|
506
|
+
"PHP",
|
|
507
|
+
"AJAX",
|
|
508
|
+
"jQuery",
|
|
509
|
+
"CSS"
|
|
510
|
+
],
|
|
511
|
+
type: [
|
|
512
|
+
"contract",
|
|
513
|
+
"frontend"
|
|
514
|
+
],
|
|
515
|
+
link: "http://www.bureauoftrade.com/",
|
|
516
|
+
image: "https://gaboesquivel.com/images/work/bureau-of-trade.jpg",
|
|
517
|
+
images: [],
|
|
518
|
+
achievements: [
|
|
519
|
+
"Built a responsive storefront for Bureau of Trade's public beta launch.",
|
|
520
|
+
"Built UI animations for product browsing and page transitions.",
|
|
521
|
+
"Tuned site performance for faster product browsing."
|
|
522
|
+
],
|
|
523
|
+
story: [
|
|
524
|
+
"Bureau of Trade was a men's shopping site in public beta by 2012, with editorial copy and listings sifted from major marketplaces rather than a traditional retailer catalog. I was the only full-stack developer, and most of my work sat in the frontend: responsive layouts, animations, and the browsing experience around those listings.",
|
|
525
|
+
"I built page transitions and listing views that could handle a wide merchandise mix (clothing, watches, vehicles, art, and more) and tuned performance so product pages loaded faster during the beta."
|
|
526
|
+
],
|
|
527
|
+
order: 27,
|
|
528
|
+
year: 2013,
|
|
529
|
+
markdown: `---
|
|
530
|
+
title: "Bureau of Trade (Beta)"
|
|
531
|
+
slug: "bureau-of-trade-beta"
|
|
532
|
+
description: "A men's editorial marketplace in public beta with responsive browsing and animated product interfaces."
|
|
533
|
+
tech:
|
|
534
|
+
- PHP
|
|
535
|
+
- AJAX
|
|
536
|
+
- jQuery
|
|
537
|
+
- CSS
|
|
538
|
+
type:
|
|
539
|
+
- contract
|
|
540
|
+
- frontend
|
|
541
|
+
link: "http://www.bureauoftrade.com/"
|
|
542
|
+
image: "https://gaboesquivel.com/images/work/bureau-of-trade.jpg"
|
|
543
|
+
|
|
544
|
+
|
|
545
|
+
images: []
|
|
546
|
+
achievements:
|
|
547
|
+
- Built a responsive storefront for Bureau of Trade's public beta launch.
|
|
548
|
+
- Built UI animations for product browsing and page transitions.
|
|
549
|
+
- Tuned site performance for faster product browsing.
|
|
550
|
+
story:
|
|
551
|
+
- >-
|
|
552
|
+
Bureau of Trade was a men's shopping site in public beta by 2012, with
|
|
553
|
+
editorial copy and listings sifted from major marketplaces rather than a
|
|
554
|
+
traditional retailer catalog. I was the only full-stack developer, and most
|
|
555
|
+
of my work sat in the frontend: responsive layouts, animations, and the
|
|
556
|
+
browsing experience around those listings.
|
|
557
|
+
- I built page transitions and listing views that could handle a wide merchandise mix (clothing, watches, vehicles, art, and more) and tuned performance so product pages loaded faster during the beta.
|
|
558
|
+
order: 27
|
|
559
|
+
year: 2013
|
|
560
|
+
---
|
|
561
|
+
|
|
562
|
+
# Bureau of Trade (Beta)
|
|
563
|
+
|
|
564
|
+
A men's editorial marketplace in public beta with responsive browsing and animated product interfaces.
|
|
565
|
+
`,
|
|
566
|
+
markdownPath: "content/projects/bureau-of-trade-beta.md"
|
|
567
|
+
},
|
|
568
|
+
{
|
|
569
|
+
title: "Capoeira Abolicao",
|
|
570
|
+
slug: "capoeira-abolicao",
|
|
571
|
+
description: "A promotional WordPress site for Capoeira Aboli\xE7\xE3o: instructors, activities, and the group's international presence.",
|
|
572
|
+
tech: [
|
|
573
|
+
"JavaScript",
|
|
574
|
+
"Wordpress",
|
|
575
|
+
"CSS",
|
|
576
|
+
"Bootstrap"
|
|
577
|
+
],
|
|
578
|
+
type: [
|
|
579
|
+
"other",
|
|
580
|
+
"frontend"
|
|
581
|
+
],
|
|
582
|
+
link: "https://capoieraabolicao.com",
|
|
583
|
+
image: "https://gaboesquivel.com/images/work/abolicao.jpg",
|
|
584
|
+
images: [],
|
|
585
|
+
achievements: [
|
|
586
|
+
"Designed and developed a responsive website for Capoeira Aboli\xE7\xE3o.",
|
|
587
|
+
"Implemented interactive elements to showcase community events.",
|
|
588
|
+
"Tuned page weight so the site loaded on the connections people actually had."
|
|
589
|
+
],
|
|
590
|
+
story: [
|
|
591
|
+
"Capoeira Aboli\xE7\xE3o is a Brazilian martial arts group. I volunteered to design and build their promotional website, which presents the group's professors, activities, and international presence.",
|
|
592
|
+
"I built it as a responsive site with JavaScript, WordPress, CSS, and Bootstrap, with interactive elements for community events and Capoeira fundamentals aimed at both current members and prospective students."
|
|
593
|
+
],
|
|
594
|
+
order: 36,
|
|
595
|
+
year: 2008,
|
|
596
|
+
markdown: `---
|
|
597
|
+
title: "Capoeira Abolicao"
|
|
598
|
+
slug: "capoeira-abolicao"
|
|
599
|
+
description: "A promotional WordPress site for Capoeira Aboli\xE7\xE3o: instructors, activities, and the group's international presence."
|
|
600
|
+
tech:
|
|
601
|
+
- JavaScript
|
|
602
|
+
- Wordpress
|
|
603
|
+
- CSS
|
|
604
|
+
- Bootstrap
|
|
605
|
+
type:
|
|
606
|
+
- other
|
|
607
|
+
- frontend
|
|
608
|
+
link: "https://capoieraabolicao.com"
|
|
609
|
+
image: "https://gaboesquivel.com/images/work/abolicao.jpg"
|
|
610
|
+
|
|
611
|
+
|
|
612
|
+
images: []
|
|
613
|
+
achievements:
|
|
614
|
+
- Designed and developed a responsive website for Capoeira Aboli\xE7\xE3o.
|
|
615
|
+
- Implemented interactive elements to showcase community events.
|
|
616
|
+
- Tuned page weight so the site loaded on the connections people actually had.
|
|
617
|
+
story:
|
|
618
|
+
- Capoeira Aboli\xE7\xE3o is a Brazilian martial arts group. I volunteered to design and build their promotional website, which presents the group's professors, activities, and international presence.
|
|
619
|
+
- I built it as a responsive site with JavaScript, WordPress, CSS, and Bootstrap, with interactive elements for community events and Capoeira fundamentals aimed at both current members and prospective students.
|
|
620
|
+
order: 36
|
|
621
|
+
year: 2008
|
|
622
|
+
---
|
|
623
|
+
|
|
624
|
+
# Capoeira Abolicao
|
|
625
|
+
|
|
626
|
+
A promotional WordPress site for Capoeira Aboli\xE7\xE3o: instructors, activities, and the group's international presence.
|
|
627
|
+
`,
|
|
628
|
+
markdownPath: "content/projects/capoeira-abolicao.md"
|
|
629
|
+
},
|
|
630
|
+
{
|
|
631
|
+
title: "ChainGraph",
|
|
632
|
+
slug: "chaingraph",
|
|
633
|
+
description: "An open-source GraphQL toolkit for indexing, streaming, and querying EOSIO and Antelope blockchain data.",
|
|
634
|
+
tech: [
|
|
635
|
+
"Antelope",
|
|
636
|
+
"NodeJS",
|
|
637
|
+
"Docker",
|
|
638
|
+
"GraphQL",
|
|
639
|
+
"GCP",
|
|
640
|
+
"RXJS",
|
|
641
|
+
"TypeScript",
|
|
642
|
+
"PostgreSQL"
|
|
643
|
+
],
|
|
644
|
+
type: [
|
|
645
|
+
"web3",
|
|
646
|
+
"oss",
|
|
647
|
+
"backend"
|
|
648
|
+
],
|
|
649
|
+
link: "https://chaingraph.io",
|
|
650
|
+
image: "https://gaboesquivel.com/images/work/chaingraph.png",
|
|
651
|
+
repo: "https://github.com/blockmatic/chaingraph",
|
|
652
|
+
images: [],
|
|
653
|
+
achievements: [
|
|
654
|
+
"Built a realtime GraphQL subscription toolkit for EOSIO and Antelope chains.",
|
|
655
|
+
"Implemented chain data indexing and event streaming.",
|
|
656
|
+
"Designed one GraphQL interface for querying multiple blockchain networks."
|
|
657
|
+
],
|
|
658
|
+
story: [
|
|
659
|
+
"ChainGraph is an open-source GraphQL toolkit for EOSIO and Antelope applications, with realtime subscriptions and queries across multiple chains.",
|
|
660
|
+
"I built it as a side project while working at Bitcash and owned the architecture, technology choices, and implementation, including the package that streams chain data to subscribers in realtime."
|
|
661
|
+
],
|
|
662
|
+
order: 10,
|
|
663
|
+
year: 2020,
|
|
664
|
+
markdown: '---\ntitle: "ChainGraph"\nslug: "chaingraph"\ndescription: "An open-source GraphQL toolkit for indexing, streaming, and querying EOSIO and Antelope blockchain data."\ntech:\n - Antelope\n - NodeJS\n - Docker\n - GraphQL\n - GCP\n - RXJS\n - TypeScript\n - PostgreSQL\ntype:\n - web3\n - oss\n - backend\nlink: "https://chaingraph.io"\nimage: "https://gaboesquivel.com/images/work/chaingraph.png"\nrepo: "https://github.com/blockmatic/chaingraph"\n\nimages: []\nachievements:\n - Built a realtime GraphQL subscription toolkit for EOSIO and Antelope chains.\n - Implemented chain data indexing and event streaming.\n - Designed one GraphQL interface for querying multiple blockchain networks.\nstory:\n - ChainGraph is an open-source GraphQL toolkit for EOSIO and Antelope applications, with realtime subscriptions and queries across multiple chains.\n - I built it as a side project while working at Bitcash and owned the architecture, technology choices, and implementation, including the package that streams chain data to subscribers in realtime.\norder: 10\nyear: 2020\n---\n\n# ChainGraph\n\nAn open-source GraphQL toolkit for indexing, streaming, and querying EOSIO and Antelope blockchain data.\n',
|
|
665
|
+
markdownPath: "content/projects/chaingraph.md"
|
|
666
|
+
},
|
|
667
|
+
{
|
|
668
|
+
title: "Costa Rica JS",
|
|
669
|
+
slug: "costa-rica-js",
|
|
670
|
+
description: "A JavaScript community on Meetup since 2012 that grew past 2,000 developers through meetups and NodeSchool Costa Rica.",
|
|
671
|
+
tech: [
|
|
672
|
+
"JavaScript",
|
|
673
|
+
"NodeJS"
|
|
674
|
+
],
|
|
675
|
+
type: [
|
|
676
|
+
"other",
|
|
677
|
+
"lead"
|
|
678
|
+
],
|
|
679
|
+
link: "https://www.meetup.com/costaricajs/",
|
|
680
|
+
image: "https://gaboesquivel.com/images/bio/nodeschool-costa-rica.jpg",
|
|
681
|
+
video: "https://vimeo.com/167755778",
|
|
682
|
+
images: [
|
|
683
|
+
"https://gaboesquivel.com/images/work/gaboesquivel-javascript-costarica.png",
|
|
684
|
+
"https://gaboesquivel.com/images/gabo-workshop.jpg",
|
|
685
|
+
"https://gaboesquivel.com/images/work/nodeschool.jpg",
|
|
686
|
+
"https://gaboesquivel.com/images/work/nodeschool-1.jpg",
|
|
687
|
+
"https://gaboesquivel.com/images/2016/05/paintballjs.jpg",
|
|
688
|
+
"https://gaboesquivel.com/images/work/gaboesquivel-presentation.jpg"
|
|
689
|
+
],
|
|
690
|
+
achievements: [
|
|
691
|
+
"Co-organized Costa Rica JS on Meetup from 2012 and grew it past 2,000 developers.",
|
|
692
|
+
"Organized regular meetups, workshops, and NodeSchool Costa Rica events.",
|
|
693
|
+
"Ran hands-on workshops as Node.js and modern web frameworks arrived in the region."
|
|
694
|
+
],
|
|
695
|
+
story: [
|
|
696
|
+
"Costa Rica JS is the JavaScript Meetup group I helped organize from 2012, after the idea took shape in 2011. It grew past 2,000 developers through meetups and NodeSchool Costa Rica; we also explored a JS conference site in the PuraVidaJS repo, but no JSConf Costa Rica event shipped.",
|
|
697
|
+
"I ran the meetups, workshops, and NodeSchool sessions. The point was practical skill-building as Node.js and modern web frameworks arrived, not a networking club with a speaker at the front.",
|
|
698
|
+
"The community became a place people used to learn, hire, and get hired. Workshops stayed hands-on so the knowledge transferred."
|
|
699
|
+
],
|
|
700
|
+
related: [
|
|
701
|
+
{
|
|
702
|
+
url: "2016-06-nodeschool-international-day",
|
|
703
|
+
title: "NodeSchool International Day",
|
|
704
|
+
publishedAt: "2016-06-01"
|
|
705
|
+
},
|
|
706
|
+
{
|
|
707
|
+
url: "2015-5-paintball.js-recap",
|
|
708
|
+
title: "Paintball.js Recap",
|
|
709
|
+
publishedAt: "2015-05-01"
|
|
710
|
+
},
|
|
711
|
+
{
|
|
712
|
+
url: "2014-01-developing-software-in-costa-rica",
|
|
713
|
+
title: "Developing Software in Costa Rica",
|
|
714
|
+
publishedAt: "2014-01-01"
|
|
715
|
+
}
|
|
716
|
+
],
|
|
717
|
+
order: 45,
|
|
718
|
+
year: 2012,
|
|
719
|
+
markdown: '---\ntitle: "Costa Rica JS"\nslug: "costa-rica-js"\ndescription: "A JavaScript community on Meetup since 2012 that grew past 2,000 developers through meetups and NodeSchool Costa Rica."\ntech:\n - JavaScript\n - NodeJS\ntype:\n - other\n - lead\nlink: "https://www.meetup.com/costaricajs/"\nimage: "https://gaboesquivel.com/images/bio/nodeschool-costa-rica.jpg"\n\nvideo: "https://vimeo.com/167755778"\nimages:\n - https://gaboesquivel.com/images/work/gaboesquivel-javascript-costarica.png\n - https://gaboesquivel.com/images/gabo-workshop.jpg\n - https://gaboesquivel.com/images/work/nodeschool.jpg\n - https://gaboesquivel.com/images/work/nodeschool-1.jpg\n - https://gaboesquivel.com/images/2016/05/paintballjs.jpg\n - https://gaboesquivel.com/images/work/gaboesquivel-presentation.jpg\nachievements:\n - Co-organized Costa Rica JS on Meetup from 2012 and grew it past 2,000 developers.\n - Organized regular meetups, workshops, and NodeSchool Costa Rica events.\n - Ran hands-on workshops as Node.js and modern web frameworks arrived in the region.\nstory:\n - Costa Rica JS is the JavaScript Meetup group I helped organize from 2012, after the idea took shape in 2011. It grew past 2,000 developers through meetups and NodeSchool Costa Rica; we also explored a JS conference site in the PuraVidaJS repo, but no JSConf Costa Rica event shipped.\n - I ran the meetups, workshops, and NodeSchool sessions. The point was practical skill-building as Node.js and modern web frameworks arrived, not a networking club with a speaker at the front.\n - The community became a place people used to learn, hire, and get hired. Workshops stayed hands-on so the knowledge transferred.\nrelated:\n - url: "2016-06-nodeschool-international-day"\n title: "NodeSchool International Day"\n publishedAt: "2016-06-01"\n - url: "2015-5-paintball.js-recap"\n title: "Paintball.js Recap"\n publishedAt: "2015-05-01"\n - url: "2014-01-developing-software-in-costa-rica"\n title: "Developing Software in Costa Rica"\n publishedAt: "2014-01-01"\norder: 45\nyear: 2012\n---\n\n# Costa Rica JS\n\nA JavaScript community on Meetup since 2012 that grew past 2,000 developers through meetups and NodeSchool Costa Rica.\n',
|
|
720
|
+
markdownPath: "content/projects/costa-rica-js.md"
|
|
721
|
+
},
|
|
722
|
+
{
|
|
723
|
+
title: "CryptoCantinaCR",
|
|
724
|
+
slug: "cryptocantinacr",
|
|
725
|
+
description: "A weekly Costa Rican meetup for open discussion about blockchain, cryptography, and cryptocurrency.",
|
|
726
|
+
tech: [
|
|
727
|
+
"Blockchain"
|
|
728
|
+
],
|
|
729
|
+
type: [
|
|
730
|
+
"other",
|
|
731
|
+
"lead"
|
|
732
|
+
],
|
|
733
|
+
link: "https://criptocantina.org",
|
|
734
|
+
image: "https://gaboesquivel.com/images/work/cryptocantina.png",
|
|
735
|
+
images: [
|
|
736
|
+
"https://gaboesquivel.com/images/work/cryptocantina-multi.jpg",
|
|
737
|
+
"https://gaboesquivel.com/images/work/cryptocantina-london-room-2.jpg",
|
|
738
|
+
"https://gaboesquivel.com/images/work/cryptocantina-london-room.jpg",
|
|
739
|
+
"https://gaboesquivel.com/images/work/cryptocantina-london-room-3.jpg",
|
|
740
|
+
"https://gaboesquivel.com/images/work/cryptocantina-london-room-4.jpg"
|
|
741
|
+
],
|
|
742
|
+
achievements: [
|
|
743
|
+
"Started a weekly Thursday meetup in September 2018 at Central Pub in Paseo Col\xF3n.",
|
|
744
|
+
"Kept the format informal: open discussion instead of presentations or talks.",
|
|
745
|
+
"Brought together people working on blockchain, cryptography, and cryptocurrency in Costa Rica.",
|
|
746
|
+
"Announced the weekly format in BlockchainCR's publication in September 2018."
|
|
747
|
+
],
|
|
748
|
+
story: [
|
|
749
|
+
"CryptoCantinaCR started as a Thursday after-office meetup I announced in September 2018 for Central Pub in Paseo Col\xF3n, under the BlockchainCR community. It brought together people working on blockchain, cryptography, and cryptocurrency in Costa Rica to talk without a stage.",
|
|
750
|
+
"I kept the format informal on purpose, with no presentations or talks, because the point was conversation rather than filling a speaker calendar.",
|
|
751
|
+
"The meetup later continued under AsoBlockchain's education work and became CriptoCantina.org, where Karla C\xF3rdoba built the structured program on top of those early gatherings."
|
|
752
|
+
],
|
|
753
|
+
related: [
|
|
754
|
+
{
|
|
755
|
+
url: "https://gaboesquivel.com/blog/2018-07-costa-rica-crypto-cantina",
|
|
756
|
+
title: "Costa Rica Crypto Cantina",
|
|
757
|
+
publishedAt: "2018-07-01"
|
|
758
|
+
}
|
|
759
|
+
],
|
|
760
|
+
order: 47,
|
|
761
|
+
year: 2018,
|
|
762
|
+
markdown: `---
|
|
763
|
+
title: "CryptoCantinaCR"
|
|
764
|
+
slug: "cryptocantinacr"
|
|
765
|
+
description: "A weekly Costa Rican meetup for open discussion about blockchain, cryptography, and cryptocurrency."
|
|
766
|
+
tech:
|
|
767
|
+
- Blockchain
|
|
768
|
+
type:
|
|
769
|
+
- other
|
|
770
|
+
- lead
|
|
771
|
+
link: "https://criptocantina.org"
|
|
772
|
+
image: "https://gaboesquivel.com/images/work/cryptocantina.png"
|
|
773
|
+
|
|
774
|
+
|
|
775
|
+
images:
|
|
776
|
+
- https://gaboesquivel.com/images/work/cryptocantina-multi.jpg
|
|
777
|
+
- https://gaboesquivel.com/images/work/cryptocantina-london-room-2.jpg
|
|
778
|
+
- https://gaboesquivel.com/images/work/cryptocantina-london-room.jpg
|
|
779
|
+
- https://gaboesquivel.com/images/work/cryptocantina-london-room-3.jpg
|
|
780
|
+
- https://gaboesquivel.com/images/work/cryptocantina-london-room-4.jpg
|
|
781
|
+
achievements:
|
|
782
|
+
- Started a weekly Thursday meetup in September 2018 at Central Pub in Paseo Col\xF3n.
|
|
783
|
+
- "Kept the format informal: open discussion instead of presentations or talks."
|
|
784
|
+
- Brought together people working on blockchain, cryptography, and cryptocurrency in Costa Rica.
|
|
785
|
+
- Announced the weekly format in BlockchainCR's publication in September 2018.
|
|
786
|
+
story:
|
|
787
|
+
- "CryptoCantinaCR started as a Thursday after-office meetup I announced in September 2018 for Central Pub in Paseo Col\xF3n, under the BlockchainCR community. It brought together people working on blockchain, cryptography, and cryptocurrency in Costa Rica to talk without a stage."
|
|
788
|
+
- I kept the format informal on purpose, with no presentations or talks, because the point was conversation rather than filling a speaker calendar.
|
|
789
|
+
- The meetup later continued under AsoBlockchain's education work and became CriptoCantina.org, where Karla C\xF3rdoba built the structured program on top of those early gatherings.
|
|
790
|
+
related:
|
|
791
|
+
- url: "https://gaboesquivel.com/blog/2018-07-costa-rica-crypto-cantina"
|
|
792
|
+
title: "Costa Rica Crypto Cantina"
|
|
793
|
+
publishedAt: "2018-07-01"
|
|
794
|
+
order: 47
|
|
795
|
+
year: 2018
|
|
796
|
+
---
|
|
797
|
+
|
|
798
|
+
# CryptoCantinaCR
|
|
799
|
+
|
|
800
|
+
A weekly Costa Rican meetup for open discussion about blockchain, cryptography, and cryptocurrency.
|
|
801
|
+
`,
|
|
802
|
+
markdownPath: "content/projects/cryptocantinacr.md"
|
|
803
|
+
},
|
|
804
|
+
{
|
|
805
|
+
title: "Earth",
|
|
806
|
+
slug: "earth",
|
|
807
|
+
description: "EARTH University's website, WordPress content system, responsive blog, and newsletter for agricultural-science education.",
|
|
808
|
+
tech: [
|
|
809
|
+
"JavaScript",
|
|
810
|
+
"CSS",
|
|
811
|
+
"Wordpress"
|
|
812
|
+
],
|
|
813
|
+
type: [
|
|
814
|
+
"other",
|
|
815
|
+
"frontend"
|
|
816
|
+
],
|
|
817
|
+
image: "https://gaboesquivel.com/images/work/wordpress-earth-pai.jpg",
|
|
818
|
+
images: [],
|
|
819
|
+
achievements: [
|
|
820
|
+
"Developed a content management system for EARTH University's website.",
|
|
821
|
+
"Designed a responsive and accessible blog for the university community."
|
|
822
|
+
],
|
|
823
|
+
story: [
|
|
824
|
+
"I built EARTH University's WordPress site, blog, and newsletter while at IntergraphiDesign, my first development job."
|
|
825
|
+
],
|
|
826
|
+
order: 38,
|
|
827
|
+
year: 2008,
|
|
828
|
+
markdown: `---
|
|
829
|
+
title: "Earth"
|
|
830
|
+
slug: "earth"
|
|
831
|
+
description: "EARTH University's website, WordPress content system, responsive blog, and newsletter for agricultural-science education."
|
|
832
|
+
tech:
|
|
833
|
+
- JavaScript
|
|
834
|
+
- CSS
|
|
835
|
+
- Wordpress
|
|
836
|
+
type:
|
|
837
|
+
- other
|
|
838
|
+
- frontend
|
|
839
|
+
image: "https://gaboesquivel.com/images/work/wordpress-earth-pai.jpg"
|
|
840
|
+
|
|
841
|
+
|
|
842
|
+
images: []
|
|
843
|
+
achievements:
|
|
844
|
+
- Developed a content management system for EARTH University's website.
|
|
845
|
+
- Designed a responsive and accessible blog for the university community.
|
|
846
|
+
story:
|
|
847
|
+
- I built EARTH University's WordPress site, blog, and newsletter while at IntergraphiDesign, my first development job.
|
|
848
|
+
order: 38
|
|
849
|
+
year: 2008
|
|
850
|
+
---
|
|
851
|
+
|
|
852
|
+
# Earth
|
|
853
|
+
|
|
854
|
+
EARTH University's website, WordPress content system, responsive blog, and newsletter for agricultural-science education.
|
|
855
|
+
`,
|
|
856
|
+
markdownPath: "content/projects/earth.md"
|
|
857
|
+
},
|
|
858
|
+
{
|
|
859
|
+
title: "Eat Arcade",
|
|
860
|
+
slug: "eat-arcade",
|
|
861
|
+
description: "An SMS restaurant subscription service combining curated dishes, text messaging, online payments, and a web application.",
|
|
862
|
+
tech: [
|
|
863
|
+
"NodeJS",
|
|
864
|
+
"AngularJS",
|
|
865
|
+
"MongoDB",
|
|
866
|
+
"Heroku",
|
|
867
|
+
"Bootstrap",
|
|
868
|
+
"Stripe",
|
|
869
|
+
"Twilio",
|
|
870
|
+
"CSS",
|
|
871
|
+
"Lodash"
|
|
872
|
+
],
|
|
873
|
+
type: [
|
|
874
|
+
"contract",
|
|
875
|
+
"frontend"
|
|
876
|
+
],
|
|
877
|
+
link: "http://www.eatarcade.com/",
|
|
878
|
+
image: "https://gaboesquivel.com/images/work/eatarcade.jpg",
|
|
879
|
+
images: [],
|
|
880
|
+
achievements: [
|
|
881
|
+
"Designed and built an SMS-based subscription system for restaurant promotions.",
|
|
882
|
+
"Integrated Twilio so subscription messages went out as SMS.",
|
|
883
|
+
"Developed a full-stack solution using Node.js, MongoDB, and AngularJS."
|
|
884
|
+
],
|
|
885
|
+
story: [
|
|
886
|
+
'Eat Arcade was the web side of Arcade, a New York lunch startup where members got one curated restaurant dish by text each morning, replied yes to order, and had lunch delivered for a flat price with no delivery fee. The brand leaned on an 8-bit arcade look and copy like "Lunch? Just Text Yes."',
|
|
887
|
+
"I built the subscription and ordering flow on Node.js, Express, and AngularJS, with Twilio for SMS, Stripe for payments, and Heroku for hosting, so the daily offer, opt-in, and checkout stayed in one system instead of a separate app store install."
|
|
888
|
+
],
|
|
889
|
+
order: 24,
|
|
890
|
+
year: 2013,
|
|
891
|
+
markdown: '---\ntitle: "Eat Arcade"\nslug: "eat-arcade"\ndescription: "An SMS restaurant subscription service combining curated dishes, text messaging, online payments, and a web application."\ntech:\n - NodeJS\n - AngularJS\n - MongoDB\n - Heroku\n - Bootstrap\n - Stripe\n - Twilio\n - CSS\n - Lodash\ntype:\n - contract\n - frontend\nlink: "http://www.eatarcade.com/"\nimage: "https://gaboesquivel.com/images/work/eatarcade.jpg"\n\n\nimages: []\nachievements:\n - Designed and built an SMS-based subscription system for restaurant promotions.\n - Integrated Twilio so subscription messages went out as SMS.\n - Developed a full-stack solution using Node.js, MongoDB, and AngularJS.\nstory:\n - Eat Arcade was the web side of Arcade, a New York lunch startup where members got one curated restaurant dish by text each morning, replied yes to order, and had lunch delivered for a flat price with no delivery fee. The brand leaned on an 8-bit arcade look and copy like "Lunch? Just Text Yes."\n - I built the subscription and ordering flow on Node.js, Express, and AngularJS, with Twilio for SMS, Stripe for payments, and Heroku for hosting, so the daily offer, opt-in, and checkout stayed in one system instead of a separate app store install.\norder: 24\nyear: 2013\n---\n\n# Eat Arcade\n\nAn SMS restaurant subscription service combining curated dishes, text messaging, online payments, and a web application.\n',
|
|
892
|
+
markdownPath: "content/projects/eat-arcade.md"
|
|
893
|
+
},
|
|
894
|
+
{
|
|
895
|
+
title: "Elder Scrolls Online",
|
|
896
|
+
slug: "elder-scrolls-online",
|
|
897
|
+
description: "The official Elder Scrolls Online website for game news, guides, media, and community posts ahead of beta.",
|
|
898
|
+
tech: [
|
|
899
|
+
"PHP",
|
|
900
|
+
"JavaScript",
|
|
901
|
+
"jQuery",
|
|
902
|
+
"Facebook API",
|
|
903
|
+
"Twitter API"
|
|
904
|
+
],
|
|
905
|
+
type: [
|
|
906
|
+
"contract",
|
|
907
|
+
"frontend"
|
|
908
|
+
],
|
|
909
|
+
link: "http://elderscrollsonline.com",
|
|
910
|
+
image: "https://gaboesquivel.com/images/work/elder-scrolls.jpg",
|
|
911
|
+
images: [],
|
|
912
|
+
achievements: [
|
|
913
|
+
"Designed and built the community website for game news, guides, and media.",
|
|
914
|
+
"Rebuilt navigation so Game Guide, Story, Alliance War, Media, and News were reachable without hunting.",
|
|
915
|
+
"Integrated social media features into the community pages."
|
|
916
|
+
],
|
|
917
|
+
story: [
|
|
918
|
+
"The Elder Scrolls Online site at elderscrollsonline.com carried beta-era content for ZeniMax Online's MMO: Game Guide, Story, the three alliances, Media, and News (including beta signups in early 2013). I designed and built the frontend, and most of the work went into navigation between those sections and the community posts that ran alongside them.",
|
|
919
|
+
"I balanced the game's visual design against what players needed to find quickly, and wired Facebook, Twitter, and YouTube into the community pages."
|
|
920
|
+
],
|
|
921
|
+
order: 21,
|
|
922
|
+
year: 2013,
|
|
923
|
+
markdown: `---
|
|
924
|
+
title: "Elder Scrolls Online"
|
|
925
|
+
slug: "elder-scrolls-online"
|
|
926
|
+
description: "The official Elder Scrolls Online website for game news, guides, media, and community posts ahead of beta."
|
|
927
|
+
tech:
|
|
928
|
+
- PHP
|
|
929
|
+
- JavaScript
|
|
930
|
+
- jQuery
|
|
931
|
+
- Facebook API
|
|
932
|
+
- Twitter API
|
|
933
|
+
type:
|
|
934
|
+
- contract
|
|
935
|
+
- frontend
|
|
936
|
+
link: "http://elderscrollsonline.com"
|
|
937
|
+
image: "https://gaboesquivel.com/images/work/elder-scrolls.jpg"
|
|
938
|
+
|
|
939
|
+
|
|
940
|
+
images: []
|
|
941
|
+
achievements:
|
|
942
|
+
- Designed and built the community website for game news, guides, and media.
|
|
943
|
+
- Rebuilt navigation so Game Guide, Story, Alliance War, Media, and News were reachable without hunting.
|
|
944
|
+
- Integrated social media features into the community pages.
|
|
945
|
+
story:
|
|
946
|
+
- >-
|
|
947
|
+
The Elder Scrolls Online site at elderscrollsonline.com carried beta-era
|
|
948
|
+
content for ZeniMax Online's MMO: Game Guide, Story, the three alliances,
|
|
949
|
+
Media, and News (including beta signups in early 2013). I designed and built
|
|
950
|
+
the frontend, and most of the work went into navigation between those
|
|
951
|
+
sections and the community posts that ran alongside them.
|
|
952
|
+
- I balanced the game's visual design against what players needed to find quickly, and wired Facebook, Twitter, and YouTube into the community pages.
|
|
953
|
+
order: 21
|
|
954
|
+
year: 2013
|
|
955
|
+
---
|
|
956
|
+
|
|
957
|
+
# Elder Scrolls Online
|
|
958
|
+
|
|
959
|
+
The official Elder Scrolls Online website for game news, guides, media, and community posts ahead of beta.
|
|
960
|
+
`,
|
|
961
|
+
markdownPath: "content/projects/elder-scrolls-online.md"
|
|
962
|
+
},
|
|
963
|
+
{
|
|
964
|
+
title: "Emanate",
|
|
965
|
+
slug: "emanate",
|
|
966
|
+
description: "A blockchain music-streaming platform with token-based artist payments and back-office revenue tools.",
|
|
967
|
+
role: "Software Engineer",
|
|
968
|
+
tech: [
|
|
969
|
+
"ReactJS",
|
|
970
|
+
"TypeScript",
|
|
971
|
+
"Antelope",
|
|
972
|
+
"AWS",
|
|
973
|
+
"Tailwind"
|
|
974
|
+
],
|
|
975
|
+
type: [
|
|
976
|
+
"web3",
|
|
977
|
+
"contract",
|
|
978
|
+
"frontend"
|
|
979
|
+
],
|
|
980
|
+
link: "https://emanate.live",
|
|
981
|
+
image: "https://gaboesquivel.com/images/work/emanate.png",
|
|
982
|
+
video: "https://www.youtube.com/watch?v=qjmn7M7YC9g",
|
|
983
|
+
images: [],
|
|
984
|
+
achievements: [
|
|
985
|
+
"Maintained the React streaming platform and tuned its performance.",
|
|
986
|
+
"Built back-office tools for distributing artist revenue.",
|
|
987
|
+
"Integrated AWS services for streaming and back-office workloads."
|
|
988
|
+
],
|
|
989
|
+
story: [
|
|
990
|
+
"Emanate is a Web3 marketplace for the music industry covering creation, distribution, and monetization. I maintained the React streaming web app and tuned its performance.",
|
|
991
|
+
"I built the back-office tools that distributed artist revenue as token payments.",
|
|
992
|
+
"I also integrated AWS services for the streaming app and the back office. The work was maintenance and payments, not a rewrite."
|
|
993
|
+
],
|
|
994
|
+
experienceCompany: "Emanate",
|
|
995
|
+
order: 8,
|
|
996
|
+
year: 2019,
|
|
997
|
+
markdown: '---\ntitle: "Emanate"\nslug: "emanate"\ndescription: "A blockchain music-streaming platform with token-based artist payments and back-office revenue tools."\nrole: "Software Engineer"\ntech:\n - ReactJS\n - TypeScript\n - Antelope\n - AWS\n - Tailwind\ntype:\n - web3\n - contract\n - frontend\nlink: "https://emanate.live"\nimage: "https://gaboesquivel.com/images/work/emanate.png"\n\nvideo: "https://www.youtube.com/watch?v=qjmn7M7YC9g"\nimages: []\nachievements:\n - Maintained the React streaming platform and tuned its performance.\n - Built back-office tools for distributing artist revenue.\n - Integrated AWS services for streaming and back-office workloads.\nstory:\n - Emanate is a Web3 marketplace for the music industry covering creation, distribution, and monetization. I maintained the React streaming web app and tuned its performance.\n - I built the back-office tools that distributed artist revenue as token payments.\n - I also integrated AWS services for the streaming app and the back office. The work was maintenance and payments, not a rewrite.\nexperienceCompany: "Emanate"\norder: 8\nyear: 2019\n---\n\n# Emanate\n\nA blockchain music-streaming platform with token-based artist payments and back-office revenue tools.\n',
|
|
998
|
+
markdownPath: "content/projects/emanate.md"
|
|
999
|
+
},
|
|
1000
|
+
{
|
|
1001
|
+
title: "EOS Costa Rica",
|
|
1002
|
+
slug: "eos-costa-rica",
|
|
1003
|
+
description: "A blockchain infrastructure and development company operating EOSIO validators and delivering public and private-chain systems.",
|
|
1004
|
+
role: "Lead Engineer",
|
|
1005
|
+
tech: [
|
|
1006
|
+
"Antelope",
|
|
1007
|
+
"C++",
|
|
1008
|
+
"PostgreSQL",
|
|
1009
|
+
"NodeJS",
|
|
1010
|
+
"GraphQL",
|
|
1011
|
+
"ReactJS",
|
|
1012
|
+
"Tailwind",
|
|
1013
|
+
"GCP",
|
|
1014
|
+
"Azure",
|
|
1015
|
+
"Docker",
|
|
1016
|
+
"Terraform",
|
|
1017
|
+
"TypeScript"
|
|
1018
|
+
],
|
|
1019
|
+
type: [
|
|
1020
|
+
"web3",
|
|
1021
|
+
"full-time",
|
|
1022
|
+
"lead",
|
|
1023
|
+
"featured",
|
|
1024
|
+
"frontend",
|
|
1025
|
+
"backend",
|
|
1026
|
+
"fullstack",
|
|
1027
|
+
"startup",
|
|
1028
|
+
"institution"
|
|
1029
|
+
],
|
|
1030
|
+
link: "https://eoscostarica.io",
|
|
1031
|
+
image: "https://gaboesquivel.com/images/work/eoscostarica.png",
|
|
1032
|
+
repo: "https://github.com/eoscostarica",
|
|
1033
|
+
video: "https://www.youtube.com/watch?v=-1y0fGs8Xgw&",
|
|
1034
|
+
images: [],
|
|
1035
|
+
achievements: [
|
|
1036
|
+
"Helped launch EOS mainnet and operated EOSIO validators.",
|
|
1037
|
+
"Built a private EOSIO chain for a global accounting and consulting firm's labs on Azure, Terraform, EOSIO, and React; shipped an MVP for intercompany transactions and tax workflows using a stablecoin, hashing, and IPFS.",
|
|
1038
|
+
"Built the EOS Rate frontend with React and Styled Components."
|
|
1039
|
+
],
|
|
1040
|
+
story: [
|
|
1041
|
+
"I helped launch the EOS mainnet and operated validator nodes across EOSIO-based networks.",
|
|
1042
|
+
"I built a private EOSIO chain for a global accounting and consulting firm's labs on Azure, Terraform, EOSIO, and React. The MVP covered intercompany transactions and tax workflows with a stablecoin, hashing, and IPFS.",
|
|
1043
|
+
"I also ran open-source work and developer relations, including workshops around TicoBlockchain.cr and CryptoCantinaCR."
|
|
1044
|
+
],
|
|
1045
|
+
experienceCompany: "EOS Costa Rica",
|
|
1046
|
+
order: 11,
|
|
1047
|
+
year: 2018,
|
|
1048
|
+
markdown: `---
|
|
1049
|
+
title: "EOS Costa Rica"
|
|
1050
|
+
slug: "eos-costa-rica"
|
|
1051
|
+
description: "A blockchain infrastructure and development company operating EOSIO validators and delivering public and private-chain systems."
|
|
1052
|
+
role: "Lead Engineer"
|
|
1053
|
+
tech:
|
|
1054
|
+
- Antelope
|
|
1055
|
+
- C++
|
|
1056
|
+
- PostgreSQL
|
|
1057
|
+
- NodeJS
|
|
1058
|
+
- GraphQL
|
|
1059
|
+
- ReactJS
|
|
1060
|
+
- Tailwind
|
|
1061
|
+
- GCP
|
|
1062
|
+
- Azure
|
|
1063
|
+
- Docker
|
|
1064
|
+
- Terraform
|
|
1065
|
+
- TypeScript
|
|
1066
|
+
type:
|
|
1067
|
+
- web3
|
|
1068
|
+
- full-time
|
|
1069
|
+
- lead
|
|
1070
|
+
- featured
|
|
1071
|
+
- frontend
|
|
1072
|
+
- backend
|
|
1073
|
+
- fullstack
|
|
1074
|
+
- startup
|
|
1075
|
+
- institution
|
|
1076
|
+
link: "https://eoscostarica.io"
|
|
1077
|
+
image: "https://gaboesquivel.com/images/work/eoscostarica.png"
|
|
1078
|
+
repo: "https://github.com/eoscostarica"
|
|
1079
|
+
video: "https://www.youtube.com/watch?v=-1y0fGs8Xgw&"
|
|
1080
|
+
images: []
|
|
1081
|
+
achievements:
|
|
1082
|
+
- Helped launch EOS mainnet and operated EOSIO validators.
|
|
1083
|
+
- Built a private EOSIO chain for a global accounting and consulting firm's labs on Azure, Terraform, EOSIO, and React; shipped an MVP for intercompany transactions and tax workflows using a stablecoin, hashing, and IPFS.
|
|
1084
|
+
- Built the EOS Rate frontend with React and Styled Components.
|
|
1085
|
+
story:
|
|
1086
|
+
- I helped launch the EOS mainnet and operated validator nodes across EOSIO-based networks.
|
|
1087
|
+
- I built a private EOSIO chain for a global accounting and consulting firm's labs on Azure, Terraform, EOSIO, and React. The MVP covered intercompany transactions and tax workflows with a stablecoin, hashing, and IPFS.
|
|
1088
|
+
- I also ran open-source work and developer relations, including workshops around TicoBlockchain.cr and CryptoCantinaCR.
|
|
1089
|
+
experienceCompany: "EOS Costa Rica"
|
|
1090
|
+
order: 11
|
|
1091
|
+
year: 2018
|
|
1092
|
+
---
|
|
1093
|
+
|
|
1094
|
+
# EOS Costa Rica
|
|
1095
|
+
|
|
1096
|
+
A blockchain infrastructure and development company operating EOSIO validators and delivering public and private-chain systems.
|
|
1097
|
+
`,
|
|
1098
|
+
markdownPath: "content/projects/eos-costa-rica.md"
|
|
1099
|
+
},
|
|
1100
|
+
{
|
|
1101
|
+
title: "EOS Rate",
|
|
1102
|
+
slug: "eos-rate",
|
|
1103
|
+
description: "A community rating tool for EOS block producers with onchain ratings, GraphQL data, and a radial comparison interface.",
|
|
1104
|
+
tech: [
|
|
1105
|
+
"Antelope",
|
|
1106
|
+
"C++",
|
|
1107
|
+
"GraphQL",
|
|
1108
|
+
"ReactJS",
|
|
1109
|
+
"GCP",
|
|
1110
|
+
"Docker",
|
|
1111
|
+
"TypeScript",
|
|
1112
|
+
"PostgreSQL"
|
|
1113
|
+
],
|
|
1114
|
+
type: [
|
|
1115
|
+
"web3",
|
|
1116
|
+
"oss",
|
|
1117
|
+
"frontend",
|
|
1118
|
+
"backend",
|
|
1119
|
+
"fullstack"
|
|
1120
|
+
],
|
|
1121
|
+
link: "https://eosrate.io",
|
|
1122
|
+
image: "https://gaboesquivel.com/images/work/eosrate.png",
|
|
1123
|
+
repo: "https://github.com/eoscostarica/eos-rate",
|
|
1124
|
+
video: "https://www.youtube.com/watch?v=saZnZqJsMhk",
|
|
1125
|
+
images: [],
|
|
1126
|
+
achievements: [
|
|
1127
|
+
"Designed and implemented an onchain rating system for EOS block producers.",
|
|
1128
|
+
"Built a radial graph interface to compare community ratings side by side.",
|
|
1129
|
+
"Developed a GraphQL API for reading ratings and driving the comparison UI."
|
|
1130
|
+
],
|
|
1131
|
+
story: [
|
|
1132
|
+
"EOS Rate is a community tool for rating EOS block producers. Ratings live onchain; the interface is a radial graph so you can compare producers at a glance.",
|
|
1133
|
+
"I designed the architecture and chose the stack: onchain storage, a GraphQL data layer, and a React comparison UI.",
|
|
1134
|
+
"The job was to make producer reputation readable. Participants could see how the community rated a producer before they voted."
|
|
1135
|
+
],
|
|
1136
|
+
order: 12,
|
|
1137
|
+
year: 2018,
|
|
1138
|
+
markdown: '---\ntitle: "EOS Rate"\nslug: "eos-rate"\ndescription: "A community rating tool for EOS block producers with onchain ratings, GraphQL data, and a radial comparison interface."\ntech:\n - Antelope\n - C++\n - GraphQL\n - ReactJS\n - GCP\n - Docker\n - TypeScript\n - PostgreSQL\ntype:\n - web3\n - oss\n - frontend\n - backend\n - fullstack\nlink: "https://eosrate.io"\nimage: "https://gaboesquivel.com/images/work/eosrate.png"\nrepo: "https://github.com/eoscostarica/eos-rate"\nvideo: "https://www.youtube.com/watch?v=saZnZqJsMhk"\nimages: []\nachievements:\n - Designed and implemented an onchain rating system for EOS block producers.\n - Built a radial graph interface to compare community ratings side by side.\n - Developed a GraphQL API for reading ratings and driving the comparison UI.\nstory:\n - EOS Rate is a community tool for rating EOS block producers. Ratings live onchain; the interface is a radial graph so you can compare producers at a glance.\n - "I designed the architecture and chose the stack: onchain storage, a GraphQL data layer, and a React comparison UI."\n - The job was to make producer reputation readable. Participants could see how the community rated a producer before they voted.\norder: 12\nyear: 2018\n---\n\n# EOS Rate\n\nA community rating tool for EOS block producers with onchain ratings, GraphQL data, and a radial comparison interface.\n',
|
|
1139
|
+
markdownPath: "content/projects/eos-rate.md"
|
|
1140
|
+
},
|
|
1141
|
+
{
|
|
1142
|
+
title: "Fantasy Tennis",
|
|
1143
|
+
slug: "fantasy-tennis",
|
|
1144
|
+
description: "A fantasy-tennis strategy game for ATP, WTA, and Grand Slam tournaments with responsive gameplay and live data.",
|
|
1145
|
+
tech: [
|
|
1146
|
+
"JavaScript",
|
|
1147
|
+
"CSS"
|
|
1148
|
+
],
|
|
1149
|
+
type: [
|
|
1150
|
+
"contract",
|
|
1151
|
+
"frontend",
|
|
1152
|
+
"backend",
|
|
1153
|
+
"fullstack"
|
|
1154
|
+
],
|
|
1155
|
+
link: "https://www.fanslam.us",
|
|
1156
|
+
image: "https://gaboesquivel.com/images/work/fantasy-tennis.jpg",
|
|
1157
|
+
images: [],
|
|
1158
|
+
achievements: [
|
|
1159
|
+
"Designed and developed a strategic fantasy tennis gaming platform.",
|
|
1160
|
+
"Built a responsive UI so the game played on phones as well as desktops.",
|
|
1161
|
+
"Integrated dynamic tournament data for real-time game updates."
|
|
1162
|
+
],
|
|
1163
|
+
story: [
|
|
1164
|
+
"FanSlam is a US skill-game for tennis where each contestant gets a salary cap to draft eight ATP or WTA pros for a tournament; points track every point those players win, with live scores feeding the standings. Mario An\u010Di\u0107 co-founded the company, and the product had to respect state restrictions on cash play.",
|
|
1165
|
+
"I designed and built the frontend and backend for the contest flow, pricing players by ranking, and realtime tournament updates. The responsive UI had to work on phones and desktops because entries and lineup changes happened close to match time."
|
|
1166
|
+
],
|
|
1167
|
+
order: 40,
|
|
1168
|
+
year: 2013,
|
|
1169
|
+
markdown: '---\ntitle: "Fantasy Tennis"\nslug: "fantasy-tennis"\ndescription: "A fantasy-tennis strategy game for ATP, WTA, and Grand Slam tournaments with responsive gameplay and live data."\ntech:\n - JavaScript\n - CSS\ntype:\n - contract\n - frontend\n - backend\n - fullstack\nlink: "https://www.fanslam.us"\nimage: "https://gaboesquivel.com/images/work/fantasy-tennis.jpg"\n\n\nimages: []\nachievements:\n - Designed and developed a strategic fantasy tennis gaming platform.\n - Built a responsive UI so the game played on phones as well as desktops.\n - Integrated dynamic tournament data for real-time game updates.\nstory:\n - FanSlam is a US skill-game for tennis where each contestant gets a salary cap to draft eight ATP or WTA pros for a tournament; points track every point those players win, with live scores feeding the standings. Mario An\u010Di\u0107 co-founded the company, and the product had to respect state restrictions on cash play.\n - I designed and built the frontend and backend for the contest flow, pricing players by ranking, and realtime tournament updates. The responsive UI had to work on phones and desktops because entries and lineup changes happened close to match time.\norder: 40\nyear: 2013\n---\n\n# Fantasy Tennis\n\nA fantasy-tennis strategy game for ATP, WTA, and Grand Slam tournaments with responsive gameplay and live data.\n',
|
|
1170
|
+
markdownPath: "content/projects/fantasy-tennis.md"
|
|
1171
|
+
},
|
|
1172
|
+
{
|
|
1173
|
+
title: "Fantasy Top Shots",
|
|
1174
|
+
slug: "fantasy-top-shots",
|
|
1175
|
+
description: "A Flow Hackathon web game using NBA Top Shot NFTs through a Next.js interface on Flow.",
|
|
1176
|
+
tech: [
|
|
1177
|
+
"NFT",
|
|
1178
|
+
"ReactJS",
|
|
1179
|
+
"NextJS",
|
|
1180
|
+
"Tailwind",
|
|
1181
|
+
"TypeScript"
|
|
1182
|
+
],
|
|
1183
|
+
type: [
|
|
1184
|
+
"web3",
|
|
1185
|
+
"hackathon",
|
|
1186
|
+
"frontend"
|
|
1187
|
+
],
|
|
1188
|
+
link: "https://fantasy-top-shot.vercel.app",
|
|
1189
|
+
image: "https://gaboesquivel.com/images/work/fantasy-top-shots.png",
|
|
1190
|
+
repo: "https://github.com/bitcashorg/fantasy-top-shot",
|
|
1191
|
+
video: "https://www.youtube.com/watch?v=Il2aiKhy_ug",
|
|
1192
|
+
images: [],
|
|
1193
|
+
achievements: [
|
|
1194
|
+
"Designed and developed the hackathon game on Flow with Next.js and @onflow/fcl.",
|
|
1195
|
+
"Wired NBA Top Shot NFTs into the game so collections could be used as a roster.",
|
|
1196
|
+
"Implemented the responsive UI and gameplay mechanics in the Next.js web app."
|
|
1197
|
+
],
|
|
1198
|
+
story: [
|
|
1199
|
+
"Fantasy Top Shots was our entry for the February 2023 Flow Hackathon, a web game where players used their NBA Top Shot NFT collections in a fantasy sports format. The repo builds on the same flow-marketplace-next base we used with collaborators at bitcashorg.",
|
|
1200
|
+
"I worked on design and development in Next.js with Flow Client Library for wallet and NFT transactions during play, and Top Shot collections acted as the roster instead of a separate inventory screen."
|
|
1201
|
+
],
|
|
1202
|
+
order: 13,
|
|
1203
|
+
year: 2022,
|
|
1204
|
+
markdown: '---\ntitle: "Fantasy Top Shots"\nslug: "fantasy-top-shots"\ndescription: "A Flow Hackathon web game using NBA Top Shot NFTs through a Next.js interface on Flow."\ntech:\n - NFT\n - ReactJS\n - NextJS\n - Tailwind\n - TypeScript\ntype:\n - web3\n - hackathon\n - frontend\nlink: "https://fantasy-top-shot.vercel.app"\nimage: "https://gaboesquivel.com/images/work/fantasy-top-shots.png"\nrepo: "https://github.com/bitcashorg/fantasy-top-shot"\nvideo: "https://www.youtube.com/watch?v=Il2aiKhy_ug"\nimages: []\nachievements:\n - Designed and developed the hackathon game on Flow with Next.js and @onflow/fcl.\n - Wired NBA Top Shot NFTs into the game so collections could be used as a roster.\n - Implemented the responsive UI and gameplay mechanics in the Next.js web app.\nstory:\n - Fantasy Top Shots was our entry for the February 2023 Flow Hackathon, a web game where players used their NBA Top Shot NFT collections in a fantasy sports format. The repo builds on the same flow-marketplace-next base we used with collaborators at bitcashorg.\n - I worked on design and development in Next.js with Flow Client Library for wallet and NFT transactions during play, and Top Shot collections acted as the roster instead of a separate inventory screen.\norder: 13\nyear: 2022\n---\n\n# Fantasy Top Shots\n\nA Flow Hackathon web game using NBA Top Shot NFTs through a Next.js interface on Flow.\n',
|
|
1205
|
+
markdownPath: "content/projects/fantasy-top-shots.md"
|
|
1206
|
+
},
|
|
1207
|
+
{
|
|
1208
|
+
title: "Gridium",
|
|
1209
|
+
slug: "gridium",
|
|
1210
|
+
description: "An energy-analytics application with interactive charts for monitoring commercial-building consumption data.",
|
|
1211
|
+
tech: [
|
|
1212
|
+
"JavaScript",
|
|
1213
|
+
"Data Charts",
|
|
1214
|
+
"CSS",
|
|
1215
|
+
"Bootstrap",
|
|
1216
|
+
"Heroku"
|
|
1217
|
+
],
|
|
1218
|
+
type: [
|
|
1219
|
+
"contract",
|
|
1220
|
+
"frontend"
|
|
1221
|
+
],
|
|
1222
|
+
link: "https://gridium.com/",
|
|
1223
|
+
image: "https://gaboesquivel.com/images/work/gridium.png",
|
|
1224
|
+
images: [],
|
|
1225
|
+
achievements: [
|
|
1226
|
+
"Built the first version of a data visualization app for energy consumption analytics.",
|
|
1227
|
+
"Implemented interactive charts for realtime energy monitoring.",
|
|
1228
|
+
"Tuned chart layouts for readability."
|
|
1229
|
+
],
|
|
1230
|
+
story: [
|
|
1231
|
+
"Gridium is Menlo Park energy-management software for commercial buildings that analyzes smart-meter data without extra hardware installs. I built an early version of the analytics UI when the company was turning 15-minute meter reads into charts property teams could act on.",
|
|
1232
|
+
"The interactive views tracked demand and cost signals so users could spot variances from normal behavior across a portfolio, and I tuned chart layouts so those readings stayed legible on desktop dashboards."
|
|
1233
|
+
],
|
|
1234
|
+
order: 34,
|
|
1235
|
+
year: 2013,
|
|
1236
|
+
markdown: '---\ntitle: "Gridium"\nslug: "gridium"\ndescription: "An energy-analytics application with interactive charts for monitoring commercial-building consumption data."\ntech:\n - JavaScript\n - Data Charts\n - CSS\n - Bootstrap\n - Heroku\ntype:\n - contract\n - frontend\nlink: "https://gridium.com/"\nimage: "https://gaboesquivel.com/images/work/gridium.png"\n\n\nimages: []\nachievements:\n - Built the first version of a data visualization app for energy consumption analytics.\n - Implemented interactive charts for realtime energy monitoring.\n - Tuned chart layouts for readability.\nstory:\n - >-\n Gridium is Menlo Park energy-management software for commercial buildings that\n analyzes smart-meter data without extra hardware installs. I built an early\n version of the analytics UI when the company was turning 15-minute meter reads\n into charts property teams could act on.\n - >-\n The interactive views tracked demand and cost signals so users could spot\n variances from normal behavior across a portfolio, and I tuned chart layouts\n so those readings stayed legible on desktop dashboards.\norder: 34\nyear: 2013\n---\n\n# Gridium\n\nAn energy-analytics application with interactive charts for monitoring commercial-building consumption data.\n',
|
|
1237
|
+
markdownPath: "content/projects/gridium.md"
|
|
1238
|
+
},
|
|
1239
|
+
{
|
|
1240
|
+
title: "ITS",
|
|
1241
|
+
slug: "its",
|
|
1242
|
+
description: "ITS InfoCom's corporate website, content-management system, and CRM integration for remote infrastructure services.",
|
|
1243
|
+
tech: [
|
|
1244
|
+
"JavaScript",
|
|
1245
|
+
"CSS",
|
|
1246
|
+
"PHP",
|
|
1247
|
+
"CMS"
|
|
1248
|
+
],
|
|
1249
|
+
type: [
|
|
1250
|
+
"other",
|
|
1251
|
+
"frontend"
|
|
1252
|
+
],
|
|
1253
|
+
image: "https://gaboesquivel.com/images/work/website-its.jpg",
|
|
1254
|
+
images: [],
|
|
1255
|
+
achievements: [
|
|
1256
|
+
"Deployed a company-wide CMS and CRM integration for ITS InfoCom."
|
|
1257
|
+
],
|
|
1258
|
+
story: [
|
|
1259
|
+
"At IntergraphiDesign, my first development job, I built ITS InfoCom's corporate website, CMS, and CRM integration."
|
|
1260
|
+
],
|
|
1261
|
+
order: 42,
|
|
1262
|
+
year: 2008,
|
|
1263
|
+
markdown: `---
|
|
1264
|
+
title: "ITS"
|
|
1265
|
+
slug: "its"
|
|
1266
|
+
description: "ITS InfoCom's corporate website, content-management system, and CRM integration for remote infrastructure services."
|
|
1267
|
+
tech:
|
|
1268
|
+
- JavaScript
|
|
1269
|
+
- CSS
|
|
1270
|
+
- PHP
|
|
1271
|
+
- CMS
|
|
1272
|
+
type:
|
|
1273
|
+
- other
|
|
1274
|
+
- frontend
|
|
1275
|
+
image: "https://gaboesquivel.com/images/work/website-its.jpg"
|
|
1276
|
+
|
|
1277
|
+
|
|
1278
|
+
images: []
|
|
1279
|
+
achievements:
|
|
1280
|
+
- Deployed a company-wide CMS and CRM integration for ITS InfoCom.
|
|
1281
|
+
story:
|
|
1282
|
+
- At IntergraphiDesign, my first development job, I built ITS InfoCom's corporate website, CMS, and CRM integration.
|
|
1283
|
+
order: 42
|
|
1284
|
+
year: 2008
|
|
1285
|
+
---
|
|
1286
|
+
|
|
1287
|
+
# ITS
|
|
1288
|
+
|
|
1289
|
+
ITS InfoCom's corporate website, content-management system, and CRM integration for remote infrastructure services.
|
|
1290
|
+
`,
|
|
1291
|
+
markdownPath: "content/projects/its.md"
|
|
1292
|
+
},
|
|
1293
|
+
{
|
|
1294
|
+
title: "Jockey Hollow Bar and Kitchen Menu Kiosk App",
|
|
1295
|
+
slug: "jockey-hollow-bar-and-kitchen-menu-kiosk-app",
|
|
1296
|
+
description: "A responsive tablet menu kiosk with Google Sheets updates and performance tuned for restaurant service.",
|
|
1297
|
+
tech: [
|
|
1298
|
+
"SASS",
|
|
1299
|
+
"jQuery",
|
|
1300
|
+
"Lodash",
|
|
1301
|
+
"Grapnel.js",
|
|
1302
|
+
"Grunt",
|
|
1303
|
+
"NodeJS",
|
|
1304
|
+
"Heroku",
|
|
1305
|
+
"Divshot"
|
|
1306
|
+
],
|
|
1307
|
+
type: [
|
|
1308
|
+
"contract",
|
|
1309
|
+
"frontend"
|
|
1310
|
+
],
|
|
1311
|
+
image: "https://gaboesquivel.com/images/work/jockey-hollow-menu.png",
|
|
1312
|
+
images: [],
|
|
1313
|
+
achievements: [
|
|
1314
|
+
"Built a menu kiosk web app for the restaurant's tablets.",
|
|
1315
|
+
"Wired Google Spreadsheets so kitchen staff could change the menu without a deploy.",
|
|
1316
|
+
"Tuned performance for tablet hardware."
|
|
1317
|
+
],
|
|
1318
|
+
story: [
|
|
1319
|
+
"At Jockey Hollow Bar and Kitchen I built a menu kiosk as a responsive web app for tablets in the dining rooms, separate from the marketing site but on the same stack (SASS, jQuery, Grunt, and Heroku).",
|
|
1320
|
+
"Menus across four concepts change often, so the kiosk read from Google Spreadsheets and kitchen staff could update items without a deploy. I was the only developer on the kiosk and tuned the UI for tablet hardware in a busy restaurant."
|
|
1321
|
+
],
|
|
1322
|
+
order: 26,
|
|
1323
|
+
year: 2013,
|
|
1324
|
+
markdown: `---
|
|
1325
|
+
title: "Jockey Hollow Bar and Kitchen Menu Kiosk App"
|
|
1326
|
+
slug: "jockey-hollow-bar-and-kitchen-menu-kiosk-app"
|
|
1327
|
+
description: "A responsive tablet menu kiosk with Google Sheets updates and performance tuned for restaurant service."
|
|
1328
|
+
tech:
|
|
1329
|
+
- SASS
|
|
1330
|
+
- jQuery
|
|
1331
|
+
- Lodash
|
|
1332
|
+
- Grapnel.js
|
|
1333
|
+
- Grunt
|
|
1334
|
+
- NodeJS
|
|
1335
|
+
- Heroku
|
|
1336
|
+
- Divshot
|
|
1337
|
+
type:
|
|
1338
|
+
- contract
|
|
1339
|
+
- frontend
|
|
1340
|
+
image: "https://gaboesquivel.com/images/work/jockey-hollow-menu.png"
|
|
1341
|
+
|
|
1342
|
+
|
|
1343
|
+
images: []
|
|
1344
|
+
achievements:
|
|
1345
|
+
- Built a menu kiosk web app for the restaurant's tablets.
|
|
1346
|
+
- Wired Google Spreadsheets so kitchen staff could change the menu without a deploy.
|
|
1347
|
+
- Tuned performance for tablet hardware.
|
|
1348
|
+
story:
|
|
1349
|
+
- >-
|
|
1350
|
+
At Jockey Hollow Bar and Kitchen I built a menu kiosk as a responsive web app
|
|
1351
|
+
for tablets in the dining rooms, separate from the marketing site but on the
|
|
1352
|
+
same stack (SASS, jQuery, Grunt, and Heroku).
|
|
1353
|
+
- Menus across four concepts change often, so the kiosk read from Google Spreadsheets and kitchen staff could update items without a deploy. I was the only developer on the kiosk and tuned the UI for tablet hardware in a busy restaurant.
|
|
1354
|
+
order: 26
|
|
1355
|
+
year: 2013
|
|
1356
|
+
---
|
|
1357
|
+
|
|
1358
|
+
# Jockey Hollow Bar and Kitchen Menu Kiosk App
|
|
1359
|
+
|
|
1360
|
+
A responsive tablet menu kiosk with Google Sheets updates and performance tuned for restaurant service.
|
|
1361
|
+
`,
|
|
1362
|
+
markdownPath: "content/projects/jockey-hollow-bar-and-kitchen-menu-kiosk-app.md"
|
|
1363
|
+
},
|
|
1364
|
+
{
|
|
1365
|
+
title: "Jockey Hollow Bar and Kitchen",
|
|
1366
|
+
slug: "jockey-hollow-bar-and-kitchen",
|
|
1367
|
+
description: "A responsive site for Jockey Hollow Bar and Kitchen, a historic mansion with four dining concepts.",
|
|
1368
|
+
tech: [
|
|
1369
|
+
"SASS",
|
|
1370
|
+
"jQuery",
|
|
1371
|
+
"Lodash",
|
|
1372
|
+
"Grapnel.js",
|
|
1373
|
+
"Grunt",
|
|
1374
|
+
"NodeJS",
|
|
1375
|
+
"Heroku",
|
|
1376
|
+
"Divshot"
|
|
1377
|
+
],
|
|
1378
|
+
type: [
|
|
1379
|
+
"contract",
|
|
1380
|
+
"frontend"
|
|
1381
|
+
],
|
|
1382
|
+
link: "http://www.jockeyhollowbarandkitchen.com/",
|
|
1383
|
+
image: "https://gaboesquivel.com/images/work/jockey-hollow.png",
|
|
1384
|
+
images: [],
|
|
1385
|
+
achievements: [
|
|
1386
|
+
"Built a fully responsive landing page for the restaurant's four dining concepts.",
|
|
1387
|
+
"Cut page weight so the landing page loaded on the connections diners actually had."
|
|
1388
|
+
],
|
|
1389
|
+
story: [
|
|
1390
|
+
"Jockey Hollow Bar and Kitchen is Chris Cannon's multi-concept restaurant in Morristown's historic Vail Mansion, the 1916 AT&T president's estate that later served as town hall. The public site had to present four rooms at once: the Oyster and Wine Bar, the Vail Bar cocktail lounge, the Rathskeller event space, and the second-floor Dining Room.",
|
|
1391
|
+
"I built the responsive landing page with SASS, jQuery, Grunt, and Grapnel.js, deployed on Heroku, and tuned page weight so it held up on the connections diners actually had while the restaurant moved from a late-spring opening toward full lunch and dinner service."
|
|
1392
|
+
],
|
|
1393
|
+
order: 25,
|
|
1394
|
+
year: 2013,
|
|
1395
|
+
markdown: `---
|
|
1396
|
+
title: "Jockey Hollow Bar and Kitchen"
|
|
1397
|
+
slug: "jockey-hollow-bar-and-kitchen"
|
|
1398
|
+
description: "A responsive site for Jockey Hollow Bar and Kitchen, a historic mansion with four dining concepts."
|
|
1399
|
+
tech:
|
|
1400
|
+
- SASS
|
|
1401
|
+
- jQuery
|
|
1402
|
+
- Lodash
|
|
1403
|
+
- Grapnel.js
|
|
1404
|
+
- Grunt
|
|
1405
|
+
- NodeJS
|
|
1406
|
+
- Heroku
|
|
1407
|
+
- Divshot
|
|
1408
|
+
type:
|
|
1409
|
+
- contract
|
|
1410
|
+
- frontend
|
|
1411
|
+
link: "http://www.jockeyhollowbarandkitchen.com/"
|
|
1412
|
+
image: "https://gaboesquivel.com/images/work/jockey-hollow.png"
|
|
1413
|
+
|
|
1414
|
+
|
|
1415
|
+
images: []
|
|
1416
|
+
achievements:
|
|
1417
|
+
- Built a fully responsive landing page for the restaurant's four dining concepts.
|
|
1418
|
+
- Cut page weight so the landing page loaded on the connections diners actually had.
|
|
1419
|
+
story:
|
|
1420
|
+
- >-
|
|
1421
|
+
Jockey Hollow Bar and Kitchen is Chris Cannon's multi-concept restaurant in
|
|
1422
|
+
Morristown's historic Vail Mansion, the 1916 AT&T president's estate that
|
|
1423
|
+
later served as town hall. The public site had to present four rooms at once:
|
|
1424
|
+
the Oyster and Wine Bar, the Vail Bar cocktail lounge, the Rathskeller event
|
|
1425
|
+
space, and the second-floor Dining Room.
|
|
1426
|
+
- I built the responsive landing page with SASS, jQuery, Grunt, and Grapnel.js, deployed on Heroku, and tuned page weight so it held up on the connections diners actually had while the restaurant moved from a late-spring opening toward full lunch and dinner service.
|
|
1427
|
+
order: 25
|
|
1428
|
+
year: 2013
|
|
1429
|
+
---
|
|
1430
|
+
|
|
1431
|
+
# Jockey Hollow Bar and Kitchen
|
|
1432
|
+
|
|
1433
|
+
A responsive site for Jockey Hollow Bar and Kitchen, a historic mansion with four dining concepts.
|
|
1434
|
+
`,
|
|
1435
|
+
markdownPath: "content/projects/jockey-hollow-bar-and-kitchen.md"
|
|
1436
|
+
},
|
|
1437
|
+
{
|
|
1438
|
+
title: "Knowledge.io",
|
|
1439
|
+
slug: "knowledge-io",
|
|
1440
|
+
description: "A tokenized knowledge platform with an ERC-20 token, marketplace, wallet dashboard, and mobile trivia game.",
|
|
1441
|
+
role: "Software Engineer",
|
|
1442
|
+
tech: [
|
|
1443
|
+
"TypeScript",
|
|
1444
|
+
"Ethereum",
|
|
1445
|
+
"Ethers",
|
|
1446
|
+
"Solidity",
|
|
1447
|
+
"AWS",
|
|
1448
|
+
"Serverless",
|
|
1449
|
+
"GraphQL",
|
|
1450
|
+
"React Native",
|
|
1451
|
+
"ReactJS",
|
|
1452
|
+
"NodeJS",
|
|
1453
|
+
"PostgreSQL"
|
|
1454
|
+
],
|
|
1455
|
+
type: [
|
|
1456
|
+
"web3",
|
|
1457
|
+
"contract",
|
|
1458
|
+
"oss",
|
|
1459
|
+
"frontend",
|
|
1460
|
+
"backend",
|
|
1461
|
+
"fullstack"
|
|
1462
|
+
],
|
|
1463
|
+
link: "https://github.com/knowledge/ethereum-contracts",
|
|
1464
|
+
image: "https://gaboesquivel.com/images/work/knowledge.png",
|
|
1465
|
+
repo: "https://github.com/knowledge",
|
|
1466
|
+
images: [],
|
|
1467
|
+
achievements: [
|
|
1468
|
+
"Deployed Knowledge.io's ERC-20 token for the 2018 mainnet ICO.",
|
|
1469
|
+
"Implemented smart contracts for token rewards and transactions.",
|
|
1470
|
+
"Built a serverless AWS infrastructure for the token, marketplace, and wallet services.",
|
|
1471
|
+
"Built the React and Web3.js marketplace and wallet dashboard around the ERC-20 token.",
|
|
1472
|
+
"Maintained the React Native trivia game as the token-reward client."
|
|
1473
|
+
],
|
|
1474
|
+
story: [
|
|
1475
|
+
"Knowledge is a platform that rewards sharing information with an ERC-20 token. I built the token architecture and the systems around the 2018 mainnet ICO.",
|
|
1476
|
+
"I implemented smart contracts for token rewards and transactions, then built a serverless AWS stack for the token, marketplace, and wallet services.",
|
|
1477
|
+
"I also built the marketplace and wallet screens in React and Web3.js, and maintained the React Native trivia game as the reward client."
|
|
1478
|
+
],
|
|
1479
|
+
experienceCompany: "Knowledge",
|
|
1480
|
+
order: 17,
|
|
1481
|
+
year: 2017,
|
|
1482
|
+
markdown: `---
|
|
1483
|
+
title: "Knowledge.io"
|
|
1484
|
+
slug: "knowledge-io"
|
|
1485
|
+
description: "A tokenized knowledge platform with an ERC-20 token, marketplace, wallet dashboard, and mobile trivia game."
|
|
1486
|
+
role: "Software Engineer"
|
|
1487
|
+
tech:
|
|
1488
|
+
- TypeScript
|
|
1489
|
+
- Ethereum
|
|
1490
|
+
- Ethers
|
|
1491
|
+
- Solidity
|
|
1492
|
+
- AWS
|
|
1493
|
+
- Serverless
|
|
1494
|
+
- GraphQL
|
|
1495
|
+
- React Native
|
|
1496
|
+
- ReactJS
|
|
1497
|
+
- NodeJS
|
|
1498
|
+
- PostgreSQL
|
|
1499
|
+
type:
|
|
1500
|
+
- web3
|
|
1501
|
+
- contract
|
|
1502
|
+
- oss
|
|
1503
|
+
- frontend
|
|
1504
|
+
- backend
|
|
1505
|
+
- fullstack
|
|
1506
|
+
link: "https://github.com/knowledge/ethereum-contracts"
|
|
1507
|
+
image: "https://gaboesquivel.com/images/work/knowledge.png"
|
|
1508
|
+
repo: "https://github.com/knowledge"
|
|
1509
|
+
|
|
1510
|
+
images: []
|
|
1511
|
+
achievements:
|
|
1512
|
+
- Deployed Knowledge.io's ERC-20 token for the 2018 mainnet ICO.
|
|
1513
|
+
- Implemented smart contracts for token rewards and transactions.
|
|
1514
|
+
- Built a serverless AWS infrastructure for the token, marketplace, and wallet services.
|
|
1515
|
+
- Built the React and Web3.js marketplace and wallet dashboard around the ERC-20 token.
|
|
1516
|
+
- Maintained the React Native trivia game as the token-reward client.
|
|
1517
|
+
story:
|
|
1518
|
+
- Knowledge is a platform that rewards sharing information with an ERC-20 token. I built the token architecture and the systems around the 2018 mainnet ICO.
|
|
1519
|
+
- I implemented smart contracts for token rewards and transactions, then built a serverless AWS stack for the token, marketplace, and wallet services.
|
|
1520
|
+
- I also built the marketplace and wallet screens in React and Web3.js, and maintained the React Native trivia game as the reward client.
|
|
1521
|
+
experienceCompany: "Knowledge"
|
|
1522
|
+
order: 17
|
|
1523
|
+
year: 2017
|
|
1524
|
+
---
|
|
1525
|
+
|
|
1526
|
+
# Knowledge.io
|
|
1527
|
+
|
|
1528
|
+
A tokenized knowledge platform with an ERC-20 token, marketplace, wallet dashboard, and mobile trivia game.
|
|
1529
|
+
`,
|
|
1530
|
+
markdownPath: "content/projects/knowledge-io.md"
|
|
1531
|
+
},
|
|
1532
|
+
{
|
|
1533
|
+
title: "LegalAgent",
|
|
1534
|
+
slug: "legal-agent",
|
|
1535
|
+
description: "An AI legal platform with Expo voice and chat, RAG for case and document context, and administrative controls.",
|
|
1536
|
+
role: "Software Engineer",
|
|
1537
|
+
tech: [
|
|
1538
|
+
"TypeScript",
|
|
1539
|
+
"React Native",
|
|
1540
|
+
"Expo",
|
|
1541
|
+
"OpenAI",
|
|
1542
|
+
"AI SDK",
|
|
1543
|
+
"TanStack Query",
|
|
1544
|
+
"TanStack Form",
|
|
1545
|
+
"TanStack Start",
|
|
1546
|
+
"Tailwind",
|
|
1547
|
+
"Artificial Intelligence",
|
|
1548
|
+
"Redis",
|
|
1549
|
+
"PostgreSQL",
|
|
1550
|
+
"ReactJS"
|
|
1551
|
+
],
|
|
1552
|
+
type: [
|
|
1553
|
+
"ai",
|
|
1554
|
+
"contract",
|
|
1555
|
+
"featured",
|
|
1556
|
+
"mobile",
|
|
1557
|
+
"backend",
|
|
1558
|
+
"fullstack",
|
|
1559
|
+
"startup"
|
|
1560
|
+
],
|
|
1561
|
+
image: "https://gaboesquivel.com/images/work/legalagent.png",
|
|
1562
|
+
images: [],
|
|
1563
|
+
achievements: [
|
|
1564
|
+
"Shipped a multimodal AI assistant with voice and chat in a React Native Expo app.",
|
|
1565
|
+
"Built RAG for case context, document summaries, and procedural guidance.",
|
|
1566
|
+
"Built an admin dashboard with Microsoft SSO, prompt management, and document categorization.",
|
|
1567
|
+
"Shipped bilingual voice with realtime transcription and speech synthesis.",
|
|
1568
|
+
"Adjusted persona and tool calling in the Expo client after attorney sessions."
|
|
1569
|
+
],
|
|
1570
|
+
story: [
|
|
1571
|
+
"At LegalAgent I added a voice and chat assistant to their React Native app for case context, documents, and procedures.",
|
|
1572
|
+
"I implemented the Vercel AI SDK for chat and OpenAI's Realtime API for voice, with Tailwind on the multimodal UI. RAG supplied case context, document summaries, and procedural guidance in Spanish and English. Attorney feedback changed persona and tool calling in that Expo client.",
|
|
1573
|
+
"I also built an internal admin dashboard with TanStack Start: Microsoft SSO, system prompt management, and document categorization for RAG retrieval."
|
|
1574
|
+
],
|
|
1575
|
+
related: [
|
|
1576
|
+
{
|
|
1577
|
+
url: "2025-05-typescript-rag",
|
|
1578
|
+
title: "TypeScript RAG",
|
|
1579
|
+
publishedAt: "2025-05-01"
|
|
1580
|
+
},
|
|
1581
|
+
{
|
|
1582
|
+
url: "2025-09-why-expo",
|
|
1583
|
+
title: "Why Expo",
|
|
1584
|
+
publishedAt: "2025-09-01"
|
|
1585
|
+
}
|
|
1586
|
+
],
|
|
1587
|
+
experienceCompany: "LegalAgent",
|
|
1588
|
+
order: 1,
|
|
1589
|
+
year: 2025,
|
|
1590
|
+
markdown: `---
|
|
1591
|
+
title: "LegalAgent"
|
|
1592
|
+
slug: "legal-agent"
|
|
1593
|
+
description: "An AI legal platform with Expo voice and chat, RAG for case and document context, and administrative controls."
|
|
1594
|
+
role: "Software Engineer"
|
|
1595
|
+
tech:
|
|
1596
|
+
- TypeScript
|
|
1597
|
+
- React Native
|
|
1598
|
+
- Expo
|
|
1599
|
+
- OpenAI
|
|
1600
|
+
- AI SDK
|
|
1601
|
+
- TanStack Query
|
|
1602
|
+
- TanStack Form
|
|
1603
|
+
- TanStack Start
|
|
1604
|
+
- Tailwind
|
|
1605
|
+
- Artificial Intelligence
|
|
1606
|
+
- Redis
|
|
1607
|
+
- PostgreSQL
|
|
1608
|
+
- ReactJS
|
|
1609
|
+
type:
|
|
1610
|
+
- ai
|
|
1611
|
+
- contract
|
|
1612
|
+
- featured
|
|
1613
|
+
- mobile
|
|
1614
|
+
- backend
|
|
1615
|
+
- fullstack
|
|
1616
|
+
- startup
|
|
1617
|
+
image: "https://gaboesquivel.com/images/work/legalagent.png"
|
|
1618
|
+
|
|
1619
|
+
|
|
1620
|
+
images: []
|
|
1621
|
+
achievements:
|
|
1622
|
+
- Shipped a multimodal AI assistant with voice and chat in a React Native Expo app.
|
|
1623
|
+
- Built RAG for case context, document summaries, and procedural guidance.
|
|
1624
|
+
- Built an admin dashboard with Microsoft SSO, prompt management, and document categorization.
|
|
1625
|
+
- Shipped bilingual voice with realtime transcription and speech synthesis.
|
|
1626
|
+
- Adjusted persona and tool calling in the Expo client after attorney sessions.
|
|
1627
|
+
story:
|
|
1628
|
+
- At LegalAgent I added a voice and chat assistant to their React Native app for case context, documents, and procedures.
|
|
1629
|
+
- I implemented the Vercel AI SDK for chat and OpenAI's Realtime API for voice, with Tailwind on the multimodal UI. RAG supplied case context, document summaries, and procedural guidance in Spanish and English. Attorney feedback changed persona and tool calling in that Expo client.
|
|
1630
|
+
- "I also built an internal admin dashboard with TanStack Start: Microsoft SSO, system prompt management, and document categorization for RAG retrieval."
|
|
1631
|
+
experienceCompany: "LegalAgent"
|
|
1632
|
+
order: 1
|
|
1633
|
+
year: 2025
|
|
1634
|
+
related:
|
|
1635
|
+
- url: "2025-05-typescript-rag"
|
|
1636
|
+
title: "TypeScript RAG"
|
|
1637
|
+
publishedAt: "2025-05-01"
|
|
1638
|
+
- url: "2025-09-why-expo"
|
|
1639
|
+
title: "Why Expo"
|
|
1640
|
+
publishedAt: "2025-09-01"
|
|
1641
|
+
---
|
|
1642
|
+
|
|
1643
|
+
# LegalAgent
|
|
1644
|
+
|
|
1645
|
+
An AI legal platform with Expo voice and chat, RAG for case and document context, and administrative controls.
|
|
1646
|
+
`,
|
|
1647
|
+
markdownPath: "content/projects/legal-agent.md"
|
|
1648
|
+
},
|
|
1649
|
+
{
|
|
1650
|
+
title: "Living with Dryness",
|
|
1651
|
+
slug: "living-with-dryness",
|
|
1652
|
+
description: "A responsive medical information page for dryness-related resources, laid out to be readable on a phone.",
|
|
1653
|
+
tech: [
|
|
1654
|
+
"JavaScript",
|
|
1655
|
+
"CSS",
|
|
1656
|
+
"Wordpress"
|
|
1657
|
+
],
|
|
1658
|
+
type: [
|
|
1659
|
+
"other",
|
|
1660
|
+
"frontend"
|
|
1661
|
+
],
|
|
1662
|
+
image: "https://gaboesquivel.com/images/work/living-with-dryness.jpg",
|
|
1663
|
+
images: [],
|
|
1664
|
+
achievements: [
|
|
1665
|
+
"Built a responsive landing page and navigation for medical resources."
|
|
1666
|
+
],
|
|
1667
|
+
story: [
|
|
1668
|
+
"Freelance WordPress work on a responsive medical information page focused on readability and navigation on mobile."
|
|
1669
|
+
],
|
|
1670
|
+
order: 44,
|
|
1671
|
+
year: 2011,
|
|
1672
|
+
markdown: '---\ntitle: "Living with Dryness"\nslug: "living-with-dryness"\ndescription: "A responsive medical information page for dryness-related resources, laid out to be readable on a phone."\ntech:\n - JavaScript\n - CSS\n - Wordpress\ntype:\n - other\n - frontend\nimage: "https://gaboesquivel.com/images/work/living-with-dryness.jpg"\n\n\nimages: []\nachievements:\n - Built a responsive landing page and navigation for medical resources.\nstory:\n - Freelance WordPress work on a responsive medical information page focused on readability and navigation on mobile.\norder: 44\nyear: 2011\n---\n\n# Living with Dryness\n\nA responsive medical information page for dryness-related resources, laid out to be readable on a phone.\n',
|
|
1673
|
+
markdownPath: "content/projects/living-with-dryness.md"
|
|
1674
|
+
},
|
|
1675
|
+
{
|
|
1676
|
+
title: "Make Sense Labs",
|
|
1677
|
+
slug: "make-sense-labs",
|
|
1678
|
+
description: "A React Native messaging and wallet app with EOS transactions, token functionality, and privacy features.",
|
|
1679
|
+
tech: [
|
|
1680
|
+
"React Native",
|
|
1681
|
+
"TypeScript",
|
|
1682
|
+
"Antelope"
|
|
1683
|
+
],
|
|
1684
|
+
type: [
|
|
1685
|
+
"web3",
|
|
1686
|
+
"contract",
|
|
1687
|
+
"mobile"
|
|
1688
|
+
],
|
|
1689
|
+
link: "https://www.youtube.com/watch?v=2DJxzYDaAz8",
|
|
1690
|
+
image: "https://gaboesquivel.com/images/work/sense-chat.png",
|
|
1691
|
+
video: "https://www.youtube.com/watch?v=2DJxzYDaAz8",
|
|
1692
|
+
images: [],
|
|
1693
|
+
achievements: [
|
|
1694
|
+
"Improved app performance and reduced load times by optimizing React Native components.",
|
|
1695
|
+
"Integrated EOS mainnet for in-app transactions.",
|
|
1696
|
+
"Improved the app's security and privacy features."
|
|
1697
|
+
],
|
|
1698
|
+
story: [
|
|
1699
|
+
"At Make Sense Labs I worked on Sense.chat, a secure chat and transaction app built around user data privacy, and improved the performance of its React Native client.",
|
|
1700
|
+
"I integrated the app with EOS mainnet for transactions and token functionality, including a built-in wallet and token incentives for communities, and also improved its security and privacy features."
|
|
1701
|
+
],
|
|
1702
|
+
order: 9,
|
|
1703
|
+
year: 2019,
|
|
1704
|
+
markdown: `---
|
|
1705
|
+
title: "Make Sense Labs"
|
|
1706
|
+
slug: "make-sense-labs"
|
|
1707
|
+
description: "A React Native messaging and wallet app with EOS transactions, token functionality, and privacy features."
|
|
1708
|
+
tech:
|
|
1709
|
+
- React Native
|
|
1710
|
+
- TypeScript
|
|
1711
|
+
- Antelope
|
|
1712
|
+
type:
|
|
1713
|
+
- web3
|
|
1714
|
+
- contract
|
|
1715
|
+
- mobile
|
|
1716
|
+
link: "https://www.youtube.com/watch?v=2DJxzYDaAz8"
|
|
1717
|
+
image: "https://gaboesquivel.com/images/work/sense-chat.png"
|
|
1718
|
+
|
|
1719
|
+
video: "https://www.youtube.com/watch?v=2DJxzYDaAz8"
|
|
1720
|
+
images: []
|
|
1721
|
+
achievements:
|
|
1722
|
+
- Improved app performance and reduced load times by optimizing React Native components.
|
|
1723
|
+
- Integrated EOS mainnet for in-app transactions.
|
|
1724
|
+
- Improved the app's security and privacy features.
|
|
1725
|
+
story:
|
|
1726
|
+
- At Make Sense Labs I worked on Sense.chat, a secure chat and transaction app built around user data privacy, and improved the performance of its React Native client.
|
|
1727
|
+
- I integrated the app with EOS mainnet for transactions and token functionality, including a built-in wallet and token incentives for communities, and also improved its security and privacy features.
|
|
1728
|
+
order: 9
|
|
1729
|
+
year: 2019
|
|
1730
|
+
---
|
|
1731
|
+
|
|
1732
|
+
# Make Sense Labs
|
|
1733
|
+
|
|
1734
|
+
A React Native messaging and wallet app with EOS transactions, token functionality, and privacy features.
|
|
1735
|
+
`,
|
|
1736
|
+
markdownPath: "content/projects/make-sense-labs.md"
|
|
1737
|
+
},
|
|
1738
|
+
{
|
|
1739
|
+
title: "Masterbots",
|
|
1740
|
+
slug: "masterbots",
|
|
1741
|
+
description: "A platform for domain-specific AI assistants with specialized interfaces, social sharing, and multilingual support.",
|
|
1742
|
+
tech: [
|
|
1743
|
+
"NextJS",
|
|
1744
|
+
"NodeJS",
|
|
1745
|
+
"GraphQL",
|
|
1746
|
+
"ReactJS",
|
|
1747
|
+
"PostgreSQL",
|
|
1748
|
+
"TypeScript",
|
|
1749
|
+
"OpenAI",
|
|
1750
|
+
"AI SDK",
|
|
1751
|
+
"Artificial Intelligence",
|
|
1752
|
+
"Docker",
|
|
1753
|
+
"GCP",
|
|
1754
|
+
"ShadcnUI",
|
|
1755
|
+
"Tailwind",
|
|
1756
|
+
"TanStack Query",
|
|
1757
|
+
"Zod",
|
|
1758
|
+
"nuqs"
|
|
1759
|
+
],
|
|
1760
|
+
type: [
|
|
1761
|
+
"ai",
|
|
1762
|
+
"oss",
|
|
1763
|
+
"frontend",
|
|
1764
|
+
"backend",
|
|
1765
|
+
"fullstack",
|
|
1766
|
+
"startup"
|
|
1767
|
+
],
|
|
1768
|
+
link: "https://masterbots.ai",
|
|
1769
|
+
image: "https://gaboesquivel.com/images/work/masterbots.png",
|
|
1770
|
+
repo: "https://github.com/bitcashorg/masterbots",
|
|
1771
|
+
images: [],
|
|
1772
|
+
achievements: [
|
|
1773
|
+
"Integrated AI SDK for internationalization automation and AI-driven workflow.",
|
|
1774
|
+
"Built specialized AI agents and chatbot interfaces for domain-specific assistants.",
|
|
1775
|
+
"Set up the Next.js application structure and trained the team on it.",
|
|
1776
|
+
"Integrated AI-driven development workflow using v0.dev, Anthropic Claude Sonnet, Cursor IDE, and SourceryAI."
|
|
1777
|
+
],
|
|
1778
|
+
story: [
|
|
1779
|
+
"Masterbots is a platform for domain-specific AI assistants with specialized interfaces, social sharing, and multilingual support.",
|
|
1780
|
+
"I integrated the AI SDK for internationalization automation, set up the Next.js application structure, and built specialized agent interfaces on top of it."
|
|
1781
|
+
],
|
|
1782
|
+
order: 4,
|
|
1783
|
+
year: 2024,
|
|
1784
|
+
markdown: '---\ntitle: "Masterbots"\nslug: "masterbots"\ndescription: "A platform for domain-specific AI assistants with specialized interfaces, social sharing, and multilingual support."\ntech:\n - NextJS\n - NodeJS\n - GraphQL\n - ReactJS\n - PostgreSQL\n - TypeScript\n - OpenAI\n - AI SDK\n - Artificial Intelligence\n - Docker\n - GCP\n - ShadcnUI\n - Tailwind\n - TanStack Query\n - Zod\n - nuqs\ntype:\n - ai\n - oss\n - frontend\n - backend\n - fullstack\n - startup\nlink: "https://masterbots.ai"\nimage: "https://gaboesquivel.com/images/work/masterbots.png"\nrepo: "https://github.com/bitcashorg/masterbots"\n\nimages: []\nachievements:\n - Integrated AI SDK for internationalization automation and AI-driven workflow.\n - Built specialized AI agents and chatbot interfaces for domain-specific assistants.\n - Set up the Next.js application structure and trained the team on it.\n - Integrated AI-driven development workflow using v0.dev, Anthropic Claude Sonnet, Cursor IDE, and SourceryAI.\nstory:\n - Masterbots is a platform for domain-specific AI assistants with specialized interfaces, social sharing, and multilingual support.\n - I integrated the AI SDK for internationalization automation, set up the Next.js application structure, and built specialized agent interfaces on top of it.\norder: 4\nyear: 2024\n---\n\n# Masterbots\n\nA platform for domain-specific AI assistants with specialized interfaces, social sharing, and multilingual support.\n',
|
|
1785
|
+
markdownPath: "content/projects/masterbots.md"
|
|
1786
|
+
},
|
|
1787
|
+
{
|
|
1788
|
+
title: "Mobtion",
|
|
1789
|
+
slug: "mobtion",
|
|
1790
|
+
description: "A responsive agency site and WordPress CMS for Mobtion, a mobile-development studio.",
|
|
1791
|
+
tech: [
|
|
1792
|
+
"JavaScript",
|
|
1793
|
+
"CSS",
|
|
1794
|
+
"Wordpress",
|
|
1795
|
+
"PHP"
|
|
1796
|
+
],
|
|
1797
|
+
type: [
|
|
1798
|
+
"other",
|
|
1799
|
+
"frontend"
|
|
1800
|
+
],
|
|
1801
|
+
image: "https://gaboesquivel.com/images/work/mobtion.jpg",
|
|
1802
|
+
images: [],
|
|
1803
|
+
achievements: [
|
|
1804
|
+
"Built a responsive website for the Mobtion agency.",
|
|
1805
|
+
"Integrated WordPress so the team could update their portfolio without a developer."
|
|
1806
|
+
],
|
|
1807
|
+
story: [
|
|
1808
|
+
"Responsive agency site and WordPress CMS for Mobtion at IntergraphiDesign so they could update their mobile-dev portfolio without a developer."
|
|
1809
|
+
],
|
|
1810
|
+
order: 41,
|
|
1811
|
+
year: 2008,
|
|
1812
|
+
markdown: '---\ntitle: "Mobtion"\nslug: "mobtion"\ndescription: "A responsive agency site and WordPress CMS for Mobtion, a mobile-development studio."\ntech:\n - JavaScript\n - CSS\n - Wordpress\n - PHP\ntype:\n - other\n - frontend\nimage: "https://gaboesquivel.com/images/work/mobtion.jpg"\n\n\nimages: []\nachievements:\n - Built a responsive website for the Mobtion agency.\n - Integrated WordPress so the team could update their portfolio without a developer.\nstory:\n - Responsive agency site and WordPress CMS for Mobtion at IntergraphiDesign so they could update their mobile-dev portfolio without a developer.\norder: 41\nyear: 2008\n---\n\n# Mobtion\n\nA responsive agency site and WordPress CMS for Mobtion, a mobile-development studio.\n',
|
|
1813
|
+
markdownPath: "content/projects/mobtion.md"
|
|
1814
|
+
},
|
|
1815
|
+
{
|
|
1816
|
+
title: "Opyn",
|
|
1817
|
+
slug: "opyn",
|
|
1818
|
+
description: "Opyn Markets perpetuals on Arbitrum with a Next.js trading interface and indexed onchain data.",
|
|
1819
|
+
role: "Software Engineer",
|
|
1820
|
+
tech: [
|
|
1821
|
+
"TypeScript",
|
|
1822
|
+
"NextJS",
|
|
1823
|
+
"ReactJS",
|
|
1824
|
+
"Foundry",
|
|
1825
|
+
"Solidity",
|
|
1826
|
+
"Viem",
|
|
1827
|
+
"Wagmi",
|
|
1828
|
+
"Ponder",
|
|
1829
|
+
"PostgreSQL",
|
|
1830
|
+
"Supabase",
|
|
1831
|
+
"ShadcnUI",
|
|
1832
|
+
"Tailwind",
|
|
1833
|
+
"TanStack Query",
|
|
1834
|
+
"Zod",
|
|
1835
|
+
"nuqs",
|
|
1836
|
+
"Ethereum",
|
|
1837
|
+
"Alchemy"
|
|
1838
|
+
],
|
|
1839
|
+
type: [
|
|
1840
|
+
"web3",
|
|
1841
|
+
"contract",
|
|
1842
|
+
"featured",
|
|
1843
|
+
"frontend",
|
|
1844
|
+
"backend"
|
|
1845
|
+
],
|
|
1846
|
+
link: "https://opyn.co",
|
|
1847
|
+
image: "https://gaboesquivel.com/images/work/opyn.png",
|
|
1848
|
+
images: [],
|
|
1849
|
+
achievements: [
|
|
1850
|
+
"Built the Next.js 14 trading interface with React Server Components.",
|
|
1851
|
+
"Integrated the protocol and Arbitrum testnet with viem and wagmi.",
|
|
1852
|
+
"Indexed onchain data with Ponder, PostgreSQL, and Supabase.",
|
|
1853
|
+
"Prototyped an LLM assistant for onboarding and support."
|
|
1854
|
+
],
|
|
1855
|
+
story: [
|
|
1856
|
+
"Opyn was shipping Opyn Markets, a perpetuals protocol on Arbitrum, and the trading UI needed indexed protocol state instead of reconstructing positions from raw RPC reads.",
|
|
1857
|
+
"I set up the Next.js 14 app structure and the data-fetching path the interface sits on, with Ponder over PostgreSQL and Supabase, viem and wagmi on Arbitrum testnet, and a prototype LLM assistant for onboarding."
|
|
1858
|
+
],
|
|
1859
|
+
related: [
|
|
1860
|
+
{
|
|
1861
|
+
url: "2025-11-bullish-2026",
|
|
1862
|
+
title: "Bullish 2026",
|
|
1863
|
+
publishedAt: "2025-11-01"
|
|
1864
|
+
},
|
|
1865
|
+
{
|
|
1866
|
+
url: "2026-01-tokenization",
|
|
1867
|
+
title: "Tokenization",
|
|
1868
|
+
publishedAt: "2026-01-01"
|
|
1869
|
+
}
|
|
1870
|
+
],
|
|
1871
|
+
experienceCompany: "Opyn",
|
|
1872
|
+
order: 2,
|
|
1873
|
+
year: 2024,
|
|
1874
|
+
markdown: '---\ntitle: "Opyn"\nslug: "opyn"\ndescription: "Opyn Markets perpetuals on Arbitrum with a Next.js trading interface and indexed onchain data."\nrole: "Software Engineer"\ntech:\n - TypeScript\n - NextJS\n - ReactJS\n - Foundry\n - Solidity\n - Viem\n - Wagmi\n - Ponder\n - PostgreSQL\n - Supabase\n - ShadcnUI\n - Tailwind\n - TanStack Query\n - Zod\n - nuqs\n - Ethereum\n - Alchemy\ntype:\n - web3\n - contract\n - featured\n - frontend\n - backend\nlink: "https://opyn.co"\nimage: "https://gaboesquivel.com/images/work/opyn.png"\n\n\nimages: []\nachievements:\n - Built the Next.js 14 trading interface with React Server Components.\n - Integrated the protocol and Arbitrum testnet with viem and wagmi.\n - Indexed onchain data with Ponder, PostgreSQL, and Supabase.\n - Prototyped an LLM assistant for onboarding and support.\nstory:\n - Opyn was shipping Opyn Markets, a perpetuals protocol on Arbitrum, and the trading UI needed indexed protocol state instead of reconstructing positions from raw RPC reads.\n - I set up the Next.js 14 app structure and the data-fetching path the interface sits on, with Ponder over PostgreSQL and Supabase, viem and wagmi on Arbitrum testnet, and a prototype LLM assistant for onboarding.\nexperienceCompany: "Opyn"\norder: 2\nyear: 2024\nrelated:\n - url: "2025-11-bullish-2026"\n title: "Bullish 2026"\n publishedAt: "2025-11-01"\n - url: "2026-01-tokenization"\n title: "Tokenization"\n publishedAt: "2026-01-01"\n---\n\n# Opyn\n\nOpyn Markets perpetuals on Arbitrum with a Next.js trading interface and indexed onchain data.\n',
|
|
1875
|
+
markdownPath: "content/projects/opyn.md"
|
|
1876
|
+
},
|
|
1877
|
+
{
|
|
1878
|
+
title: "Panini",
|
|
1879
|
+
slug: "panini",
|
|
1880
|
+
description: "A WordPress site for Panini: frontend performance, browser compatibility, and interface work.",
|
|
1881
|
+
tech: [
|
|
1882
|
+
"JavaScript",
|
|
1883
|
+
"CSS",
|
|
1884
|
+
"Wordpress"
|
|
1885
|
+
],
|
|
1886
|
+
type: [
|
|
1887
|
+
"other",
|
|
1888
|
+
"frontend"
|
|
1889
|
+
],
|
|
1890
|
+
image: "https://gaboesquivel.com/images/work/panini.jpg",
|
|
1891
|
+
images: [],
|
|
1892
|
+
achievements: [
|
|
1893
|
+
"Improved frontend performance and cross-browser compatibility for a WordPress site."
|
|
1894
|
+
],
|
|
1895
|
+
story: [
|
|
1896
|
+
"Freelance WordPress work for Panini focused on frontend performance, browser compatibility, and interface cleanup."
|
|
1897
|
+
],
|
|
1898
|
+
order: 37,
|
|
1899
|
+
year: 2008,
|
|
1900
|
+
markdown: '---\ntitle: "Panini"\nslug: "panini"\ndescription: "A WordPress site for Panini: frontend performance, browser compatibility, and interface work."\ntech:\n - JavaScript\n - CSS\n - Wordpress\ntype:\n - other\n - frontend\nimage: "https://gaboesquivel.com/images/work/panini.jpg"\n\n\nimages: []\nachievements:\n - Improved frontend performance and cross-browser compatibility for a WordPress site.\nstory:\n - Freelance WordPress work for Panini focused on frontend performance, browser compatibility, and interface cleanup.\norder: 37\nyear: 2008\n---\n\n# Panini\n\nA WordPress site for Panini: frontend performance, browser compatibility, and interface work.\n',
|
|
1901
|
+
markdownPath: "content/projects/panini.md"
|
|
1902
|
+
},
|
|
1903
|
+
{
|
|
1904
|
+
title: "Photo and Go",
|
|
1905
|
+
slug: "photo-and-go",
|
|
1906
|
+
description: "An online photo-product platform with a custom editor and backend integration into existing commerce systems.",
|
|
1907
|
+
tech: [
|
|
1908
|
+
"ReactJS",
|
|
1909
|
+
"NodeJS",
|
|
1910
|
+
"Redux",
|
|
1911
|
+
"AWS",
|
|
1912
|
+
"Docker",
|
|
1913
|
+
"PostgreSQL"
|
|
1914
|
+
],
|
|
1915
|
+
type: [
|
|
1916
|
+
"contract",
|
|
1917
|
+
"frontend",
|
|
1918
|
+
"backend",
|
|
1919
|
+
"fullstack"
|
|
1920
|
+
],
|
|
1921
|
+
link: "https://www.myphoto.com/",
|
|
1922
|
+
image: "https://gaboesquivel.com/images/work/photoandgo.jpg",
|
|
1923
|
+
images: [],
|
|
1924
|
+
achievements: [
|
|
1925
|
+
"Built a photo editor that posted finished products into the existing commerce system.",
|
|
1926
|
+
"Led technical direction on the editor and the services behind it.",
|
|
1927
|
+
"Ran image storage and processing on AWS."
|
|
1928
|
+
],
|
|
1929
|
+
story: [
|
|
1930
|
+
"Photo and Go, later MyPhoto.com, is Instant Pictures' retail and e-commerce line for turning camera-roll, Facebook, and Instagram photos into prints, layflat books, phone cases, and similar products, born from the Polaroid Fotobar retail concept in Las Vegas and Florida.",
|
|
1931
|
+
"I led the custom photo editor and the Node.js services behind it (cropping, product layouts, checkout handoff into the commerce catalog, and AWS-backed storage and processing), with React and Redux on the client and Docker in the deployment path."
|
|
1932
|
+
],
|
|
1933
|
+
order: 29,
|
|
1934
|
+
year: 2014,
|
|
1935
|
+
markdown: `---
|
|
1936
|
+
title: "Photo and Go"
|
|
1937
|
+
slug: "photo-and-go"
|
|
1938
|
+
description: "An online photo-product platform with a custom editor and backend integration into existing commerce systems."
|
|
1939
|
+
tech:
|
|
1940
|
+
- ReactJS
|
|
1941
|
+
- NodeJS
|
|
1942
|
+
- Redux
|
|
1943
|
+
- AWS
|
|
1944
|
+
- Docker
|
|
1945
|
+
- PostgreSQL
|
|
1946
|
+
type:
|
|
1947
|
+
- contract
|
|
1948
|
+
- frontend
|
|
1949
|
+
- backend
|
|
1950
|
+
- fullstack
|
|
1951
|
+
link: "https://www.myphoto.com/"
|
|
1952
|
+
image: "https://gaboesquivel.com/images/work/photoandgo.jpg"
|
|
1953
|
+
|
|
1954
|
+
|
|
1955
|
+
images: []
|
|
1956
|
+
achievements:
|
|
1957
|
+
- Built a photo editor that posted finished products into the existing commerce system.
|
|
1958
|
+
- Led technical direction on the editor and the services behind it.
|
|
1959
|
+
- Ran image storage and processing on AWS.
|
|
1960
|
+
story:
|
|
1961
|
+
- Photo and Go, later MyPhoto.com, is Instant Pictures' retail and e-commerce line for turning camera-roll, Facebook, and Instagram photos into prints, layflat books, phone cases, and similar products, born from the Polaroid Fotobar retail concept in Las Vegas and Florida.
|
|
1962
|
+
- >-
|
|
1963
|
+
I led the custom photo editor and the Node.js services behind it (cropping,
|
|
1964
|
+
product layouts, checkout handoff into the commerce catalog, and AWS-backed
|
|
1965
|
+
storage and processing), with React and Redux on the client and Docker in the
|
|
1966
|
+
deployment path.
|
|
1967
|
+
order: 29
|
|
1968
|
+
year: 2014
|
|
1969
|
+
---
|
|
1970
|
+
|
|
1971
|
+
# Photo and Go
|
|
1972
|
+
|
|
1973
|
+
An online photo-product platform with a custom editor and backend integration into existing commerce systems.
|
|
1974
|
+
`,
|
|
1975
|
+
markdownPath: "content/projects/photo-and-go.md"
|
|
1976
|
+
},
|
|
1977
|
+
{
|
|
1978
|
+
title: "Proparques",
|
|
1979
|
+
slug: "proparques",
|
|
1980
|
+
description: "A responsive nonprofit website with an interactive map for exploring Costa Rica's national parks.",
|
|
1981
|
+
tech: [
|
|
1982
|
+
"JavaScript",
|
|
1983
|
+
"CSS",
|
|
1984
|
+
"Wordpress"
|
|
1985
|
+
],
|
|
1986
|
+
type: [
|
|
1987
|
+
"other",
|
|
1988
|
+
"frontend"
|
|
1989
|
+
],
|
|
1990
|
+
image: "https://gaboesquivel.com/images/work/proparques.jpg",
|
|
1991
|
+
images: [],
|
|
1992
|
+
achievements: [
|
|
1993
|
+
"Developed an interactive national park map for user exploration.",
|
|
1994
|
+
"Designed a responsive landing page for the nonprofit."
|
|
1995
|
+
],
|
|
1996
|
+
story: [
|
|
1997
|
+
"Nonprofit landing page and interactive national-park map for ProParques at IntergraphiDesign."
|
|
1998
|
+
],
|
|
1999
|
+
order: 39,
|
|
2000
|
+
year: 2008,
|
|
2001
|
+
markdown: `---
|
|
2002
|
+
title: "Proparques"
|
|
2003
|
+
slug: "proparques"
|
|
2004
|
+
description: "A responsive nonprofit website with an interactive map for exploring Costa Rica's national parks."
|
|
2005
|
+
tech:
|
|
2006
|
+
- JavaScript
|
|
2007
|
+
- CSS
|
|
2008
|
+
- Wordpress
|
|
2009
|
+
type:
|
|
2010
|
+
- other
|
|
2011
|
+
- frontend
|
|
2012
|
+
image: "https://gaboesquivel.com/images/work/proparques.jpg"
|
|
2013
|
+
|
|
2014
|
+
|
|
2015
|
+
images: []
|
|
2016
|
+
achievements:
|
|
2017
|
+
- Developed an interactive national park map for user exploration.
|
|
2018
|
+
- Designed a responsive landing page for the nonprofit.
|
|
2019
|
+
story:
|
|
2020
|
+
- Nonprofit landing page and interactive national-park map for ProParques at IntergraphiDesign.
|
|
2021
|
+
order: 39
|
|
2022
|
+
year: 2008
|
|
2023
|
+
---
|
|
2024
|
+
|
|
2025
|
+
# Proparques
|
|
2026
|
+
|
|
2027
|
+
A responsive nonprofit website with an interactive map for exploring Costa Rica's national parks.
|
|
2028
|
+
`,
|
|
2029
|
+
markdownPath: "content/projects/proparques.md"
|
|
2030
|
+
},
|
|
2031
|
+
{
|
|
2032
|
+
title: "RareMint",
|
|
2033
|
+
slug: "raremint",
|
|
2034
|
+
description: "A Polygon marketplace for tokenized sports collectibles with indexed NFT data, auctions, and WalletConnect.",
|
|
2035
|
+
role: "Software Engineer",
|
|
2036
|
+
tech: [
|
|
2037
|
+
"NextJS",
|
|
2038
|
+
"Ethers",
|
|
2039
|
+
"NFT",
|
|
2040
|
+
"ReactJS",
|
|
2041
|
+
"GCP",
|
|
2042
|
+
"NodeJS",
|
|
2043
|
+
"GraphQL",
|
|
2044
|
+
"TypeScript",
|
|
2045
|
+
"Ethereum",
|
|
2046
|
+
"Docker",
|
|
2047
|
+
"Tailwind",
|
|
2048
|
+
"PostgreSQL"
|
|
2049
|
+
],
|
|
2050
|
+
type: [
|
|
2051
|
+
"web3",
|
|
2052
|
+
"full-time",
|
|
2053
|
+
"frontend",
|
|
2054
|
+
"backend",
|
|
2055
|
+
"fullstack",
|
|
2056
|
+
"startup"
|
|
2057
|
+
],
|
|
2058
|
+
link: "https://raremint.com",
|
|
2059
|
+
image: "https://gaboesquivel.com/images/work/raremint.png",
|
|
2060
|
+
video: "https://www.youtube.com/watch?v=2wh32w7N9xg",
|
|
2061
|
+
images: [
|
|
2062
|
+
"https://gaboesquivel.com/images/work/raremint-perf.jpeg"
|
|
2063
|
+
],
|
|
2064
|
+
achievements: [
|
|
2065
|
+
"Built an EVM NFT data indexer using Moralis streams, Node.js, and PostgreSQL on Google Cloud.",
|
|
2066
|
+
"Refactored the marketplace to Next.js SSR with Tailwind and GraphQL.",
|
|
2067
|
+
"Integrated WalletConnect for connections and transactions."
|
|
2068
|
+
],
|
|
2069
|
+
story: [
|
|
2070
|
+
"RareMint digitized real-world sports collectibles as NFTs. I worked on marketplace performance, wallet integration, and the July 2022 Slab Series Pok\xE9mon mystery-pack drop on Polygon.",
|
|
2071
|
+
"I built the Moralis-streams indexer on Node.js, PostgreSQL, and Google Cloud, then moved the marketplace to Next.js SSR for listing and drop flows."
|
|
2072
|
+
],
|
|
2073
|
+
experienceCompany: "RareMint",
|
|
2074
|
+
order: 6,
|
|
2075
|
+
year: 2021,
|
|
2076
|
+
markdown: '---\ntitle: "RareMint"\nslug: "raremint"\ndescription: "A Polygon marketplace for tokenized sports collectibles with indexed NFT data, auctions, and WalletConnect."\nrole: "Software Engineer"\ntech:\n - NextJS\n - Ethers\n - NFT\n - ReactJS\n - GCP\n - NodeJS\n - GraphQL\n - TypeScript\n - Ethereum\n - Docker\n - Tailwind\n - PostgreSQL\ntype:\n - web3\n - full-time\n - frontend\n - backend\n - fullstack\n - startup\nlink: "https://raremint.com"\nimage: "https://gaboesquivel.com/images/work/raremint.png"\n\nvideo: "https://www.youtube.com/watch?v=2wh32w7N9xg"\nimages:\n - https://gaboesquivel.com/images/work/raremint-perf.jpeg\nachievements:\n - Built an EVM NFT data indexer using Moralis streams, Node.js, and PostgreSQL on Google Cloud.\n - Refactored the marketplace to Next.js SSR with Tailwind and GraphQL.\n - Integrated WalletConnect for connections and transactions.\nstory:\n - RareMint digitized real-world sports collectibles as NFTs. I worked on marketplace performance, wallet integration, and the July 2022 Slab Series Pok\xE9mon mystery-pack drop on Polygon.\n - I built the Moralis-streams indexer on Node.js, PostgreSQL, and Google Cloud, then moved the marketplace to Next.js SSR for listing and drop flows.\nexperienceCompany: "RareMint"\norder: 6\nyear: 2021\n---\n\n# RareMint\n\nA Polygon marketplace for tokenized sports collectibles with indexed NFT data, auctions, and WalletConnect.\n',
|
|
2077
|
+
markdownPath: "content/projects/raremint.md"
|
|
2078
|
+
},
|
|
2079
|
+
{
|
|
2080
|
+
title: "ScotiaTico",
|
|
2081
|
+
slug: "scotiatico",
|
|
2082
|
+
description: "A WordPress customer newsletter for Scotiabank Costa Rica: bank updates in a layout staff could maintain.",
|
|
2083
|
+
tech: [
|
|
2084
|
+
"JavaScript",
|
|
2085
|
+
"CSS",
|
|
2086
|
+
"Wordpress"
|
|
2087
|
+
],
|
|
2088
|
+
type: [
|
|
2089
|
+
"other",
|
|
2090
|
+
"frontend"
|
|
2091
|
+
],
|
|
2092
|
+
image: "https://gaboesquivel.com/images/work/scotiatico.jpg",
|
|
2093
|
+
images: [],
|
|
2094
|
+
achievements: [
|
|
2095
|
+
"Designed and developed an interactive newsletter layout for ScotiaBank."
|
|
2096
|
+
],
|
|
2097
|
+
story: [
|
|
2098
|
+
"WordPress newsletter layout for Scotiabank Costa Rica at IntergraphiDesign."
|
|
2099
|
+
],
|
|
2100
|
+
order: 32,
|
|
2101
|
+
year: 2008,
|
|
2102
|
+
markdown: '---\ntitle: "ScotiaTico"\nslug: "scotiatico"\ndescription: "A WordPress customer newsletter for Scotiabank Costa Rica: bank updates in a layout staff could maintain."\ntech:\n - JavaScript\n - CSS\n - Wordpress\ntype:\n - other\n - frontend\nimage: "https://gaboesquivel.com/images/work/scotiatico.jpg"\n\n\nimages: []\nachievements:\n - Designed and developed an interactive newsletter layout for ScotiaBank.\nstory:\n - WordPress newsletter layout for Scotiabank Costa Rica at IntergraphiDesign.\norder: 32\nyear: 2008\n---\n\n# ScotiaTico\n\nA WordPress customer newsletter for Scotiabank Costa Rica: bank updates in a layout staff could maintain.\n',
|
|
2103
|
+
markdownPath: "content/projects/scotiatico.md"
|
|
2104
|
+
},
|
|
2105
|
+
{
|
|
2106
|
+
title: "Staples",
|
|
2107
|
+
slug: "staples",
|
|
2108
|
+
description: "Responsive navigation and commerce interfaces for Staples' office-supply ecommerce storefront.",
|
|
2109
|
+
tech: [
|
|
2110
|
+
"JavaScript",
|
|
2111
|
+
"CSS",
|
|
2112
|
+
"Mootools"
|
|
2113
|
+
],
|
|
2114
|
+
type: [
|
|
2115
|
+
"other",
|
|
2116
|
+
"frontend"
|
|
2117
|
+
],
|
|
2118
|
+
image: "https://gaboesquivel.com/images/work/staples.jpg",
|
|
2119
|
+
images: [],
|
|
2120
|
+
achievements: [
|
|
2121
|
+
"Rebuilt the main navigation for smaller screens.",
|
|
2122
|
+
"Developed responsive UI components and front-end performance improvements."
|
|
2123
|
+
],
|
|
2124
|
+
story: [
|
|
2125
|
+
"Freelance frontend work on Staples' ecommerce storefront: responsive navigation, UI components, and load-time improvements."
|
|
2126
|
+
],
|
|
2127
|
+
order: 33,
|
|
2128
|
+
year: 2011,
|
|
2129
|
+
markdown: `---
|
|
2130
|
+
title: "Staples"
|
|
2131
|
+
slug: "staples"
|
|
2132
|
+
description: "Responsive navigation and commerce interfaces for Staples' office-supply ecommerce storefront."
|
|
2133
|
+
tech:
|
|
2134
|
+
- JavaScript
|
|
2135
|
+
- CSS
|
|
2136
|
+
- Mootools
|
|
2137
|
+
type:
|
|
2138
|
+
- other
|
|
2139
|
+
- frontend
|
|
2140
|
+
image: "https://gaboesquivel.com/images/work/staples.jpg"
|
|
2141
|
+
|
|
2142
|
+
|
|
2143
|
+
images: []
|
|
2144
|
+
achievements:
|
|
2145
|
+
- Rebuilt the main navigation for smaller screens.
|
|
2146
|
+
- Developed responsive UI components and front-end performance improvements.
|
|
2147
|
+
story:
|
|
2148
|
+
- "Freelance frontend work on Staples' ecommerce storefront: responsive navigation, UI components, and load-time improvements."
|
|
2149
|
+
order: 33
|
|
2150
|
+
year: 2011
|
|
2151
|
+
---
|
|
2152
|
+
|
|
2153
|
+
# Staples
|
|
2154
|
+
|
|
2155
|
+
Responsive navigation and commerce interfaces for Staples' office-supply ecommerce storefront.
|
|
2156
|
+
`,
|
|
2157
|
+
markdownPath: "content/projects/staples.md"
|
|
2158
|
+
},
|
|
2159
|
+
{
|
|
2160
|
+
title: "Substrate Contracts UI",
|
|
2161
|
+
slug: "substrate-contracts-ui",
|
|
2162
|
+
description: "An open-source React interface for deploying and interacting with WASM smart contracts on Substrate.",
|
|
2163
|
+
tech: [
|
|
2164
|
+
"Polkadot",
|
|
2165
|
+
"Substrate",
|
|
2166
|
+
"ReactJS",
|
|
2167
|
+
"Tailwind",
|
|
2168
|
+
"TypeScript"
|
|
2169
|
+
],
|
|
2170
|
+
type: [
|
|
2171
|
+
"web3",
|
|
2172
|
+
"oss",
|
|
2173
|
+
"frontend"
|
|
2174
|
+
],
|
|
2175
|
+
link: "https://contracts-ui.substrate.io/",
|
|
2176
|
+
image: "https://gaboesquivel.com/images/work/contracts-ui.png",
|
|
2177
|
+
repo: "https://github.com/paritytech/contracts-ui",
|
|
2178
|
+
images: [],
|
|
2179
|
+
achievements: [
|
|
2180
|
+
"Contributed open-source code-quality and performance improvements.",
|
|
2181
|
+
"Built UI components for deploying and calling WASM contracts from the browser."
|
|
2182
|
+
],
|
|
2183
|
+
story: [
|
|
2184
|
+
"Substrate Contracts UI is the Parity-hosted web app for deploying and calling WASM smart contracts on chains that use the FRAME contracts pallet. I contributed in 2023 while the project still lived under paritytech, before it moved to use-ink/contracts-ui.",
|
|
2185
|
+
"My merged work included dependency and lint fixes, duplicate-key and web-manifest fixes, and layout refactors across the contract interaction screens. Six more pull requests closed without merge. It was open-source tooling, not a product of my own."
|
|
2186
|
+
],
|
|
2187
|
+
order: 14,
|
|
2188
|
+
year: 2021,
|
|
2189
|
+
markdown: '---\ntitle: "Substrate Contracts UI"\nslug: "substrate-contracts-ui"\ndescription: "An open-source React interface for deploying and interacting with WASM smart contracts on Substrate."\ntech:\n - Polkadot\n - Substrate\n - ReactJS\n - Tailwind\n - TypeScript\ntype:\n - web3\n - oss\n - frontend\nlink: "https://contracts-ui.substrate.io/"\nimage: "https://gaboesquivel.com/images/work/contracts-ui.png"\nrepo: "https://github.com/paritytech/contracts-ui"\n\nimages: []\nachievements:\n - Contributed open-source code-quality and performance improvements.\n - Built UI components for deploying and calling WASM contracts from the browser.\nstory:\n - Substrate Contracts UI is the Parity-hosted web app for deploying and calling WASM smart contracts on chains that use the FRAME contracts pallet. I contributed in 2023 while the project still lived under paritytech, before it moved to use-ink/contracts-ui.\n - My merged work included dependency and lint fixes, duplicate-key and web-manifest fixes, and layout refactors across the contract interaction screens. Six more pull requests closed without merge. It was open-source tooling, not a product of my own.\norder: 14\nyear: 2021\n---\n\n# Substrate Contracts UI\n\nAn open-source React interface for deploying and interacting with WASM smart contracts on Substrate.\n',
|
|
2190
|
+
markdownPath: "content/projects/substrate-contracts-ui.md"
|
|
2191
|
+
},
|
|
2192
|
+
{
|
|
2193
|
+
title: "SunTrust",
|
|
2194
|
+
slug: "suntrust",
|
|
2195
|
+
description: "A SunTrust campaign site where people created and shared personalized video salutes.",
|
|
2196
|
+
tech: [
|
|
2197
|
+
"JavaScript",
|
|
2198
|
+
"CSS"
|
|
2199
|
+
],
|
|
2200
|
+
type: [
|
|
2201
|
+
"other",
|
|
2202
|
+
"frontend"
|
|
2203
|
+
],
|
|
2204
|
+
image: "https://gaboesquivel.com/images/work/suntrust-1.jpg",
|
|
2205
|
+
images: [],
|
|
2206
|
+
achievements: [
|
|
2207
|
+
"Built the Solid Salutes campaign site for creating and sharing user-generated video salutes."
|
|
2208
|
+
],
|
|
2209
|
+
story: [
|
|
2210
|
+
"I built SunTrust's Solid Salutes campaign site, including the flow for creating and sharing personalized video salutes."
|
|
2211
|
+
],
|
|
2212
|
+
order: 31,
|
|
2213
|
+
year: 2011,
|
|
2214
|
+
markdown: `---
|
|
2215
|
+
title: "SunTrust"
|
|
2216
|
+
slug: "suntrust"
|
|
2217
|
+
description: "A SunTrust campaign site where people created and shared personalized video salutes."
|
|
2218
|
+
tech:
|
|
2219
|
+
- JavaScript
|
|
2220
|
+
- CSS
|
|
2221
|
+
type:
|
|
2222
|
+
- other
|
|
2223
|
+
- frontend
|
|
2224
|
+
image: "https://gaboesquivel.com/images/work/suntrust-1.jpg"
|
|
2225
|
+
|
|
2226
|
+
|
|
2227
|
+
images: []
|
|
2228
|
+
achievements:
|
|
2229
|
+
- Built the Solid Salutes campaign site for creating and sharing user-generated video salutes.
|
|
2230
|
+
story:
|
|
2231
|
+
- I built SunTrust's Solid Salutes campaign site, including the flow for creating and sharing personalized video salutes.
|
|
2232
|
+
order: 31
|
|
2233
|
+
year: 2011
|
|
2234
|
+
---
|
|
2235
|
+
|
|
2236
|
+
# SunTrust
|
|
2237
|
+
|
|
2238
|
+
A SunTrust campaign site where people created and shared personalized video salutes.
|
|
2239
|
+
`,
|
|
2240
|
+
markdownPath: "content/projects/suntrust.md"
|
|
2241
|
+
},
|
|
2242
|
+
{
|
|
2243
|
+
title: "Tikr",
|
|
2244
|
+
slug: "tikr",
|
|
2245
|
+
description: "An online store built on Spree with realtime price changes, a custom Rails backend, and a responsive storefront.",
|
|
2246
|
+
tech: [
|
|
2247
|
+
"Ruby on Rails",
|
|
2248
|
+
"Spree",
|
|
2249
|
+
"Heroku",
|
|
2250
|
+
"PostgreSQL",
|
|
2251
|
+
"jQuery",
|
|
2252
|
+
"SASS"
|
|
2253
|
+
],
|
|
2254
|
+
type: [
|
|
2255
|
+
"contract",
|
|
2256
|
+
"frontend"
|
|
2257
|
+
],
|
|
2258
|
+
link: "http://tikr.com",
|
|
2259
|
+
image: "https://gaboesquivel.com/images/work/tikr.jpg",
|
|
2260
|
+
images: [],
|
|
2261
|
+
achievements: [
|
|
2262
|
+
"Built a dynamic pricing engine on Spree and Ruby on Rails.",
|
|
2263
|
+
"Implemented realtime price changes across the storefront.",
|
|
2264
|
+
"Tuned backend performance on Heroku with PostgreSQL."
|
|
2265
|
+
],
|
|
2266
|
+
story: [
|
|
2267
|
+
'TiKR was a Draper, Utah e-commerce startup from former eBay engineers where listed prices moved with supply and demand every few seconds, with a price-history graph beside each product and the tagline "buy low, save high." The company filed a dynamic-pricing patent in 2012 while the storefront headed toward a public beta.',
|
|
2268
|
+
"I worked across a Ruby on Rails and Spree stack on Heroku with PostgreSQL, mostly on the storefront and on customizing the backend that drove those realtime price updates and social-share incentives on listings."
|
|
2269
|
+
],
|
|
2270
|
+
order: 23,
|
|
2271
|
+
year: 2013,
|
|
2272
|
+
markdown: '---\ntitle: "Tikr"\nslug: "tikr"\ndescription: "An online store built on Spree with realtime price changes, a custom Rails backend, and a responsive storefront."\ntech:\n - Ruby on Rails\n - Spree\n - Heroku\n - PostgreSQL\n - jQuery\n - SASS\ntype:\n - contract\n - frontend\nlink: "http://tikr.com"\nimage: "https://gaboesquivel.com/images/work/tikr.jpg"\n\n\nimages: []\nachievements:\n - Built a dynamic pricing engine on Spree and Ruby on Rails.\n - Implemented realtime price changes across the storefront.\n - Tuned backend performance on Heroku with PostgreSQL.\nstory:\n - TiKR was a Draper, Utah e-commerce startup from former eBay engineers where listed prices moved with supply and demand every few seconds, with a price-history graph beside each product and the tagline "buy low, save high." The company filed a dynamic-pricing patent in 2012 while the storefront headed toward a public beta.\n - I worked across a Ruby on Rails and Spree stack on Heroku with PostgreSQL, mostly on the storefront and on customizing the backend that drove those realtime price updates and social-share incentives on listings.\norder: 23\nyear: 2013\n---\n\n# Tikr\n\nAn online store built on Spree with realtime price changes, a custom Rails backend, and a responsive storefront.\n',
|
|
2273
|
+
markdownPath: "content/projects/tikr.md"
|
|
2274
|
+
},
|
|
2275
|
+
{
|
|
2276
|
+
title: "Tractor Supply",
|
|
2277
|
+
slug: "tractor-supply",
|
|
2278
|
+
description: "A React Native retail app with product browsing, account tools, and augmented-reality previews powered by ViroAR.",
|
|
2279
|
+
tech: [
|
|
2280
|
+
"React Native",
|
|
2281
|
+
"ReactJS",
|
|
2282
|
+
"NodeJS",
|
|
2283
|
+
"TypeScript",
|
|
2284
|
+
"ViroAR",
|
|
2285
|
+
"CSS",
|
|
2286
|
+
"Redux"
|
|
2287
|
+
],
|
|
2288
|
+
type: [
|
|
2289
|
+
"contract",
|
|
2290
|
+
"mobile",
|
|
2291
|
+
"institution"
|
|
2292
|
+
],
|
|
2293
|
+
link: "https://www.tractorsupply.com/tsc/cms/app",
|
|
2294
|
+
image: "https://gaboesquivel.com/images/work/tractor-supply.png",
|
|
2295
|
+
images: [],
|
|
2296
|
+
achievements: [
|
|
2297
|
+
"Improved performance and code quality in the existing React Native app.",
|
|
2298
|
+
"Built the augmented-reality feature for previewing products.",
|
|
2299
|
+
"Introduced TypeScript to the codebase for maintainability."
|
|
2300
|
+
],
|
|
2301
|
+
story: [
|
|
2302
|
+
"The Tractor Supply mobile app covers product browsing, exclusive offers, account management, and augmented-reality product previews. As a consultant on their existing React Native app, I improved performance and code quality and built the augmented-reality feature.",
|
|
2303
|
+
"I also introduced TypeScript to the codebase to make the app more maintainable."
|
|
2304
|
+
],
|
|
2305
|
+
order: 28,
|
|
2306
|
+
year: 2020,
|
|
2307
|
+
markdown: '---\ntitle: "Tractor Supply"\nslug: "tractor-supply"\ndescription: "A React Native retail app with product browsing, account tools, and augmented-reality previews powered by ViroAR."\ntech:\n - React Native\n - ReactJS\n - NodeJS\n - TypeScript\n - ViroAR\n - CSS\n - Redux\ntype:\n - contract\n - mobile\n - institution\nlink: "https://www.tractorsupply.com/tsc/cms/app"\nimage: "https://gaboesquivel.com/images/work/tractor-supply.png"\n\n\nimages: []\nachievements:\n - Improved performance and code quality in the existing React Native app.\n - Built the augmented-reality feature for previewing products.\n - Introduced TypeScript to the codebase for maintainability.\nstory:\n - The Tractor Supply mobile app covers product browsing, exclusive offers, account management, and augmented-reality product previews. As a consultant on their existing React Native app, I improved performance and code quality and built the augmented-reality feature.\n - I also introduced TypeScript to the codebase to make the app more maintainable.\norder: 28\nyear: 2020\n---\n\n# Tractor Supply\n\nA React Native retail app with product browsing, account tools, and augmented-reality previews powered by ViroAR.\n',
|
|
2308
|
+
markdownPath: "content/projects/tractor-supply.md"
|
|
2309
|
+
},
|
|
2310
|
+
{
|
|
2311
|
+
title: "Trivenzor",
|
|
2312
|
+
slug: "trivenzor",
|
|
2313
|
+
description: "A responsive medical information site for Trivenzor, written for patients and for clinicians.",
|
|
2314
|
+
tech: [
|
|
2315
|
+
"JavaScript",
|
|
2316
|
+
"CSS",
|
|
2317
|
+
"Mootools"
|
|
2318
|
+
],
|
|
2319
|
+
type: [
|
|
2320
|
+
"other",
|
|
2321
|
+
"frontend"
|
|
2322
|
+
],
|
|
2323
|
+
image: "https://gaboesquivel.com/images/work/tribenzor.jpg",
|
|
2324
|
+
images: [],
|
|
2325
|
+
achievements: [
|
|
2326
|
+
"Developed a fully responsive and accessible medical landing page."
|
|
2327
|
+
],
|
|
2328
|
+
story: [
|
|
2329
|
+
"Responsive medical information landing page for Trivenzor (hypertension medication), built with MooTools for patients and clinicians."
|
|
2330
|
+
],
|
|
2331
|
+
order: 43,
|
|
2332
|
+
year: 2011,
|
|
2333
|
+
markdown: '---\ntitle: "Trivenzor"\nslug: "trivenzor"\ndescription: "A responsive medical information site for Trivenzor, written for patients and for clinicians."\ntech:\n - JavaScript\n - CSS\n - Mootools\ntype:\n - other\n - frontend\nimage: "https://gaboesquivel.com/images/work/tribenzor.jpg"\n\n\nimages: []\nachievements:\n - Developed a fully responsive and accessible medical landing page.\nstory:\n - Responsive medical information landing page for Trivenzor (hypertension medication), built with MooTools for patients and clinicians.\norder: 43\nyear: 2011\n---\n\n# Trivenzor\n\nA responsive medical information site for Trivenzor, written for patients and for clinicians.\n',
|
|
2334
|
+
markdownPath: "content/projects/trivenzor.md"
|
|
2335
|
+
},
|
|
2336
|
+
{
|
|
2337
|
+
title: "Wink",
|
|
2338
|
+
slug: "wink",
|
|
2339
|
+
description: "Costa Rica's first neobank, delivered through a React Native mobile app, AWS backend, partner-bank APIs, and biometrics.",
|
|
2340
|
+
role: "Lead Engineer",
|
|
2341
|
+
tech: [
|
|
2342
|
+
"TypeScript",
|
|
2343
|
+
"AWS",
|
|
2344
|
+
"Serverless",
|
|
2345
|
+
"React Native",
|
|
2346
|
+
"ReactJS",
|
|
2347
|
+
"NodeJS",
|
|
2348
|
+
"Biometrics",
|
|
2349
|
+
"Docker"
|
|
2350
|
+
],
|
|
2351
|
+
type: [
|
|
2352
|
+
"full-time",
|
|
2353
|
+
"lead",
|
|
2354
|
+
"featured",
|
|
2355
|
+
"mobile",
|
|
2356
|
+
"backend",
|
|
2357
|
+
"fullstack",
|
|
2358
|
+
"frontend",
|
|
2359
|
+
"startup",
|
|
2360
|
+
"institution"
|
|
2361
|
+
],
|
|
2362
|
+
link: "https://holawink.com",
|
|
2363
|
+
image: "https://gaboesquivel.com/images/work/wink.png",
|
|
2364
|
+
video: "https://www.youtube.com/watch?v=rfeISMW_OVc",
|
|
2365
|
+
images: [],
|
|
2366
|
+
achievements: [
|
|
2367
|
+
"Developed the first version of Wink's mobile banking app.",
|
|
2368
|
+
"Integrated partner-bank APIs so deposits, transfers, and account data could move through the app.",
|
|
2369
|
+
"Built biometric KYC with a React Native native bridge."
|
|
2370
|
+
],
|
|
2371
|
+
story: [
|
|
2372
|
+
"Wink is Costa Rica's first neobank: a mobile app for banking without a branch visit. I built the first version of the app and the AWS backend it depended on.",
|
|
2373
|
+
"I chose the stack, planned the work, and coordinated partner-bank API integration. I also implemented biometric authentication so KYC and login did not need a branch visit.",
|
|
2374
|
+
"Launch required forming a development team that did not exist yet."
|
|
2375
|
+
],
|
|
2376
|
+
experienceCompany: "Wink",
|
|
2377
|
+
order: 18,
|
|
2378
|
+
year: 2015,
|
|
2379
|
+
markdown: `---
|
|
2380
|
+
title: "Wink"
|
|
2381
|
+
slug: "wink"
|
|
2382
|
+
description: "Costa Rica's first neobank, delivered through a React Native mobile app, AWS backend, partner-bank APIs, and biometrics."
|
|
2383
|
+
role: "Lead Engineer"
|
|
2384
|
+
tech:
|
|
2385
|
+
- TypeScript
|
|
2386
|
+
- AWS
|
|
2387
|
+
- Serverless
|
|
2388
|
+
- React Native
|
|
2389
|
+
- ReactJS
|
|
2390
|
+
- NodeJS
|
|
2391
|
+
- Biometrics
|
|
2392
|
+
- Docker
|
|
2393
|
+
type:
|
|
2394
|
+
- full-time
|
|
2395
|
+
- lead
|
|
2396
|
+
- featured
|
|
2397
|
+
- mobile
|
|
2398
|
+
- backend
|
|
2399
|
+
- fullstack
|
|
2400
|
+
- frontend
|
|
2401
|
+
- startup
|
|
2402
|
+
- institution
|
|
2403
|
+
link: "https://holawink.com"
|
|
2404
|
+
image: "https://gaboesquivel.com/images/work/wink.png"
|
|
2405
|
+
|
|
2406
|
+
video: "https://www.youtube.com/watch?v=rfeISMW_OVc"
|
|
2407
|
+
images: []
|
|
2408
|
+
achievements:
|
|
2409
|
+
- Developed the first version of Wink's mobile banking app.
|
|
2410
|
+
- Integrated partner-bank APIs so deposits, transfers, and account data could move through the app.
|
|
2411
|
+
- Built biometric KYC with a React Native native bridge.
|
|
2412
|
+
story:
|
|
2413
|
+
- "Wink is Costa Rica's first neobank: a mobile app for banking without a branch visit. I built the first version of the app and the AWS backend it depended on."
|
|
2414
|
+
- I chose the stack, planned the work, and coordinated partner-bank API integration. I also implemented biometric authentication so KYC and login did not need a branch visit.
|
|
2415
|
+
- Launch required forming a development team that did not exist yet.
|
|
2416
|
+
experienceCompany: "Wink"
|
|
2417
|
+
order: 18
|
|
2418
|
+
year: 2015
|
|
2419
|
+
---
|
|
2420
|
+
|
|
2421
|
+
# Wink
|
|
2422
|
+
|
|
2423
|
+
Costa Rica's first neobank, delivered through a React Native mobile app, AWS backend, partner-bank APIs, and biometrics.
|
|
2424
|
+
`,
|
|
2425
|
+
markdownPath: "content/projects/wink.md"
|
|
2426
|
+
},
|
|
2427
|
+
{
|
|
2428
|
+
title: "Wizard World",
|
|
2429
|
+
slug: "wizard-world",
|
|
2430
|
+
description: "A Flow Hackathon PWA for generating images with OpenAI and minting them as NFTs through Niftory.",
|
|
2431
|
+
tech: [
|
|
2432
|
+
"NextJS",
|
|
2433
|
+
"ReactJS",
|
|
2434
|
+
"Flow",
|
|
2435
|
+
"Niftory",
|
|
2436
|
+
"OpenAI",
|
|
2437
|
+
"Tailwind",
|
|
2438
|
+
"NFT",
|
|
2439
|
+
"TypeScript"
|
|
2440
|
+
],
|
|
2441
|
+
type: [
|
|
2442
|
+
"ai",
|
|
2443
|
+
"web3",
|
|
2444
|
+
"hackathon",
|
|
2445
|
+
"frontend"
|
|
2446
|
+
],
|
|
2447
|
+
link: "https://wizart.world",
|
|
2448
|
+
image: "https://gaboesquivel.com/images/work/wizart-world.png",
|
|
2449
|
+
repo: "https://github.com/bitcashorg/wizartworld",
|
|
2450
|
+
video: "https://www.youtube.com/watch?v=I_vBUflXHFA",
|
|
2451
|
+
images: [],
|
|
2452
|
+
achievements: [
|
|
2453
|
+
"Developed a progressive web app integrating AI-generated images with blockchain minting.",
|
|
2454
|
+
"Implemented OpenAI's LLM models for AI-driven image creation and metadata processing.",
|
|
2455
|
+
"Minted generated images as NFTs on Flow through Niftory."
|
|
2456
|
+
],
|
|
2457
|
+
story: [
|
|
2458
|
+
"Wizard World is a progressive web app that connects to OpenAI's models to generate AI images and mint them on Flow. We built it for the February 2023 Flow Hackathon with collaborators at bitcashorg, on the flow-marketplace-next base with next-pwa and Niftory.",
|
|
2459
|
+
"I worked on the app itself, integrating OpenAI's models for image generation and the Flow minting flow, so a user could generate an image and mint it as an NFT."
|
|
2460
|
+
],
|
|
2461
|
+
order: 15,
|
|
2462
|
+
year: 2022,
|
|
2463
|
+
markdown: `---
|
|
2464
|
+
title: "Wizard World"
|
|
2465
|
+
slug: "wizard-world"
|
|
2466
|
+
description: "A Flow Hackathon PWA for generating images with OpenAI and minting them as NFTs through Niftory."
|
|
2467
|
+
tech:
|
|
2468
|
+
- NextJS
|
|
2469
|
+
- ReactJS
|
|
2470
|
+
- Flow
|
|
2471
|
+
- Niftory
|
|
2472
|
+
- OpenAI
|
|
2473
|
+
- Tailwind
|
|
2474
|
+
- NFT
|
|
2475
|
+
- TypeScript
|
|
2476
|
+
type:
|
|
2477
|
+
- ai
|
|
2478
|
+
- web3
|
|
2479
|
+
- hackathon
|
|
2480
|
+
- frontend
|
|
2481
|
+
link: "https://wizart.world"
|
|
2482
|
+
image: "https://gaboesquivel.com/images/work/wizart-world.png"
|
|
2483
|
+
repo: "https://github.com/bitcashorg/wizartworld"
|
|
2484
|
+
video: "https://www.youtube.com/watch?v=I_vBUflXHFA"
|
|
2485
|
+
images: []
|
|
2486
|
+
achievements:
|
|
2487
|
+
- Developed a progressive web app integrating AI-generated images with blockchain minting.
|
|
2488
|
+
- Implemented OpenAI's LLM models for AI-driven image creation and metadata processing.
|
|
2489
|
+
- Minted generated images as NFTs on Flow through Niftory.
|
|
2490
|
+
story:
|
|
2491
|
+
- Wizard World is a progressive web app that connects to OpenAI's models to generate AI images and mint them on Flow. We built it for the February 2023 Flow Hackathon with collaborators at bitcashorg, on the flow-marketplace-next base with next-pwa and Niftory.
|
|
2492
|
+
- I worked on the app itself, integrating OpenAI's models for image generation and the Flow minting flow, so a user could generate an image and mint it as an NFT.
|
|
2493
|
+
order: 15
|
|
2494
|
+
year: 2022
|
|
2495
|
+
---
|
|
2496
|
+
|
|
2497
|
+
# Wizard World
|
|
2498
|
+
|
|
2499
|
+
A Flow Hackathon PWA for generating images with OpenAI and minting them as NFTs through Niftory.
|
|
2500
|
+
`,
|
|
2501
|
+
markdownPath: "content/projects/wizard-world.md"
|
|
2502
|
+
},
|
|
2503
|
+
{
|
|
2504
|
+
title: "ZTX",
|
|
2505
|
+
slug: "ztx",
|
|
2506
|
+
description: "A Web3 virtual world with cryptocurrency-backed digital assets, a WebGL wallet connection, and a Next.js experience.",
|
|
2507
|
+
role: "Software Engineer",
|
|
2508
|
+
tech: [
|
|
2509
|
+
"WebGL",
|
|
2510
|
+
"Ethereum",
|
|
2511
|
+
"Ethers",
|
|
2512
|
+
"NFT",
|
|
2513
|
+
"NodeJS",
|
|
2514
|
+
"ReactJS",
|
|
2515
|
+
"NextJS",
|
|
2516
|
+
"AWS",
|
|
2517
|
+
"Serverless",
|
|
2518
|
+
"Tailwind",
|
|
2519
|
+
"TypeScript"
|
|
2520
|
+
],
|
|
2521
|
+
type: [
|
|
2522
|
+
"web3",
|
|
2523
|
+
"full-time",
|
|
2524
|
+
"featured",
|
|
2525
|
+
"frontend",
|
|
2526
|
+
"fullstack",
|
|
2527
|
+
"startup"
|
|
2528
|
+
],
|
|
2529
|
+
link: "https://ztx.io",
|
|
2530
|
+
image: "https://gaboesquivel.com/images/work/ztx.png",
|
|
2531
|
+
video: "https://www.youtube.com/watch?v=h58y6UzZ7RA",
|
|
2532
|
+
images: [],
|
|
2533
|
+
achievements: [
|
|
2534
|
+
"Set up the initial React architecture using Next.js, TailwindCSS, and Framer Motion.",
|
|
2535
|
+
"Developed a WebGL EVM wallet connector using MetaMask, Ethers.js, and a custom JavaScript event system.",
|
|
2536
|
+
"Wired analytics through Google Tag Manager."
|
|
2537
|
+
],
|
|
2538
|
+
story: [
|
|
2539
|
+
"ZTX is a Web3 virtual world with cryptocurrency-backed digital asset ownership. I built the React application that hosted the virtual-world experience.",
|
|
2540
|
+
"Signing and NFT trading had to happen without leaving the WebGL world, so the wallet session lived inside that surface rather than in a separate app chrome.",
|
|
2541
|
+
"The product is a consumer world with a live wallet session inside WebGL. I connected the Next.js experience to signing and NFT trading so the chain receded behind the screen."
|
|
2542
|
+
],
|
|
2543
|
+
experienceCompany: "ZTX",
|
|
2544
|
+
order: 5,
|
|
2545
|
+
year: 2022,
|
|
2546
|
+
markdown: '---\ntitle: "ZTX"\nslug: "ztx"\ndescription: "A Web3 virtual world with cryptocurrency-backed digital assets, a WebGL wallet connection, and a Next.js experience."\nrole: "Software Engineer"\ntech:\n - WebGL\n - Ethereum\n - Ethers\n - NFT\n - NodeJS\n - ReactJS\n - NextJS\n - AWS\n - Serverless\n - Tailwind\n - TypeScript\ntype:\n - web3\n - full-time\n - featured\n - frontend\n - fullstack\n - startup\nlink: "https://ztx.io"\nimage: "https://gaboesquivel.com/images/work/ztx.png"\n\nvideo: "https://www.youtube.com/watch?v=h58y6UzZ7RA"\nimages: []\nachievements:\n - Set up the initial React architecture using Next.js, TailwindCSS, and Framer Motion.\n - Developed a WebGL EVM wallet connector using MetaMask, Ethers.js, and a custom JavaScript event system.\n - Wired analytics through Google Tag Manager.\nstory:\n - ZTX is a Web3 virtual world with cryptocurrency-backed digital asset ownership. I built the React application that hosted the virtual-world experience.\n - Signing and NFT trading had to happen without leaving the WebGL world, so the wallet session lived inside that surface rather than in a separate app chrome.\n - The product is a consumer world with a live wallet session inside WebGL. I connected the Next.js experience to signing and NFT trading so the chain receded behind the screen.\nexperienceCompany: "ZTX"\norder: 5\nyear: 2022\n---\n\n# ZTX\n\nA Web3 virtual world with cryptocurrency-backed digital assets, a WebGL wallet connection, and a Next.js experience.\n',
|
|
2547
|
+
markdownPath: "content/projects/ztx.md"
|
|
2548
|
+
}
|
|
2549
|
+
];
|
|
2550
|
+
|
|
2551
|
+
// src/generated/tech.ts
|
|
2552
|
+
var techStack = [
|
|
2553
|
+
{
|
|
2554
|
+
name: "AI SDK",
|
|
2555
|
+
slug: "ai-sdk",
|
|
2556
|
+
tag: "AI SDK",
|
|
2557
|
+
image: "/images/tech/ai-sdk.png",
|
|
2558
|
+
description: "Vercel's TypeScript toolkit for streaming LLM responses, tool calling, and structured outputs in React and Node.js apps.",
|
|
2559
|
+
link: "https://ai-sdk.dev/",
|
|
2560
|
+
since: "2023",
|
|
2561
|
+
experience: [
|
|
2562
|
+
"Wired LegalAgent's chat UI to the Vercel AI SDK with streaming responses and tool calls for legal workflows.",
|
|
2563
|
+
"Built Bitlauncher's site chatbot with AI SDK tools for news, video, and structured product answers.",
|
|
2564
|
+
"Automated Masterbots and Bitlauncher locale copy generation with AI SDK prompt templates."
|
|
2565
|
+
]
|
|
2566
|
+
},
|
|
2567
|
+
{
|
|
2568
|
+
name: "Alchemy",
|
|
2569
|
+
slug: "alchemy",
|
|
2570
|
+
tag: "Alchemy",
|
|
2571
|
+
image: "/images/tech/alchemy.png",
|
|
2572
|
+
description: "Managed Ethereum RPC, webhooks, and developer APIs for reliable chain reads, writes, and indexing workloads.",
|
|
2573
|
+
link: "https://www.alchemy.com/",
|
|
2574
|
+
since: "2020",
|
|
2575
|
+
experience: [
|
|
2576
|
+
"Routed Opyn's Arbitrum Testnet reads and writes through Alchemy RPC endpoints behind Viem clients.",
|
|
2577
|
+
"Used Alchemy as the node provider layer for Bitlauncher EVM indexing and wallet interactions."
|
|
2578
|
+
]
|
|
2579
|
+
},
|
|
2580
|
+
{
|
|
2581
|
+
name: "AngularJS",
|
|
2582
|
+
slug: "angularjs",
|
|
2583
|
+
tag: "AngularJS",
|
|
2584
|
+
image: "/images/tech/angularjs.png",
|
|
2585
|
+
description: "SPA framework for subscription apps, flight-information dashboards, and fitness trackers in early full-stack products.",
|
|
2586
|
+
link: "https://angularjs.org/",
|
|
2587
|
+
since: "2018",
|
|
2588
|
+
experience: [
|
|
2589
|
+
"Built Eat Arcade's full-stack subscription app with AngularJS, Node.js, and MongoDB on Heroku.",
|
|
2590
|
+
"Connected ARINC Microfids' AngularJS frontend to a Ruby on Rails backend for live flight boards.",
|
|
2591
|
+
"Developed the 4Tius Fitness Data Tracker dashboard with AngularJS and secure API endpoints."
|
|
2592
|
+
]
|
|
2593
|
+
},
|
|
2594
|
+
{
|
|
2595
|
+
name: "Antelope",
|
|
2596
|
+
slug: "antelope",
|
|
2597
|
+
tag: "Antelope",
|
|
2598
|
+
image: "/images/tech/antelope.png",
|
|
2599
|
+
description: "High-throughput chain protocol behind exchange backends, GraphQL indexers, multichain auctions, and music marketplaces.",
|
|
2600
|
+
link: "https://antelope.io/",
|
|
2601
|
+
since: "2018",
|
|
2602
|
+
experience: [
|
|
2603
|
+
"Built Bitcash's peer-to-peer exchange, chat, and EOS indexer on Antelope infrastructure with Node.js services.",
|
|
2604
|
+
"Indexed Antelope chain data for ChainGraph's open-source GraphQL toolkit.",
|
|
2605
|
+
"Shipped Bitlauncher's multichain auction product with Antelope and EOS EVM contract deployments.",
|
|
2606
|
+
"Delivered Emanate's music marketplace against Antelope accounts and contract APIs."
|
|
2607
|
+
]
|
|
2608
|
+
},
|
|
2609
|
+
{
|
|
2610
|
+
name: "Artificial Intelligence",
|
|
2611
|
+
slug: "artificial-intelligence",
|
|
2612
|
+
tag: "Artificial Intelligence",
|
|
2613
|
+
image: "/images/tech/artificial-intelligence.png",
|
|
2614
|
+
description: "Production AI assistants with retrieval, chat, voice, and automated localization across legal and domain-specific products.",
|
|
2615
|
+
link: "https://ai-sdk.dev/",
|
|
2616
|
+
since: "2023",
|
|
2617
|
+
experience: [
|
|
2618
|
+
"Shipped LegalAgent as a multimodal legal assistant combining retrieval, chat, and voice models for lawyers.",
|
|
2619
|
+
"Built Bitlauncher's domain chatbot and template-driven internationalization with model-backed content generation.",
|
|
2620
|
+
"Structured Masterbots around specialized AI assistants with automated localization across product surfaces."
|
|
2621
|
+
],
|
|
2622
|
+
featuredOrder: 2
|
|
2623
|
+
},
|
|
2624
|
+
{
|
|
2625
|
+
name: "AWS",
|
|
2626
|
+
slug: "aws",
|
|
2627
|
+
tag: "AWS",
|
|
2628
|
+
image: "/images/tech/aws.png",
|
|
2629
|
+
description: "Cloud infrastructure for neobank backends, virtual-world services, token marketplaces, and image processing workloads.",
|
|
2630
|
+
link: "https://aws.amazon.com/",
|
|
2631
|
+
since: "2015",
|
|
2632
|
+
experience: [
|
|
2633
|
+
"Built Wink's serverless AWS backend for partner-bank API integration and the neobank mobile app.",
|
|
2634
|
+
"Deployed ZTX's Next.js virtual-world and wallet services on AWS during early product development.",
|
|
2635
|
+
"Led Knowledge.io's serverless AWS infrastructure for the token, marketplace, and wallet services.",
|
|
2636
|
+
"Ran Photo and Go image storage and processing workloads on AWS for the commerce editor."
|
|
2637
|
+
]
|
|
2638
|
+
},
|
|
2639
|
+
{
|
|
2640
|
+
name: "Biometrics",
|
|
2641
|
+
slug: "biometrics",
|
|
2642
|
+
tag: "Biometrics",
|
|
2643
|
+
image: "/images/tech/biometrics.png",
|
|
2644
|
+
description: "Device-bound identity verification for Wink neobank login and Bitcash exchange authentication.",
|
|
2645
|
+
link: "https://fidoalliance.org/fido2/",
|
|
2646
|
+
since: "2020",
|
|
2647
|
+
experience: [
|
|
2648
|
+
"Implemented biometric authentication on Wink so KYC and login worked without a branch visit.",
|
|
2649
|
+
"Integrated biometric verification into Bitcash's exchange alongside WebAuthn transaction signing."
|
|
2650
|
+
]
|
|
2651
|
+
},
|
|
2652
|
+
{
|
|
2653
|
+
name: "Blockchain",
|
|
2654
|
+
slug: "blockchain",
|
|
2655
|
+
tag: "Blockchain",
|
|
2656
|
+
image: "/images/tech/blockchain.png",
|
|
2657
|
+
description: "On-chain products and indexer systems across EVM chains and Antelope, from token launches to exchange backends and open-source tooling.",
|
|
2658
|
+
link: "https://ethereum.org/en/developers/docs/",
|
|
2659
|
+
since: "2017",
|
|
2660
|
+
experience: [
|
|
2661
|
+
"Shipped DeFi, NFT, and token products on Ethereum and EVM chains for Knowledge.io, RareMint, Opyn, and Bitlauncher.",
|
|
2662
|
+
"Built Antelope-based exchange and indexer systems for Bitcash and ChainGraph with on-chain accounts, contracts, and live chain data.",
|
|
2663
|
+
"Contributed open-source blockchain tooling including ChainGraph and Substrate Contracts UI."
|
|
2664
|
+
],
|
|
2665
|
+
featuredOrder: 1
|
|
2666
|
+
},
|
|
2667
|
+
{
|
|
2668
|
+
name: "Bootstrap",
|
|
2669
|
+
slug: "bootstrap",
|
|
2670
|
+
tag: "Bootstrap",
|
|
2671
|
+
image: "/images/tech/bootstrap.png",
|
|
2672
|
+
description: "Responsive grid toolkit for energy dashboards, WordPress sites, and early subscription web apps.",
|
|
2673
|
+
link: "https://getbootstrap.com/",
|
|
2674
|
+
since: "2018",
|
|
2675
|
+
experience: [
|
|
2676
|
+
"Built Gridium's energy-analytics prototype with Bootstrap for the chart dashboard layout.",
|
|
2677
|
+
"Structured Capoeira Abolicao's WordPress promotional site with Bootstrap responsive grids.",
|
|
2678
|
+
"Laid out Eat Arcade's restaurant subscription web app with Bootstrap alongside AngularJS."
|
|
2679
|
+
]
|
|
2680
|
+
},
|
|
2681
|
+
{
|
|
2682
|
+
name: "Content Management Systems",
|
|
2683
|
+
slug: "cms",
|
|
2684
|
+
tag: "CMS",
|
|
2685
|
+
image: "/images/tech/cms.png",
|
|
2686
|
+
description: "Custom CMS for ITS InfoCom's corporate site, including CRM integration.",
|
|
2687
|
+
link: "https://wordpress.org/",
|
|
2688
|
+
since: "2009",
|
|
2689
|
+
experience: [
|
|
2690
|
+
"Built ITS InfoCom's corporate website and custom CMS with CRM integration at IntergraphiDesign."
|
|
2691
|
+
]
|
|
2692
|
+
},
|
|
2693
|
+
{
|
|
2694
|
+
name: "C++",
|
|
2695
|
+
slug: "cpp",
|
|
2696
|
+
tag: "C++",
|
|
2697
|
+
image: "/images/tech/cpp.png",
|
|
2698
|
+
description: "Performance-critical indexing and EOSIO node software for exchange backends, validators, and onchain rating contracts.",
|
|
2699
|
+
link: "https://isocpp.org/",
|
|
2700
|
+
since: "2018",
|
|
2701
|
+
experience: [
|
|
2702
|
+
"Wrote C++ indexing services at Bitcash for realtime EOS blockchain data deserialization.",
|
|
2703
|
+
"Built EOS Costa Rica validator and private-chain infrastructure with C++ EOSIO node software.",
|
|
2704
|
+
"Implemented onchain rating storage for EOS Rate with C++ smart contract logic on EOSIO."
|
|
2705
|
+
]
|
|
2706
|
+
},
|
|
2707
|
+
{
|
|
2708
|
+
name: "CSS",
|
|
2709
|
+
slug: "css",
|
|
2710
|
+
tag: "CSS",
|
|
2711
|
+
image: "/images/tech/css.png",
|
|
2712
|
+
description: "Layout and responsive styling for ecommerce navigation, energy dashboards, and early client marketing sites.",
|
|
2713
|
+
link: "https://developer.mozilla.org/en-US/docs/Web/CSS",
|
|
2714
|
+
since: "2009",
|
|
2715
|
+
experience: [
|
|
2716
|
+
"Rebuilt Staples' ecommerce navigation and responsive UI components for smaller screens.",
|
|
2717
|
+
"Styled Gridium's energy-analytics charts and dashboard for readable consumption data.",
|
|
2718
|
+
"Laid out Capoeira Abolicao's WordPress site with responsive CSS and Bootstrap grids."
|
|
2719
|
+
]
|
|
2720
|
+
},
|
|
2721
|
+
{
|
|
2722
|
+
name: "Data Charts",
|
|
2723
|
+
slug: "data-charts",
|
|
2724
|
+
tag: "Data Charts",
|
|
2725
|
+
image: "/images/tech/data-charts.png",
|
|
2726
|
+
description: "Interactive energy-consumption visualizations for Gridium's commercial-building monitoring dashboard.",
|
|
2727
|
+
link: "https://www.chartjs.org/",
|
|
2728
|
+
since: "2018",
|
|
2729
|
+
experience: [
|
|
2730
|
+
"Built Gridium's interactive energy-consumption charts for real-time commercial-building monitoring."
|
|
2731
|
+
]
|
|
2732
|
+
},
|
|
2733
|
+
{
|
|
2734
|
+
name: "DatoCMS",
|
|
2735
|
+
slug: "datocms",
|
|
2736
|
+
tag: "DatoCMS",
|
|
2737
|
+
image: "/images/tech/datocms.png",
|
|
2738
|
+
description: "Headless CMS option for structured editorial content in content-driven web applications.",
|
|
2739
|
+
link: "https://www.datocms.com/",
|
|
2740
|
+
since: "2020",
|
|
2741
|
+
experience: []
|
|
2742
|
+
},
|
|
2743
|
+
{
|
|
2744
|
+
name: "Docker",
|
|
2745
|
+
slug: "docker",
|
|
2746
|
+
tag: "Docker",
|
|
2747
|
+
image: "/images/tech/docker.png",
|
|
2748
|
+
description: "Container packaging for ChainGraph's indexer and Photo and Go's releases, and for matching dev and cloud environments in Masterbots and Bitlauncher.",
|
|
2749
|
+
link: "https://www.docker.com/",
|
|
2750
|
+
since: "2013",
|
|
2751
|
+
experience: [
|
|
2752
|
+
"Containerized ChainGraph's GraphQL indexer and supporting services for repeatable deployments.",
|
|
2753
|
+
"Packaged Photo and Go's application stack in Docker for staging and production releases.",
|
|
2754
|
+
"Used Docker in Masterbots and Bitlauncher pipelines to align dev and cloud environments."
|
|
2755
|
+
],
|
|
2756
|
+
featuredOrder: 12
|
|
2757
|
+
},
|
|
2758
|
+
{
|
|
2759
|
+
name: "Ethereum",
|
|
2760
|
+
slug: "ethereum",
|
|
2761
|
+
tag: "Ethereum",
|
|
2762
|
+
image: "/images/tech/ethereum.png",
|
|
2763
|
+
description: "EVM contracts and deployments behind token products, NFT marketplaces, options protocols, and cross-chain auction systems.",
|
|
2764
|
+
link: "https://ethereum.org/",
|
|
2765
|
+
since: "2017",
|
|
2766
|
+
experience: [
|
|
2767
|
+
"Deployed Knowledge.io token and marketplace contracts on Ethereum mainnet and test networks.",
|
|
2768
|
+
"Shipped RareMint's NFT marketplace and Opyn Markets on Arbitrum-compatible EVM chains.",
|
|
2769
|
+
"Ran Gnosis auction contracts on EOS EVM for Bitlauncher batch sales with uniform clearing prices."
|
|
2770
|
+
],
|
|
2771
|
+
featuredOrder: 3
|
|
2772
|
+
},
|
|
2773
|
+
{
|
|
2774
|
+
name: "Ethers.js",
|
|
2775
|
+
slug: "ethersjs",
|
|
2776
|
+
tag: "Ethers",
|
|
2777
|
+
image: "/images/tech/ethersjs.png",
|
|
2778
|
+
description: "Ethereum library behind ZTX's WebGL wallet connector, RareMint's Polygon marketplace, and Knowledge.io's ERC-20 ICO, before the move to Viem and Wagmi.",
|
|
2779
|
+
link: "https://docs.ethers.org/",
|
|
2780
|
+
since: "2017",
|
|
2781
|
+
experience: [
|
|
2782
|
+
"Connected MetaMask to ZTX's virtual world through Ethers.js and a custom JavaScript event system for NFT signing.",
|
|
2783
|
+
"Ran RareMint's Polygon marketplace minting and ownership flows through Ethers.js contract interfaces.",
|
|
2784
|
+
"Indexed RareMint NFT transfers with Moralis streams, Node.js, and Ethers.js event parsing.",
|
|
2785
|
+
"Led Knowledge.io's 2018 ERC-20 ICO contract interactions with Ethers.js providers and wallets."
|
|
2786
|
+
]
|
|
2787
|
+
},
|
|
2788
|
+
{
|
|
2789
|
+
name: "Expo",
|
|
2790
|
+
slug: "expo",
|
|
2791
|
+
tag: "Expo",
|
|
2792
|
+
image: "/images/tech/expo.png",
|
|
2793
|
+
description: "React Native toolchain for LegalAgent's voice assistant and realtime speech on mobile.",
|
|
2794
|
+
link: "https://expo.dev/",
|
|
2795
|
+
since: "2017",
|
|
2796
|
+
experience: [
|
|
2797
|
+
"Shipped LegalAgent's bilingual voice and chat assistant on Expo with OpenAI Realtime API integration."
|
|
2798
|
+
]
|
|
2799
|
+
},
|
|
2800
|
+
{
|
|
2801
|
+
name: "Faye",
|
|
2802
|
+
slug: "faye",
|
|
2803
|
+
tag: "Faye",
|
|
2804
|
+
image: "/images/tech/faye.png",
|
|
2805
|
+
description: "Pub-sub messaging for live flight updates on ARINC Microfids' AngularJS airport display boards.",
|
|
2806
|
+
link: "https://faye.jcoglan.com/",
|
|
2807
|
+
since: "2009",
|
|
2808
|
+
experience: [
|
|
2809
|
+
"Pushed live flight updates to ARINC Microfids' AngularJS boards with Faye pub-sub messaging."
|
|
2810
|
+
]
|
|
2811
|
+
},
|
|
2812
|
+
{
|
|
2813
|
+
name: "Foundry",
|
|
2814
|
+
slug: "foundry",
|
|
2815
|
+
tag: "Foundry",
|
|
2816
|
+
image: "/images/tech/foundry.png",
|
|
2817
|
+
description: "Solidity toolkit for testing and deploying Opyn Markets protocol contracts to Arbitrum testnet with forge tests and deployment scripts.",
|
|
2818
|
+
link: "https://getfoundry.sh/",
|
|
2819
|
+
since: "2024",
|
|
2820
|
+
experience: [
|
|
2821
|
+
"Tested and deployed Opyn Markets Solidity to Arbitrum testnet with Foundry scripts and forge tests."
|
|
2822
|
+
]
|
|
2823
|
+
},
|
|
2824
|
+
{
|
|
2825
|
+
name: "GCP",
|
|
2826
|
+
slug: "gcloud",
|
|
2827
|
+
tag: "GCP",
|
|
2828
|
+
image: "/images/tech/gcloud.png",
|
|
2829
|
+
description: "Google Cloud compute, storage, and managed services for APIs, indexers, databases, and containerized workloads.",
|
|
2830
|
+
link: "https://cloud.google.com/",
|
|
2831
|
+
since: "2018",
|
|
2832
|
+
experience: [
|
|
2833
|
+
"Hosted Bitcash's React, Node.js, PostgreSQL, and EOS indexer stack on Google Cloud with worker-thread deserialization.",
|
|
2834
|
+
"Ran RareMint's NFT indexer APIs and Polygon data pipelines on GCP infrastructure.",
|
|
2835
|
+
"Deployed ChainGraph services and Bitlauncher's backend workloads on Google Cloud."
|
|
2836
|
+
],
|
|
2837
|
+
featuredOrder: 11
|
|
2838
|
+
},
|
|
2839
|
+
{
|
|
2840
|
+
name: "GraphQL",
|
|
2841
|
+
slug: "graphql",
|
|
2842
|
+
tag: "GraphQL",
|
|
2843
|
+
image: "/images/tech/graphql.png",
|
|
2844
|
+
description: "Typed API layer for blockchain subscriptions, exchange data, onchain ratings, and marketplace services.",
|
|
2845
|
+
link: "https://graphql.org/",
|
|
2846
|
+
since: "2015",
|
|
2847
|
+
experience: [
|
|
2848
|
+
"Built ChainGraph's real-time GraphQL subscription toolkit for EOSIO and Antelope blockchain data.",
|
|
2849
|
+
"Exposed Bitcash's indexed EOS trading data through GraphQL APIs over Hasura and PostgreSQL.",
|
|
2850
|
+
"Developed EOS Rate's GraphQL API for reading onchain block-producer ratings and comparison UI.",
|
|
2851
|
+
"Integrated Knowledge.io marketplace and wallet services with GraphQL in the serverless AWS stack."
|
|
2852
|
+
]
|
|
2853
|
+
},
|
|
2854
|
+
{
|
|
2855
|
+
name: "Hardhat",
|
|
2856
|
+
slug: "hardhat",
|
|
2857
|
+
tag: "Hardhat",
|
|
2858
|
+
image: "/images/tech/hardhat.png",
|
|
2859
|
+
description: "Solidity compile and test environment for Bitlauncher auction contracts before EOS EVM deployment.",
|
|
2860
|
+
link: "https://hardhat.org/",
|
|
2861
|
+
since: "2020",
|
|
2862
|
+
experience: [
|
|
2863
|
+
"Compiled and tested Bitlauncher's Solidity auction contracts with Hardhat before EOS EVM deployment."
|
|
2864
|
+
]
|
|
2865
|
+
},
|
|
2866
|
+
{
|
|
2867
|
+
name: "Heroku",
|
|
2868
|
+
slug: "heroku",
|
|
2869
|
+
tag: "Heroku",
|
|
2870
|
+
image: "/images/tech/heroku.png",
|
|
2871
|
+
description: "Hosted deployments for subscription apps, Rails backends, restaurant sites, and early ecommerce prototypes.",
|
|
2872
|
+
link: "https://www.heroku.com/",
|
|
2873
|
+
since: "2018",
|
|
2874
|
+
experience: [
|
|
2875
|
+
"Deployed Eat Arcade's Node.js, MongoDB, and AngularJS subscription app on Heroku with Stripe and Twilio.",
|
|
2876
|
+
"Hosted ARINC Microfids' Ruby on Rails flight-information backend on Heroku for hotel and airport displays.",
|
|
2877
|
+
"Deployed Tikr's Spree and Ruby on Rails dynamic-pricing store on Heroku with PostgreSQL."
|
|
2878
|
+
]
|
|
2879
|
+
},
|
|
2880
|
+
{
|
|
2881
|
+
name: "JavaScript",
|
|
2882
|
+
slug: "javascript",
|
|
2883
|
+
tag: "JavaScript",
|
|
2884
|
+
image: "/images/tech/javascript.png",
|
|
2885
|
+
description: "Client and server scripting for community platforms, ecommerce navigation, energy dashboards, and early full-stack products.",
|
|
2886
|
+
link: "https://developer.mozilla.org/en-US/docs/Web/JavaScript",
|
|
2887
|
+
since: "2009",
|
|
2888
|
+
experience: [
|
|
2889
|
+
"Co-organized Costa Rica JS on Meetup from 2012 and grew the community past 2,000 developers through meetups and NodeSchool Costa Rica.",
|
|
2890
|
+
"Built Elder Scrolls Online's official community site with JavaScript for news, guides, and forum navigation.",
|
|
2891
|
+
"Implemented frontend load-time improvements on Staples' ecommerce storefront in JavaScript.",
|
|
2892
|
+
"Built Gridium's energy-analytics prototype with JavaScript-driven interactive charts."
|
|
2893
|
+
]
|
|
2894
|
+
},
|
|
2895
|
+
{
|
|
2896
|
+
name: "LESS",
|
|
2897
|
+
slug: "less",
|
|
2898
|
+
tag: "LESS",
|
|
2899
|
+
image: "/images/tech/less.png",
|
|
2900
|
+
description: "CSS preprocessor for ARINC Microfids' AngularJS flight-information display styling.",
|
|
2901
|
+
link: "https://lesscss.org/",
|
|
2902
|
+
since: "2009",
|
|
2903
|
+
experience: [
|
|
2904
|
+
"Styled ARINC Microfids' AngularJS flight-information displays with LESS alongside Faye real-time updates."
|
|
2905
|
+
]
|
|
2906
|
+
},
|
|
2907
|
+
{
|
|
2908
|
+
name: "MongoDB",
|
|
2909
|
+
slug: "mongodb",
|
|
2910
|
+
tag: "MongoDB",
|
|
2911
|
+
image: "/images/tech/mongodb.png",
|
|
2912
|
+
description: "Document store for subscription delivery data and Fitbit-connected fitness metrics behind secure APIs.",
|
|
2913
|
+
link: "https://www.mongodb.com/",
|
|
2914
|
+
since: "2018",
|
|
2915
|
+
experience: [
|
|
2916
|
+
"Stored Eat Arcade's restaurant subscription and SMS delivery data in MongoDB on Heroku.",
|
|
2917
|
+
"Persisted 4Tius Fitness Data Tracker metrics in MongoDB behind a secure API on AWS."
|
|
2918
|
+
]
|
|
2919
|
+
},
|
|
2920
|
+
{
|
|
2921
|
+
name: "MooTools",
|
|
2922
|
+
slug: "mootools",
|
|
2923
|
+
tag: "Mootools",
|
|
2924
|
+
image: "/images/tech/mootools.png",
|
|
2925
|
+
description: "JavaScript framework for responsive medical landing pages in early client work.",
|
|
2926
|
+
link: "https://mootools.net/",
|
|
2927
|
+
since: "2009",
|
|
2928
|
+
experience: [
|
|
2929
|
+
"Built Trivenzor's responsive medical information landing page with MooTools for patients and clinicians."
|
|
2930
|
+
]
|
|
2931
|
+
},
|
|
2932
|
+
{
|
|
2933
|
+
name: "Next.js",
|
|
2934
|
+
slug: "nextjs",
|
|
2935
|
+
tag: "NextJS",
|
|
2936
|
+
image: "/images/tech/nextjs.png",
|
|
2937
|
+
description: "Full-stack React framework for trading apps, auction platforms, AI assistants, and virtual-world experiences with SSR and server components.",
|
|
2938
|
+
link: "https://nextjs.org/",
|
|
2939
|
+
since: "2016",
|
|
2940
|
+
experience: [
|
|
2941
|
+
"Shipped Opyn's trading app on Next.js 14 with React Server Components over Ponder-indexed chain data.",
|
|
2942
|
+
"Ran Bitlauncher's auction platform on Next.js 14 with live chain updates through Supabase subscriptions.",
|
|
2943
|
+
"Built Masterbots on Next.js with the AI SDK for domain-specific assistants and automated internationalization.",
|
|
2944
|
+
"Delivered ZTX's web experience on Next.js with embedded WebGL wallet connection for NFT trading."
|
|
2945
|
+
],
|
|
2946
|
+
featuredOrder: 9
|
|
2947
|
+
},
|
|
2948
|
+
{
|
|
2949
|
+
name: "NFT",
|
|
2950
|
+
slug: "nft",
|
|
2951
|
+
tag: "NFT",
|
|
2952
|
+
image: "/images/tech/nft.png",
|
|
2953
|
+
description: "On-chain collectibles in Polygon marketplaces, virtual-world commerce, and hackathon minting flows.",
|
|
2954
|
+
link: "https://ethereum.org/en/developers/docs/standards/tokens/erc-721/",
|
|
2955
|
+
since: "2022",
|
|
2956
|
+
experience: [
|
|
2957
|
+
"Built RareMint's Polygon marketplace for minting, listing, and trading ERC-721 collectibles.",
|
|
2958
|
+
"Connected ZTX's in-world commerce to NFT inventory and wallet signing for player-owned items.",
|
|
2959
|
+
"Minted Wizard World hackathon assets on Flow after OpenAI image generation in the PWA."
|
|
2960
|
+
]
|
|
2961
|
+
},
|
|
2962
|
+
{
|
|
2963
|
+
name: "Niftory",
|
|
2964
|
+
slug: "niftory",
|
|
2965
|
+
tag: "Niftory",
|
|
2966
|
+
image: "/images/tech/niftory.png",
|
|
2967
|
+
description: "Flow NFT minting infrastructure for Wizard World hackathon assets generated with OpenAI image models.",
|
|
2968
|
+
link: "https://niftory.com/",
|
|
2969
|
+
since: "2022",
|
|
2970
|
+
experience: [
|
|
2971
|
+
"Minted Wizard World AI-generated images as Flow NFTs through Niftory during the Flow Hackathon."
|
|
2972
|
+
]
|
|
2973
|
+
},
|
|
2974
|
+
{
|
|
2975
|
+
name: "Node.js",
|
|
2976
|
+
slug: "nodejs",
|
|
2977
|
+
tag: "NodeJS",
|
|
2978
|
+
image: "/images/tech/nodejs.png",
|
|
2979
|
+
description: "Server runtime for EVM indexers, Antelope workers, exchange backends, and serverless API functions in production systems.",
|
|
2980
|
+
link: "https://nodejs.org/",
|
|
2981
|
+
since: "2009",
|
|
2982
|
+
experience: [
|
|
2983
|
+
"Indexed Bitlauncher EVM events in Node.js with Viem subscriptions and wrote auction state to PostgreSQL.",
|
|
2984
|
+
"Streamed Antelope blocks into ChainGraph's GraphQL layer with Node.js workers and PostgreSQL storage.",
|
|
2985
|
+
"Ran Bitcash's matching engine, realtime chat, and EOS indexer services on Node.js.",
|
|
2986
|
+
"Deployed Knowledge.io token and marketplace logic as serverless Node.js functions."
|
|
2987
|
+
],
|
|
2988
|
+
featuredOrder: 10
|
|
2989
|
+
},
|
|
2990
|
+
{
|
|
2991
|
+
name: "nuqs",
|
|
2992
|
+
slug: "nuqs",
|
|
2993
|
+
tag: "nuqs",
|
|
2994
|
+
image: "/images/tech/nuqs.png",
|
|
2995
|
+
description: "URL state synchronization for auction filters, trading views, and shareable assistant pages on Next.js.",
|
|
2996
|
+
link: "https://nuqs.47ng.com/",
|
|
2997
|
+
since: "2023",
|
|
2998
|
+
experience: [
|
|
2999
|
+
"Synced Bitlauncher's auction filters and wallet views with URL state through nuqs on Next.js.",
|
|
3000
|
+
"Managed Opyn's trading interface URL state with nuqs alongside TanStack Query and Zod validation.",
|
|
3001
|
+
"Wired Masterbots' assistant views to shareable URL parameters with nuqs on Next.js."
|
|
3002
|
+
]
|
|
3003
|
+
},
|
|
3004
|
+
{
|
|
3005
|
+
name: "OpenAI",
|
|
3006
|
+
slug: "openai",
|
|
3007
|
+
tag: "OpenAI",
|
|
3008
|
+
image: "/images/tech/openai.png",
|
|
3009
|
+
description: "APIs and models for chat, embeddings, image generation, and realtime voice used in production assistant products.",
|
|
3010
|
+
link: "https://openai.com/",
|
|
3011
|
+
since: "2022",
|
|
3012
|
+
experience: [
|
|
3013
|
+
"Integrated OpenAI Realtime voice in LegalAgent's multimodal assistant for spoken legal intake and responses.",
|
|
3014
|
+
"Powered Bitlauncher's public chatbot and Masterbots domain assistants with OpenAI chat models.",
|
|
3015
|
+
"Used DALL\xB7E in Wizard World to generate images that players minted as Flow NFTs during the hackathon build."
|
|
3016
|
+
]
|
|
3017
|
+
},
|
|
3018
|
+
{
|
|
3019
|
+
name: "Ponder",
|
|
3020
|
+
slug: "ponder",
|
|
3021
|
+
tag: "Ponder",
|
|
3022
|
+
image: "/images/tech/ponder.png",
|
|
3023
|
+
description: "On-chain event indexer that persists options chain data to PostgreSQL for Opyn's Next.js trading interface.",
|
|
3024
|
+
link: "https://ponder.sh/",
|
|
3025
|
+
since: "2024",
|
|
3026
|
+
experience: [
|
|
3027
|
+
"Ran Ponder for Opyn on Arbitrum Testnet, persisting options chain data in PostgreSQL for the Next.js trading UI."
|
|
3028
|
+
]
|
|
3029
|
+
},
|
|
3030
|
+
{
|
|
3031
|
+
name: "PostgreSQL",
|
|
3032
|
+
slug: "postgresql",
|
|
3033
|
+
tag: "PostgreSQL",
|
|
3034
|
+
image: "/images/tech/postgresql.png",
|
|
3035
|
+
description: "Relational store for auction indexing, options chain data, exchange backends, and blockchain subscription pipelines.",
|
|
3036
|
+
link: "https://www.postgresql.org/",
|
|
3037
|
+
since: "2012",
|
|
3038
|
+
experience: [
|
|
3039
|
+
"Indexed Bitlauncher auction and transaction data in PostgreSQL through Supabase.",
|
|
3040
|
+
"Stored Opyn's Ponder-indexed options chain data in PostgreSQL via Supabase.",
|
|
3041
|
+
"Ran Bitcash's peer-to-peer exchange, chat, and EOS indexer on PostgreSQL with Hasura.",
|
|
3042
|
+
"Persisted ChainGraph blockchain subscription data in PostgreSQL for GraphQL queries."
|
|
3043
|
+
]
|
|
3044
|
+
},
|
|
3045
|
+
{
|
|
3046
|
+
name: "Ruby on Rails",
|
|
3047
|
+
slug: "rails",
|
|
3048
|
+
tag: "Ruby on Rails",
|
|
3049
|
+
image: "/images/tech/rails.png",
|
|
3050
|
+
description: "Full-stack framework for dynamic pricing stores and flight-information backends feeding AngularJS frontends.",
|
|
3051
|
+
link: "https://rubyonrails.org/",
|
|
3052
|
+
since: "2009",
|
|
3053
|
+
experience: [
|
|
3054
|
+
"Built Tikr's dynamic pricing engine on Spree and Ruby on Rails with PostgreSQL on Heroku.",
|
|
3055
|
+
"Developed ARINC Microfids' flight-information backend in Ruby on Rails, feeding live data to AngularJS."
|
|
3056
|
+
]
|
|
3057
|
+
},
|
|
3058
|
+
{
|
|
3059
|
+
name: "React Native",
|
|
3060
|
+
slug: "react-native",
|
|
3061
|
+
tag: "React Native",
|
|
3062
|
+
image: "/images/tech/react-native.png",
|
|
3063
|
+
description: "Cross-platform mobile for neobank apps, AI assistants, EOS wallets in chat apps, and retail AR previews.",
|
|
3064
|
+
link: "https://reactnative.dev/",
|
|
3065
|
+
since: "2015",
|
|
3066
|
+
experience: [
|
|
3067
|
+
"Built LegalAgent's multimodal AI assistant with voice and chat interfaces in React Native and Expo.",
|
|
3068
|
+
"Shipped the first version of Wink, Costa Rica's neobank mobile app, on React Native with partner-bank API integration.",
|
|
3069
|
+
"Improved performance and introduced TypeScript in Tractor Supply's existing React Native retail app.",
|
|
3070
|
+
"Integrated EOS mainnet wallet and transaction flows in Make Sense Labs' Sense.chat React Native app."
|
|
3071
|
+
]
|
|
3072
|
+
},
|
|
3073
|
+
{
|
|
3074
|
+
name: "React",
|
|
3075
|
+
slug: "reactjs",
|
|
3076
|
+
tag: "ReactJS",
|
|
3077
|
+
image: "/images/tech/reactjs.png",
|
|
3078
|
+
description: "Component model for web UIs across trading interfaces, admin dashboards, and marketplace screens in Next.js and standalone apps.",
|
|
3079
|
+
link: "https://react.dev/",
|
|
3080
|
+
since: "2013",
|
|
3081
|
+
experience: [
|
|
3082
|
+
"Split Opyn's options trading components between server components that read indexed protocol state and client components for wallet actions.",
|
|
3083
|
+
"Composed Bitlauncher's live auction and wallet screens with React state fed by Supabase realtime channels.",
|
|
3084
|
+
"Implemented LegalAgent's admin dashboards in React with Microsoft SSO and document management flows.",
|
|
3085
|
+
"Refactored RareMint's marketplace UI during a Next.js SSR performance pass with component-level code splitting.",
|
|
3086
|
+
"Shipped ZTX's Next.js shell that embeds WebGL wallet flows for in-world NFT trading."
|
|
3087
|
+
],
|
|
3088
|
+
featuredOrder: 8
|
|
3089
|
+
},
|
|
3090
|
+
{
|
|
3091
|
+
name: "Redis",
|
|
3092
|
+
slug: "redis",
|
|
3093
|
+
tag: "Redis",
|
|
3094
|
+
image: "/images/tech/redis.png",
|
|
3095
|
+
description: "In-memory data store in LegalAgent's production stack.",
|
|
3096
|
+
link: "https://redis.io/",
|
|
3097
|
+
since: "2015",
|
|
3098
|
+
experience: [
|
|
3099
|
+
"Ran Redis in LegalAgent's production stack, alongside the React Native assistant and the admin services."
|
|
3100
|
+
]
|
|
3101
|
+
},
|
|
3102
|
+
{
|
|
3103
|
+
name: "Redux",
|
|
3104
|
+
slug: "redux",
|
|
3105
|
+
tag: "Redux",
|
|
3106
|
+
image: "/images/tech/redux.png",
|
|
3107
|
+
description: "Shared application state for retail AR features and photo editor commerce workflows in React Native and web apps.",
|
|
3108
|
+
link: "https://redux.js.org/",
|
|
3109
|
+
since: "2016",
|
|
3110
|
+
experience: [
|
|
3111
|
+
"Managed shared state in the Tractor Supply React Native app with Redux during performance and AR feature work.",
|
|
3112
|
+
"Led Photo and Go's photo editor state with Redux, connecting the custom editor to the commerce backend."
|
|
3113
|
+
]
|
|
3114
|
+
},
|
|
3115
|
+
{
|
|
3116
|
+
name: "RxJS",
|
|
3117
|
+
slug: "rxjs",
|
|
3118
|
+
tag: "RXJS",
|
|
3119
|
+
image: "/images/tech/rxjs.png",
|
|
3120
|
+
description: "Reactive streams for ChainGraph's real-time blockchain data subscriptions over EOSIO and Antelope networks.",
|
|
3121
|
+
link: "https://rxjs.dev/",
|
|
3122
|
+
since: "2020",
|
|
3123
|
+
experience: [
|
|
3124
|
+
"Built ChainGraph's real-time blockchain data streaming with RxJS Observables over EOSIO and Antelope networks."
|
|
3125
|
+
]
|
|
3126
|
+
},
|
|
3127
|
+
{
|
|
3128
|
+
name: "Serverless",
|
|
3129
|
+
slug: "serverless",
|
|
3130
|
+
tag: "Serverless",
|
|
3131
|
+
image: "/images/tech/serverless.png",
|
|
3132
|
+
description: "AWS Lambda execution for neobank backends, virtual-world services, and token marketplace APIs.",
|
|
3133
|
+
link: "https://www.serverless.com/",
|
|
3134
|
+
since: "2015",
|
|
3135
|
+
experience: [
|
|
3136
|
+
"Ran Wink's partner-bank integrations and mobile app services as AWS Lambda functions.",
|
|
3137
|
+
"Ran ZTX's wallet services as serverless functions while the virtual world was in early development.",
|
|
3138
|
+
"Split Knowledge.io's token, marketplace, and wallet APIs into serverless functions around the ERC-20 token."
|
|
3139
|
+
]
|
|
3140
|
+
},
|
|
3141
|
+
{
|
|
3142
|
+
name: "shadcn/ui",
|
|
3143
|
+
slug: "shadcn",
|
|
3144
|
+
tag: "ShadcnUI",
|
|
3145
|
+
image: "/images/tech/shadcn.png",
|
|
3146
|
+
description: "Accessible React component layer for options trading, auction screens, and AI assistant interfaces on Next.js.",
|
|
3147
|
+
link: "https://ui.shadcn.com/",
|
|
3148
|
+
since: "2021",
|
|
3149
|
+
experience: [
|
|
3150
|
+
"Built Opyn's options trading interface with shadcn/ui components on Radix UI and Tailwind CSS.",
|
|
3151
|
+
"Composed Bitlauncher's auction, wallet, and bidding screens from shadcn/ui on Next.js 14.",
|
|
3152
|
+
"Structured Masterbots' assistant interfaces with shadcn/ui as the shared component layer."
|
|
3153
|
+
]
|
|
3154
|
+
},
|
|
3155
|
+
{
|
|
3156
|
+
name: "Solidity",
|
|
3157
|
+
slug: "solidity",
|
|
3158
|
+
tag: "Solidity",
|
|
3159
|
+
image: "/images/tech/solidity.png",
|
|
3160
|
+
description: "Smart contract language for EVM auction systems, options protocols, and token deployments tested with Foundry.",
|
|
3161
|
+
link: "https://soliditylang.org/",
|
|
3162
|
+
since: "2017",
|
|
3163
|
+
experience: [
|
|
3164
|
+
"Authored Gnosis auction Solidity for Bitlauncher on EOS EVM with batch bidding and uniform pricing rules.",
|
|
3165
|
+
"Wrote Opyn Markets protocol contracts for Arbitrum testnet, tested and deployed with Foundry.",
|
|
3166
|
+
"Delivered ERC-20 token contracts for Knowledge.io's 2018 mainnet ICO."
|
|
3167
|
+
],
|
|
3168
|
+
featuredOrder: 4
|
|
3169
|
+
},
|
|
3170
|
+
{
|
|
3171
|
+
name: "Stitches",
|
|
3172
|
+
slug: "stitches",
|
|
3173
|
+
tag: "Stitches",
|
|
3174
|
+
image: "/images/tech/stitches.png",
|
|
3175
|
+
description: "CSS-in-JS styling for Bitcash's React exchange interface alongside Zustand client state.",
|
|
3176
|
+
link: "https://stitches.dev/",
|
|
3177
|
+
since: "2021",
|
|
3178
|
+
experience: [
|
|
3179
|
+
"Styled Bitcash's React exchange interface with Stitches alongside Zustand for client state."
|
|
3180
|
+
]
|
|
3181
|
+
},
|
|
3182
|
+
{
|
|
3183
|
+
name: "Stripe",
|
|
3184
|
+
slug: "stripe",
|
|
3185
|
+
tag: "Stripe",
|
|
3186
|
+
image: "/images/tech/stripe.png",
|
|
3187
|
+
description: "Checkout and subscription payments for Eat Arcade's SMS restaurant service on Heroku.",
|
|
3188
|
+
link: "https://stripe.com/",
|
|
3189
|
+
since: "2018",
|
|
3190
|
+
experience: [
|
|
3191
|
+
"Integrated Stripe checkout into Eat Arcade's SMS restaurant subscription service on Heroku."
|
|
3192
|
+
]
|
|
3193
|
+
},
|
|
3194
|
+
{
|
|
3195
|
+
name: "Supabase",
|
|
3196
|
+
slug: "supabase",
|
|
3197
|
+
tag: "Supabase",
|
|
3198
|
+
image: "/images/tech/supabase.png",
|
|
3199
|
+
description: "PostgreSQL-backed realtime layer for auction indexing, options data, and QR signature flows in Web3 products.",
|
|
3200
|
+
link: "https://supabase.io/",
|
|
3201
|
+
since: "2022",
|
|
3202
|
+
experience: [
|
|
3203
|
+
"Architected Bitlauncher on Supabase for transaction indexing, real-time auction subscriptions, and data aggregation.",
|
|
3204
|
+
"Indexed Opyn's onchain options data in PostgreSQL through Supabase alongside Ponder.",
|
|
3205
|
+
"Used Supabase subscriptions and webhooks on Bitcash for QR-based signature request flows."
|
|
3206
|
+
]
|
|
3207
|
+
},
|
|
3208
|
+
{
|
|
3209
|
+
name: "Tailwind CSS",
|
|
3210
|
+
slug: "tailwind",
|
|
3211
|
+
tag: "Tailwind",
|
|
3212
|
+
image: "/images/tech/tailwind.png",
|
|
3213
|
+
description: "Utility-first styling for trading interfaces, AI dashboards, virtual-world shells, and marketplace UIs across Next.js and React apps.",
|
|
3214
|
+
link: "https://tailwindcss.com/",
|
|
3215
|
+
since: "2022",
|
|
3216
|
+
experience: [
|
|
3217
|
+
"Set up ZTX's Next.js architecture with Tailwind CSS and Framer Motion for the virtual-world experience.",
|
|
3218
|
+
"Styled Opyn's options trading screens with Tailwind CSS utilities.",
|
|
3219
|
+
"Styled LegalAgent's admin dashboard and multimodal assistant UI with Tailwind CSS.",
|
|
3220
|
+
"Styled Bitlauncher's bidding and token bridge flows with Tailwind CSS."
|
|
3221
|
+
]
|
|
3222
|
+
},
|
|
3223
|
+
{
|
|
3224
|
+
name: "TanStack Form",
|
|
3225
|
+
slug: "tanstack-form",
|
|
3226
|
+
tag: "TanStack Form",
|
|
3227
|
+
image: "/images/tech/tanstack-form.png",
|
|
3228
|
+
description: "Headless form layer for LegalAgent's document categorization and system prompt management in the admin dashboard.",
|
|
3229
|
+
link: "https://tanstack.com/form/latest",
|
|
3230
|
+
since: "2022",
|
|
3231
|
+
experience: [
|
|
3232
|
+
"Built LegalAgent's admin forms for document categorization and system prompt management with TanStack Form."
|
|
3233
|
+
]
|
|
3234
|
+
},
|
|
3235
|
+
{
|
|
3236
|
+
name: "TanStack Query",
|
|
3237
|
+
slug: "tanstack-query",
|
|
3238
|
+
tag: "TanStack Query",
|
|
3239
|
+
image: "/images/tech/tanstack-query.png",
|
|
3240
|
+
description: "Server data caching for RAG assistants, auction platforms, options trading, and chatbot interfaces on Next.js.",
|
|
3241
|
+
link: "https://tanstack.com/query/latest",
|
|
3242
|
+
since: "2021",
|
|
3243
|
+
experience: [
|
|
3244
|
+
"Wired LegalAgent's RAG-backed assistant and admin dashboard data layer with TanStack Query.",
|
|
3245
|
+
"Cached Bitlauncher's auction and wallet data with TanStack Query over Supabase and chain RPCs.",
|
|
3246
|
+
"Managed Opyn's indexed options data fetching with TanStack Query alongside Ponder and PostgreSQL.",
|
|
3247
|
+
"Structured Masterbots' assistant and chatbot data flows with TanStack Query on Next.js."
|
|
3248
|
+
]
|
|
3249
|
+
},
|
|
3250
|
+
{
|
|
3251
|
+
name: "TanStack Start",
|
|
3252
|
+
slug: "tanstack-start",
|
|
3253
|
+
tag: "TanStack Start",
|
|
3254
|
+
image: "/images/tech/tanstack-start.png",
|
|
3255
|
+
description: "Full-stack React framework with file-based routing and server functions for LegalAgent's admin dashboard and document workflows.",
|
|
3256
|
+
link: "https://tanstack.com/start/latest",
|
|
3257
|
+
since: "2023",
|
|
3258
|
+
experience: [
|
|
3259
|
+
"Built LegalAgent's internal admin dashboard with TanStack Start, including Microsoft SSO and RAG document management."
|
|
3260
|
+
]
|
|
3261
|
+
},
|
|
3262
|
+
{
|
|
3263
|
+
name: "Terraform",
|
|
3264
|
+
slug: "terraform",
|
|
3265
|
+
tag: "Terraform",
|
|
3266
|
+
image: "/images/tech/terraform.png",
|
|
3267
|
+
description: "Infrastructure-as-code for provisioning private EOSIO blockchains on Azure at EOS Costa Rica.",
|
|
3268
|
+
link: "https://www.terraform.io/",
|
|
3269
|
+
since: "2019",
|
|
3270
|
+
experience: [
|
|
3271
|
+
"Provisioned a private EOSIO blockchain for a consulting firm's labs on Azure with Terraform at EOS Costa Rica."
|
|
3272
|
+
]
|
|
3273
|
+
},
|
|
3274
|
+
{
|
|
3275
|
+
name: "Trigger.dev",
|
|
3276
|
+
slug: "trigger",
|
|
3277
|
+
tag: "Trigger",
|
|
3278
|
+
image: "/images/tech/trigger.png",
|
|
3279
|
+
description: "Background job runner for Bitlauncher's auction indexing and processing alongside the Next.js platform.",
|
|
3280
|
+
link: "https://trigger.dev/",
|
|
3281
|
+
since: "2023",
|
|
3282
|
+
experience: [
|
|
3283
|
+
"Ran Bitlauncher's background indexing and auction processing jobs on Trigger.dev alongside the Next.js platform."
|
|
3284
|
+
]
|
|
3285
|
+
},
|
|
3286
|
+
{
|
|
3287
|
+
name: "Twilio",
|
|
3288
|
+
slug: "twilio",
|
|
3289
|
+
tag: "Twilio",
|
|
3290
|
+
image: "/images/tech/twilio.png",
|
|
3291
|
+
description: "SMS delivery for Eat Arcade's restaurant subscription notifications on Heroku.",
|
|
3292
|
+
link: "https://www.twilio.com/",
|
|
3293
|
+
since: "2018",
|
|
3294
|
+
experience: [
|
|
3295
|
+
"Integrated Twilio SMS into Eat Arcade's restaurant subscription service for curated dish notifications."
|
|
3296
|
+
]
|
|
3297
|
+
},
|
|
3298
|
+
{
|
|
3299
|
+
name: "TypeScript",
|
|
3300
|
+
slug: "typescript",
|
|
3301
|
+
tag: "TypeScript",
|
|
3302
|
+
image: "/images/tech/typescript.png",
|
|
3303
|
+
description: "Shared type layer across trading data, auction contracts and indexers, and the admin, mobile, and API packages of AI assistants.",
|
|
3304
|
+
link: "https://www.typescriptlang.org/",
|
|
3305
|
+
since: "2012",
|
|
3306
|
+
experience: [
|
|
3307
|
+
"Typed Opyn's options data layer and React components against Ponder-indexed schemas and Zod validators.",
|
|
3308
|
+
"Shared contract ABIs and indexer handlers in Bitlauncher's TypeScript monorepo for auctions and bridges.",
|
|
3309
|
+
"Standardized LegalAgent's admin, mobile, and API packages on TypeScript for retrieval and form flows."
|
|
3310
|
+
],
|
|
3311
|
+
featuredOrder: 7
|
|
3312
|
+
},
|
|
3313
|
+
{
|
|
3314
|
+
name: "Viem",
|
|
3315
|
+
slug: "viem",
|
|
3316
|
+
tag: "Viem",
|
|
3317
|
+
image: "/images/tech/viem.png",
|
|
3318
|
+
description: "TypeScript client for EVM contract reads, event subscriptions, and wallet interactions in trading and auction systems.",
|
|
3319
|
+
link: "https://viem.sh/",
|
|
3320
|
+
since: "2023",
|
|
3321
|
+
experience: [
|
|
3322
|
+
"Connected Opyn's trading UI to Arbitrum Testnet contracts through Viem with Alchemy RPC endpoints.",
|
|
3323
|
+
"Indexed Bitlauncher auction events with Viem subscriptions and persisted fills for the Next.js client.",
|
|
3324
|
+
"Implemented Bitlauncher's stablecoin-to-USDCred bridge and wallet balance views with Viem contract calls."
|
|
3325
|
+
],
|
|
3326
|
+
featuredOrder: 5
|
|
3327
|
+
},
|
|
3328
|
+
{
|
|
3329
|
+
name: "ViroAR",
|
|
3330
|
+
slug: "viroar",
|
|
3331
|
+
tag: "ViroAR",
|
|
3332
|
+
image: "/images/tech/viroar.png",
|
|
3333
|
+
description: "Augmented-reality product previews in the Tractor Supply React Native retail app.",
|
|
3334
|
+
link: "https://viromedia.com/viroreact",
|
|
3335
|
+
since: "2019",
|
|
3336
|
+
experience: [
|
|
3337
|
+
"Implemented augmented-reality product previews in the Tractor Supply React Native retail app with ViroAR."
|
|
3338
|
+
]
|
|
3339
|
+
},
|
|
3340
|
+
{
|
|
3341
|
+
name: "Wagmi",
|
|
3342
|
+
slug: "wagmi",
|
|
3343
|
+
tag: "Wagmi",
|
|
3344
|
+
image: "/images/tech/wagmi.png",
|
|
3345
|
+
description: "React hooks on Viem for wallet connection, contract calls, and token balance subscriptions in Opyn's trading app and Bitlauncher's auctions.",
|
|
3346
|
+
link: "https://wagmi.sh/",
|
|
3347
|
+
since: "2023",
|
|
3348
|
+
experience: [
|
|
3349
|
+
"Wired Opyn wallet connect and contract interactions on Arbitrum Testnet with Wagmi and Viem.",
|
|
3350
|
+
"Subscribed to token balances in Bitlauncher's wallet UI so auction screens stayed in sync with chain state.",
|
|
3351
|
+
"Configured multichain connectors in Bitlauncher for EOS and EVM wallets through a single React layer."
|
|
3352
|
+
],
|
|
3353
|
+
featuredOrder: 6
|
|
3354
|
+
},
|
|
3355
|
+
{
|
|
3356
|
+
name: "WebAuthn",
|
|
3357
|
+
slug: "webauthn",
|
|
3358
|
+
tag: "WebAuthN",
|
|
3359
|
+
image: "/images/tech/webauthn.png",
|
|
3360
|
+
description: "In-browser transaction signing for Bitcash's peer-to-peer crypto exchange without external wallet extensions.",
|
|
3361
|
+
link: "https://webauthn.io/",
|
|
3362
|
+
since: "2021",
|
|
3363
|
+
experience: [
|
|
3364
|
+
"Implemented WebAuthn for in-browser transaction signing on Bitcash's peer-to-peer crypto exchange."
|
|
3365
|
+
]
|
|
3366
|
+
},
|
|
3367
|
+
{
|
|
3368
|
+
name: "WebGL",
|
|
3369
|
+
slug: "webgl",
|
|
3370
|
+
tag: "WebGL",
|
|
3371
|
+
image: "/images/tech/webgl.png",
|
|
3372
|
+
description: "In-browser 3D rendering for ZTX's EVM wallet connector embedded inside the virtual-world canvas.",
|
|
3373
|
+
link: "https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API",
|
|
3374
|
+
since: "2018",
|
|
3375
|
+
experience: [
|
|
3376
|
+
"Built ZTX's WebGL EVM wallet connector with Ethers.js so NFT trading ran inside the virtual-world canvas."
|
|
3377
|
+
]
|
|
3378
|
+
},
|
|
3379
|
+
{
|
|
3380
|
+
name: "WordPress",
|
|
3381
|
+
slug: "wordpress",
|
|
3382
|
+
tag: "Wordpress",
|
|
3383
|
+
image: "/images/tech/wordpress.png",
|
|
3384
|
+
description: "Content management for medical information sites, community promotions, and editorial publishing in early client work.",
|
|
3385
|
+
link: "https://wordpress.org/",
|
|
3386
|
+
since: "2009",
|
|
3387
|
+
experience: [
|
|
3388
|
+
"Built Living with Dryness as a responsive WordPress medical information page for mobile readability.",
|
|
3389
|
+
"Developed Capoeira Abolicao's promotional WordPress site with Bootstrap for instructors and community events.",
|
|
3390
|
+
"Built the ScotiaTico WordPress site for medical information and resource navigation."
|
|
3391
|
+
]
|
|
3392
|
+
},
|
|
3393
|
+
{
|
|
3394
|
+
name: "Zod",
|
|
3395
|
+
slug: "zod",
|
|
3396
|
+
tag: "Zod",
|
|
3397
|
+
image: "/images/tech/zod.png",
|
|
3398
|
+
description: "Runtime schema validation for auction payloads, trading inputs, and assistant configuration across Next.js apps.",
|
|
3399
|
+
link: "https://zod.dev/",
|
|
3400
|
+
since: "2022",
|
|
3401
|
+
experience: [
|
|
3402
|
+
"Validated Bitlauncher auction and wallet payloads with Zod across the Next.js and Supabase stack.",
|
|
3403
|
+
"Enforced type-safe chain and API inputs on Opyn's trading interface with Zod schema validation.",
|
|
3404
|
+
"Structured Masterbots assistant configuration and API contracts with Zod on Next.js."
|
|
3405
|
+
]
|
|
3406
|
+
},
|
|
3407
|
+
{
|
|
3408
|
+
name: "Zustand",
|
|
3409
|
+
slug: "zustand",
|
|
3410
|
+
tag: "Zustand",
|
|
3411
|
+
image: "/images/tech/zustand.png",
|
|
3412
|
+
description: "Client state management for Bitcash's peer-to-peer exchange interface alongside Stitches styling.",
|
|
3413
|
+
link: "https://github.com/pmndrs/zustand",
|
|
3414
|
+
since: "2021",
|
|
3415
|
+
experience: [
|
|
3416
|
+
"Managed Bitcash's exchange client state with Zustand alongside Stitches for component styling."
|
|
3417
|
+
]
|
|
3418
|
+
}
|
|
3419
|
+
];
|
|
3420
|
+
|
|
3421
|
+
export {
|
|
3422
|
+
projects,
|
|
3423
|
+
techStack
|
|
3424
|
+
};
|