diff --git a/app/[lang]/(hyperjump)/components/nav.tsx b/app/[lang]/(hyperjump)/components/nav.tsx index c605760a..050166aa 100644 --- a/app/[lang]/(hyperjump)/components/nav.tsx +++ b/app/[lang]/(hyperjump)/components/nav.tsx @@ -15,7 +15,8 @@ import { mainNavItems0Label, mainNavItems1Label, mainNavItems2Label, - mainNavItems3Label + mainNavItems3Label, + mainNavItems4Label } from "@/locales/.generated/server"; import { type SupportedLanguage, @@ -31,6 +32,7 @@ const SOLID_NAV_PATHS = [ "/jobs", "/services", "/products", + "/team", ...data.jobs.map(({ id }) => `/jobs/${id}`) ]; const SOLID_NAV_PATHS_WITH_LOCALE = supportedLanguages.reduce( @@ -49,6 +51,7 @@ function menu(lang: SupportedLanguage) { }, { label: mainNavItems2Label(lang), href: `/${lang}/products` }, { label: mainNavItems1Label(lang), href: `/${lang}/case-studies` }, + { label: mainNavItems4Label(lang), href: `/${lang}/team` }, { label: mainNavItems3Label(lang), href: `/${lang}/#faqs` } ]; } diff --git a/app/[lang]/(hyperjump)/components/team-card.tsx b/app/[lang]/(hyperjump)/components/team-card.tsx new file mode 100644 index 00000000..cb511a65 --- /dev/null +++ b/app/[lang]/(hyperjump)/components/team-card.tsx @@ -0,0 +1,79 @@ +import Image from "next/image"; + +interface TeamCardProps { + variant?: "featured" | "compact"; + name: string; + role: string; + image?: string; + description: string; + linkedIn?: string; +} + +const FALLBACK_IMAGE = "/images/no-user-image.webp"; + +const CARD_HEIGHT_FEATURED = 680; +const CARD_HEIGHT_COMPACT = 640; + +export function TeamCard({ + variant = "compact", + name, + role, + image, + description, + linkedIn +}: TeamCardProps) { + const isFeatured = variant === "featured"; + const imageSrc = image && image.trim() !== "" ? image : FALLBACK_IMAGE; + + return ( +
+
+
+ {name} +
+ +
+
+

{name}

+

{role}

+

+ {description} +

+
+ + {linkedIn && ( + + LinkedIn + + )} +
+
+
+ ); +} diff --git a/app/[lang]/(hyperjump)/team/data.ts b/app/[lang]/(hyperjump)/team/data.ts new file mode 100644 index 00000000..b338fc59 --- /dev/null +++ b/app/[lang]/(hyperjump)/team/data.ts @@ -0,0 +1,148 @@ +export function getTeams() { + return [ + { + name: "Ari Awan", + role: "Co-founder & CEO", + image: "1763184214507.jpeg", + description: + "Jack-of-all-trade in technology startups. Experienced in software engineering (20+ years of hands-on web/mobile programming), product management, operation, fundraising, and marketing.", + linkedIn: "https://www.linkedin.com/in/ariawan/" + }, + { + name: "Ariya Hidayat", + role: "Co-founder & CTO", + image: "1689492669383.jpeg", + description: + "Experienced technology leader operating at the intersection of enterprise products and open-source software, with deep hands-on experience across diverse technology stacks.", + linkedIn: "https://www.linkedin.com/in/ariyahidayat/" + }, + { + name: "Satriyo Pranoto", + role: "Head of Product", + image: "1517052947097.jpeg", + description: + "Senior IT and project management professional with 20+ years of experience delivering enterprise and digital products across multiple industries.", + linkedIn: "https://www.linkedin.com/in/satriyo-pranoto-2b1935122/" + }, + { + name: "Zulfahmi Andri", + role: "Principle Software Architect", + image: "1610507885667.jpeg", + description: + "Enterprise software professional with 20+ years of experience, specializing in API-driven systems, mobile applications, and modern cloud architectures.", + linkedIn: "https://www.linkedin.com/in/zulfahmi-andri/" + }, + { + name: "Ferdi Ramdhon", + role: "Head Of Development", + image: "1517464706587.jpeg", + description: + "A full-stack specialist with 10,000+ hours of experience across Java, Python, Go, and React. Expertise spans Android development, SQL/NoSQL databases, and Agile SDLC, focused on delivering scalable software architectures and high-performance RESTful APIs.", + linkedIn: "https://id.linkedin.com/in/ferdirn" + }, + { + name: "Nico Prananta", + role: "Principal Developer", + image: "1636610990869.jpeg", + description: + "Principal software developer with experience leading engineering teams and delivering modern web applications across multiple industries.", + linkedIn: "https://www.linkedin.com/in/nico-prananta-884750200/" + }, + { + name: "Amri S. Pangestu", + role: "Product Manager", + image: "1607277533248.jpeg", + description: + "Product & IT Project Manager with experience in digital agencies, e-grocery, and consulting, driving product growth through strategy, execution, and technology.", + linkedIn: "https://www.linkedin.com/in/amripangestu/" + }, + { + name: "Hari Cahya Nugraha", + role: "Software Engineer", + image: "1606819371215.jpeg", + description: + "Full-stack software engineer with 10+ years of experience building scalable web systems, specializing in backend, infrastructure, and cloud-native architectures.", + linkedIn: "https://www.linkedin.com/in/haricnugraha/" + }, + { + name: "Muslim Ilmiawan", + role: "Software Engineer", + image: "1558886084532.jpeg", + description: + "Backend-focused programmer passionate about system architecture, working mainly with Java, Go, and Node.js.", + linkedIn: "https://www.linkedin.com/in/muslimilmiawan/" + }, + { + name: "Denny Pradipta", + role: "Software Engineer", + image: "1758856751506.jpeg", + description: + "Experienced full-stack web developer with 8+ years of experience working across frontend, backend, and DevOps with modern JavaScript technologies.", + linkedIn: "https://www.linkedin.com/in/dennypradipta/" + }, + { + name: "Raosan Lillahi", + role: "Software Engineer", + image: "1679995906768.jpeg", + description: + "Software engineer with extensive full-stack experience, startup founding background, and strong interest in technology and business.", + linkedIn: "https://www.linkedin.com/in/raosanfikri/" + }, + { + name: "Suyono", + role: "Senior Software Engineer", + image: "1516414668719.jpeg", + description: + "Senior software engineer with 13+ years of experience, passionate about open-source, scalable architectures, and building high-quality products.", + linkedIn: "https://www.linkedin.com/in/suyono/" + }, + { + name: "Kevin Hermawan", + role: "Software Engineer", + image: "1760315021833.jpeg", + description: + "Experienced software engineer focused on frontend, system reliability, and AI-driven solutions, with hands-on work in LLMs, RAG, and monitoring tools.", + linkedIn: "https://www.linkedin.com/in/khermawan/" + }, + { + name: "Budhi Widagdo", + role: "Software Engineer", + image: "1602615800537.jpeg", + description: + "Experienced software engineer with a background in open-source development, digital banking platforms, and leading multi-project engineering teams.", + linkedIn: "https://www.linkedin.com/in/budhi-widagdo/" + }, + { + name: "Sinta Herena", + role: "Software Engineer", + image: "1765007375648.jpeg", + description: + "Full-stack JavaScript developer experienced in React, Next.js, and TypeScript, focused on building reliable, user-centric web applications.", + linkedIn: "https://www.linkedin.com/in/sinta-herena/" + }, + { + name: "Lukman Adisaputro", + role: "Software Engineer", + image: "1635918474641.jpeg", + description: + "Software developer with experience across startups and media companies, specializing in Go backend systems and modern web development with React.", + linkedIn: "https://www.linkedin.com/in/lukman-adisaputro-4a8969214/" + }, + { + name: "M Noor Syam", + role: "Software Engineer", + image: "1750253962765.jpeg", + description: + "Software engineer with 10+ years of experience in Android and full-stack web development, delivering MVPs and scalable, production-ready systems.", + linkedIn: "https://www.linkedin.com/in/mochamad-noor-syamsu-832617a5/" + }, + { + name: "Harianto", + role: "Head of Business Development", + image: "1699844064993.jpeg", + description: + "Business development executive driving long-term growth through strategy, partnerships, and commercial execution.", + linkedIn: "https://www.linkedin.com/in/h-harianto-7493799b/" + } + ]; +} diff --git a/app/[lang]/(hyperjump)/team/page.tsx b/app/[lang]/(hyperjump)/team/page.tsx new file mode 100644 index 00000000..34678c4b --- /dev/null +++ b/app/[lang]/(hyperjump)/team/page.tsx @@ -0,0 +1,63 @@ +import type { Metadata } from "next"; +import data from "@/data.json"; +import { dynamicOpengraph } from "@/lib/default-metadata"; +import { + supportedLanguages, + type SupportedLanguage +} from "@/locales/.generated/types"; +import { TeamCard } from "../components/team-card"; +import { getTeams } from "./data"; +import { mainTeamDesc, mainTeamHeading } from "@/locales/.generated/strings"; + +export const generateStaticParams = async () => { + return supportedLanguages.map((lang) => ({ lang })); +}; +type TeamsProps = { + params: Promise<{ lang: SupportedLanguage }>; +}; + +export async function generateMetadata() { + const { title, description } = data; + + const meta: Metadata = { + title: `Meet Our Team – ${title}`, + description: description + }; + + return dynamicOpengraph(meta); +} + +export default async function TeamSection({ params }: TeamsProps) { + const { lang } = await params; + const teams = getTeams(); + + const featuredTeams = teams.slice(0, 2); + const otherTeams = teams.slice(2); + + return ( +
+
+
+

+ {mainTeamHeading(lang)} +

+

+ {mainTeamDesc(lang)} +

+
+ +
+ {featuredTeams.map((member, i) => ( + + ))} +
+ +
+ {otherTeams.map((member, i) => ( + + ))} +
+
+
+ ); +} diff --git a/locales/en/main.json b/locales/en/main.json index 0a319a6b..98107d82 100644 --- a/locales/en/main.json +++ b/locales/en/main.json @@ -18,7 +18,8 @@ "0_label": "Our Services", "1_label": "Case Studies", "2_label": "Our Products", - "3_label": "FAQ" + "3_label": "FAQ", + "4_label": "Team" }, "services": { "heading": "Services", @@ -58,5 +59,9 @@ "3_answer": "We offer specialized expertise, flexibility, and cost-effective solutions without the overhead of full-time employees. Our team brings years of experience in enterprise IT, ensuring faster implementation and better ROI.", "learn_more": "Learn more", "learn_more_chatbot_message": "I want to learn more about" + }, + "team": { + "heading": "Meet our team", + "desc": "Our team consists of highly skilled professionals dedicated to delivering exceptional results." } } diff --git a/locales/id/main.json b/locales/id/main.json index 7b591036..82078fb3 100644 --- a/locales/id/main.json +++ b/locales/id/main.json @@ -18,7 +18,8 @@ "0_label": "Layanan Kami", "1_label": "Studi Kasus", "2_label": "Produk Kami", - "3_label": "FAQ" + "3_label": "FAQ", + "4_label": "Tim" }, "services": { "heading": "Layanan", @@ -58,5 +59,9 @@ "3_answer": "Kami menawarkan keahlian khusus, fleksibilitas, dan solusi yang hemat biaya tanpa beban karyawan tetap. Tim kami memiliki pengalaman bertahun-tahun dalam TI enterprise, memastikan implementasi lebih cepat dan ROI yang lebih tinggi.", "learn_more": "Pelajari lebih lanjut", "learn_more_chatbot_message": "Saya ingin mempelajari lebih lanjut tentang" + }, + "team": { + "heading": "Kenalan dengan tim kami", + "desc": "Tim kami terdiri dari para profesional berpengalaman yang siap memberikan hasil terbaik." } } diff --git a/public/images/linkedIn.svg b/public/images/linkedIn.svg new file mode 100644 index 00000000..040a0916 --- /dev/null +++ b/public/images/linkedIn.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/teams/1516414668719.jpeg b/public/images/teams/1516414668719.jpeg new file mode 100644 index 00000000..46d4dc81 Binary files /dev/null and b/public/images/teams/1516414668719.jpeg differ diff --git a/public/images/teams/1517052947097.jpeg b/public/images/teams/1517052947097.jpeg new file mode 100644 index 00000000..71f47139 Binary files /dev/null and b/public/images/teams/1517052947097.jpeg differ diff --git a/public/images/teams/1517464706587.jpeg b/public/images/teams/1517464706587.jpeg new file mode 100644 index 00000000..8baf3ce5 Binary files /dev/null and b/public/images/teams/1517464706587.jpeg differ diff --git a/public/images/teams/1558886084532.jpeg b/public/images/teams/1558886084532.jpeg new file mode 100644 index 00000000..47d1a790 Binary files /dev/null and b/public/images/teams/1558886084532.jpeg differ diff --git a/public/images/teams/1602615800537.jpeg b/public/images/teams/1602615800537.jpeg new file mode 100644 index 00000000..b2887af0 Binary files /dev/null and b/public/images/teams/1602615800537.jpeg differ diff --git a/public/images/teams/1606819371215.jpeg b/public/images/teams/1606819371215.jpeg new file mode 100644 index 00000000..f6bc84f3 Binary files /dev/null and b/public/images/teams/1606819371215.jpeg differ diff --git a/public/images/teams/1607277533248.jpeg b/public/images/teams/1607277533248.jpeg new file mode 100644 index 00000000..393507c4 Binary files /dev/null and b/public/images/teams/1607277533248.jpeg differ diff --git a/public/images/teams/1610507885667.jpeg b/public/images/teams/1610507885667.jpeg new file mode 100644 index 00000000..294e2c9a Binary files /dev/null and b/public/images/teams/1610507885667.jpeg differ diff --git a/public/images/teams/1635918474641.jpeg b/public/images/teams/1635918474641.jpeg new file mode 100644 index 00000000..8e089899 Binary files /dev/null and b/public/images/teams/1635918474641.jpeg differ diff --git a/public/images/teams/1636610990869.jpeg b/public/images/teams/1636610990869.jpeg new file mode 100644 index 00000000..1cd4ae6d Binary files /dev/null and b/public/images/teams/1636610990869.jpeg differ diff --git a/public/images/teams/1679995906768.jpeg b/public/images/teams/1679995906768.jpeg new file mode 100644 index 00000000..78eb9b8c Binary files /dev/null and b/public/images/teams/1679995906768.jpeg differ diff --git a/public/images/teams/1689492669383.jpeg b/public/images/teams/1689492669383.jpeg new file mode 100644 index 00000000..97fb7879 Binary files /dev/null and b/public/images/teams/1689492669383.jpeg differ diff --git a/public/images/teams/1699844064993.jpeg b/public/images/teams/1699844064993.jpeg new file mode 100644 index 00000000..ef528363 Binary files /dev/null and b/public/images/teams/1699844064993.jpeg differ diff --git a/public/images/teams/1750253962765.jpeg b/public/images/teams/1750253962765.jpeg new file mode 100644 index 00000000..3ef4adc1 Binary files /dev/null and b/public/images/teams/1750253962765.jpeg differ diff --git a/public/images/teams/1758856751506.jpeg b/public/images/teams/1758856751506.jpeg new file mode 100644 index 00000000..eac606eb Binary files /dev/null and b/public/images/teams/1758856751506.jpeg differ diff --git a/public/images/teams/1760315021833.jpeg b/public/images/teams/1760315021833.jpeg new file mode 100644 index 00000000..90d2d3fb Binary files /dev/null and b/public/images/teams/1760315021833.jpeg differ diff --git a/public/images/teams/1763184214507.jpeg b/public/images/teams/1763184214507.jpeg new file mode 100644 index 00000000..b51638d9 Binary files /dev/null and b/public/images/teams/1763184214507.jpeg differ diff --git a/public/images/teams/1765007375648.jpeg b/public/images/teams/1765007375648.jpeg new file mode 100644 index 00000000..cf71955f Binary files /dev/null and b/public/images/teams/1765007375648.jpeg differ diff --git a/public/images/teams/no-user-image.webp b/public/images/teams/no-user-image.webp new file mode 100644 index 00000000..66a9ae1c Binary files /dev/null and b/public/images/teams/no-user-image.webp differ