gaboesquivel 3.17.0 → 4.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/cli.js +705 -321
- package/dist/cli.mjs +2958 -69
- package/dist/content/projects/4tius-fitness-data-tracker.md +34 -0
- package/dist/content/projects/amc-yeah-tv-facebook-app.md +37 -0
- package/dist/content/projects/american-express.md +37 -0
- package/dist/content/projects/amex-money-talk.md +30 -0
- package/dist/content/projects/arinc-microfids.md +33 -0
- package/dist/content/projects/asoblockchain.md +46 -0
- package/dist/content/projects/bitcashbank.md +48 -0
- package/dist/content/projects/bitlauncher.md +63 -0
- package/dist/content/projects/bureau-of-trade-beta.md +33 -0
- package/dist/content/projects/capoeira-abolicao.md +32 -0
- package/dist/content/projects/chaingraph.md +38 -0
- package/dist/content/projects/costa-rica-js.md +48 -0
- package/dist/content/projects/cryptocantinacr.md +39 -0
- package/dist/content/projects/dboard.md +39 -0
- package/dist/content/projects/earth.md +31 -0
- package/dist/content/projects/eat-arcade.md +37 -0
- package/dist/content/projects/elder-scrolls-online.md +34 -0
- package/dist/content/projects/emanate.md +35 -0
- package/dist/content/projects/eos-costa-rica.md +45 -0
- package/dist/content/projects/eos-rate.md +40 -0
- package/dist/content/projects/fantasy-tennis.md +32 -0
- package/dist/content/projects/fantasy-top-shots.md +37 -0
- package/dist/content/projects/gridium.md +33 -0
- package/dist/content/projects/its.md +32 -0
- package/dist/content/projects/jockey-hollow-bar-and-kitchen-menu-kiosk-app.md +36 -0
- package/dist/content/projects/jockey-hollow-bar-and-kitchen.md +36 -0
- package/dist/content/projects/knowledge-io.md +43 -0
- package/dist/content/projects/legal-agent.md +44 -0
- package/dist/content/projects/living-with-dryness.md +31 -0
- package/dist/content/projects/make-sense-labs.md +33 -0
- package/dist/content/projects/masterbots.md +48 -0
- package/dist/content/projects/mobtion.md +32 -0
- package/dist/content/projects/opyn.md +47 -0
- package/dist/content/projects/panini.md +31 -0
- package/dist/content/projects/photo-and-go.md +36 -0
- package/dist/content/projects/proparques.md +31 -0
- package/dist/content/projects/raremint.md +45 -0
- package/dist/content/projects/scotiatico.md +31 -0
- package/dist/content/projects/staples.md +31 -0
- package/dist/content/projects/substrate-contracts-ui.md +34 -0
- package/dist/content/projects/suntrust.md +30 -0
- package/dist/content/projects/tikr.md +35 -0
- package/dist/content/projects/tractor-supply.md +34 -0
- package/dist/content/projects/trivenzor.md +31 -0
- package/dist/content/projects/wink.md +41 -0
- package/dist/content/projects/wizard-world.md +39 -0
- package/dist/content/projects/ztx.md +42 -0
- package/dist/content/tags.md +95 -0
- package/dist/content/tech/ai-sdk.md +22 -0
- package/dist/content/tech/alchemy.md +18 -0
- package/dist/content/tech/angularjs.md +19 -0
- package/dist/content/tech/antelope.md +18 -0
- package/dist/content/tech/artificial-intelligence.md +24 -0
- package/dist/content/tech/aws.md +19 -0
- package/dist/content/tech/biometrics.md +18 -0
- package/dist/content/tech/blockchain.md +24 -0
- package/dist/content/tech/bootstrap.md +19 -0
- package/dist/content/tech/cms.md +20 -0
- package/dist/content/tech/cpp.md +18 -0
- package/dist/content/tech/css.md +19 -0
- package/dist/content/tech/dalle.md +18 -0
- package/dist/content/tech/data-charts.md +18 -0
- package/dist/content/tech/datocms.md +19 -0
- package/dist/content/tech/docker.md +19 -0
- package/dist/content/tech/eos.md +18 -0
- package/dist/content/tech/ethereum.md +23 -0
- package/dist/content/tech/ethersjs.md +22 -0
- package/dist/content/tech/evm.md +22 -0
- package/dist/content/tech/expo.md +19 -0
- package/dist/content/tech/faye.md +19 -0
- package/dist/content/tech/flow.md +18 -0
- package/dist/content/tech/foundry.md +22 -0
- package/dist/content/tech/gcloud.md +19 -0
- package/dist/content/tech/graphql.md +19 -0
- package/dist/content/tech/hardhat.md +18 -0
- package/dist/content/tech/heroku.md +18 -0
- package/dist/content/tech/javascript.md +19 -0
- package/dist/content/tech/less.md +18 -0
- package/dist/content/tech/llms.md +22 -0
- package/dist/content/tech/mongodb.md +19 -0
- package/dist/content/tech/mootools.md +18 -0
- package/dist/content/tech/nextjs.md +23 -0
- package/dist/content/tech/nft.md +18 -0
- package/dist/content/tech/niftory.md +18 -0
- package/dist/content/tech/nodejs.md +23 -0
- package/dist/content/tech/nuqs.md +19 -0
- package/dist/content/tech/openai.md +18 -0
- package/dist/content/tech/polkadot.md +18 -0
- package/dist/content/tech/ponder.md +22 -0
- package/dist/content/tech/postgresql.md +22 -0
- package/dist/content/tech/rails.md +19 -0
- package/dist/content/tech/react-native.md +22 -0
- package/dist/content/tech/reactjs.md +22 -0
- package/dist/content/tech/redis.md +18 -0
- package/dist/content/tech/redux.md +19 -0
- package/dist/content/tech/rxjs.md +18 -0
- package/dist/content/tech/serverless.md +18 -0
- package/dist/content/tech/shadcn.md +19 -0
- package/dist/content/tech/solidity.md +23 -0
- package/dist/content/tech/stitches.md +19 -0
- package/dist/content/tech/stripe.md +18 -0
- package/dist/content/tech/substrate.md +18 -0
- package/dist/content/tech/supabase.md +20 -0
- package/dist/content/tech/tailwind.md +19 -0
- package/dist/content/tech/tanstack-form.md +19 -0
- package/dist/content/tech/tanstack-query.md +19 -0
- package/dist/content/tech/tanstack-start.md +19 -0
- package/dist/content/tech/terraform.md +19 -0
- package/dist/content/tech/thirdweb.md +22 -0
- package/dist/content/tech/trigger.md +19 -0
- package/dist/content/tech/twilio.md +18 -0
- package/dist/content/tech/typescript.md +22 -0
- package/dist/content/tech/viem.md +23 -0
- package/dist/content/tech/viroar.md +19 -0
- package/dist/content/tech/wagmi.md +23 -0
- package/dist/content/tech/webauthn.md +19 -0
- package/dist/content/tech/webgl.md +18 -0
- package/dist/content/tech/wordpress.md +19 -0
- package/dist/content/tech/zod.md +19 -0
- package/dist/content/tech/zustand.md +19 -0
- package/dist/index.d.mts +8 -2
- package/dist/index.d.ts +8 -2
- package/dist/index.js +3282 -1719
- package/dist/index.mjs +4067 -4
- package/dist/projects.json +1621 -0
- package/dist/tags.json +89 -0
- package/dist/tech.json +1132 -0
- package/package.json +23 -4
- package/dist/chunk-3XJB6JQB.mjs +0 -2475
- package/dist/chunk-7BGBLAS7.mjs +0 -2475
- package/dist/chunk-EW5XIF7Q.mjs +0 -2474
- package/dist/chunk-F5O2AC7V.mjs +0 -2450
- package/dist/chunk-FTX6UF5M.mjs +0 -2511
- package/dist/chunk-FX52Y6GF.mjs +0 -2474
- package/dist/chunk-GQEE5WN4.mjs +0 -2450
- package/dist/chunk-LF6T72UC.mjs +0 -2466
- package/dist/chunk-LPLZ3JRN.mjs +0 -2475
- package/dist/chunk-ME4GIHM6.mjs +0 -2474
- package/dist/chunk-QMWCTZHU.mjs +0 -2450
- package/dist/chunk-WOFK3FJJ.mjs +0 -2502
- package/dist/chunk-Y4OM6UBU.mjs +0 -2461
package/dist/cli.js
CHANGED
|
@@ -25,6 +25,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
25
25
|
|
|
26
26
|
// src/cli.ts
|
|
27
27
|
var import_chalk = __toESM(require("chalk"));
|
|
28
|
+
var import_prompts = __toESM(require("prompts"));
|
|
28
29
|
|
|
29
30
|
// src/projects.ts
|
|
30
31
|
var projects = [
|
|
@@ -57,15 +58,15 @@ var projects = [
|
|
|
57
58
|
"Established a bilingual support system with real-time voice transcription and synthesis."
|
|
58
59
|
],
|
|
59
60
|
story: [
|
|
60
|
-
"At LegalAgent, I integrated
|
|
61
|
-
"
|
|
62
|
-
"I also
|
|
61
|
+
"At LegalAgent, I integrated an AI assistant into their React Native mobile app with both voice and chat interfaces to help lawyers access case information efficiently.",
|
|
62
|
+
"I implemented the Vercel AI SDK for chat functionality and OpenAI's Realtime API for voice features, building a multimodal interface with Tailwind CSS. The assistant uses RAG architecture to provide contextual legal support, document summaries, and procedural guidance in both Spanish and English.",
|
|
63
|
+
"I also developed an internal admin dashboard with TanStack Start, adding Microsoft SSO integration, system prompt management, and document categorization for RAG retrieval. This solution improves legal team productivity and simplifies case file access."
|
|
63
64
|
]
|
|
64
65
|
},
|
|
65
66
|
{
|
|
66
67
|
title: "Opyn",
|
|
67
68
|
slug: "opyn",
|
|
68
|
-
description: "Opyn is a decentralized options protocol on Arbitrum. I implemented their initial trading interface and data indexing setup for Arbitrum Testnet using Next.js, Ponder, and viem/wagmi.",
|
|
69
|
+
description: "Opyn is a decentralized options protocol on Arbitrum that raised $6.7M Series A funding led by Paradigm. Their main product Squeeth is a notable DeFi-native derivative. I implemented their initial trading interface and data indexing setup for Arbitrum Testnet using Next.js, Ponder, and viem/wagmi.",
|
|
69
70
|
tech: [
|
|
70
71
|
"TypeScript",
|
|
71
72
|
"NextJS",
|
|
@@ -82,7 +83,8 @@ var projects = [
|
|
|
82
83
|
"Zod",
|
|
83
84
|
"nuqs",
|
|
84
85
|
"EVM",
|
|
85
|
-
"Ethereum"
|
|
86
|
+
"Ethereum",
|
|
87
|
+
"Alchemy"
|
|
86
88
|
],
|
|
87
89
|
type: ["web3", "contract", "featured", "frontend", "backend"],
|
|
88
90
|
link: "https://opyn.co",
|
|
@@ -94,9 +96,9 @@ var projects = [
|
|
|
94
96
|
"Implemented type-safe data validation and state management"
|
|
95
97
|
],
|
|
96
98
|
story: [
|
|
97
|
-
"At Opyn, I
|
|
98
|
-
"
|
|
99
|
-
"The
|
|
99
|
+
"At Opyn, I built their trading interface with Next.js 14 and React Server Components. The frontend used shadcn/ui components based on Radix UI primitives with Tailwind CSS styling.",
|
|
100
|
+
"I implemented Ponder for blockchain data indexing, storing data in PostgreSQL via Supabase. Chain interactions were handled through viem/wagmi with Alchemy RPC endpoints.",
|
|
101
|
+
"The implementation prioritized type safety using Zod for schema validation, TanStack Query for data management, and nuqs for URL state handling."
|
|
100
102
|
]
|
|
101
103
|
},
|
|
102
104
|
// {
|
|
@@ -166,8 +168,7 @@ var projects = [
|
|
|
166
168
|
"Zod",
|
|
167
169
|
"nuqs",
|
|
168
170
|
"OpenAI",
|
|
169
|
-
"AI SDK"
|
|
170
|
-
"PostgreSQL"
|
|
171
|
+
"AI SDK"
|
|
171
172
|
],
|
|
172
173
|
type: [
|
|
173
174
|
"web3",
|
|
@@ -196,9 +197,9 @@ var projects = [
|
|
|
196
197
|
"Integrated AI SDK for internationalization automation and established an AI-driven development workflow using v0.dev, Anthropic Claude Sonnet, Cursor IDE, and SourceryAI."
|
|
197
198
|
],
|
|
198
199
|
story: [
|
|
199
|
-
"BitLauncher
|
|
200
|
-
"The
|
|
201
|
-
"
|
|
200
|
+
"BitLauncher is an AI and crypto launchpad platform providing access to AI startups through token sales and auctions. The platform uses a decentralized approach to make the investment process more accessible to participants.",
|
|
201
|
+
"The batch auction system creates a transparent environment for token sales, distributing tokens at a uniform price to reduce barriers in fundraising. I implemented Viem, Wagmi, and Supabase to build a responsive user interface and data layer.",
|
|
202
|
+
"I developed this project with the team behind bitcash.org, with whom I've been working since 2020. The platform facilitates token sales using blockchain technology while maintaining a focus on accessibility."
|
|
202
203
|
]
|
|
203
204
|
},
|
|
204
205
|
{
|
|
@@ -221,8 +222,7 @@ var projects = [
|
|
|
221
222
|
"Tailwind",
|
|
222
223
|
"TanStack Query",
|
|
223
224
|
"Zod",
|
|
224
|
-
"nuqs"
|
|
225
|
-
"PostgreSQL"
|
|
225
|
+
"nuqs"
|
|
226
226
|
],
|
|
227
227
|
type: ["ai", "oss", "featured", "frontend", "backend", "fullstack"],
|
|
228
228
|
link: "https://masterbots.ai",
|
|
@@ -235,15 +235,15 @@ var projects = [
|
|
|
235
235
|
"Integrated AI-driven development workflow using v0.dev, Anthropic Claude Sonnet, Cursor IDE, and SourceryAI."
|
|
236
236
|
],
|
|
237
237
|
story: [
|
|
238
|
-
"Masterbots.ai
|
|
239
|
-
"
|
|
240
|
-
"This project was
|
|
238
|
+
"Masterbots.ai focuses on domain-specific AI chatbots that go beyond basic information retrieval. The platform provides specialized conversational tools designed to handle more complex tasks than standard chatbots.",
|
|
239
|
+
"I integrated AI SDKs and developed specialized agents to enable features like automated internationalization and workflow optimization. These implementations allow the platform to better address diverse user requirements.",
|
|
240
|
+
"This project was built with the same team behind bitcash.org and bitlauncher.ai, continuing our collaborative work in AI and blockchain technologies. The platform combines AI capabilities with practical application design."
|
|
241
241
|
]
|
|
242
242
|
},
|
|
243
243
|
{
|
|
244
244
|
title: "ZTX",
|
|
245
245
|
slug: "ztx",
|
|
246
|
-
description: "ZTX
|
|
246
|
+
description: "ZTX is a web3 metaverse platform backed by Jump Crypto and ZEPETO (a subsidiary of Naver Z Corp with over 200M users). The platform enables creators to build, play, and earn through blockchain-based NFT trading.\n As a software consultant in the early stages of ZTX, I was responsible for developing the react app to host the metaverse and the WebGL/EVM wallet integration.",
|
|
247
247
|
tech: [
|
|
248
248
|
"WebGL",
|
|
249
249
|
"Ethereum",
|
|
@@ -267,15 +267,15 @@ var projects = [
|
|
|
267
267
|
"Implemented advanced analytics and reporting using Google Tag Manager."
|
|
268
268
|
],
|
|
269
269
|
story: [
|
|
270
|
-
"ZTX
|
|
271
|
-
"
|
|
272
|
-
"
|
|
270
|
+
"ZTX is a web3 metaverse platform that enables creators to build, play, and earn in a blockchain-integrated environment. As a software consultant during its early stages, I helped develop the React application hosting the metaverse experience.",
|
|
271
|
+
"I set up the initial architecture using Next.js, TailwindCSS, and Framer Motion to create the application foundation. I also built a WebGL EVM wallet connector with Ethers.js to enable NFT trading functionality within the platform.",
|
|
272
|
+
"The project is backed by Jump Crypto and ZEPETO and focuses on providing creators with blockchain technology integration. My work involved connecting frontend experiences with underlying blockchain capabilities."
|
|
273
273
|
]
|
|
274
274
|
},
|
|
275
275
|
{
|
|
276
276
|
title: "RareMint",
|
|
277
277
|
slug: "raremint",
|
|
278
|
-
description: "RareMint digitizes real-world sports collectibles as NFTs, offering
|
|
278
|
+
description: "RareMint digitizes authenticated real-world sports collectibles as NFTs on the Polygon network, offering fractional ownership and trading of high-value items. The platform partners with professional sports organizations to ensure authenticity.\n I led technical efforts at RareMint to enhance the NFT marketplace's performance and maintainability, including the integration with Polygon network for efficient NFT auctions.",
|
|
279
279
|
tech: [
|
|
280
280
|
"NextJS",
|
|
281
281
|
"EVM",
|
|
@@ -302,15 +302,15 @@ var projects = [
|
|
|
302
302
|
"Integrated Wallet Connect for secure transactions and improved user experience."
|
|
303
303
|
],
|
|
304
304
|
story: [
|
|
305
|
-
"RareMint
|
|
306
|
-
"
|
|
307
|
-
"
|
|
305
|
+
"RareMint digitizes real-world sports collectibles as NFTs for a digital collectible experience. As technical lead, I worked on improving the marketplace performance and maintainability.",
|
|
306
|
+
"I built an EVM NFT data indexer using Moralis streams, Node.js, and PostgreSQL for efficient data processing. I also refactored the marketplace using RemixRun SSR to improve performance and responsiveness.",
|
|
307
|
+
"The integration of Wallet Connect improved transaction security and user experience. My work focused on applying blockchain technology to create a functional digital collectibles platform."
|
|
308
308
|
]
|
|
309
309
|
},
|
|
310
310
|
{
|
|
311
311
|
title: "bitcashBank",
|
|
312
312
|
slug: "bitcashbank",
|
|
313
|
-
description: "Bitcash
|
|
313
|
+
description: "Bitcash is an established crypto banking platform with over 50,000 users across Latin America, handling millions in transaction volume through its regulated financial infrastructure. The platform integrates with local banking systems in multiple countries and features BitcashDAO for community governance of its decentralized finance products.\n At Bitcash, my role from the start focused on infrastructure design, tech recruitment, and developer training. I later transitioned to a consulting role to guide the platform's continuous adaptation and success.",
|
|
314
314
|
tech: [
|
|
315
315
|
"Antelope",
|
|
316
316
|
"C++",
|
|
@@ -347,15 +347,15 @@ var projects = [
|
|
|
347
347
|
"Developed robust GraphQL APIs for seamless blockchain data retrieval."
|
|
348
348
|
],
|
|
349
349
|
story: [
|
|
350
|
-
"BitcashBank is a
|
|
351
|
-
"As the
|
|
352
|
-
"
|
|
350
|
+
"BitcashBank is a platform for cryptocurrency transactions including buying, trading, depositing, and earning. My initial role involved designing the infrastructure, recruiting technical talent, and training developers to build a solid foundation.",
|
|
351
|
+
"As the project progressed, I moved to a consulting role to guide its development. I helped build and optimize BitcashDAO for community-based governance, making the platform more responsive to user requirements.",
|
|
352
|
+
"I developed chaingraph.io for real-time data updates and implemented WebAuthn integration with the EOSIO blockchain to create a 'walletless' experience. This implementation allowed for a progressive web app approach that improved security while avoiding app store constraints."
|
|
353
353
|
]
|
|
354
354
|
},
|
|
355
355
|
{
|
|
356
356
|
title: "Emanate",
|
|
357
357
|
slug: "emanate",
|
|
358
|
-
description: "Emanate is a
|
|
358
|
+
description: "Emanate is a blockchain-based music platform that raised over $2M in funding and partnered with major artists and labels. The platform features their native EMT token for artist payments and uses smart contracts to ensure transparent royalty distribution.\n At Emanate, I maintained the ReactJS web app streaming platform and developed back-office tools for artist revenue distribution, working with a distributed team across Australia, Europe, and the Americas.",
|
|
359
359
|
tech: ["ReactJS", "TypeScript", "EOS", "AWS", "Tailwind"],
|
|
360
360
|
type: ["web3", "contract", "featured", "frontend"],
|
|
361
361
|
link: "https://emanate.live",
|
|
@@ -367,15 +367,15 @@ var projects = [
|
|
|
367
367
|
"Integrated AWS cloud solutions for enhanced scalability."
|
|
368
368
|
],
|
|
369
369
|
story: [
|
|
370
|
-
"Emanate is a
|
|
371
|
-
"I
|
|
372
|
-
"
|
|
370
|
+
"Emanate is a Web3 network marketplace for the music industry that streamlines creation, distribution, and monetization. At Emanate, I maintained and optimized the ReactJS web app streaming platform for better performance.",
|
|
371
|
+
"I built back-office tools for artist revenue distribution, enabling more efficient payment processing. The system used blockchain technology to improve transparency and accuracy in financial transactions.",
|
|
372
|
+
"I also integrated AWS cloud solutions to enhance platform scalability for handling increased user activity and data processing. My work focused on applying technology to improve the music distribution process."
|
|
373
373
|
]
|
|
374
374
|
},
|
|
375
375
|
{
|
|
376
376
|
title: "Make Sense Labs",
|
|
377
377
|
slug: "make-sense-labs",
|
|
378
|
-
description: "Sense.chat, developed by Sense
|
|
378
|
+
description: "Sense.chat, developed by Sense/Make Sense Labs (backed by Tim Draper and other notable investors), was one of the first crypto messaging apps to implement self-sovereign identity and encrypted communications on blockchain. The app gained recognition at major tech conferences and blockchain events.\n My role at Sense involved enhancing the React Native app's performance and integrating it with the EOS mainnet for secure messaging and token functionality.",
|
|
379
379
|
tech: ["React Native", "TypeScript", "EOS"],
|
|
380
380
|
type: ["web3", "contract", "featured", "mobile"],
|
|
381
381
|
link: "https://www.youtube.com/watch?v=2DJxzYDaAz8",
|
|
@@ -387,9 +387,9 @@ var projects = [
|
|
|
387
387
|
"Enhanced security and privacy features for better user protection."
|
|
388
388
|
],
|
|
389
389
|
story: [
|
|
390
|
-
"At Make Sense Labs, I worked on Sense.chat, a secure chat and transaction app
|
|
391
|
-
"I
|
|
392
|
-
"
|
|
390
|
+
"At Make Sense Labs, I worked on Sense.chat, a secure chat and transaction app focusing on user data privacy. I improved the React Native app performance to create a more responsive experience.",
|
|
391
|
+
"I integrated the app with the EOS blockchain mainnet to enable secure transactions and token functionality. The implementation included a built-in wallet and token incentives for communities.",
|
|
392
|
+
"I also enhanced the app's security and privacy features to strengthen user data protection. The work combined mobile app optimization with blockchain integration."
|
|
393
393
|
]
|
|
394
394
|
},
|
|
395
395
|
{
|
|
@@ -417,15 +417,15 @@ var projects = [
|
|
|
417
417
|
"Designed an intuitive developer interface for querying multiple blockchain networks."
|
|
418
418
|
],
|
|
419
419
|
story: [
|
|
420
|
-
"ChainGraph
|
|
421
|
-
"As a personal side project
|
|
422
|
-
"The project
|
|
420
|
+
"ChainGraph is a real-time GraphQL toolkit for EOSIO/Antelope blockchain applications. It provides tools for data subscriptions and querying across multiple blockchains.",
|
|
421
|
+
"As a personal side project while working at Bitcash, I handled the architectural design, technology selection, and implementation. This included building a real-time blockchain data streaming package for data access.",
|
|
422
|
+
"The project is open-source and serves as a resource for developers working with EOSIO/Antelope blockchains. It addresses common data access challenges faced when working with these blockchain technologies."
|
|
423
423
|
]
|
|
424
424
|
},
|
|
425
425
|
{
|
|
426
426
|
title: "EOS Costa Rica",
|
|
427
427
|
slug: "eos-costa-rica",
|
|
428
|
-
description: "EOS Costa Rica
|
|
428
|
+
description: "EOS Costa Rica is a leading block producer and infrastructure provider for EOSIO/Antelope blockchains, maintaining critical network nodes and developing custom blockchain solutions. The company is recognized for its contributions to the EOS mainnet and enterprise blockchain implementations.\n Joining EOS Costa Rica at its inception, I played a key role in the EOS mainnet launch, managed validators for multiple networks, and helped establish the custom development services division. My major contribution included leading the architecture for a custom private blockchain for Grant Thornton.",
|
|
429
429
|
tech: [
|
|
430
430
|
"EOS",
|
|
431
431
|
"C++",
|
|
@@ -460,9 +460,9 @@ var projects = [
|
|
|
460
460
|
"Managed validator nodes across multiple EOSIO-based networks."
|
|
461
461
|
],
|
|
462
462
|
story: [
|
|
463
|
-
"Joining EOS Costa Rica at its inception, I
|
|
464
|
-
"As
|
|
465
|
-
"I
|
|
463
|
+
"Joining EOS Costa Rica at its inception, I helped launch the EOS mainnet and managed validator nodes across multiple EOSIO-based networks to maintain blockchain stability and security.",
|
|
464
|
+
"As main architect and tech lead, I built a team and designed the architecture for Grant Thornton's custom private blockchain using Azure, Terraform, EOSIO, and a React client. This implementation provided an enterprise blockchain solution tailored to specific requirements.",
|
|
465
|
+
"I also managed open source software development and developer relations to build community engagement. My work at EOS Costa Rica included establishing the custom development services division and expanding technical capabilities within the organization."
|
|
466
466
|
]
|
|
467
467
|
},
|
|
468
468
|
{
|
|
@@ -490,15 +490,15 @@ var projects = [
|
|
|
490
490
|
"Developed a GraphQL API for seamless data retrieval and user interaction."
|
|
491
491
|
],
|
|
492
492
|
story: [
|
|
493
|
-
"EOS Rate
|
|
494
|
-
"I was responsible for the technical architecture and
|
|
495
|
-
"The project
|
|
493
|
+
"EOS Rate is a community-driven tool for rating EOS Block Producers, using a radial graph interface and storing ratings on the blockchain. The tool promotes transparency and accountability in the EOS ecosystem.",
|
|
494
|
+
"I was responsible for designing the technical architecture and selecting appropriate technologies to build a robust platform. The implementation includes a decentralized rating system with an intuitive visualization interface.",
|
|
495
|
+
"The project combines blockchain technology with user-centered design to create a practical tool for the community. EOS Rate provides a resource for EOS participants to make more informed decisions about Block Producers based on community ratings."
|
|
496
496
|
]
|
|
497
497
|
},
|
|
498
498
|
{
|
|
499
499
|
title: "Fantasy Top Shots",
|
|
500
500
|
slug: "fantasy-top-shots",
|
|
501
|
-
description: "
|
|
501
|
+
description: "This mobile app game built on NBA Top Shot NFTs was developed for the 2022 Flow Hackathon. It integrates with NBA Top Shot's marketplace, which has processed over $1B in NFT transactions and is officially licensed by the NBA. The game received recognition at the Flow Hackathon among hundreds of participating projects.\n My contribution to this project was in the game's design and development, utilizing my skills in blockchain technology and mobile app development.",
|
|
502
502
|
tech: ["Flow", "NFT", "ReactJS", "Expo", "Tailwind", "TypeScript"],
|
|
503
503
|
type: ["web3", "hackathon", "featured", "mobile"],
|
|
504
504
|
link: "https://fantasy-top-shot.vercel.app",
|
|
@@ -511,15 +511,15 @@ var projects = [
|
|
|
511
511
|
"Implemented responsive UI and smooth gameplay mechanics using React Native and Expo."
|
|
512
512
|
],
|
|
513
513
|
story: [
|
|
514
|
-
"Fantasy Top Shots was
|
|
515
|
-
"My role
|
|
516
|
-
"
|
|
514
|
+
"Fantasy Top Shots was built for the 2022 Flow Hackathon as a mobile game using NBA Top Shot NFTs. The game allows users to utilize their NFT collections in a fantasy sports format.",
|
|
515
|
+
"My role included both design and development, applying blockchain and mobile app development skills. The implementation uses Flow blockchain for NFT transaction handling within the game experience.",
|
|
516
|
+
"This collaborative project with the Bitlauncher team explores the intersection of blockchain technology and mobile gaming. It provides NFT owners with additional utility for their digital assets through practical gameplay mechanics."
|
|
517
517
|
]
|
|
518
518
|
},
|
|
519
519
|
{
|
|
520
520
|
title: "Substrate Contracts UI",
|
|
521
521
|
slug: "substrate-contracts-ui",
|
|
522
|
-
description: "Substrate Contracts UI is a
|
|
522
|
+
description: "Substrate Contracts UI is a key developer tool maintained by Parity Technologies (founded by Ethereum co-founder Dr. Gavin Wood) for the Polkadot ecosystem, which has a market cap exceeding $7B. The UI simplifies WASM smart contract deployment and interaction on Substrate-based blockchains used by dozens of major projects.\n I contributed to the project by enhancing code quality through multiple open-source contributions and gained experience in building dApps with Substrate.",
|
|
523
523
|
tech: ["Polkadot", "Substrate", "ReactJS", "Tailwind", "TypeScript"],
|
|
524
524
|
type: ["web3", "oss", "frontend"],
|
|
525
525
|
link: "https://contracts-ui.substrate.io/",
|
|
@@ -531,15 +531,15 @@ var projects = [
|
|
|
531
531
|
"Gained extensive experience in building dApps on the Substrate framework."
|
|
532
532
|
],
|
|
533
533
|
story: [
|
|
534
|
-
"Substrate Contracts UI is a web application
|
|
535
|
-
"I developed UI components
|
|
536
|
-
"I
|
|
534
|
+
"Substrate Contracts UI is a web application for deploying and interacting with WASM smart contracts on Substrate blockchains. I contributed to the project by making open-source improvements to enhance code quality and performance.",
|
|
535
|
+
"I developed UI components for interacting with WASM smart contracts to improve usability and efficiency. This work provided practical experience in building decentralized applications on the Substrate framework.",
|
|
536
|
+
"I made these contributions while learning about Polkadot's ecosystem and exploring their protocol and smart contract development. The project demonstrates open-source contribution to blockchain developer tooling and complements my experience with other blockchain technologies."
|
|
537
537
|
]
|
|
538
538
|
},
|
|
539
539
|
{
|
|
540
540
|
title: "Wizard World",
|
|
541
541
|
slug: "wizard-world",
|
|
542
|
-
description: "
|
|
542
|
+
description: "Wizart.world is a groundbreaking platform at the intersection of AI and blockchain that connects to OpenAI's DALL-E models to generate AI images and mint them as NFTs on the Flow blockchain. Developed during the Flow Hackathon 2022, the project was among the first to combine generative AI with blockchain-based ownership rights for digital art.\n My role involved the app's development, focusing on integrating OpenAI's models for image generation and ensuring smooth functionality with the Flow blockchain through Niftory's NFT infrastructure.",
|
|
543
543
|
tech: [
|
|
544
544
|
"NextJS",
|
|
545
545
|
"ReactJS",
|
|
@@ -562,9 +562,9 @@ var projects = [
|
|
|
562
562
|
"Integrated the Flow blockchain for seamless NFT minting and storage."
|
|
563
563
|
],
|
|
564
564
|
story: [
|
|
565
|
-
"Wizard World
|
|
566
|
-
"
|
|
567
|
-
"The project
|
|
565
|
+
"Wizard World is a progressive web app that connects to OpenAI's LLM models to generate AI images and mint them on the Flow blockchain. We developed it for the Flow Hackathon 2022 with the Bitlauncher team.",
|
|
566
|
+
"I worked on the app development, focusing on integrating OpenAI's models for image generation and implementing Flow blockchain functionality. The integration enables users to create images with AI and mint them as NFTs in a streamlined process.",
|
|
567
|
+
"The project combines AI and blockchain technologies to create a practical application for digital content creation. It demonstrates how AI-generated art can be incorporated into blockchain-based ownership systems."
|
|
568
568
|
]
|
|
569
569
|
},
|
|
570
570
|
{
|
|
@@ -591,15 +591,15 @@ var projects = [
|
|
|
591
591
|
"Implemented a seamless GraphQL API for improved data interactions."
|
|
592
592
|
],
|
|
593
593
|
story: [
|
|
594
|
-
"dBoard
|
|
595
|
-
"The
|
|
596
|
-
"
|
|
594
|
+
"dBoard is a DAO decision-making and community management tool that allows stakeholders to strategize, debate, and vote on organizational actions. I oversaw the technical architecture and led smart contract development and integration.",
|
|
595
|
+
"The implementation uses Antelope blockchain and Next.js to create a decentralized governance platform. The smart contracts provide secure and transparent community voting mechanisms to enhance trust among participants.",
|
|
596
|
+
"I built a GraphQL API to improve data access and analysis for stakeholders. The project focuses on providing practical tools for DAOs to operate more efficiently and make collective decisions."
|
|
597
597
|
]
|
|
598
598
|
},
|
|
599
599
|
{
|
|
600
600
|
title: "Knowledge.io",
|
|
601
601
|
slug: "knowledge-io",
|
|
602
|
-
description: "Knowledge
|
|
602
|
+
description: "Knowledge.io was one of the first blockchain platforms aimed at knowledge-sharing with a token-based reward system. The project successfully completed its ICO in 2018, raising funds to build a decentralized knowledge ecosystem that included partnerships with advertising networks to monetize user expertise.\n My role at Knowledge included leading the architecture of the Ethereum-based token and supporting systems for their successful ICO, and forming a skilled development team across three countries.",
|
|
603
603
|
tech: [
|
|
604
604
|
"TypeScript",
|
|
605
605
|
"Ethereum",
|
|
@@ -624,9 +624,9 @@ var projects = [
|
|
|
624
624
|
"Built a scalable serverless infrastructure to support the platform's growth."
|
|
625
625
|
],
|
|
626
626
|
story: [
|
|
627
|
-
"Knowledge
|
|
628
|
-
"I designed and implemented smart contracts
|
|
629
|
-
"
|
|
627
|
+
"Knowledge is a platform that rewards users for sharing information through a token system. My role included leading the architecture of the token and supporting systems for a successful ICO.",
|
|
628
|
+
"I designed and implemented smart contracts for token rewards and transactions to create a secure and efficient system. I also built a serverless infrastructure using AWS to support the platform operations.",
|
|
629
|
+
"I formed a development team with the necessary technical skills to implement the project requirements. The work focused on applying blockchain technology to create a functional token-based incentive system."
|
|
630
630
|
]
|
|
631
631
|
},
|
|
632
632
|
{
|
|
@@ -661,15 +661,15 @@ var projects = [
|
|
|
661
661
|
"Designed and implemented biometric authentication for enhanced security."
|
|
662
662
|
],
|
|
663
663
|
story: [
|
|
664
|
-
"Wink
|
|
665
|
-
"
|
|
666
|
-
"The project
|
|
664
|
+
"Wink is Costa Rica's first neo-bank, offering a mobile app for online banking without physical branch visits. I developed the first version of their mobile app and backend services within AWS.",
|
|
665
|
+
"My responsibilities included technology selection, project planning, and coordinating API integration with partner banks. I implemented biometric authentication to enhance security while keeping the user experience streamlined.",
|
|
666
|
+
"The project required forming a development team with the necessary skills to implement the technical requirements. This work applied mobile and cloud technologies to create a digital banking solution for the Costa Rican market."
|
|
667
667
|
]
|
|
668
668
|
},
|
|
669
669
|
{
|
|
670
670
|
title: "American Express",
|
|
671
671
|
slug: "american-express",
|
|
672
|
-
description: "
|
|
672
|
+
description: "American Express, a Fortune 100 company with over 100M cardmembers globally and $180B+ in annual revenue, operates one of the world's largest payment networks. Their website serves millions of users daily for account management and financial services.\n My responsibility was focused on front-end development, including Object-Oriented JavaScript, AJAX for a fluid user experience, and implementing A/B Testing and usage analytics.",
|
|
673
673
|
image: "https://gaboesquivel.com/images/work/amex.jpg",
|
|
674
674
|
link: "https://www.americanexpress.com/",
|
|
675
675
|
tech: [
|
|
@@ -688,9 +688,9 @@ var projects = [
|
|
|
688
688
|
"Developed analytics integrations to track usage and improve performance."
|
|
689
689
|
],
|
|
690
690
|
story: [
|
|
691
|
-
"At American Express, I
|
|
692
|
-
"I implemented A/B testing
|
|
693
|
-
"The project
|
|
691
|
+
"At American Express, I worked on front-end development for their website where cardmembers manage financial accounts. I used Object-Oriented JavaScript and AJAX techniques to create a responsive user experience.",
|
|
692
|
+
"I implemented A/B testing to optimize engagement and integrated analytics for tracking usage patterns and performance. This work required understanding user needs and translating them into functional interfaces.",
|
|
693
|
+
"The project involved contributing to a financial platform used by millions of cardmembers daily. My development work focused on making account management more intuitive and accessible through the web interface."
|
|
694
694
|
]
|
|
695
695
|
},
|
|
696
696
|
{
|
|
@@ -707,15 +707,15 @@ var projects = [
|
|
|
707
707
|
"Optimized page performance to improve load times and accessibility."
|
|
708
708
|
],
|
|
709
709
|
story: [
|
|
710
|
-
"The
|
|
711
|
-
"
|
|
712
|
-
"The project
|
|
710
|
+
"The National Money Night Talk by American Express promoted financial communication between parents and teenagers. As a Frontend Engineer, I developed the campaign's landing page focusing on user engagement and information delivery.",
|
|
711
|
+
"I created a user-friendly interface with easy navigation and interaction features. The implementation used responsive design techniques to provide consistent experiences across different devices.",
|
|
712
|
+
"The project supported American Express's financial literacy initiative for families. The landing page needed to effectively present information while encouraging participation in the campaign."
|
|
713
713
|
]
|
|
714
714
|
},
|
|
715
715
|
{
|
|
716
716
|
title: "Elder Scrolls Online",
|
|
717
717
|
slug: "elder-scrolls-online",
|
|
718
|
-
description: "The official website serves as a central hub for
|
|
718
|
+
description: "Elder Scrolls Online, developed by ZeniMax Online Studios and published by Bethesda Softworks, is a massively multiplayer online game with over 20 million players. The official website serves as a central hub for this large gaming community, offering news, game guides, and forums.\n My role was to ensure a user-centric design for the website, facilitating easy navigation and engagement with the content for millions of monthly visitors.",
|
|
719
719
|
tech: ["PHP", "JavaScript", "jQuery", "Facebook API", "Twitter API"],
|
|
720
720
|
type: ["contract", "featured", "frontend"],
|
|
721
721
|
link: "http://elderscrollsonline.com",
|
|
@@ -726,9 +726,9 @@ var projects = [
|
|
|
726
726
|
"Integrated social media features to enhance community engagement."
|
|
727
727
|
],
|
|
728
728
|
story: [
|
|
729
|
-
"The
|
|
730
|
-
"I
|
|
731
|
-
"
|
|
729
|
+
"The official website serves as a central hub for a gaming community, offering news, game guides, and forums. My role was to ensure a user-centric design for the website, facilitating easy navigation and engagement with the content.",
|
|
730
|
+
"I worked on balancing visual design with functionality to meet the needs of the gaming community. This included optimizing navigation paths and integrating social media features to improve user experience.",
|
|
731
|
+
"The project required understanding gaming community needs and developing appropriate web interfaces. The implementation created an online space where players could access information and connect with others in the community."
|
|
732
732
|
]
|
|
733
733
|
},
|
|
734
734
|
{
|
|
@@ -753,9 +753,9 @@ var projects = [
|
|
|
753
753
|
"Implemented Facebook API features for user engagement and monetization."
|
|
754
754
|
],
|
|
755
755
|
story: [
|
|
756
|
-
"
|
|
757
|
-
"I
|
|
758
|
-
"
|
|
756
|
+
"An online movie streaming service allows watching movies in chapters with detailed information and interactive games. I was responsible for the frontend architecture design, integrating the game app with Facebook and the backoffice system with Brightcove web services for video streaming and editing.",
|
|
757
|
+
"I built a scalable and interactive platform that focused on user engagement through video playback and social features. The implementation used the Brightcove API for streaming functionality and content management.",
|
|
758
|
+
"The project combined entertainment content with technical features to create an interactive viewing experience. The integration with Facebook's platform allowed for social sharing and user identification within the application."
|
|
759
759
|
]
|
|
760
760
|
},
|
|
761
761
|
{
|
|
@@ -765,16 +765,16 @@ var projects = [
|
|
|
765
765
|
link: "http://tikr.com",
|
|
766
766
|
image: "https://gaboesquivel.com/images/work/tikr.jpg",
|
|
767
767
|
type: ["contract", "featured", "frontend"],
|
|
768
|
-
tech: ["Ruby on Rails", "Spree", "Heroku", "
|
|
768
|
+
tech: ["Ruby on Rails", "Spree", "Heroku", "PostgreSQL", "jQuery", "SASS"],
|
|
769
769
|
achievements: [
|
|
770
770
|
"Developed a dynamic pricing engine using Spree and Ruby on Rails.",
|
|
771
771
|
"Implemented a real-time price fluctuation system for enhanced user engagement.",
|
|
772
772
|
"Optimized backend performance on Heroku with PostgreSQL integration."
|
|
773
773
|
],
|
|
774
774
|
story: [
|
|
775
|
-
"Tikr
|
|
776
|
-
"I
|
|
777
|
-
"The
|
|
775
|
+
"Tikr is an online store with dynamic, real-time fluctuating prices, offering a unique shopping experience. It operates on the Ruby on Rails-based Spree backend framework. My role at Tikr encompassed full-stack development with a focus on frontend development and customization of the Spree backend.",
|
|
776
|
+
"I built a dynamic pricing engine using Spree and Ruby on Rails that enabled real-time price changes. This feature created a more interactive shopping experience for users.",
|
|
777
|
+
"The implementation included optimizing backend performance on Heroku with PostgreSQL database integration. The work combined e-commerce fundamentals with custom pricing mechanisms to create a distinctive online shopping platform."
|
|
778
778
|
]
|
|
779
779
|
},
|
|
780
780
|
{
|
|
@@ -801,15 +801,15 @@ var projects = [
|
|
|
801
801
|
"Developed a full-stack solution using Node.js, MongoDB, and AngularJS."
|
|
802
802
|
],
|
|
803
803
|
story: [
|
|
804
|
-
"
|
|
805
|
-
"I
|
|
806
|
-
"The
|
|
804
|
+
"I developed an SMS subscription system for curated dishes from New York City's restaurants. The system provided a direct connection between diners and restaurant offerings via mobile technology.",
|
|
805
|
+
"I built the application using Node.js, Express.js, and AngularJS, integrating Twilio for text messaging functionality. Users received restaurant recommendations through SMS, making discovery more accessible.",
|
|
806
|
+
"The implementation included Stripe for payment processing and Heroku for hosting and scalability. This project combined mobile messaging with restaurant promotion to create a unique food discovery service."
|
|
807
807
|
]
|
|
808
808
|
},
|
|
809
809
|
{
|
|
810
810
|
title: "Jockey Hollow Bar and Kitchen",
|
|
811
811
|
slug: "jockey-hollow-bar-and-kitchen",
|
|
812
|
-
description: "Jockey Hollow Bar and Kitchen, located in
|
|
812
|
+
description: "Jockey Hollow Bar and Kitchen, located in Morristown's historic Vail Mansion (built 1917), is a renowned multi-concept restaurant by acclaimed restaurateur Chris Cannon. The venue features The Oyster Bar, The Vail Bar, The Dining Room, and The Rathskeller, earning recognition from The New York Times and other major publications.\n My work focused on developing the main responsive landing page, ensuring an inviting and informative digital gateway to the restaurant's offerings.",
|
|
813
813
|
tech: [
|
|
814
814
|
"SASS",
|
|
815
815
|
"jQuery",
|
|
@@ -829,9 +829,9 @@ var projects = [
|
|
|
829
829
|
"Integrated dynamic content features to showcase the restaurant's offerings effectively."
|
|
830
830
|
],
|
|
831
831
|
story: [
|
|
832
|
-
"Jockey Hollow Bar and Kitchen
|
|
833
|
-
"I
|
|
834
|
-
"The
|
|
832
|
+
"Jockey Hollow Bar and Kitchen, located in a historic mansion, features four distinct dining concepts. I developed their responsive landing page as an informative gateway to the restaurant's offerings.",
|
|
833
|
+
"I built a user-friendly interface that highlighted the venue's unique features and dining options. The implementation focused on performance optimization to ensure smooth navigation and exploration.",
|
|
834
|
+
"The page included dynamic content areas to showcase menus and events effectively. My development work created a functional online presence that accurately represented the restaurant's physical spaces and dining options."
|
|
835
835
|
]
|
|
836
836
|
},
|
|
837
837
|
{
|
|
@@ -857,9 +857,9 @@ var projects = [
|
|
|
857
857
|
"Optimized app performance for smooth operation on tablet devices."
|
|
858
858
|
],
|
|
859
859
|
story: [
|
|
860
|
-
"
|
|
861
|
-
"The app integrates with Google Spreadsheets
|
|
862
|
-
"
|
|
860
|
+
"At Jockey Hollow Bar & Kitchen, I developed the Menu Kiosk App, a responsive web application for tablet kiosks. It simplifies menu selection for patrons and uses Google Spreadsheets for easy updates.",
|
|
861
|
+
"The app integrates with Google Spreadsheets for real-time menu management, allowing staff to keep information current and accurate. This implementation addresses the frequent menu changes common in restaurants.",
|
|
862
|
+
"As the sole developer, I created an intuitive interface optimized for tablet performance. The kiosk application streamlined the dining experience while providing an efficient solution for displaying menu items."
|
|
863
863
|
]
|
|
864
864
|
},
|
|
865
865
|
{
|
|
@@ -876,15 +876,15 @@ var projects = [
|
|
|
876
876
|
"Optimized site performance for faster product browsing."
|
|
877
877
|
],
|
|
878
878
|
story: [
|
|
879
|
-
"Bureau of Trade (Beta)
|
|
880
|
-
"I
|
|
881
|
-
"The
|
|
879
|
+
"Bureau of Trade (Beta) is an online store offering a range of products, with a frontend integrated with eBay's API for diverse shopping experiences. As the sole Fullstack developer, my focus was on frontend development, responsive design, and animations, along with eBay API integration.",
|
|
880
|
+
"I built UI animations to enhance user interaction while ensuring the platform remained functional. The eBay API integration expanded product availability without requiring direct inventory management.",
|
|
881
|
+
"The implementation included performance optimization for faster product browsing and page transitions. My work centered on creating a responsive e-commerce interface that could handle product data from external APIs effectively."
|
|
882
882
|
]
|
|
883
883
|
},
|
|
884
884
|
{
|
|
885
885
|
title: "Tractor Supply",
|
|
886
886
|
slug: "tractor-supply",
|
|
887
|
-
description: "
|
|
887
|
+
description: "Tractor Supply Company, a Fortune 500 company with over 2,000 stores and $10B+ in annual revenue, is America's largest rural lifestyle retailer. Their mobile app serves millions of customers with features like product browsing, exclusive offers, account management, and augmented reality product previews.\n As a consultant, I enhanced the app's performance and code quality, and developed its augmented reality feature, improving user experience and engagement.",
|
|
888
888
|
tech: [
|
|
889
889
|
"React Native",
|
|
890
890
|
"ReactJS",
|
|
@@ -903,8 +903,8 @@ var projects = [
|
|
|
903
903
|
"Implemented TypeScript for improved maintainability and scalability."
|
|
904
904
|
],
|
|
905
905
|
story: [
|
|
906
|
-
"
|
|
907
|
-
"
|
|
906
|
+
"The Tractor Supply mobile app offers features like product browsing, exclusive offers, account management, and an augmented reality feature for product previews. As a consultant, I enhanced the app's performance and code quality, and developed its augmented reality feature, improving user experience and engagement.",
|
|
907
|
+
"I implemented TypeScript to improve code maintainability and scalability, ensuring the app could adapt to future requirements. My work focused on technical improvements and feature development for their existing React Native application."
|
|
908
908
|
]
|
|
909
909
|
},
|
|
910
910
|
{
|
|
@@ -921,9 +921,9 @@ var projects = [
|
|
|
921
921
|
"Implemented AWS infrastructure for scalable cloud storage and processing."
|
|
922
922
|
],
|
|
923
923
|
story: [
|
|
924
|
-
"MyPhoto.com is an online platform
|
|
925
|
-
"My role encompassed technical direction and execution,
|
|
926
|
-
"
|
|
924
|
+
"MyPhoto.com is an online platform for creating personalized photo products. I led the development of an innovative photo editor app and backend services integrated with existing e-commerce systems.",
|
|
925
|
+
"My leadership role encompassed technical direction and execution, focusing on creating a smooth and intuitive user experience. I built the photo editor application with seamless e-commerce integration and implemented AWS infrastructure for cloud storage and image processing.",
|
|
926
|
+
"The project required balancing technical requirements with usability considerations for customers creating custom photo products. My work delivered a functional photo customization solution integrated with e-commerce capabilities."
|
|
927
927
|
]
|
|
928
928
|
},
|
|
929
929
|
{
|
|
@@ -940,15 +940,15 @@ var projects = [
|
|
|
940
940
|
"Implemented secure API endpoints for efficient data communication."
|
|
941
941
|
],
|
|
942
942
|
story: [
|
|
943
|
-
"The 4Tius
|
|
944
|
-
"I
|
|
945
|
-
"
|
|
943
|
+
"The 4Tius app is a centralized platform for monitoring fitness data, integrating with Fitbit. It includes a web dashboard and API. As a Fullstack software engineer, I led the development of both the web application and backend systems, ensuring seamless integration and user-friendly functionality.",
|
|
944
|
+
"I designed a responsive web dashboard for real-time fitness analytics and monitoring, allowing users to track their progress effectively. The Fitbit integration ensured accurate and current data throughout the application.",
|
|
945
|
+
"The implementation included secure API endpoints for efficient communication between the app and fitness devices. The project focused on making fitness data more accessible and actionable for users through technology."
|
|
946
946
|
]
|
|
947
947
|
},
|
|
948
948
|
{
|
|
949
949
|
title: "SunTrust",
|
|
950
950
|
slug: "suntrust",
|
|
951
|
-
description: "SunTrust
|
|
951
|
+
description: "SunTrust (now Truist after merging with BB&T), was a major financial institution with over $220B in assets serving 4.5M+ households. Their Solid Salutes campaign was a key digital initiative to strengthen community engagement and brand loyalty.\n I developed the entire campaign website, focusing on design and user interaction. My role included overseeing the website's development from concept to implementation, emphasizing user engagement and visual appeal.",
|
|
952
952
|
link: "#",
|
|
953
953
|
image: "https://gaboesquivel.com/images/work/suntrust-1.jpg",
|
|
954
954
|
tech: ["JavaScript", "CSS"],
|
|
@@ -959,15 +959,15 @@ var projects = [
|
|
|
959
959
|
"Implemented visually appealing UI/UX elements to enhance storytelling."
|
|
960
960
|
],
|
|
961
961
|
story: [
|
|
962
|
-
"
|
|
963
|
-
"My role
|
|
964
|
-
"The project
|
|
962
|
+
"SunTrust's Solid Salutes campaign facilitated user-generated custom video salutes. I developed the entire campaign website, focusing on design and user interaction.",
|
|
963
|
+
"My role included overseeing the website's development from concept to implementation, ensuring visual appeal and seamless user interaction. I optimized performance to handle expected traffic and improve engagement.",
|
|
964
|
+
"The project required creating a platform that encouraged participation while maintaining brand consistency. The implementation enabled users to create and share personalized content within the campaign framework."
|
|
965
965
|
]
|
|
966
966
|
},
|
|
967
967
|
{
|
|
968
968
|
title: "ScotiaTico",
|
|
969
969
|
slug: "scotiatico",
|
|
970
|
-
description: "
|
|
970
|
+
description: "Scotiabank, a top 5 Canadian bank with over $1T in assets and operations in 50+ countries, maintains a significant presence in Costa Rica through its ScotiaBank Costa Rica division. Their customer communication initiatives are critical to maintaining their 25M+ global customer relationships.\n I developed the ScotiaTico newsletter, a key communication tool for bank updates and information. My responsibility was crafting an engaging and informative newsletter layout, enhancing communication between the bank and its customers.",
|
|
971
971
|
link: "#",
|
|
972
972
|
image: "https://gaboesquivel.com/images/work/scotiatico.jpg",
|
|
973
973
|
tech: ["JavaScript", "CSS", "Wordpress"],
|
|
@@ -978,15 +978,15 @@ var projects = [
|
|
|
978
978
|
"Implemented Wordpress CMS for easy content management and updates."
|
|
979
979
|
],
|
|
980
980
|
story: [
|
|
981
|
-
"
|
|
982
|
-
"
|
|
983
|
-
"
|
|
981
|
+
"For ScotiaBank Costa Rica, I developed the ScotiaTico newsletter, a communication tool for bank updates and information. My responsibility was crafting an engaging and informative newsletter layout, enhancing communication between the bank and its customers.",
|
|
982
|
+
"I focused on creating a visually appealing and responsive design to improve customer engagement and ensure cross-device accessibility. This project was completed while working at IntergraphiDesign, my first development job.",
|
|
983
|
+
"The implementation used Wordpress CMS for easy content management and updates, allowing the bank to efficiently maintain the newsletter. The project applied web development skills to create a practical communication tool for a financial institution."
|
|
984
984
|
]
|
|
985
985
|
},
|
|
986
986
|
{
|
|
987
987
|
title: "Staples",
|
|
988
988
|
slug: "staples",
|
|
989
|
-
description: "
|
|
989
|
+
description: "Staples, a Fortune 500 company with over $20B in annual revenue, is one of the world's largest office supply retailers with 1000+ stores and a major e-commerce presence serving millions of customers. Their website processes billions in online sales annually.\n My role as a frontend developer involved creating user-friendly and efficient navigation elements, contributing to the overall user experience on their e-commerce platform.",
|
|
990
990
|
link: "#",
|
|
991
991
|
image: "https://gaboesquivel.com/images/work/staples.jpg",
|
|
992
992
|
tech: ["JavaScript", "CSS", "Mootools"],
|
|
@@ -997,15 +997,15 @@ var projects = [
|
|
|
997
997
|
"Optimized front-end performance for faster load times."
|
|
998
998
|
],
|
|
999
999
|
story: [
|
|
1000
|
-
"
|
|
1001
|
-
"I
|
|
1002
|
-
"This freelance project
|
|
1000
|
+
"At Staples, a retail store for office supplies, I worked on building responsive features and the main website navigation. My role as a frontend developer involved creating user-friendly and efficient navigation elements, contributing to the overall user experience on the website.",
|
|
1001
|
+
"I developed responsive UI components to improve accessibility across different devices and screen sizes. The work included performance optimization to reduce load times and enhance usability.",
|
|
1002
|
+
"This freelance project required applying web development skills to improve an established e-commerce platform. The implementation focused on practical improvements to navigation and responsive design."
|
|
1003
1003
|
]
|
|
1004
1004
|
},
|
|
1005
1005
|
{
|
|
1006
1006
|
title: "Gridium",
|
|
1007
1007
|
slug: "gridium",
|
|
1008
|
-
description: "Gridium is
|
|
1008
|
+
description: "Gridium is a recognized provider of energy analytics software for commercial buildings, helping facility managers optimize energy usage and reduce costs through data-driven insights. Their platform processes data from thousands of buildings to identify savings opportunities.\n I built the first version of the application, focusing on displaying data collected from various buildings.",
|
|
1009
1009
|
link: "https://gridium.com/",
|
|
1010
1010
|
image: "https://gaboesquivel.com/images/work/gridium.png",
|
|
1011
1011
|
tech: ["JavaScript", "Data Charts", "CSS", "Bootstrap", "Heroku"],
|
|
@@ -1016,15 +1016,15 @@ var projects = [
|
|
|
1016
1016
|
"Optimized UI/UX for better readability and user engagement."
|
|
1017
1017
|
],
|
|
1018
1018
|
story: [
|
|
1019
|
-
"
|
|
1020
|
-
"
|
|
1021
|
-
"
|
|
1019
|
+
"Gridium is an energy data analytics prototype for visualizing and analyzing energy consumption. It aids in informed energy management decisions. I built the first version of the application, focusing on displaying data collected from various buildings.",
|
|
1020
|
+
"The implementation included interactive charts for monitoring energy usage patterns in real-time. These visualizations helped users identify trends and anomalies in their energy consumption data.",
|
|
1021
|
+
"I optimized the UI/UX for better readability and engagement, ensuring users could easily interpret the presented data. The project applied data visualization techniques to make energy consumption information more accessible and actionable."
|
|
1022
1022
|
]
|
|
1023
1023
|
},
|
|
1024
1024
|
{
|
|
1025
1025
|
title: "ARINC Microfids",
|
|
1026
1026
|
slug: "arinc-microfids",
|
|
1027
|
-
description: "ARINC
|
|
1027
|
+
description: "ARINC, now part of Collins Aerospace (a Raytheon Technologies subsidiary), is an industry leader in aviation communications and information technology serving 80% of the world's airports. Their Microfids system provides real-time flight information displays for hotels and airport businesses globally.\n My responsibilities included frontend development and system integration, ensuring a seamless display of flight information through a Ruby on Rails backend.",
|
|
1028
1028
|
image: "https://gaboesquivel.com/images/work/arinc.png",
|
|
1029
1029
|
tech: ["Ruby on Rails", "AngularJS", "Faye", "LESS", "Heroku"],
|
|
1030
1030
|
type: ["contract", "frontend"],
|
|
@@ -1034,9 +1034,9 @@ var projects = [
|
|
|
1034
1034
|
"Optimized front-end performance for real-time user interaction."
|
|
1035
1035
|
],
|
|
1036
1036
|
story: [
|
|
1037
|
-
"
|
|
1038
|
-
"
|
|
1039
|
-
"
|
|
1037
|
+
"ARINC Microfids is a flight information display system for hotels and airport businesses. It integrates with a Ruby on Rails backend. My responsibilities included frontend development and system integration, ensuring a seamless display of flight information.",
|
|
1038
|
+
"I integrated the Ruby on Rails backend with AngularJS to enable real-time data updates and user interaction. The system provides accurate and timely flight information to travelers.",
|
|
1039
|
+
"The implementation used Faye for real-time messaging and data synchronization. This project applied web development skills to create a practical information display system for the travel industry."
|
|
1040
1040
|
]
|
|
1041
1041
|
},
|
|
1042
1042
|
{
|
|
@@ -1053,9 +1053,9 @@ var projects = [
|
|
|
1053
1053
|
"Optimized site performance for a seamless user experience."
|
|
1054
1054
|
],
|
|
1055
1055
|
story: [
|
|
1056
|
-
"
|
|
1057
|
-
"
|
|
1058
|
-
"This project
|
|
1056
|
+
"Capoeira Aboli\xE7\xE3o is a Brazilian martial arts group. I volunteered to create their promotional website, showcasing their professors and community. My involvement included website design and development, highlighting the group's activities and global presence.",
|
|
1057
|
+
"I built a responsive website using JavaScript, WordPress, CSS, and Bootstrap to create an engaging online presence. The site featured interactive elements to highlight community events and Capoeira fundamentals.",
|
|
1058
|
+
"This volunteer project combined my web development skills with my personal involvement in the Capoeira community. The implementation served as a resource for both existing members and potential new students interested in the martial art."
|
|
1059
1059
|
]
|
|
1060
1060
|
},
|
|
1061
1061
|
{
|
|
@@ -1072,9 +1072,9 @@ var projects = [
|
|
|
1072
1072
|
"Enhanced UI/UX for a smooth and intuitive user experience."
|
|
1073
1073
|
],
|
|
1074
1074
|
story: [
|
|
1075
|
-
"
|
|
1076
|
-
"I
|
|
1077
|
-
"This freelance project
|
|
1075
|
+
"Panini, a project I worked on, provided a unique service or product in its field. My role in this project was focused on technical development and implementation.",
|
|
1076
|
+
"I optimized website performance and ensured cross-browser compatibility for a consistent user experience. The work included UI/UX improvements to create an intuitive interface for better user engagement.",
|
|
1077
|
+
"This freelance project applied web development techniques to fulfill specific client requirements. The implementation delivered functional improvements while maintaining brand consistency."
|
|
1078
1078
|
]
|
|
1079
1079
|
},
|
|
1080
1080
|
{
|
|
@@ -1091,9 +1091,9 @@ var projects = [
|
|
|
1091
1091
|
"Implemented newsletter automation for improved communication."
|
|
1092
1092
|
],
|
|
1093
1093
|
story: [
|
|
1094
|
-
"
|
|
1095
|
-
"
|
|
1096
|
-
"
|
|
1094
|
+
"EARTH University offers education in agricultural sciences. I was responsible for building their main website, blog, and newsletter. My work involved creating a digital platform for information dissemination and community engagement, focusing on usability and content management.",
|
|
1095
|
+
"I implemented a content management system for efficient website updates and maintenance. This system allowed the university staff to manage their online presence without requiring technical expertise for routine content changes.",
|
|
1096
|
+
"The project included a responsive blog for community engagement and newsletter functionality for stakeholder communication. This work was completed while at IntergraphiDesign, my first job at a development shop, and applied web technologies to support an educational institution."
|
|
1097
1097
|
]
|
|
1098
1098
|
},
|
|
1099
1099
|
{
|
|
@@ -1110,9 +1110,9 @@ var projects = [
|
|
|
1110
1110
|
"Integrated user-friendly navigation for enhanced accessibility."
|
|
1111
1111
|
],
|
|
1112
1112
|
story: [
|
|
1113
|
-
"
|
|
1114
|
-
"
|
|
1115
|
-
"
|
|
1113
|
+
"ProParques is a nonprofit for national park sustainability. I developed their responsive landing page and an interactive national park map. My role included web design and development, focusing on user interaction and information accessibility for park exploration.",
|
|
1114
|
+
"I created an interactive map for exploring various national parks, enhancing user understanding and appreciation of these resources. The map feature allowed visitors to learn about different parks and their unique characteristics.",
|
|
1115
|
+
"The implementation included a responsive landing page to ensure website accessibility across devices. This work was completed while at IntergraphiDesign, my first development job, and supported the organization's mission of promoting national park sustainability."
|
|
1116
1116
|
]
|
|
1117
1117
|
},
|
|
1118
1118
|
{
|
|
@@ -1129,9 +1129,9 @@ var projects = [
|
|
|
1129
1129
|
"Integrated dynamic tournament data for real-time game updates."
|
|
1130
1130
|
],
|
|
1131
1131
|
story: [
|
|
1132
|
-
"
|
|
1133
|
-
"I
|
|
1134
|
-
"This
|
|
1132
|
+
"FanSlam Fantasy Tennis is a strategic game for ATP, WTA, and Grand Slam tournaments. I designed and built both the frontend and backend. As a fullstack developer, my work encompassed creating an engaging and functional gaming experience, integrating strategy and user interface design.",
|
|
1133
|
+
"I developed a responsive UI for consistent gameplay across different devices and screen sizes. The implementation included dynamic tournament data integration for real-time game updates and results.",
|
|
1134
|
+
"This project combined sports statistics with game mechanics to create an interactive experience for tennis fans. The work required understanding both tennis tournament structures and effective game design principles."
|
|
1135
1135
|
]
|
|
1136
1136
|
},
|
|
1137
1137
|
{
|
|
@@ -1148,9 +1148,9 @@ var projects = [
|
|
|
1148
1148
|
"Optimized website performance for improved loading speeds."
|
|
1149
1149
|
],
|
|
1150
1150
|
story: [
|
|
1151
|
-
"
|
|
1152
|
-
"
|
|
1153
|
-
"
|
|
1151
|
+
"Mobtion agency specializes in mobile development services. I designed and developed their responsive website and WordPress CMS. My responsibilities included website design, development, and ensuring seamless content management for the agency.",
|
|
1152
|
+
"I created a modern and responsive website that effectively showcased their services and capabilities. The design focused on highlighting the agency's mobile development expertise and project portfolio.",
|
|
1153
|
+
"The implementation included WordPress CMS integration for efficient content management, allowing easy updates and maintenance. This work was completed while at IntergraphiDesign, my first development job, and delivered a functional web presence for a mobile development agency."
|
|
1154
1154
|
]
|
|
1155
1155
|
},
|
|
1156
1156
|
{
|
|
@@ -1167,9 +1167,9 @@ var projects = [
|
|
|
1167
1167
|
"Optimized website architecture for scalability and security."
|
|
1168
1168
|
],
|
|
1169
1169
|
story: [
|
|
1170
|
-
"
|
|
1171
|
-
"
|
|
1172
|
-
"
|
|
1170
|
+
"ITS InfoCom, an IT multinational, focuses on Remote Infrastructure Management. I implemented their primary website, CMS, and CRM integration. My role was to create and integrate digital solutions for the company, focusing on web presence and customer relationship management.",
|
|
1171
|
+
"I deployed a company-wide content management system for efficient website updates and maintenance. This implementation allowed staff to manage website content without requiring technical expertise for routine changes.",
|
|
1172
|
+
"The project included CRM integration to streamline customer interactions and data management. This work was completed while at IntergraphiDesign, my first development job, and delivered practical web solutions for a technology company."
|
|
1173
1173
|
]
|
|
1174
1174
|
},
|
|
1175
1175
|
{
|
|
@@ -1186,9 +1186,9 @@ var projects = [
|
|
|
1186
1186
|
"Optimized page speed and performance for better user engagement."
|
|
1187
1187
|
],
|
|
1188
1188
|
story: [
|
|
1189
|
-
"
|
|
1190
|
-
"I
|
|
1191
|
-
"This
|
|
1189
|
+
"For Trivenzor, a hypertension medication, I developed a responsive landing page for patient and healthcare provider information. My work involved creating a user-friendly and informative digital platform, emphasizing medical information clarity and accessibility.",
|
|
1190
|
+
"I ensured the page was fully responsive and accessible, providing clear information for both patients and healthcare professionals. The implementation included performance optimization for improved load times and user engagement.",
|
|
1191
|
+
"This project required careful attention to medical content presentation and regulatory compliance. The design needed to balance visual appeal with accurate information delivery for a healthcare audience."
|
|
1192
1192
|
]
|
|
1193
1193
|
},
|
|
1194
1194
|
{
|
|
@@ -1205,15 +1205,15 @@ var projects = [
|
|
|
1205
1205
|
"Optimized website layout for enhanced readability and engagement."
|
|
1206
1206
|
],
|
|
1207
1207
|
story: [
|
|
1208
|
-
"The Living with Dryness project
|
|
1209
|
-
"I
|
|
1210
|
-
"This
|
|
1208
|
+
"The Living with Dryness project involved crafting a responsive landing page focused on providing information and resources. As the developer, I ensured a pixel-perfect design and user-friendly navigation, catering to the project's specific audience and needs.",
|
|
1209
|
+
"I designed and developed a responsive landing page with valuable medical resources and implemented a user-friendly navigation system for better accessibility. The layout was optimized for readability and engagement.",
|
|
1210
|
+
"This project required balancing visual design with medical content presentation for a specific healthcare audience. The implementation focused on making medical information accessible and useful to the target users."
|
|
1211
1211
|
]
|
|
1212
1212
|
},
|
|
1213
1213
|
{
|
|
1214
1214
|
title: "Costa Rica JS",
|
|
1215
1215
|
slug: "costa-rica-js",
|
|
1216
|
-
description: "Costa Rica JS
|
|
1216
|
+
description: "Costa Rica JS, founded in 2010, grew to become Central America's largest JavaScript community with over 2000 developers. The community played a crucial role in fostering the region's tech ecosystem during the rise of Node.js, organizing major events like NodeSchool International Day and hosting speakers from companies like Mozilla and Netflix.\n As founder, I organized regular meetups, workshops, and the annual JSConf Costa Rica, helping establish Costa Rica as a growing tech hub in Latin America.",
|
|
1217
1217
|
tech: ["JavaScript", "NodeJS", "ReactJS", "TypeScript"],
|
|
1218
1218
|
type: ["other", "lead"],
|
|
1219
1219
|
link: "https://www.meetup.com/costaricajs/",
|
|
@@ -1233,9 +1233,9 @@ var projects = [
|
|
|
1233
1233
|
"Fostered the region's tech ecosystem during the rise of Node.js and modern web frameworks."
|
|
1234
1234
|
],
|
|
1235
1235
|
story: [
|
|
1236
|
-
"
|
|
1237
|
-
"
|
|
1238
|
-
"
|
|
1236
|
+
"Costa Rica JS became Central America's largest JavaScript community with over 2000 developers. The community played a crucial role in fostering the region's tech ecosystem as Node.js and modern web frameworks gained prominence.",
|
|
1237
|
+
"As founder, I organized regular meetups, workshops, and educational events to help developers learn emerging technologies and best practices. These activities supported professional development and knowledge sharing.",
|
|
1238
|
+
"The community served as a networking platform and career development resource for the region's tech sector. We focused on practical skills development through hands-on workshops and collaborative learning experiences."
|
|
1239
1239
|
],
|
|
1240
1240
|
related: [
|
|
1241
1241
|
{
|
|
@@ -1258,7 +1258,7 @@ var projects = [
|
|
|
1258
1258
|
{
|
|
1259
1259
|
title: "AsoBlockchain",
|
|
1260
1260
|
slug: "asoblockchain",
|
|
1261
|
-
description: "AsoBlockchain is Costa Rica's leading non-profit blockchain association
|
|
1261
|
+
description: "AsoBlockchain, founded in 2017, is Costa Rica's first and leading non-profit blockchain association. The organization has trained over 1000 developers, partnered with major universities like ULACIT and ADEN Business School, and played a key role in shaping national cryptocurrency regulations through collaboration with the Central Bank and other regulatory bodies. Through initiatives like TicoBlockchain conference and CriptoCantina, it has become the primary driver of blockchain adoption in Central America.",
|
|
1262
1262
|
tech: ["Ethereum", "EOS", "Antelope", "Solidity", "Polkadot", "Substrate"],
|
|
1263
1263
|
type: ["other", "lead"],
|
|
1264
1264
|
link: "https://asoblockchain.org",
|
|
@@ -1277,9 +1277,9 @@ var projects = [
|
|
|
1277
1277
|
"Built a vibrant community supporting blockchain innovation and adoption."
|
|
1278
1278
|
],
|
|
1279
1279
|
story: [
|
|
1280
|
-
"
|
|
1281
|
-
"
|
|
1282
|
-
"
|
|
1280
|
+
"AsoBlockchain is Costa Rica's leading non-profit blockchain association, focused on fostering trust, transparency, and innovation in the country's blockchain ecosystem. As a co-founder, I helped establish the organization's core principles and strategic direction.",
|
|
1281
|
+
"We developed initiatives like CriptoCantina and TicoBlockchain conference to create opportunities for education and community building. Our partnerships with institutions like ADEN Business School and ULACIT expanded access to specialized blockchain education.",
|
|
1282
|
+
"The association participates in policy discussions and regulatory frameworks to represent members' interests while promoting responsible blockchain adoption. Our work includes educational programs, industry partnerships, and community building."
|
|
1283
1283
|
],
|
|
1284
1284
|
related: [
|
|
1285
1285
|
{
|
|
@@ -1307,7 +1307,7 @@ var projects = [
|
|
|
1307
1307
|
{
|
|
1308
1308
|
title: "CryptoCantinaCR",
|
|
1309
1309
|
slug: "cryptocantinacr",
|
|
1310
|
-
description: "CryptoCantinaCR
|
|
1310
|
+
description: "CryptoCantinaCR, established in September 2018, became Costa Rica's most influential blockchain community with over 500 regular participants and recognition from national media outlets like La Naci\xF3n and El Financiero. What began as informal Thursday meetups has evolved into a formal educational initiative under CriptoCantina.org, which has trained hundreds of developers and influenced national cryptocurrency policy through engagement with government officials and regulators.",
|
|
1311
1311
|
tech: ["Ethereum", "EOS", "Solidity", "Antelope", "Polkadot", "Substrate"],
|
|
1312
1312
|
type: ["other", "lead"],
|
|
1313
1313
|
link: "https://criptocantina.org",
|
|
@@ -1327,9 +1327,9 @@ var projects = [
|
|
|
1327
1327
|
"Evolved into a formal educational platform promoting blockchain technology adoption."
|
|
1328
1328
|
],
|
|
1329
1329
|
story: [
|
|
1330
|
-
"CryptoCantinaCR
|
|
1331
|
-
"The events were designed to be
|
|
1332
|
-
"The initiative
|
|
1330
|
+
"CryptoCantinaCR started as a recurring after-office happy hour event that brought together blockchain, cryptography, and cryptocurrency enthusiasts in Costa Rica. What began as informal Thursday meetups at Central Pub in Paseo Col\xF3n has since evolved into a formal educational initiative under CriptoCantina.org.",
|
|
1331
|
+
"The events were designed to be casual and inclusive, with no presentations or formal talks, focusing on organic connections and discussions. This format created a space where participants could engage in meaningful conversations about blockchain technology.",
|
|
1332
|
+
"The initiative later evolved into CriptoCantina.org, a more structured educational platform led by Karla C\xF3rdoba. This organization now focuses on formal blockchain education, entrepreneur support, and helping newcomers enter the technology sector."
|
|
1333
1333
|
],
|
|
1334
1334
|
related: [
|
|
1335
1335
|
{
|
|
@@ -1352,12 +1352,14 @@ var techStack = [
|
|
|
1352
1352
|
link: "https://www.typescriptlang.org/",
|
|
1353
1353
|
since: "2012",
|
|
1354
1354
|
intro: [
|
|
1355
|
-
"TypeScript is a superset of JavaScript that adds static
|
|
1356
|
-
"It
|
|
1355
|
+
"TypeScript is a superset of JavaScript that adds static type definitions, enhancing code quality, maintainability and developer productivity.",
|
|
1356
|
+
"It provides compile-time error checking, improved IDE support with autocompletion, and better documentation through explicit type declarations."
|
|
1357
1357
|
],
|
|
1358
1358
|
experience: [
|
|
1359
|
-
"
|
|
1360
|
-
"
|
|
1359
|
+
"Implemented TypeScript across all major projects including LegalAgent, Opyn, BasilicEVM, and BitLauncher for type safety and maintainability.",
|
|
1360
|
+
"Developed strict typing standards for EVM blockchain interactions in BasilicEVM, ensuring predictable smart contract interactions.",
|
|
1361
|
+
"Applied TypeScript for RAG architecture implementation in LegalAgent, creating robust data structures for context-aware AI responses.",
|
|
1362
|
+
"Utilized TypeScript with TanStack libraries to create type-safe data fetching, form validation, and state management patterns."
|
|
1361
1363
|
]
|
|
1362
1364
|
},
|
|
1363
1365
|
{
|
|
@@ -1369,14 +1371,15 @@ var techStack = [
|
|
|
1369
1371
|
link: "https://nodejs.org/",
|
|
1370
1372
|
since: "2009",
|
|
1371
1373
|
intro: [
|
|
1372
|
-
"Node.js
|
|
1373
|
-
"It
|
|
1374
|
+
"Node.js provides a JavaScript runtime for server-side applications with an event-driven, non-blocking I/O model that optimizes throughput and scalability.",
|
|
1375
|
+
"It enables building fast, lightweight microservices, API layers, and real-time applications with a unified JavaScript codebase across client and server."
|
|
1374
1376
|
],
|
|
1375
1377
|
experience: [
|
|
1376
|
-
"
|
|
1377
|
-
"
|
|
1378
|
-
"
|
|
1379
|
-
"
|
|
1378
|
+
"Built a custom EVM event indexer for BitLauncher using Node.js with Viem subscriptions, efficiently processing blockchain data in real-time.",
|
|
1379
|
+
"Developed ChainGraph, an open-source GraphQL toolkit for blockchain data, using Node.js for real-time data streaming and event processing.",
|
|
1380
|
+
"Created BitcashBank backend infrastructure with Node.js microservices, handling millions in transaction volume across Latin America.",
|
|
1381
|
+
"Led the architecture of Knowledge.io's Ethereum token system and supporting infrastructure using serverless Node.js functions.",
|
|
1382
|
+
"Founded Costa Rica JS, which became Central America's largest JavaScript community, promoting collaborative open-source development."
|
|
1380
1383
|
]
|
|
1381
1384
|
},
|
|
1382
1385
|
{
|
|
@@ -1388,13 +1391,15 @@ var techStack = [
|
|
|
1388
1391
|
link: "https://reactjs.org/",
|
|
1389
1392
|
since: "2013",
|
|
1390
1393
|
intro: [
|
|
1391
|
-
"ReactJS is a
|
|
1392
|
-
"
|
|
1394
|
+
"ReactJS is a declarative, component-based JavaScript library for building user interfaces, emphasizing composition and unidirectional data flow.",
|
|
1395
|
+
"Its virtual DOM implementation and efficient rendering system enable developers to create performant applications with a predictable state model."
|
|
1393
1396
|
],
|
|
1394
1397
|
experience: [
|
|
1395
|
-
"
|
|
1396
|
-
"
|
|
1397
|
-
"
|
|
1398
|
+
"Implemented React Server Components in Opyn trading interface, building a high-performance, SEO-friendly experience with Next.js 14.",
|
|
1399
|
+
"Developed BitLauncher auction system UI with real-time bidding updates using React with Supabase subscriptions.",
|
|
1400
|
+
"Built the real-time blockchain data visualization components for ChainGraph with React and RxJS for reactive data handling.",
|
|
1401
|
+
"Created responsive admin dashboards for LegalAgent with Microsoft SSO integration and document management features.",
|
|
1402
|
+
"Engineered responsive frontends for RareMint, ZTX, and Emanate, focusing on optimized component architecture and state management."
|
|
1398
1403
|
]
|
|
1399
1404
|
},
|
|
1400
1405
|
{
|
|
@@ -1406,13 +1411,15 @@ var techStack = [
|
|
|
1406
1411
|
link: "https://reactnative.dev/",
|
|
1407
1412
|
since: "2015",
|
|
1408
1413
|
intro: [
|
|
1409
|
-
"React Native
|
|
1410
|
-
"It
|
|
1414
|
+
"React Native enables building native mobile applications using JavaScript and React, providing a bridge to native components while maintaining a single codebase.",
|
|
1415
|
+
"It offers near-native performance with hot reloading for faster development cycles and access to device-specific APIs and capabilities."
|
|
1411
1416
|
],
|
|
1412
1417
|
experience: [
|
|
1413
|
-
"Developed
|
|
1414
|
-
"
|
|
1415
|
-
"
|
|
1418
|
+
"Developed a multimodal AI assistant with voice and chat interfaces for LegalAgent's mobile app using React Native and Expo.",
|
|
1419
|
+
"Integrated OpenAI's Realtime API for voice transcription and synthesis in a bilingual legal assistant application.",
|
|
1420
|
+
"Enhanced Sense.chat's performance and integrated EOS blockchain for secure encrypted communications and token functionality.",
|
|
1421
|
+
"Built the first version of Wink, Costa Rica's first neo-bank mobile app, with React Native and biometric authentication.",
|
|
1422
|
+
"Implemented augmented reality features for Tractor Supply mobile app using ViroAR for interactive product previews."
|
|
1416
1423
|
]
|
|
1417
1424
|
},
|
|
1418
1425
|
{
|
|
@@ -1424,13 +1431,15 @@ var techStack = [
|
|
|
1424
1431
|
link: "https://nextjs.org/",
|
|
1425
1432
|
since: "2012",
|
|
1426
1433
|
intro: [
|
|
1427
|
-
"Next.js is a
|
|
1428
|
-
"It
|
|
1434
|
+
"Next.js is a powerful React framework providing hybrid rendering strategies (SSR, SSG, ISR), optimized routing, and enhanced developer experience.",
|
|
1435
|
+
"It offers built-in API routes, image optimization, internationalization support, and seamless deployment through platforms like Vercel."
|
|
1429
1436
|
],
|
|
1430
1437
|
experience: [
|
|
1431
|
-
"
|
|
1432
|
-
"
|
|
1433
|
-
"
|
|
1438
|
+
"Built Opyn's trading interface with Next.js 14 and React Server Components, creating a highly responsive DeFi application.",
|
|
1439
|
+
"Developed BasilicEVM, a performance-optimized development stack for EVM applications using Next.js 15 with App Router.",
|
|
1440
|
+
"Implemented BitLauncher's auction platform with Next.js 14, integrating real-time blockchain data with Supabase subscriptions.",
|
|
1441
|
+
"Created Masterbots.ai using Next.js with AI SDK for specialized chatbots and automated internationalization features.",
|
|
1442
|
+
"Developed ZTX metaverse web application using Next.js with WebGL and EVM wallet integration for NFT trading functionality."
|
|
1434
1443
|
]
|
|
1435
1444
|
},
|
|
1436
1445
|
{
|
|
@@ -1442,13 +1451,15 @@ var techStack = [
|
|
|
1442
1451
|
link: "https://viem.io/",
|
|
1443
1452
|
since: "2023",
|
|
1444
1453
|
intro: [
|
|
1445
|
-
"Viem is a
|
|
1446
|
-
"It provides
|
|
1454
|
+
"Viem is a TypeScript interface for EVM blockchains that offers modular architecture, comprehensive type safety, and improved performance over alternatives.",
|
|
1455
|
+
"It provides first-class support for public, private, and contract actions with built-in parsing, validation, and error handling for blockchain interactions."
|
|
1447
1456
|
],
|
|
1448
1457
|
experience: [
|
|
1449
|
-
"
|
|
1450
|
-
"
|
|
1451
|
-
"
|
|
1458
|
+
"Implemented Viem in Opyn trading interface for type-safe contract interactions with Arbitrum Testnet via Alchemy RPC endpoints.",
|
|
1459
|
+
"Built a custom EVM event indexer for BitLauncher using Viem EVM event subscriptions, capturing and processing auction data in real-time.",
|
|
1460
|
+
"Developed BasilicEVM with Viem as the core blockchain interaction layer, focusing on type safety and performance optimization.",
|
|
1461
|
+
"Created a custom token bridge for swapping stablecoins to USDCred tokens in BitLauncher using Viem for contract interactions.",
|
|
1462
|
+
"Architected wallet interfaces with Viem for displaying real-time EVM balances through token balance subscriptions."
|
|
1452
1463
|
]
|
|
1453
1464
|
},
|
|
1454
1465
|
{
|
|
@@ -1460,13 +1471,15 @@ var techStack = [
|
|
|
1460
1471
|
link: "https://wagmi.sh/",
|
|
1461
1472
|
since: "2023",
|
|
1462
1473
|
intro: [
|
|
1463
|
-
"Wagmi provides
|
|
1464
|
-
"It
|
|
1474
|
+
"Wagmi provides React hooks for EVM interactions, enabling wallet connections, contract reads/writes, and state management with minimal boilerplate.",
|
|
1475
|
+
"It offers modular, type-safe components that work seamlessly with Viem, supporting multiple chains and wallets with efficient caching mechanisms."
|
|
1465
1476
|
],
|
|
1466
1477
|
experience: [
|
|
1467
|
-
"
|
|
1468
|
-
"
|
|
1469
|
-
"
|
|
1478
|
+
"Integrated Wagmi with Viem in Opyn trading interface for Arbitrum Testnet interactions, implementing connect wallet functionality.",
|
|
1479
|
+
"Developed BasilicEVM with Wagmi hooks for contract interactions, creating a streamlined developer experience for EVM applications.",
|
|
1480
|
+
"Implemented token balance subscriptions in BitLauncher wallet interface using Wagmi for real-time balance updates.",
|
|
1481
|
+
"Created a multichain wallet connection system for BitLauncher supporting both EOS and EVM chains through Wagmi connectors.",
|
|
1482
|
+
"Built RareMint marketplace using Wagmi for NFT auction participation and transaction signing on Polygon network."
|
|
1470
1483
|
]
|
|
1471
1484
|
},
|
|
1472
1485
|
{
|
|
@@ -1478,14 +1491,15 @@ var techStack = [
|
|
|
1478
1491
|
link: "https://docs.ethers.io/v5/",
|
|
1479
1492
|
since: "2017",
|
|
1480
1493
|
intro: [
|
|
1481
|
-
"EthersJS is a
|
|
1482
|
-
"It
|
|
1494
|
+
"EthersJS is a complete Ethereum library and wallet implementation providing compact, intuitive interfaces for blockchain interaction.",
|
|
1495
|
+
"It offers secure key management, contract abstractions, and utilities for transaction handling with broad provider support for different networks."
|
|
1483
1496
|
],
|
|
1484
1497
|
experience: [
|
|
1485
|
-
"
|
|
1486
|
-
"
|
|
1487
|
-
"
|
|
1488
|
-
"Led the architecture of Knowledge.io's token system
|
|
1498
|
+
"Developed a WebGL EVM wallet connector for ZTX metaverse platform using EthersJS, enabling NFT trading within the 3D environment.",
|
|
1499
|
+
"Created RareMint's NFT marketplace on Polygon using EthersJS for efficient smart contract interactions and token minting.",
|
|
1500
|
+
"Built an EVM NFT data indexer for RareMint using Moralis streams, Node.js, and EthersJS for tracking ownership changes.",
|
|
1501
|
+
"Led the architecture of Knowledge.io's Ethereum-based token system for their successful ICO, focusing on security and efficiency.",
|
|
1502
|
+
"Implemented wallet functionality for multiple blockchain projects before Viem/Wagmi became available, using EthersJS as the core interface."
|
|
1489
1503
|
]
|
|
1490
1504
|
},
|
|
1491
1505
|
{
|
|
@@ -1497,29 +1511,35 @@ var techStack = [
|
|
|
1497
1511
|
link: "https://ponder.io/",
|
|
1498
1512
|
since: "2024",
|
|
1499
1513
|
intro: [
|
|
1500
|
-
"Ponder is a
|
|
1501
|
-
"It
|
|
1514
|
+
"Ponder is a TypeScript framework for indexing blockchain data into PostgreSQL, providing a structured approach to processing on-chain events.",
|
|
1515
|
+
"It offers type-safe database interfaces, built-in caching and syncing capabilities, and optimized query performance for blockchain applications."
|
|
1502
1516
|
],
|
|
1503
1517
|
experience: [
|
|
1504
|
-
"
|
|
1505
|
-
"Implemented Ponder
|
|
1518
|
+
"Set up Ponder indexing service with PostgreSQL for Opyn chain data on Arbitrum Testnet, enabling efficient data retrieval.",
|
|
1519
|
+
"Implemented Ponder in BasilicEVM as the standard data layer solution, creating a seamless developer experience for blockchain data.",
|
|
1520
|
+
"Designed transaction data indexing systems with Ponder for real-time analytics and historical querying in DeFi applications.",
|
|
1521
|
+
"Created custom event processors to transform blockchain data into structured database records for efficient application queries.",
|
|
1522
|
+
"Developed GraphQL and REST API layers on top of Ponder-indexed data to provide consistent interfaces for frontend applications."
|
|
1506
1523
|
]
|
|
1507
1524
|
},
|
|
1508
1525
|
{
|
|
1509
1526
|
name: "PostgreSQL",
|
|
1510
1527
|
slug: "postgresql",
|
|
1511
|
-
tag: "
|
|
1528
|
+
tag: "PostgreSQL",
|
|
1512
1529
|
image: "/images/tech/postgresql.png",
|
|
1513
1530
|
description: "A powerful, open-source object-relational database system with a strong reputation for reliability, feature robustness, and performance.",
|
|
1514
1531
|
link: "https://www.postgresql.org/",
|
|
1515
1532
|
since: "2012",
|
|
1516
1533
|
intro: [
|
|
1517
|
-
"PostgreSQL is a
|
|
1518
|
-
"It
|
|
1534
|
+
"PostgreSQL is a powerful object-relational database system with advanced features like JSON support, full-text search, and robust concurrency.",
|
|
1535
|
+
"It offers exceptional reliability, data integrity, and extensibility with custom data types, functions, and index types for specialized use cases."
|
|
1519
1536
|
],
|
|
1520
1537
|
experience: [
|
|
1521
|
-
"Implemented PostgreSQL
|
|
1522
|
-
"
|
|
1538
|
+
"Implemented PostgreSQL with Supabase in Opyn and BitLauncher for blockchain data storage and real-time subscriptions.",
|
|
1539
|
+
"Designed ChainGraph's blockchain data model with PostgreSQL, optimizing for high-throughput event processing and complex queries.",
|
|
1540
|
+
"Developed transaction data indexing systems with PostgreSQL in BitcashBank, processing millions in transaction volume.",
|
|
1541
|
+
"Created efficient query patterns for EOS Costa Rica blockchain data using PostgreSQL's JSON capabilities and indexing strategies.",
|
|
1542
|
+
"Built LegalAgent's document management system with PostgreSQL, implementing full-text search for legal document retrieval."
|
|
1523
1543
|
]
|
|
1524
1544
|
},
|
|
1525
1545
|
{
|
|
@@ -1531,12 +1551,15 @@ var techStack = [
|
|
|
1531
1551
|
link: "https://ethereum.org/en/developers/docs/evm/",
|
|
1532
1552
|
since: "2017",
|
|
1533
1553
|
intro: [
|
|
1534
|
-
"The EVM is the runtime environment for smart contracts
|
|
1535
|
-
"It
|
|
1554
|
+
"The Ethereum Virtual Machine (EVM) is the runtime environment for executing smart contracts across Ethereum and compatible blockchains.",
|
|
1555
|
+
"It provides a Turing-complete execution environment with deterministic operations, enabling secure, decentralized applications across networks."
|
|
1536
1556
|
],
|
|
1537
1557
|
experience: [
|
|
1538
|
-
"
|
|
1539
|
-
"
|
|
1558
|
+
"Developed BasilicEVM, a performance-optimized development stack specifically for EVM applications with smart contracts and chain integration.",
|
|
1559
|
+
"Implemented Gnosis auction Solidity contracts on EOS EVM for BitLauncher, creating a cross-chain auction platform.",
|
|
1560
|
+
"Built a custom EVM event indexer using Node.js and Viem for BitLauncher, capturing real-time blockchain data.",
|
|
1561
|
+
"Created a custom token bridge for swapping stablecoins between chains in BitLauncher using EVM smart contracts.",
|
|
1562
|
+
"Developed wallet interfaces for Opyn and RareMint showing real-time EVM balances through token balance subscriptions."
|
|
1540
1563
|
]
|
|
1541
1564
|
},
|
|
1542
1565
|
{
|
|
@@ -1548,13 +1571,15 @@ var techStack = [
|
|
|
1548
1571
|
link: "https://soliditylang.org/",
|
|
1549
1572
|
since: "2017",
|
|
1550
1573
|
intro: [
|
|
1551
|
-
"Solidity is
|
|
1552
|
-
"It
|
|
1574
|
+
"Solidity is a statically-typed, contract-oriented programming language for implementing smart contracts on Ethereum and EVM-compatible blockchains.",
|
|
1575
|
+
"It features contract inheritance, libraries, user-defined types, and event emissions with security practices like access controls and gas optimization."
|
|
1553
1576
|
],
|
|
1554
1577
|
experience: [
|
|
1555
|
-
"
|
|
1556
|
-
"
|
|
1557
|
-
"
|
|
1578
|
+
"Implemented Gnosis auction Solidity contracts for BitLauncher on EOS EVM, enabling transparent batch auctions with uniform pricing.",
|
|
1579
|
+
"Developed type-safe smart contracts for Opyn's decentralized options protocol on Arbitrum Testnet using Solidity and Foundry.",
|
|
1580
|
+
"Created secure token contracts for Knowledge.io's successful ICO in 2018, focusing on security best practices.",
|
|
1581
|
+
"Built BasilicEVM's core contract templates and integration patterns to streamline EVM application development.",
|
|
1582
|
+
"Designed and implemented NFT contracts for RareMint, enabling fractional ownership of authenticated sports collectibles on Polygon."
|
|
1558
1583
|
]
|
|
1559
1584
|
},
|
|
1560
1585
|
{
|
|
@@ -1566,11 +1591,15 @@ var techStack = [
|
|
|
1566
1591
|
link: "https://getfoundry.sh/",
|
|
1567
1592
|
since: "2024",
|
|
1568
1593
|
intro: [
|
|
1569
|
-
"Foundry is a
|
|
1570
|
-
"It
|
|
1594
|
+
"Foundry is a fast, portable Ethereum development toolkit written in Rust, providing testing, deployment, and interaction capabilities for smart contracts.",
|
|
1595
|
+
"It offers significant performance improvements over JavaScript-based alternatives with features like gas profiling, forking, tracing, and debugging."
|
|
1571
1596
|
],
|
|
1572
1597
|
experience: [
|
|
1573
|
-
"
|
|
1598
|
+
"Implemented Foundry in BasilicEVM as the standard smart contract development environment for performance and developer experience.",
|
|
1599
|
+
"Developed Opyn's decentralized options protocol contracts using Foundry for comprehensive testing and deployment to Arbitrum Testnet.",
|
|
1600
|
+
"Created BitLauncher auction contracts with Foundry, utilizing its forking capabilities for realistic test environments.",
|
|
1601
|
+
"Optimized gas usage in smart contracts using Foundry's profiling tools, significantly reducing transaction costs.",
|
|
1602
|
+
"Established continuous integration testing pipelines for smart contracts using Foundry's testing framework in multiple projects."
|
|
1574
1603
|
]
|
|
1575
1604
|
},
|
|
1576
1605
|
{
|
|
@@ -1582,11 +1611,15 @@ var techStack = [
|
|
|
1582
1611
|
link: "https://en.wikipedia.org/wiki/Software_development_kit",
|
|
1583
1612
|
since: "2023",
|
|
1584
1613
|
intro: [
|
|
1585
|
-
"AI SDKs provide
|
|
1586
|
-
"They
|
|
1614
|
+
"AI SDKs provide developer frameworks for integrating large language models and AI capabilities into applications with optimized interfaces.",
|
|
1615
|
+
"They offer streaming responses, function calling, structured outputs, and optimized performance with tools for context retrieval and AI agent development."
|
|
1587
1616
|
],
|
|
1588
1617
|
experience: [
|
|
1589
|
-
"
|
|
1618
|
+
"Integrated Vercel AI SDK in LegalAgent for chat functionality and OpenAI Realtime API for voice features in a multimodal assistant.",
|
|
1619
|
+
"Implemented RAG architecture in LegalAgent for contextual legal support, document summarization, and bilingual assistance.",
|
|
1620
|
+
"Developed the chatbot assistant at BitLauncher.ai with tools integration for accessing news, YouTube videos, and detailed information.",
|
|
1621
|
+
"Created AI-powered internationalization automation for BitLauncher and Masterbots using AI SDK with template prompting.",
|
|
1622
|
+
"Established AI-driven development workflows using Claude Sonnet in Cursor IDE for efficient coding and documentation generation."
|
|
1590
1623
|
]
|
|
1591
1624
|
},
|
|
1592
1625
|
{
|
|
@@ -1598,11 +1631,15 @@ var techStack = [
|
|
|
1598
1631
|
link: "https://en.wikipedia.org/wiki/Language_model",
|
|
1599
1632
|
since: "2023",
|
|
1600
1633
|
intro: [
|
|
1601
|
-
"
|
|
1602
|
-
"
|
|
1634
|
+
"Large Language Models are neural networks trained on vast text corpora, capable of understanding context, generating human-like text, and solving complex tasks.",
|
|
1635
|
+
"Modern LLMs feature capabilities like few-shot learning, instruction following, tool use, and multi-step reasoning for sophisticated applications."
|
|
1603
1636
|
],
|
|
1604
1637
|
experience: [
|
|
1605
|
-
"
|
|
1638
|
+
"Implemented OpenAI GPT-4 in LegalAgent to create a context-aware legal assistant with document summarization capabilities.",
|
|
1639
|
+
"Utilized Claude Sonnet in BitLauncher for generating accurate technical documentation and internationalized content.",
|
|
1640
|
+
"Developed specialized domain chatbots in Masterbots.ai to perform tasks beyond basic information retrieval.",
|
|
1641
|
+
"Created AI-driven development workflows with LLMs for code generation, optimization, and technical documentation.",
|
|
1642
|
+
"Integrated Wizard World with OpenAI's DALL-E models to generate AI images and mint them as NFTs on Flow blockchain."
|
|
1606
1643
|
]
|
|
1607
1644
|
},
|
|
1608
1645
|
{
|
|
@@ -1614,11 +1651,15 @@ var techStack = [
|
|
|
1614
1651
|
link: "https://thirdweb.com/",
|
|
1615
1652
|
since: "2024",
|
|
1616
1653
|
intro: [
|
|
1617
|
-
"ThirdWeb
|
|
1618
|
-
"It
|
|
1654
|
+
"ThirdWeb is a comprehensive Web3 development platform offering pre-built smart contracts, SDK tooling, and infrastructure for blockchain applications.",
|
|
1655
|
+
"It provides wallet connection utilities, NFT tooling, marketplace functionality, and token management with simplified deployment across multiple chains."
|
|
1619
1656
|
],
|
|
1620
1657
|
experience: [
|
|
1621
|
-
"
|
|
1658
|
+
"Integrated ThirdWeb in BasilicEVM to provide standardized contract deployment and interaction patterns for common use cases.",
|
|
1659
|
+
"Implemented NFT contract templates from ThirdWeb in RareMint, accelerating the development of collectible functionality.",
|
|
1660
|
+
"Used ThirdWeb Connect in multiple projects for consistent wallet connection experiences across different blockchain networks.",
|
|
1661
|
+
"Leveraged ThirdWeb's storage solutions for decentralized metadata storage in NFT projects, ensuring content persistence.",
|
|
1662
|
+
"Deployed marketplace contracts using ThirdWeb for rapid prototyping of trading functionality in Web3 applications."
|
|
1622
1663
|
]
|
|
1623
1664
|
},
|
|
1624
1665
|
{
|
|
@@ -2151,22 +2192,6 @@ var techStack = [
|
|
|
2151
2192
|
"Utilized Substrate in projects like Substrate Contracts UI for building and deploying custom blockchains."
|
|
2152
2193
|
]
|
|
2153
2194
|
},
|
|
2154
|
-
{
|
|
2155
|
-
name: "Flow",
|
|
2156
|
-
slug: "flow",
|
|
2157
|
-
tag: "Flow",
|
|
2158
|
-
image: "/images/tech/flow.png",
|
|
2159
|
-
description: "A fast, decentralized, and developer-friendly blockchain, designed as the foundation for a new generation of games, apps, and digital assets.",
|
|
2160
|
-
link: "https://www.onflow.org/",
|
|
2161
|
-
since: "2022",
|
|
2162
|
-
intro: [
|
|
2163
|
-
"Flow is a fast, decentralized, and developer-friendly blockchain, designed as the foundation for a new generation of games, apps, and digital assets.",
|
|
2164
|
-
"It is known for its scalability and ease of use, making it a popular choice for NFT and gaming applications."
|
|
2165
|
-
],
|
|
2166
|
-
experience: [
|
|
2167
|
-
"Utilized Flow in projects like Wizard World for NFT integration and digital asset management."
|
|
2168
|
-
]
|
|
2169
|
-
},
|
|
2170
2195
|
{
|
|
2171
2196
|
name: "Niftory",
|
|
2172
2197
|
slug: "niftory",
|
|
@@ -2534,113 +2559,472 @@ var techStack = [
|
|
|
2534
2559
|
];
|
|
2535
2560
|
|
|
2536
2561
|
// src/cli.ts
|
|
2562
|
+
var COLORS = {
|
|
2563
|
+
title: import_chalk.default.bold.cyan,
|
|
2564
|
+
subtitle: import_chalk.default.bold.yellow,
|
|
2565
|
+
highlight: import_chalk.default.bold.green,
|
|
2566
|
+
info: import_chalk.default.blue,
|
|
2567
|
+
link: import_chalk.default.underline.blue,
|
|
2568
|
+
dim: import_chalk.default.dim,
|
|
2569
|
+
success: import_chalk.default.green,
|
|
2570
|
+
warning: import_chalk.default.yellow,
|
|
2571
|
+
error: import_chalk.default.red
|
|
2572
|
+
};
|
|
2537
2573
|
function displayBanner() {
|
|
2538
2574
|
console.log(
|
|
2539
|
-
|
|
2540
|
-
|
|
2541
|
-
|
|
2542
|
-
|
|
2543
|
-
|
|
2544
|
-
|
|
2545
|
-
|
|
2546
|
-
|
|
2547
|
-
|
|
2548
|
-
|
|
2549
|
-
|
|
2550
|
-
|
|
2551
|
-
|
|
2552
|
-
`)
|
|
2575
|
+
COLORS.title(`
|
|
2576
|
+
\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557
|
|
2577
|
+
\u2551 \u2551
|
|
2578
|
+
\u2551 ${import_chalk.default.bold.yellow("Gabo Esquivel")} - ${import_chalk.default.bold.cyan("Software Engineer")} \u2551
|
|
2579
|
+
\u2551 \u2551
|
|
2580
|
+
\u2551 ${COLORS.success("Full-stack engineer")} with ${COLORS.highlight("15+ years")} of experience \u2551
|
|
2581
|
+
\u2551 ${COLORS.success("Web3 specialist")} since ${COLORS.highlight("2017")} \u2551
|
|
2582
|
+
\u2551 ${COLORS.success("Node.js expert")} with ${COLORS.highlight("10+ years")} \u2551
|
|
2583
|
+
\u2551 ${COLORS.success("React & TypeScript")} advanced expertise \u2551
|
|
2584
|
+
\u2551 ${COLORS.success("Currently exploring AI")} \u2551
|
|
2585
|
+
\u2551 \u2551
|
|
2586
|
+
\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D
|
|
2587
|
+
`)
|
|
2553
2588
|
);
|
|
2554
2589
|
}
|
|
2555
|
-
function
|
|
2590
|
+
function displayLinks() {
|
|
2591
|
+
console.log(`
|
|
2592
|
+
${COLORS.subtitle("\u{1F517} Links:")}`);
|
|
2556
2593
|
console.log(
|
|
2557
|
-
|
|
2594
|
+
` ${COLORS.info("Website:")} ${COLORS.link("https://gaboesquivel.com")}`
|
|
2558
2595
|
);
|
|
2559
2596
|
console.log(
|
|
2560
|
-
|
|
2597
|
+
` ${COLORS.info("GitHub:")} ${COLORS.link("https://github.com/gaboesquivel")}`
|
|
2561
2598
|
);
|
|
2562
2599
|
console.log(
|
|
2563
|
-
|
|
2600
|
+
` ${COLORS.info("Twitter:")} ${COLORS.link("https://twitter.com/gaboesquivel")}`
|
|
2564
2601
|
);
|
|
2565
2602
|
console.log(
|
|
2566
|
-
|
|
2603
|
+
` ${COLORS.info("Calendar:")} ${COLORS.link("https://cal.com/gaboesquivel")}`
|
|
2567
2604
|
);
|
|
2568
|
-
|
|
2605
|
+
}
|
|
2606
|
+
function formatProjectCard(project, index) {
|
|
2607
|
+
const prefix = index !== void 0 ? `${COLORS.dim(`${index + 1}.`)} ` : "";
|
|
2608
|
+
const types = project.type?.length ? ` ${COLORS.dim("[")}${project.type.slice(0, 3).map((t) => COLORS.warning(t)).join(COLORS.dim(", "))}${COLORS.dim("]")}` : "";
|
|
2609
|
+
return `${prefix}${COLORS.title(project.title)}${types}`;
|
|
2610
|
+
}
|
|
2611
|
+
function displayProjectSummary(project) {
|
|
2569
2612
|
console.log(
|
|
2570
|
-
|
|
2613
|
+
`
|
|
2614
|
+
${COLORS.title("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501")}`
|
|
2571
2615
|
);
|
|
2616
|
+
console.log(`
|
|
2617
|
+
${COLORS.title("\u{1F4E6}")} ${COLORS.title(project.title)}`);
|
|
2618
|
+
console.log(`
|
|
2619
|
+
${COLORS.subtitle("Description:")}`);
|
|
2620
|
+
console.log(` ${project.description}`);
|
|
2621
|
+
if (project.tech && project.tech.length > 0) {
|
|
2622
|
+
console.log(`
|
|
2623
|
+
${COLORS.subtitle("Tech Stack:")}`);
|
|
2624
|
+
const techDisplay = project.tech.slice(0, 8).map((t) => COLORS.highlight(t)).join(COLORS.dim(", "));
|
|
2625
|
+
const moreTech = project.tech.length > 8 ? COLORS.dim(` +${project.tech.length - 8} more`) : "";
|
|
2626
|
+
console.log(` ${techDisplay}${moreTech}`);
|
|
2627
|
+
}
|
|
2628
|
+
if (project.type && project.type.length > 0) {
|
|
2629
|
+
console.log(`
|
|
2630
|
+
${COLORS.subtitle("Type:")}`);
|
|
2631
|
+
console.log(
|
|
2632
|
+
` ${project.type.map((t) => COLORS.warning(`\u2022 ${t}`)).join(" ")}`
|
|
2633
|
+
);
|
|
2634
|
+
}
|
|
2635
|
+
if (project.achievements && project.achievements.length > 0) {
|
|
2636
|
+
console.log(`
|
|
2637
|
+
${COLORS.subtitle("Key Achievements:")}`);
|
|
2638
|
+
for (const achievement of project.achievements.slice(0, 3)) {
|
|
2639
|
+
console.log(` ${COLORS.success("\u2713")} ${achievement}`);
|
|
2640
|
+
}
|
|
2641
|
+
if (project.achievements.length > 3) {
|
|
2642
|
+
console.log(
|
|
2643
|
+
` ${COLORS.dim(`... and ${project.achievements.length - 3} more`)}`
|
|
2644
|
+
);
|
|
2645
|
+
}
|
|
2646
|
+
}
|
|
2647
|
+
if (project.story && project.story.length > 0) {
|
|
2648
|
+
console.log(`
|
|
2649
|
+
${COLORS.subtitle("Story:")}`);
|
|
2650
|
+
for (const paragraph of project.story) {
|
|
2651
|
+
console.log(` ${paragraph}
|
|
2652
|
+
`);
|
|
2653
|
+
}
|
|
2654
|
+
}
|
|
2655
|
+
const portfolioLink = `https://gaboesquivel.com/project/${project.slug}`;
|
|
2656
|
+
console.log(`
|
|
2657
|
+
${COLORS.subtitle("Portfolio Link:")}`);
|
|
2658
|
+
console.log(` ${COLORS.link(portfolioLink)}`);
|
|
2659
|
+
if (project.link) {
|
|
2660
|
+
console.log(`
|
|
2661
|
+
${COLORS.subtitle("Project Link:")}`);
|
|
2662
|
+
console.log(` ${COLORS.link(project.link)}`);
|
|
2663
|
+
}
|
|
2664
|
+
if (project.repo) {
|
|
2665
|
+
console.log(`
|
|
2666
|
+
${COLORS.subtitle("Repository:")}`);
|
|
2667
|
+
console.log(` ${COLORS.link(project.repo)}`);
|
|
2668
|
+
}
|
|
2572
2669
|
console.log(
|
|
2573
|
-
|
|
2670
|
+
`
|
|
2671
|
+
${COLORS.title("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501")}`
|
|
2574
2672
|
);
|
|
2575
2673
|
}
|
|
2576
|
-
function displayProjectList() {
|
|
2577
|
-
console.log(
|
|
2578
|
-
|
|
2579
|
-
|
|
2580
|
-
|
|
2674
|
+
function displayProjectList(projectList = projects) {
|
|
2675
|
+
console.log(`
|
|
2676
|
+
${COLORS.subtitle(`\u{1F4CB} Projects (${projectList.length}):`)}
|
|
2677
|
+
`);
|
|
2678
|
+
for (let index = 0; index < projectList.length; index++) {
|
|
2679
|
+
const project = projectList[index];
|
|
2680
|
+
console.log(formatProjectCard(project, index));
|
|
2681
|
+
const desc = project.description.length > 80 ? `${project.description.substring(0, 80)}...` : project.description;
|
|
2682
|
+
console.log(` ${COLORS.dim(desc)}
|
|
2683
|
+
`);
|
|
2581
2684
|
}
|
|
2582
|
-
|
|
2583
|
-
|
|
2584
|
-
|
|
2585
|
-
|
|
2586
|
-
|
|
2587
|
-
|
|
2588
|
-
|
|
2589
|
-
|
|
2590
|
-
|
|
2591
|
-
|
|
2685
|
+
}
|
|
2686
|
+
function displayTechSummary(techItem) {
|
|
2687
|
+
console.log(
|
|
2688
|
+
`
|
|
2689
|
+
${COLORS.title("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501")}`
|
|
2690
|
+
);
|
|
2691
|
+
console.log(
|
|
2692
|
+
`
|
|
2693
|
+
${COLORS.title("\u26A1")} ${COLORS.title(techItem.name)} ${COLORS.warning(`(since ${techItem.since})`)}`
|
|
2694
|
+
);
|
|
2695
|
+
console.log(`
|
|
2696
|
+
${COLORS.subtitle("Description:")}`);
|
|
2697
|
+
console.log(` ${techItem.description}`);
|
|
2698
|
+
if (techItem.experience && techItem.experience.length > 0) {
|
|
2699
|
+
console.log(`
|
|
2700
|
+
${COLORS.subtitle("Experience Highlights:")}`);
|
|
2701
|
+
for (const exp of techItem.experience.slice(0, 3)) {
|
|
2702
|
+
console.log(` ${COLORS.success("\u2022")} ${exp}`);
|
|
2592
2703
|
}
|
|
2593
|
-
if (
|
|
2704
|
+
if (techItem.experience.length > 3) {
|
|
2594
2705
|
console.log(
|
|
2595
|
-
`
|
|
2706
|
+
` ${COLORS.dim(`... and ${techItem.experience.length - 3} more`)}`
|
|
2596
2707
|
);
|
|
2597
2708
|
}
|
|
2709
|
+
}
|
|
2710
|
+
const portfolioLink = `https://gaboesquivel.com/tech/${techItem.slug}`;
|
|
2711
|
+
console.log(`
|
|
2712
|
+
${COLORS.subtitle("Portfolio Link:")}`);
|
|
2713
|
+
console.log(` ${COLORS.link(portfolioLink)}`);
|
|
2714
|
+
if (techItem.link) {
|
|
2715
|
+
console.log(`
|
|
2716
|
+
${COLORS.subtitle("Official Link:")}`);
|
|
2717
|
+
console.log(` ${COLORS.link(techItem.link)}`);
|
|
2718
|
+
}
|
|
2719
|
+
console.log(
|
|
2720
|
+
`
|
|
2721
|
+
${COLORS.title("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501")}`
|
|
2722
|
+
);
|
|
2723
|
+
}
|
|
2724
|
+
function displayTechList(techList = techStack) {
|
|
2725
|
+
console.log(`
|
|
2726
|
+
${COLORS.subtitle(`\u{1F6E0}\uFE0F Technologies (${techList.length}):`)}
|
|
2727
|
+
`);
|
|
2728
|
+
for (const item of techList) {
|
|
2598
2729
|
console.log(
|
|
2599
|
-
`
|
|
2730
|
+
` ${COLORS.highlight(item.name)} ${COLORS.dim(`(since ${item.since})`)}`
|
|
2600
2731
|
);
|
|
2601
|
-
|
|
2732
|
+
const desc = item.description.length > 70 ? `${item.description.substring(0, 70)}...` : item.description;
|
|
2733
|
+
console.log(` ${COLORS.dim(desc)}
|
|
2734
|
+
`);
|
|
2602
2735
|
}
|
|
2603
2736
|
}
|
|
2604
|
-
function
|
|
2605
|
-
|
|
2606
|
-
|
|
2607
|
-
|
|
2608
|
-
|
|
2737
|
+
async function browseProjects() {
|
|
2738
|
+
const projectList = projects;
|
|
2739
|
+
while (true) {
|
|
2740
|
+
const { action } = await (0, import_prompts.default)({
|
|
2741
|
+
type: "select",
|
|
2742
|
+
name: "action",
|
|
2743
|
+
message: COLORS.subtitle("What would you like to do?"),
|
|
2744
|
+
choices: [
|
|
2745
|
+
{ title: "\u{1F4CB} View all projects", value: "list" },
|
|
2746
|
+
{ title: "\u{1F50D} Search projects", value: "search" },
|
|
2747
|
+
{ title: "\u{1F3F7}\uFE0F Filter by type", value: "filter" },
|
|
2748
|
+
{ title: "\u{1F519} Back to main menu", value: "back" }
|
|
2749
|
+
]
|
|
2750
|
+
});
|
|
2751
|
+
if (!action || action === "back") break;
|
|
2752
|
+
if (action === "list") {
|
|
2753
|
+
displayProjectList(projectList);
|
|
2754
|
+
const { selected } = await (0, import_prompts.default)({
|
|
2755
|
+
type: "select",
|
|
2756
|
+
name: "selected",
|
|
2757
|
+
message: COLORS.subtitle("Select a project to view details:"),
|
|
2758
|
+
choices: [
|
|
2759
|
+
...projectList.map((p, i) => ({
|
|
2760
|
+
title: formatProjectCard(p, i),
|
|
2761
|
+
value: i
|
|
2762
|
+
})),
|
|
2763
|
+
{ title: COLORS.dim("\u2190 Back"), value: -1 }
|
|
2764
|
+
]
|
|
2765
|
+
});
|
|
2766
|
+
if (selected !== void 0 && selected >= 0) {
|
|
2767
|
+
displayProjectSummary(projectList[selected]);
|
|
2768
|
+
await (0, import_prompts.default)({
|
|
2769
|
+
type: "confirm",
|
|
2770
|
+
name: "continue",
|
|
2771
|
+
message: COLORS.info("Press Enter to continue..."),
|
|
2772
|
+
initial: true
|
|
2773
|
+
});
|
|
2774
|
+
}
|
|
2775
|
+
}
|
|
2776
|
+
if (action === "search") {
|
|
2777
|
+
const { query } = await (0, import_prompts.default)({
|
|
2778
|
+
type: "text",
|
|
2779
|
+
name: "query",
|
|
2780
|
+
message: COLORS.subtitle(
|
|
2781
|
+
"Search projects (by name, tech, or description):"
|
|
2782
|
+
)
|
|
2783
|
+
});
|
|
2784
|
+
if (query) {
|
|
2785
|
+
const searchLower = query.toLowerCase();
|
|
2786
|
+
const filtered = projectList.filter(
|
|
2787
|
+
(p) => p.title.toLowerCase().includes(searchLower) || p.description.toLowerCase().includes(searchLower) || p.tech?.some((t) => t.toLowerCase().includes(searchLower)) || p.type?.some((t) => t.toLowerCase().includes(searchLower))
|
|
2788
|
+
);
|
|
2789
|
+
if (filtered.length === 0) {
|
|
2790
|
+
console.log(
|
|
2791
|
+
`
|
|
2792
|
+
${COLORS.error("No projects found matching your search.")}
|
|
2793
|
+
`
|
|
2794
|
+
);
|
|
2795
|
+
} else {
|
|
2796
|
+
displayProjectList(filtered);
|
|
2797
|
+
const { selected } = await (0, import_prompts.default)({
|
|
2798
|
+
type: "select",
|
|
2799
|
+
name: "selected",
|
|
2800
|
+
message: COLORS.subtitle("Select a project to view details:"),
|
|
2801
|
+
choices: [
|
|
2802
|
+
...filtered.map((p, i) => ({
|
|
2803
|
+
title: formatProjectCard(p, i),
|
|
2804
|
+
value: i
|
|
2805
|
+
})),
|
|
2806
|
+
{ title: COLORS.dim("\u2190 Back"), value: -1 }
|
|
2807
|
+
]
|
|
2808
|
+
});
|
|
2809
|
+
if (selected !== void 0 && selected >= 0) {
|
|
2810
|
+
displayProjectSummary(filtered[selected]);
|
|
2811
|
+
await (0, import_prompts.default)({
|
|
2812
|
+
type: "confirm",
|
|
2813
|
+
name: "continue",
|
|
2814
|
+
message: COLORS.info("Press Enter to continue..."),
|
|
2815
|
+
initial: true
|
|
2816
|
+
});
|
|
2817
|
+
}
|
|
2818
|
+
}
|
|
2819
|
+
}
|
|
2820
|
+
}
|
|
2821
|
+
if (action === "filter") {
|
|
2822
|
+
const allTypes = /* @__PURE__ */ new Set();
|
|
2823
|
+
for (const p of projectList) {
|
|
2824
|
+
if (p.type) {
|
|
2825
|
+
for (const t of p.type) {
|
|
2826
|
+
allTypes.add(t);
|
|
2827
|
+
}
|
|
2828
|
+
}
|
|
2829
|
+
}
|
|
2830
|
+
const typeArray = Array.from(allTypes).sort();
|
|
2831
|
+
const { selectedType } = await (0, import_prompts.default)({
|
|
2832
|
+
type: "select",
|
|
2833
|
+
name: "selectedType",
|
|
2834
|
+
message: COLORS.subtitle("Filter by project type:"),
|
|
2835
|
+
choices: [
|
|
2836
|
+
...typeArray.map((t) => ({ title: COLORS.warning(t), value: t })),
|
|
2837
|
+
{ title: COLORS.dim("\u2190 Back"), value: "back" }
|
|
2838
|
+
]
|
|
2839
|
+
});
|
|
2840
|
+
if (selectedType && selectedType !== "back") {
|
|
2841
|
+
const filtered = projectList.filter(
|
|
2842
|
+
(p) => p.type?.includes(selectedType)
|
|
2843
|
+
);
|
|
2844
|
+
displayProjectList(filtered);
|
|
2845
|
+
const { selected } = await (0, import_prompts.default)({
|
|
2846
|
+
type: "select",
|
|
2847
|
+
name: "selected",
|
|
2848
|
+
message: COLORS.subtitle("Select a project to view details:"),
|
|
2849
|
+
choices: [
|
|
2850
|
+
...filtered.map((p, i) => ({
|
|
2851
|
+
title: formatProjectCard(p, i),
|
|
2852
|
+
value: i
|
|
2853
|
+
})),
|
|
2854
|
+
{ title: COLORS.dim("\u2190 Back"), value: -1 }
|
|
2855
|
+
]
|
|
2856
|
+
});
|
|
2857
|
+
if (selected !== void 0 && selected >= 0) {
|
|
2858
|
+
displayProjectSummary(filtered[selected]);
|
|
2859
|
+
await (0, import_prompts.default)({
|
|
2860
|
+
type: "confirm",
|
|
2861
|
+
name: "continue",
|
|
2862
|
+
message: COLORS.info("Press Enter to continue..."),
|
|
2863
|
+
initial: true
|
|
2864
|
+
});
|
|
2865
|
+
}
|
|
2866
|
+
}
|
|
2867
|
+
}
|
|
2609
2868
|
}
|
|
2610
|
-
|
|
2611
|
-
|
|
2612
|
-
|
|
2613
|
-
|
|
2614
|
-
const
|
|
2615
|
-
|
|
2616
|
-
|
|
2617
|
-
|
|
2618
|
-
|
|
2619
|
-
|
|
2869
|
+
}
|
|
2870
|
+
async function browseTech() {
|
|
2871
|
+
const techList = techStack;
|
|
2872
|
+
while (true) {
|
|
2873
|
+
const { action } = await (0, import_prompts.default)({
|
|
2874
|
+
type: "select",
|
|
2875
|
+
name: "action",
|
|
2876
|
+
message: COLORS.subtitle("What would you like to do?"),
|
|
2877
|
+
choices: [
|
|
2878
|
+
{ title: "\u{1F4CB} View all technologies", value: "list" },
|
|
2879
|
+
{ title: "\u{1F50D} Search technologies", value: "search" },
|
|
2880
|
+
{ title: "\u{1F519} Back to main menu", value: "back" }
|
|
2881
|
+
]
|
|
2882
|
+
});
|
|
2883
|
+
if (!action || action === "back") break;
|
|
2884
|
+
if (action === "list") {
|
|
2885
|
+
displayTechList(techList);
|
|
2886
|
+
const { selected } = await (0, import_prompts.default)({
|
|
2887
|
+
type: "select",
|
|
2888
|
+
name: "selected",
|
|
2889
|
+
message: COLORS.subtitle("Select a technology to view details:"),
|
|
2890
|
+
choices: [
|
|
2891
|
+
...techList.map((t, i) => ({
|
|
2892
|
+
title: `${COLORS.highlight(t.name)} ${COLORS.dim(`(since ${t.since})`)}`,
|
|
2893
|
+
value: i
|
|
2894
|
+
})),
|
|
2895
|
+
{ title: COLORS.dim("\u2190 Back"), value: -1 }
|
|
2896
|
+
]
|
|
2897
|
+
});
|
|
2898
|
+
if (selected !== void 0 && selected >= 0) {
|
|
2899
|
+
displayTechSummary(techList[selected]);
|
|
2900
|
+
await (0, import_prompts.default)({
|
|
2901
|
+
type: "confirm",
|
|
2902
|
+
name: "continue",
|
|
2903
|
+
message: COLORS.info("Press Enter to continue..."),
|
|
2904
|
+
initial: true
|
|
2905
|
+
});
|
|
2906
|
+
}
|
|
2620
2907
|
}
|
|
2621
|
-
|
|
2622
|
-
|
|
2908
|
+
if (action === "search") {
|
|
2909
|
+
const { query } = await (0, import_prompts.default)({
|
|
2910
|
+
type: "text",
|
|
2911
|
+
name: "query",
|
|
2912
|
+
message: COLORS.subtitle(
|
|
2913
|
+
"Search technologies (by name or description):"
|
|
2914
|
+
)
|
|
2915
|
+
});
|
|
2916
|
+
if (query) {
|
|
2917
|
+
const searchLower = query.toLowerCase();
|
|
2918
|
+
const filtered = techList.filter(
|
|
2919
|
+
(t) => t.name.toLowerCase().includes(searchLower) || t.description.toLowerCase().includes(searchLower) || t.experience?.some((e) => e.toLowerCase().includes(searchLower))
|
|
2920
|
+
);
|
|
2921
|
+
if (filtered.length === 0) {
|
|
2922
|
+
console.log(
|
|
2923
|
+
`
|
|
2924
|
+
${COLORS.error("No technologies found matching your search.")}
|
|
2623
2925
|
`
|
|
2624
|
-
|
|
2926
|
+
);
|
|
2927
|
+
} else {
|
|
2928
|
+
displayTechList(filtered);
|
|
2929
|
+
const { selected } = await (0, import_prompts.default)({
|
|
2930
|
+
type: "select",
|
|
2931
|
+
name: "selected",
|
|
2932
|
+
message: COLORS.subtitle("Select a technology to view details:"),
|
|
2933
|
+
choices: [
|
|
2934
|
+
...filtered.map((t, i) => ({
|
|
2935
|
+
title: `${COLORS.highlight(t.name)} ${COLORS.dim(`(since ${t.since})`)}`,
|
|
2936
|
+
value: i
|
|
2937
|
+
})),
|
|
2938
|
+
{ title: COLORS.dim("\u2190 Back"), value: -1 }
|
|
2939
|
+
]
|
|
2940
|
+
});
|
|
2941
|
+
if (selected !== void 0 && selected >= 0) {
|
|
2942
|
+
displayTechSummary(filtered[selected]);
|
|
2943
|
+
await (0, import_prompts.default)({
|
|
2944
|
+
type: "confirm",
|
|
2945
|
+
name: "continue",
|
|
2946
|
+
message: COLORS.info("Press Enter to continue..."),
|
|
2947
|
+
initial: true
|
|
2948
|
+
});
|
|
2949
|
+
}
|
|
2950
|
+
}
|
|
2951
|
+
}
|
|
2952
|
+
}
|
|
2625
2953
|
}
|
|
2626
2954
|
}
|
|
2627
|
-
function
|
|
2955
|
+
async function mainMenu() {
|
|
2956
|
+
while (true) {
|
|
2957
|
+
const { choice } = await (0, import_prompts.default)({
|
|
2958
|
+
type: "select",
|
|
2959
|
+
name: "choice",
|
|
2960
|
+
message: COLORS.subtitle("What would you like to explore?"),
|
|
2961
|
+
choices: [
|
|
2962
|
+
{ title: "\u{1F4E6} Browse Projects", value: "projects" },
|
|
2963
|
+
{ title: "\u{1F6E0}\uFE0F Browse Technologies", value: "tech" },
|
|
2964
|
+
{ title: "\u{1F44B} Exit", value: "exit" }
|
|
2965
|
+
]
|
|
2966
|
+
});
|
|
2967
|
+
if (!choice || choice === "exit") {
|
|
2968
|
+
console.log(`
|
|
2969
|
+
${COLORS.success("Thanks for exploring! \u{1F44B}\n")}`);
|
|
2970
|
+
break;
|
|
2971
|
+
}
|
|
2972
|
+
if (choice === "projects") {
|
|
2973
|
+
await browseProjects();
|
|
2974
|
+
}
|
|
2975
|
+
if (choice === "tech") {
|
|
2976
|
+
await browseTech();
|
|
2977
|
+
}
|
|
2978
|
+
}
|
|
2979
|
+
}
|
|
2980
|
+
async function handleArgs() {
|
|
2628
2981
|
const args = process.argv.slice(2);
|
|
2629
2982
|
if (args.length === 0) {
|
|
2630
2983
|
displayBanner();
|
|
2631
|
-
|
|
2984
|
+
displayLinks();
|
|
2985
|
+
await mainMenu();
|
|
2632
2986
|
return;
|
|
2633
2987
|
}
|
|
2634
2988
|
const command = args[0];
|
|
2635
2989
|
switch (command) {
|
|
2636
2990
|
case "--projects":
|
|
2637
|
-
|
|
2991
|
+
case "-p":
|
|
2992
|
+
displayBanner();
|
|
2993
|
+
await browseProjects();
|
|
2638
2994
|
break;
|
|
2639
2995
|
case "--tech":
|
|
2640
|
-
|
|
2996
|
+
case "-t":
|
|
2997
|
+
displayBanner();
|
|
2998
|
+
await browseTech();
|
|
2999
|
+
break;
|
|
3000
|
+
case "--help":
|
|
3001
|
+
case "-h":
|
|
3002
|
+
displayBanner();
|
|
3003
|
+
console.log(`
|
|
3004
|
+
${COLORS.subtitle("Available Commands:")}
|
|
3005
|
+
`);
|
|
3006
|
+
console.log(
|
|
3007
|
+
` ${COLORS.info("npx gaboesquivel")} Interactive menu`
|
|
3008
|
+
);
|
|
3009
|
+
console.log(
|
|
3010
|
+
` ${COLORS.info("npx gaboesquivel --projects")} Browse projects`
|
|
3011
|
+
);
|
|
3012
|
+
console.log(
|
|
3013
|
+
` ${COLORS.info("npx gaboesquivel --tech")} Browse technologies`
|
|
3014
|
+
);
|
|
3015
|
+
console.log(
|
|
3016
|
+
` ${COLORS.info("npx gaboesquivel --help")} Show this help
|
|
3017
|
+
`
|
|
3018
|
+
);
|
|
2641
3019
|
break;
|
|
2642
3020
|
default:
|
|
2643
|
-
console.log(
|
|
3021
|
+
console.log(`${COLORS.error(`Unknown command: ${command}`)}`);
|
|
3022
|
+
console.log(
|
|
3023
|
+
`Run ${COLORS.info("npx gaboesquivel --help")} for available commands.`
|
|
3024
|
+
);
|
|
2644
3025
|
}
|
|
2645
3026
|
}
|
|
2646
|
-
handleArgs()
|
|
3027
|
+
handleArgs().catch((error) => {
|
|
3028
|
+
console.error(COLORS.error("An error occurred:"), error);
|
|
3029
|
+
process.exit(1);
|
|
3030
|
+
});
|