Aplikasi Next.js yang merender QR code sambil Anda mengetik dan membebaskan Anda mengatur setiap bagiannya — titik, sudut, warna, logo di tengah — lalu mengekspornya ke PNG, JPEG, SVG, atau WEBP.

Di era digital seperti sekarang, QR code sudah jadi alat yang ampuh untuk berbagi informasi dengan cepat dan praktis. Entah itu link website, detail acara, atau informasi produk, QR code membuat proses berbagi data jadi tanpa repot. Terinspirasi dari kemudahan itu, saya membuat aplikasi QR Code Generator yang bisa diakses di qr.handiani.my.id, yang memudahkan siapa saja membuat dan mengkustomisasi QR code.
Di artikel ini saya akan menjelaskan bagaimana proyek ini saya bangun dengan Next.js dan sejumlah tool modern lainnya. Kalau Anda tertarik membuat QR code generator sendiri atau ingin tahu tech stack yang saya pakai, silakan lanjut membaca!
Berikut stack yang saya pakai untuk proyek ini:
Proyek ini terbagi menjadi dua komponen utama:
1. Komponen QrCode Komponen ini menangani proses render dan pengunduhan QR code. Berikut gambaran singkat cara kerjanya:
import { useEffect, useRef, useState } from "react";
import QRCodeStyling from "qr-code-styling";
const QrCode = ({ data, options }) => {
const qrCodeRef = useRef(null);
const qrCode = useRef(null);
const [extension, setExtension] = useState("png");
const [name, setName] = useState("qr");
const onDownloadClick = () => {
qrCode.current?.download({ name, extension });
};
useEffect(() => {
if (!qrCode.current) {
qrCode.current = new QRCodeStyling({ data, ...options });
}
qrCode.current.update({ data, ...options });
if (qrCodeRef.current) {
qrCode.current.append(qrCodeRef.current);
}
}, [data, options]);
return (
<div>
<div ref={qrCodeRef}></div>
<button onClick={onDownloadClick}>Download QR Code</button>
</div>
);
};
export default QrCode;2. Komponen Home Halaman utama menggabungkan komponen QrCode dan menyediakan kontrol kustomisasi yang mudah dipakai. Fiturnya meliputi:
Pengguna bisa mengatur hal-hal berikut:
Berikut contoh kontrolnya:
<Input
label="Text or URL"
value={data}
onChange={(e) => setData(e.target.value)}
placeholder="Input your text"
/>
<RadioGroup
label="Shape"
value={options.shape}
onChange={(shape) => setOptions({ ...options, shape })}
>
<Radio value="circle">Circle</Radio>
<Radio value="square">Square</Radio>
</RadioGroup>
<HexAlphaColorPicker
color={options.backgroundOptions?.color}
onChange={(color) => setOptions({ ...options, backgroundOptions: { color } })}
/>Membangun QR Code Generator ini jadi pengalaman yang menyenangkan, memadukan sisi kreatif dan sisi teknis. Aplikasinya memberi pengguna cara yang praktis untuk membuat dan mengkustomisasi QR code, baik untuk keperluan pribadi maupun profesional.
Silakan coba sendiri di qr.handiani.my.id, dan beri tahu saya pendapat Anda! Selamat ngoding!

Panduan membuat portfolio sepenuhnya dwibahasa (EN/ID) — subpath routing dengan next-intl, localization konten per-field di Payload CMS, serta jebakan 404 dan SEO yang saya temui sepanjang jalan.

Membangun form registrasi yang type-safe di Next.js dengan React Hook Form dan skema Zod — mulai dari setup, validasi, sampai memasang komponennya ke sebuah halaman.

Komponen AnimatedSection yang bisa dipakai ulang untuk menganimasikan konten saat masuk dan keluar viewport, mengikuti arah dan posisi scroll, dibangun dengan Framer Motion dan React hooks.