diff --git a/apps/landing/src/app/(frontend)/_components/community.tsx b/apps/landing/src/app/(frontend)/_components/community.tsx index 8a6c47e..20b6ff0 100644 --- a/apps/landing/src/app/(frontend)/_components/community.tsx +++ b/apps/landing/src/app/(frontend)/_components/community.tsx @@ -1,45 +1,13 @@ 'use client'; +import COMMUNITIES_STATS from '@/data/communities-stats.json'; +import COMMUNITIES from '@/data/communities.json'; import { Button } from '@components'; import { Icon } from '@iconify/react'; import { motion, useInView } from 'framer-motion'; import { useRef } from 'react'; export function Community() { - const items = [ - { - iconName: 'tabler:brand-facebook', - title: 'Facebook Group', - description: - 'Bergabunglah dengan grup Facebook kami untuk diskusi santai dan berbagi artikel menarik.', - buttonText: 'Gabung Sekarang', - buttonLink: 'https://facebook.com/groups/programmerhandal', - }, - { - iconName: 'tabler:brand-instagram', - title: 'Instagram', - description: - 'Ikuti kami di Instagram untuk tips programming, konten inspiratif, dan info event terbaru.', - buttonText: 'Follow Kami', - buttonLink: 'https://www.instagram.com/imphnen.dev', - }, - { - iconName: 'tabler:brand-discord-filled', - title: 'Discord Server', - description: - 'Diskusikan langsung dengan sesama programmer dan dapatkan bantuan langsung dari para ahli.', - buttonText: 'Join Server', - buttonLink: 'https://discord.com/invite/imphnen', - }, - ]; - - const stats = [ - { value: '100K+', label: 'Member Aktif' }, - { value: '50+', label: 'Event Bulanan' }, - { value: '100+', label: 'Mentor Profesional' }, - { value: '5K+', label: 'Diskusi Mingguan' }, - ]; - const ref = useRef(null); const isInView = useInView(ref, { once: true, amount: 0.2 }); @@ -93,7 +61,7 @@ export function Community() { initial="hidden" animate={isInView ? 'visible' : 'hidden'} > - {items.map((c, i) => ( + {COMMUNITIES.map((c, i) => ( - {stats.map((s, i) => ( + {COMMUNITIES_STATS.map((s, i) => (
{s.value} diff --git a/apps/landing/src/app/(frontend)/_components/features.tsx b/apps/landing/src/app/(frontend)/_components/features.tsx index 52b2d69..61df652 100644 --- a/apps/landing/src/app/(frontend)/_components/features.tsx +++ b/apps/landing/src/app/(frontend)/_components/features.tsx @@ -1,37 +1,11 @@ 'use client'; +import FEATURES from '@/data/features.json'; import { Icon } from '@iconify/react'; import { motion, useInView } from 'framer-motion'; import { useRef } from 'react'; export function Features() { - const features = [ - { - iconName: 'tabler:device-laptop', - title: 'Belajar Tanpa Koding', - description: - 'Pelajari konsep programming dengan cara yang mudah dipahami tanpa harus menulis kode yang rumit.', - }, - { - iconName: 'tabler:users', - title: 'Komunitas Supportif', - description: - 'Bergabunglah dengan komunitas programmer Indonesia yang siap membantu dan berbagi pengalaman.', - }, - { - iconName: 'tabler:book', - title: 'Tutorial Interaktif', - description: - 'Akses tutorial interaktif yang membuat konsep programming lebih mudah untuk dipahami.', - }, - { - iconName: 'tabler:code', - title: 'Proyek Praktis', - description: - 'Terapkan pengetahuan Anda dalam proyek nyata dengan panduan langkah demi langkah.', - }, - ]; - const ref = useRef(null); const isInView = useInView(ref, { once: true, amount: 0.2 }); @@ -91,7 +65,7 @@ export function Features() { initial="hidden" animate={isInView ? 'visible' : 'hidden'} > - {features.map((feature, index) => ( + {FEATURES.map((feature, index) => ( { @@ -98,7 +93,7 @@ export function Hero() {
- {stats.map(({ value, label }, i) => ( + {HERO_STATS.map(({ value, label }, i) => (
@@ -106,7 +101,7 @@ export function Hero() {
{label}
- {i < stats.length - 1 && ( + {i < HERO_STATS.length - 1 && (
)} diff --git a/apps/landing/src/app/(frontend)/_components/learning-resources.tsx b/apps/landing/src/app/(frontend)/_components/learning-resources.tsx index b5caca9..b9e5157 100644 --- a/apps/landing/src/app/(frontend)/_components/learning-resources.tsx +++ b/apps/landing/src/app/(frontend)/_components/learning-resources.tsx @@ -1,46 +1,12 @@ 'use client'; +import LEARNING_RESOURCES from '@/data/learning-resources.json'; import { Button } from '@components'; import { Icon } from '@iconify/react'; import { motion, useInView } from 'framer-motion'; import { useRef } from 'react'; export function LearningResources() { - const resources = [ - { - icon: 'tabler:video', - title: 'Video Tutorial', - description: - 'Belajar melalui tutorial video dari langkah awal hingga mahir.', - buttonText: 'Lihat Semua Video', - buttonLink: '#', - }, - { - icon: 'tabler:article', - title: 'Artikel & Tutorial', - description: - 'Pelajari konsep programming melalui artikel yang disusun secara terstruktur.', - buttonText: 'Baca Artikel', - buttonLink: '#', - }, - { - icon: 'tabler:brand-vscode', - title: 'Tantangan Koding', - description: - 'Uji kemampuan koding kamu dengan tantangan yang menyenangkan dan menantang.', - buttonText: 'Mulai Tantangan', - buttonLink: '#', - }, - { - icon: 'tabler:device-desktop-share', - title: 'Sharing Session', - description: - 'Ikuti sesi berbagi pengalaman dari programmer berpengalaman dan belajar dari pengalaman mereka.', - buttonText: 'Jadwal Session', - buttonLink: '#', - }, - ]; - const ref = useRef(null); const isInView = useInView(ref, { once: true, amount: 0.2 }); @@ -95,7 +61,7 @@ export function LearningResources() { initial="hidden" animate={isInView ? 'visible' : 'hidden'} > - {resources.map((r, i) => ( + {LEARNING_RESOURCES.map((r, i) => ( (null); const isInView = useInView(ref, { once: true, amount: 0.2 }); @@ -85,7 +56,7 @@ export function Testimonials() { initial="hidden" animate={isInView ? 'visible' : 'hidden'} > - {items.map((t, idx) => ( + {TESTIMONIALS.map((t, idx) => (
@@ -137,7 +109,7 @@ export function Testimonials() {

- {stats.map((s, idx) => ( + {TESTIMONIAL_STATS.map((s, idx) => (
{s.value} diff --git a/apps/landing/src/data/communities-stats.json b/apps/landing/src/data/communities-stats.json new file mode 100644 index 0000000..689484b --- /dev/null +++ b/apps/landing/src/data/communities-stats.json @@ -0,0 +1,6 @@ +[ + { "value": "100K+", "label": "Member Aktif" }, + { "value": "50+", "label": "Event Bulanan" }, + { "value": "100+", "label": "Mentor Profesional" }, + { "value": "5K+", "label": "Diskusi Mingguan" } +] diff --git a/apps/landing/src/data/communities.json b/apps/landing/src/data/communities.json new file mode 100644 index 0000000..a9f179f --- /dev/null +++ b/apps/landing/src/data/communities.json @@ -0,0 +1,23 @@ +[ + { + "iconName": "tabler:brand-facebook", + "title": "Facebook Group", + "description": "Bergabunglah dengan grup Facebook kami untuk diskusi santai dan berbagi artikel menarik.", + "buttonText": "Gabung Sekarang", + "buttonLink": "https://facebook.com/groups/programmerhandal" + }, + { + "iconName": "tabler:brand-instagram", + "title": "Instagram", + "description": "Ikuti kami di Instagram untuk tips programming, konten inspiratif, dan info event terbaru.", + "buttonText": "Follow Kami", + "buttonLink": "https://www.instagram.com/imphnen.dev" + }, + { + "iconName": "tabler:brand-discord-filled", + "title": "Discord Server", + "description": "Diskusikan langsung dengan sesama programmer dan dapatkan bantuan langsung dari para ahli.", + "buttonText": "Join Server", + "buttonLink": "https://discord.com/invite/imphnen" + } +] diff --git a/apps/landing/src/data/features.json b/apps/landing/src/data/features.json new file mode 100644 index 0000000..5163089 --- /dev/null +++ b/apps/landing/src/data/features.json @@ -0,0 +1,22 @@ +[ + { + "iconName": "tabler:device-laptop", + "title": "Belajar Tanpa Koding", + "description": "Pelajari konsep programming dengan cara yang mudah dipahami tanpa harus menulis kode yang rumit." + }, + { + "iconName": "tabler:users", + "title": "Komunitas Supportif", + "description": "Bergabunglah dengan komunitas programmer Indonesia yang siap membantu dan berbagi pengalaman." + }, + { + "iconName": "tabler:book", + "title": "Tutorial Interaktif", + "description": "Akses tutorial interaktif yang membuat konsep programming lebih mudah untuk dipahami." + }, + { + "iconName": "tabler:code", + "title": "Proyek Praktis", + "description": "Terapkan pengetahuan Anda dalam proyek nyata dengan panduan langkah demi langkah." + } +] diff --git a/apps/landing/src/data/hero-stats.json b/apps/landing/src/data/hero-stats.json new file mode 100644 index 0000000..2e98bf5 --- /dev/null +++ b/apps/landing/src/data/hero-stats.json @@ -0,0 +1,5 @@ +[ + { "value": "180K+", "label": "Member" }, + { "value": "500+", "label": "Tutorial" }, + { "value": "24/7", "label": "Yapping" } +] diff --git a/apps/landing/src/data/learning-resources.json b/apps/landing/src/data/learning-resources.json new file mode 100644 index 0000000..ec8dd98 --- /dev/null +++ b/apps/landing/src/data/learning-resources.json @@ -0,0 +1,30 @@ +[ + { + "icon": "tabler:video", + "title": "Video Tutorial", + "description": "Belajar melalui tutorial video dari langkah awal hingga mahir.", + "buttonText": "Lihat Semua Video", + "buttonLink": "#" + }, + { + "icon": "tabler:article", + "title": "Artikel & Tutorial", + "description": "Pelajari konsep programming melalui artikel yang disusun secara terstruktur.", + "buttonText": "Baca Artikel", + "buttonLink": "#" + }, + { + "icon": "tabler:brand-vscode", + "title": "Tantangan Koding", + "description": "Uji kemampuan koding kamu dengan tantangan yang menyenangkan dan menantang.", + "buttonText": "Mulai Tantangan", + "buttonLink": "#" + }, + { + "icon": "tabler:device-desktop-share", + "title": "Sharing Session", + "description": "Ikuti sesi berbagi pengalaman dari programmer berpengalaman dan belajar dari pengalaman mereka.", + "buttonText": "Jadwal Session", + "buttonLink": "#" + } +] diff --git a/apps/landing/src/data/testimonial-stats.json b/apps/landing/src/data/testimonial-stats.json new file mode 100644 index 0000000..0e77dc9 --- /dev/null +++ b/apps/landing/src/data/testimonial-stats.json @@ -0,0 +1,6 @@ +[ + { "value": "98%", "label": "Tingkat Kemalasan" }, + { "value": "4.9/5", "label": "Rating Drama" }, + { "value": "85%", "label": "Mendapat Pekerjaan" }, + { "value": "24/7", "label": "Yapping" } +] diff --git a/apps/landing/src/data/testimonials.json b/apps/landing/src/data/testimonials.json new file mode 100644 index 0000000..841aeda --- /dev/null +++ b/apps/landing/src/data/testimonials.json @@ -0,0 +1,20 @@ +[ + { + "quote": "Saya yang tadinya tidak mengerti apa-apa tentang programming, sekarang bisa membuat website sendiri dengan mudah. Terima kasih IMPHNEN!", + "name": "Budi Santoso", + "role": "Web Developer Pemula", + "avatar": "https://avatars.githubusercontent.com/u/97678571?v=4" + }, + { + "quote": "Komunitas yang sangat supportif! Setiap pertanyaan selalu dijawab dengan cepat dan jelas. Diskusi programnya mudah dipahami.", + "name": "Anita Ratna", + "role": "Mobile App Developer", + "avatar": "https://avatars.githubusercontent.com/u/53475078?v=4" + }, + { + "quote": "Server Discord IMPHNEN adalah tempat belajar terbaik untuk programmer pemula seperti saya. Materinya lengkap dan komunitasnya sangat membantu!", + "name": "Dedi Permana", + "role": "Data Scientist", + "avatar": "https://avatars.githubusercontent.com/u/49753444?v=4" + } +]