From 255faab7095d9e3261c1e850b2d4b8b82e5dc664 Mon Sep 17 00:00:00 2001 From: Jason Suarez Date: Tue, 7 Jan 2025 19:45:47 +0100 Subject: [PATCH 1/6] feat(builder-page): Add personal builder profile page --- .../page.tsx | 134 ++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 packages/nextjs/app/builders/0x7d971C39bb700AcEc20879D46f092dC0DB1dbF9E/page.tsx diff --git a/packages/nextjs/app/builders/0x7d971C39bb700AcEc20879D46f092dC0DB1dbF9E/page.tsx b/packages/nextjs/app/builders/0x7d971C39bb700AcEc20879D46f092dC0DB1dbF9E/page.tsx new file mode 100644 index 0000000..ff8b7b2 --- /dev/null +++ b/packages/nextjs/app/builders/0x7d971C39bb700AcEc20879D46f092dC0DB1dbF9E/page.tsx @@ -0,0 +1,134 @@ +import { BuidlGuidlLogo } from "~~/components/assets/BuidlGuidlLogo"; +import { Address } from "~~/components/scaffold-eth"; + +export default function Page() { + const BUILDER_INFO = { + name: "Jason SuΓ‘rez", + role: "Smart Contract | Frontend Developer", + address: "0x7d971C39bb700AcEc20879D46f092dC0DB1dbF9E", + avatar: "https://ik.imagekit.io/montresor/9.png?updatedAt=1730742966131", + tagline: "Securing the blockchain, one contract at a time", + languages: ["πŸ‡«πŸ‡·", "πŸ‡©πŸ‡΄", "πŸ‡¬πŸ‡§"], + links: { + bg: "https://app.buidlguidl.com/builders/0x7d971C39bb700AcEc20879D46f092dC0DB1dbF9E", + github: "https://github.com/All-Khwarizmi", + twitter: "https://twitter.com/swarecito", + telegram: "https://t.me/swarecito", + }, + focus: { + building: "Smart Contracts", + learning: "DeFi security and cross-chain mechanics", + contributing: "BuildGuild batch12 and open source", + }, + journey: [ + { + year: "2023", + milestone: "Frontend Developer", + detail: "Building modern web applications", + }, + { + year: "2024", + milestone: "Blockchain Development", + detail: "Smart contract development & security", + }, + { + year: "2025", + milestone: "BuildGuild #12", + detail: "Contributing to Web3 ecosystem", + }, + ], + }; + + return ( +
+
+
+ {/* Profile Section */} +
+ {/* Avatar */} +
+ Profile +
+ + {/* Identity */} +

{BUILDER_INFO.name}

+
+

{BUILDER_INFO.tagline}

+ + {/* Social Links */} + + + + +
+ {/* Languages */} +
+

{BUILDER_INFO.languages.join(" ")}

+
+ + {/* Current Focus */} +
+
+
+

Building

+

{BUILDER_INFO.focus.building}

+
+
+

Learning

+

{BUILDER_INFO.focus.learning}

+
+
+

Contributing

+

{BUILDER_INFO.focus.contributing}

+
+
+
+ + {/* Journey Timeline */} +
+

Journey

+
+ {BUILDER_INFO.journey.map((step, index) => ( +
+ {step.year} + + {step.milestone} +
+ ))} +
+
+
+
+
+ ); +} From 3a74b6115d5ee3a053c8ea34e66bb402ba778b2c Mon Sep 17 00:00:00 2001 From: Jason Suarez Date: Wed, 8 Jan 2025 09:08:30 +0100 Subject: [PATCH 2/6] refactor: implement PR review suggestions and image config --- .../page.tsx | 85 ++++++++++--------- packages/nextjs/next.config.js | 8 ++ 2 files changed, 55 insertions(+), 38 deletions(-) diff --git a/packages/nextjs/app/builders/0x7d971C39bb700AcEc20879D46f092dC0DB1dbF9E/page.tsx b/packages/nextjs/app/builders/0x7d971C39bb700AcEc20879D46f092dC0DB1dbF9E/page.tsx index ff8b7b2..b7f197a 100644 --- a/packages/nextjs/app/builders/0x7d971C39bb700AcEc20879D46f092dC0DB1dbF9E/page.tsx +++ b/packages/nextjs/app/builders/0x7d971C39bb700AcEc20879D46f092dC0DB1dbF9E/page.tsx @@ -1,44 +1,45 @@ +import Image from "next/image"; +import { type NextPage } from "next"; import { BuidlGuidlLogo } from "~~/components/assets/BuidlGuidlLogo"; import { Address } from "~~/components/scaffold-eth"; -export default function Page() { - const BUILDER_INFO = { - name: "Jason SuΓ‘rez", - role: "Smart Contract | Frontend Developer", - address: "0x7d971C39bb700AcEc20879D46f092dC0DB1dbF9E", - avatar: "https://ik.imagekit.io/montresor/9.png?updatedAt=1730742966131", - tagline: "Securing the blockchain, one contract at a time", - languages: ["πŸ‡«πŸ‡·", "πŸ‡©πŸ‡΄", "πŸ‡¬πŸ‡§"], - links: { - bg: "https://app.buidlguidl.com/builders/0x7d971C39bb700AcEc20879D46f092dC0DB1dbF9E", - github: "https://github.com/All-Khwarizmi", - twitter: "https://twitter.com/swarecito", - telegram: "https://t.me/swarecito", +const BUILDER_INFO = { + name: "Jason SuΓ‘rez", + role: "Smart Contract | Frontend Developer", + address: "0x7d971C39bb700AcEc20879D46f092dC0DB1dbF9E", + avatar: "https://ik.imagekit.io/montresor/9.png?updatedAt=1730742966131", + tagline: "Securing the blockchain, one contract at a time", + languages: ["πŸ‡«πŸ‡·", "πŸ‡©πŸ‡΄", "πŸ‡¬πŸ‡§"], + links: { + bg: "https://app.buidlguidl.com/builders/0x7d971C39bb700AcEc20879D46f092dC0DB1dbF9E", + github: "https://github.com/All-Khwarizmi", + twitter: "https://twitter.com/swarecito", + telegram: "https://t.me/swarecito", + }, + focus: { + building: "Smart Contracts", + learning: "DeFi security and cross-chain mechanics", + contributing: "BuildGuild batch12 and open source", + }, + journey: [ + { + year: "2023", + milestone: "Frontend Developer", + detail: "Building modern web applications", }, - focus: { - building: "Smart Contracts", - learning: "DeFi security and cross-chain mechanics", - contributing: "BuildGuild batch12 and open source", + { + year: "2024", + milestone: "Blockchain Development", + detail: "Smart contract development & security", }, - journey: [ - { - year: "2023", - milestone: "Frontend Developer", - detail: "Building modern web applications", - }, - { - year: "2024", - milestone: "Blockchain Development", - detail: "Smart contract development & security", - }, - { - year: "2025", - milestone: "BuildGuild #12", - detail: "Contributing to Web3 ecosystem", - }, - ], - }; - + { + year: "2025", + milestone: "BuildGuild #12", + detail: "Contributing to Web3 ecosystem", + }, + ], +} as const; +export const JasonBuilderProfile: NextPage = () => { return (
@@ -47,7 +48,13 @@ export default function Page() {
{/* Avatar */}
- Profile + Profile
{/* Identity */} @@ -131,4 +138,6 @@ export default function Page() {
); -} +}; + +export default JasonBuilderProfile; diff --git a/packages/nextjs/next.config.js b/packages/nextjs/next.config.js index d765869..f8d5632 100644 --- a/packages/nextjs/next.config.js +++ b/packages/nextjs/next.config.js @@ -2,6 +2,14 @@ /** @type {import('next').NextConfig} */ const nextConfig = { + images: { + remotePatterns: [ + { + protocol: "https", + hostname: "ik.imagekit.io", + }, + ], + }, reactStrictMode: true, typescript: { ignoreBuildErrors: process.env.NEXT_PUBLIC_IGNORE_BUILD_ERROR === "true", From c04322bd652a995bff309621cd9d0c440aa17b67 Mon Sep 17 00:00:00 2001 From: Nikolai Date: Tue, 7 Jan 2025 16:08:16 +0700 Subject: [PATCH 3/6] added profile page for nikolaiLeb --- .../page.tsx | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 packages/nextjs/app/builders/0x4b7b07D8BAf51975eeAb0E1eb4B481A5aC691ED6/page.tsx diff --git a/packages/nextjs/app/builders/0x4b7b07D8BAf51975eeAb0E1eb4B481A5aC691ED6/page.tsx b/packages/nextjs/app/builders/0x4b7b07D8BAf51975eeAb0E1eb4B481A5aC691ED6/page.tsx new file mode 100644 index 0000000..7aafb78 --- /dev/null +++ b/packages/nextjs/app/builders/0x4b7b07D8BAf51975eeAb0E1eb4B481A5aC691ED6/page.tsx @@ -0,0 +1,56 @@ +"use client"; + +import Image from "next/image"; +import type { NextPage } from "next"; +import { Address } from "~~/components/scaffold-eth"; + +const nikolaiiiProfile: NextPage = () => { + const address = "0x4b7b07D8BAf51975eeAb0E1eb4B481A5aC691ED6"; + + return ( +
+
+
+ @nikolaii +
+

@nikolaiii

+
+
+ +
+

I cook frames on Warpcast

+ +
+ +
+
+

About Me

+

+ πŸ‘‹ Hello! I am Nikolai
+ πŸ§‘β€πŸ³ I cook frames on Warpcast. +

+
+
+
+ ); +}; + +export default nikolaiiiProfile; From 353f24589a4af73b452671fd09bdbe2212003cca Mon Sep 17 00:00:00 2001 From: Nikolai Date: Wed, 8 Jan 2025 08:15:55 +0700 Subject: [PATCH 4/6] added avatars.githubusercontent.com as image source to next.config.js. Updated profile page --- .../page.tsx | 34 +++++++++++++++---- packages/nextjs/next.config.js | 5 +++ 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/packages/nextjs/app/builders/0x4b7b07D8BAf51975eeAb0E1eb4B481A5aC691ED6/page.tsx b/packages/nextjs/app/builders/0x4b7b07D8BAf51975eeAb0E1eb4B481A5aC691ED6/page.tsx index 7aafb78..f45caf3 100644 --- a/packages/nextjs/app/builders/0x4b7b07D8BAf51975eeAb0E1eb4B481A5aC691ED6/page.tsx +++ b/packages/nextjs/app/builders/0x4b7b07D8BAf51975eeAb0E1eb4B481A5aC691ED6/page.tsx @@ -14,8 +14,8 @@ const nikolaiiiProfile: NextPage = () => { @nikolaii
@@ -26,14 +26,19 @@ const nikolaiiiProfile: NextPage = () => {

I cook frames on Warpcast

- + GitHub Warpcast @@ -43,10 +48,27 @@ const nikolaiiiProfile: NextPage = () => {

About Me

+

πŸ‘‹ Hello! I am Nikolai

+

+ I am passionate about analytics and web3. Started working on Bitclout (now Deso) analytics in 2021 and built{" "} + + AltumBase + + . Until today most of the Deso nodes use it as a source for user analytics. +

+

+ In March 2024 started making frames (mini-apps) on Warpcast. You can check out my profile at{" "} + + warpcast.com/nikolaiii + + . +

+

In order to elevate my frames I started learning smart contracts and this is how I got here.

- πŸ‘‹ Hello! I am Nikolai
- πŸ§‘β€πŸ³ I cook frames on Warpcast. + If you are not yet on Warpcast, I really think you should join. It is a great place to build. Please let me + know if you need an free invite.

+

Wishing you all a Happy Based Building New Year!

diff --git a/packages/nextjs/next.config.js b/packages/nextjs/next.config.js index f8d5632..0953c9d 100644 --- a/packages/nextjs/next.config.js +++ b/packages/nextjs/next.config.js @@ -22,6 +22,11 @@ const nextConfig = { config.externals.push("pino-pretty", "lokijs", "encoding"); return config; }, + images: { + remotePatterns: [ + { hostname: "avatars.githubusercontent.com" }, + ], + }, }; module.exports = nextConfig; From ae656e72e8ba88f943e47baa760cc559a9074e99 Mon Sep 17 00:00:00 2001 From: Jason Suarez Date: Fri, 10 Jan 2025 06:02:12 +0100 Subject: [PATCH 5/6] fix: merge duplicate image objects --- packages/nextjs/next.config.js | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/packages/nextjs/next.config.js b/packages/nextjs/next.config.js index 0953c9d..c278a4d 100644 --- a/packages/nextjs/next.config.js +++ b/packages/nextjs/next.config.js @@ -2,14 +2,6 @@ /** @type {import('next').NextConfig} */ const nextConfig = { - images: { - remotePatterns: [ - { - protocol: "https", - hostname: "ik.imagekit.io", - }, - ], - }, reactStrictMode: true, typescript: { ignoreBuildErrors: process.env.NEXT_PUBLIC_IGNORE_BUILD_ERROR === "true", @@ -25,6 +17,10 @@ const nextConfig = { images: { remotePatterns: [ { hostname: "avatars.githubusercontent.com" }, + { + protocol: "https", + hostname: "ik.imagekit.io", + }, ], }, }; From d0c78e6e8dab3ae9bfd6d10d5ec0c39b15bc0433 Mon Sep 17 00:00:00 2001 From: Jason Suarez Date: Fri, 10 Jan 2025 06:05:21 +0100 Subject: [PATCH 6/6] fix: add priority attribute to image and remove named export - Add priority attribut to Next.js Image component to improve Largest Contentful Paint (LCP). Since the image is detected in this layer we prioritize faster loading than lazy one. - Remove `named` export in favor of the `default` to be complaint with the NextPage type. --- .../0x7d971C39bb700AcEc20879D46f092dC0DB1dbF9E/page.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/nextjs/app/builders/0x7d971C39bb700AcEc20879D46f092dC0DB1dbF9E/page.tsx b/packages/nextjs/app/builders/0x7d971C39bb700AcEc20879D46f092dC0DB1dbF9E/page.tsx index b7f197a..60030ae 100644 --- a/packages/nextjs/app/builders/0x7d971C39bb700AcEc20879D46f092dC0DB1dbF9E/page.tsx +++ b/packages/nextjs/app/builders/0x7d971C39bb700AcEc20879D46f092dC0DB1dbF9E/page.tsx @@ -39,7 +39,7 @@ const BUILDER_INFO = { }, ], } as const; -export const JasonBuilderProfile: NextPage = () => { +const JasonBuilderProfile: NextPage = () => { return (
@@ -51,6 +51,7 @@ export const JasonBuilderProfile: NextPage = () => {