title: "NFT Claim System — Prof. NOTA Inc. Skateboards"
author: "Prof. NOTA Inc."
version: "v1.0"
date: "2025-06-24"
🛹 NFT Claim System for Returned Skateboards
Menghadirkan sistem NFT berbasis Web3 yang menghargai pengguna skateboard Prof. NOTA Inc. yang telah mengembalikan produk rusak atau tidak terpakai. NFT tidak diberikan saat pembelian, melainkan saat pengguna mengembalikan skateboard bekas kepada Prof. NOTA Inc., sebagai bentuk:
Pelestarian sejarah pemakaian
NFT bukan bukti pembelian, tetapi bukti pengembalian sadar.
Setiap design skateboard memiliki satu token ID NFT.
NFT diberikan setelah deck fisik diterima oleh Prof. NOTA Inc.
Deck yang dikembalikan akan didokumentasikan, dipamerkan, atau digunakan kembali untuk proyek keberlanjutan.
💡 SKENARIO SINGKAT
Siapapun boleh membeli skateboard deck Prof. NOTA Inc. dari manapun.
Jika deck rusak/tidak terpakai → jangan dibuang.
Pemilik mengakses situs: https://notaskateboards.com/retur
Isi form dan upload foto → sistem verifikasi manual
Jika valid → pemilik mengirimkan deck ke alamat yang ditentukan
Setelah diterima → NFT dikirim ke wallet pemilik
📦 ARSITEKTUR SISTEM
Dibangun dengan: Next.js 15 + Tailwind CSS
Form input:
Alamat Wallet (atau tombol Connect Wallet)
Upload foto skateboard rusak
Pilih desain (dropdown / upload bukti pembelian opsional)
Checklist: “Saya akan mengirim skateboard ini ke alamat Prof. NOTA Inc.”
2. Backend: Sistem Verifikasi & Minting NFT
Dibangun dengan: Node.js / Express
Fitur utama:
Verifikasi manual submission (dashboard internal)
Tandai status (valid / ditolak / pending)
Endpoint minting NFT dengan ThirdWeb SDK claimWithSignature atau mintTo
3. Smart Contract NFT
Standar: ERC-1155 (tiap desain = token ID)
Diterapkan dengan ThirdWeb Signature Drop
🔐 STRATEGI ANTI-PENYALAHGUNAAN
Risiko
Solusi Teknis dan Operasional
Klaim palsu (tidak benar-benar punya deck)
Upload foto, verifikasi manual oleh tim Prof. NOTA
Orang minta NFT tanpa mengirim fisik
NFT hanya dikirim setelah barang diterima dan diperiksa
Rate limiting, CAPTCHA, validasi email
Batasi satu NFT per wallet per design / serial / bukti unik
Validasi visual, optional QR/sticker atau nomor produksi internal
🛠️ FILE STRUKTUR PROYEK
💌 ALUR LOGISTIK DAN OPERASIONAL
Pengguna isi form dan upload foto deck rusak.
Sistem mencatat submission dan status = “pending”.
Tim Prof. NOTA melakukan verifikasi manual.
Jika valid:
Email/WhatsApp instruksi pengiriman fisik.
Setelah deck diterima → status updated → NFT dikirim.
Jika tidak valid → user diberi alasan penolakan.
🔧 STACK TEKNOLOGI YANG DIGUNAKAN
Next.js 15 + Tailwind CSS
ThirdWeb Connect (email opsional)
ERC-1155 via ThirdWeb SDK v5
Express / Next.js API route
🎁 UTILITY DAN VISI NFT
NFT yang didapat oleh pengirim deck bekas bukan hanya simbol, tapi juga bisa memiliki utility tambahan:
Akses diskon pembelian deck generasi berikutnya
Undangan pameran atau event komunitas
Koleksi unik yang akan dimuseumkan secara digital
Voting desain edisi terbatas
NFT sebagai akses token untuk fitur eksklusif (Discord / event)
📣 PESAN KEPADA PENGGUNA
“Jangan dibuang. Kirimkan saja kembali.
Kami akan abadikan jejakmu di blockchain.”
– Prof. NOTA Inc. Skateboards, 2025
✅ TAHAP IMPLEMENTASI
Checklist pengerjaan tahap awal:
📬 KONTAK DAN TANGGUNG JAWAB
Inisiator: Prof. NOTA (v11)
Operasional Teknis: Tim Web3 Prof. NOTA Inc.
Tanggal Rilis: 2025-06-24
📋 TASK CARD TEKNIS — NFT Claim
Task ID: FE-RETUR-01
Judul: Buat halaman /retur untuk form pengembalian skateboard
Deskripsi:
Form input: Nama, Email, Wallet Address, Foto Skateboard Rusak, Dropdown Desain, Checkbox Komitmen Kirim
Tambahkan integrasi ThirdWeb Connect untuk wallet
Responsive dan minimalis (tailwind-ready)
Dikerjakan oleh: Frontend Developer
Dependency: Desain UI (jika disediakan), komponen ReturForm.tsx
🧩 2. FRONTEND – STATUS SUBMISSION & FEEDBACK
Task ID: FE-RETUR-02
Judul: Tambahkan komponen feedback status
Deskripsi:
Setelah form dikirim, tampilkan status: Pending Review, Approved, atau Rejected
Berikan estimasi waktu respon dan link tracking (jika ada)
Dikerjakan oleh: Frontend Developer
Dependency: Backend endpoint /api/retur
Task ID: BE-RETUR-01
Judul: Buat API handler untuk menyimpan submission form
Deskripsi:
Endpoint: POST /api/retur
Simpan data ke MongoDB: nama, email, wallet, design, foto URL, status
Validasi minimal: email + foto wajib
Dikerjakan oleh: Backend Developer
Dependency: DB setup + image hosting (Cloudinary/IPFS/etc)
🔐 4. BACKEND – DASHBOARD VERIFIKASI
Task ID: BE-ADMIN-01
Judul: Dashboard internal admin untuk approval
Deskripsi:
Menampilkan list pengajuan dengan filter status
Form untuk masukkan nomor resi, catatan, dsb
Dikerjakan oleh: Fullstack Developer
Dependency: Login/role management (optional)
✍️ 5. BACKEND – MINT NFT VIA THIRDWEB SDK
Task ID: BE-NFT-01
Judul: Implementasi fungsi mint NFT ke wallet pengguna
Deskripsi:
Gunakan mintTo atau claimWithSignature dari ThirdWeb SDK v5
NFT metadata: nama desain, foto deck, waktu retur
Image dapat diambil dari yang diupload user
Dikerjakan oleh: Web3 Developer
Dependency: Smart contract ERC-1155 sudah dideploy
🔗 6. SMART CONTRACT – DEPLOY ERC-1155 UNTUK SETIAP DESAIN
Task ID: SC-DEPLOY-01
Judul: Deploy smart contract NFT ERC-1155
Deskripsi:
1 token ID per desain (misalnya: Phoenix Flame = tokenId 0)
Gunakan ThirdWeb dashboard untuk deploy dan setup
Pastikan metadata standar IPFS-ready
Dikerjakan oleh: Smart Contract Engineer / Web3 Dev
Dependency: Daftar desain yang tersedia
Task ID: META-IPFS-01
Judul: Siapkan metadata NFT tiap desain
Deskripsi:
Buat template .json metadata
Upload ke IPFS via ThirdWeb Storage atau Pinata
Simpan link metadata per desain/token ID
Dikerjakan oleh: Web3 Support / Admin Teknis
Dependency: Asset gambar dan nama desain
📨 8. NOTIFIKASI – EMAIL / WHATSAPP FOLLOW-UP
Task ID: OPS-NOTIF-01
Judul: Kirim notifikasi setelah verifikasi diterima
Deskripsi:
Email atau WhatsApp berisi instruksi pengiriman fisik
Tambahkan nomor referensi dan estimasi NFT dikirim
Dikerjakan oleh: Ops/Support Team
Dependency: Admin approval + kontak user valid
🧪 9. TESTING – PILOT RETURN 10 DECK PERTAMA
Task ID: TEST-PILOT-01
Judul: Uji coba pengembalian 10 deck dari komunitas
Deskripsi:
Rekrut 10 pengguna pertama
Simulasikan seluruh alur dari form → kirim deck → mint NFT
Catat feedback dan perbaikan UX
Dikerjakan oleh: Tim QA / Ops
Dependency: Semua task sebelumnya selesai
📢 10. PUBLIKASI – COPYWRITING & LANDING PAGE
Task ID: PUB-CLAIM-01
Judul: Buat copywriting dan halaman informasi untuk user umum
Deskripsi:
Narasi: “Kirim kembali, bukan buang.”
Deskripsi langkah-langkah + FAQ
Sertakan CTA ke form /retur
Dikerjakan oleh: Content Writer + Frontend
Dependency: Final sistem siap digunakan
✅ LABEL & PRIORITAS
Formulir untuk pengguna yang ingin mengklaim NFT dengan mengembalikan skateboard deck rusak.
Input teks: Nama Lengkap, Email
Wallet: Connect Wallet (ThirdWeb Connect)
Dropdown atau input bebas: Nama Desain Deck
Upload: Foto kondisi skateboard (optional preview)
Checkbox: Komitmen kirim deck ke Prof. NOTA Inc.
Submit button → panggil API /api/retur
Berikut kode awalnya:
🛠️ API Endpoint: /api/retur.ts
Menerima data dari ReturForm.tsx
Menyimpan data ke database (simulasi: log ke console atau simpan JSON)
Siap dikembangkan untuk integrasi MongoDB dan cloud storage (foto)
📁 File: src/pages/api/retur.ts
Formidable dipakai untuk handle file upload (multipart/form-data)
File disimpan ke folder public/uploads (sementara, bisa diganti IPFS/Cloudinary)
Validasi sederhana (semua field wajib)
🧾 Komponen: ReturAdmin.tsx
Menampilkan daftar semua pengajuan dari endpoint backend
Menyediakan tombol Approve dan Reject
Menampilkan informasi pengirim: nama, email, wallet, desain, foto
Saat diklik “Approve” → update status + lanjut ke proses mint NFT (nanti)
📁 File: src/components/ReturAdmin.tsx
🗃️ Endpoint yang perlu tersedia
GET /api/admin/retur → list semua submission
PATCH /api/admin/retur → update status (approved / rejected)
📁 File: src/pages/api/admin/retur.ts
Untuk tahap awal, kita gunakan simulasi penyimpanan data di file JSON lokal, agar tidak tergantung DB dulu. File data/returs.json akan berisi array objek ReturItem.
🗃️ Simulasi struktur file JSON
🧠 Handler: api/admin/retur.ts
📁 Struktur Direktori yang Perlu Ada
✅ Siap Digunakan
Dashboard admin sekarang akan bekerja secara penuh:
Menampilkan semua submission
Menyimpan update status approved / rejected
🪙 Fungsi: Mint NFT setelah “Approved”
Saat pengajuan diverifikasi, sistem akan langsung mint NFT ke wallet pengguna.
NFT yang dimintakan akan memiliki metadata sesuai desain yang dikembalikan.
📁 Perubahan pada: api/admin/retur.ts (PATCH section)
Tambahkan logic minting NFT menggunakan ThirdWeb SDK di bagian PATCH.
📦 Tambahan: ThirdWeb SDK Setup
Buat file lib/mintNFT.ts:
📄 Update api/admin/retur.ts (PATCH block)
Tambahkan di dalam PATCH setelah status === "approved":
🔐 Environment Variables
Tambahkan ke .env.local:
Admin klik “Approve” → status berubah + NFT otomatis dikirim
Data returs.json bisa mencatat txId NFT-nya
📬 Notifikasi otomatis via Email atau WhatsApp
Mengirim pesan kepada pengguna bahwa:
Pengajuan mereka telah disetujui
NFT telah dikirim ke wallet mereka
Opsional: sertakan link txId (jika tersedia)
2 Opsi Notifikasi
Metode
Tools / Layanan
Status
Twilio, WA Gateway, atau Wablas (lokal)
Untuk tahap awal kita prioritaskan Email, karena:
Tidak tergantung pada nomor WA pengguna yang aktif
✅ Implementasi Email dengan Resend
📁 2. Buat file lib/sendEmail.ts
🔧 3. Tambahkan ke api/admin/retur.ts (dalam PATCH block):
Tambahkan setelah NFT berhasil dimintakan:
📁 4. Tambahkan di .env.local
User mendapatkan email dengan isi:
(opsional) link transaksi NFT
🧩 LANJUTAN STRATEGIS — NFT Claim Skateboard
Dengan semua fondasi inti telah selesai (formulir, backend, dashboard, minting NFT, dan notifikasi email), berikut adalah daftar fitur dan peningkatan strategis yang dapat dilanjutkan oleh tim internal Prof. NOTA Inc.
✅ TELAH SELESAI
API penerimaan submission
Minting NFT setelah approve
🧩 FASE LANJUTAN YANG DIREKOMENDASIKAN
1. Integrasi Database Nyata (MongoDB/PostgreSQL)
Menyimpan data secara permanen dan dapat dicari.
Mempermudah laporan dan manajemen pengajuan.
Task: Setup koneksi database & schema.
2. Tampilan User untuk Tracking Status
Halaman /retur/track?wallet=0x...
Pengguna bisa cek status pengajuan dan melihat txId jika sudah minting.
Task: Komponen ReturStatus.tsx + endpoint /api/retur/status.
3. Landing Page Publik Edukasi & CTA
Halaman /retur/info atau /kenapa
Cerita gerakan sosial dan etika brand Prof. NOTA Inc.
Langkah-langkah mengirim skateboard
Task: Komponen ReturIntro.tsx + desain visual ringan.
4. Sistem Logistik & Validasi Ongkir
Fitur input nomor resi dari user.
Opsional integrasi API kurir (JNE, Wahana, dll.)
Sistem subsidi ongkir otomatis.
Task: Tambahan field resi di dashboard + logic validasi ongkir.
5. Halaman Museum Digital / Galeri NFT Retur
Rute /museum atau /pameran
Menampilkan NFT hasil klaim publik (metadata ERC-1155)
Bisa filter: desain, waktu, kota
Task: Komponen NFTGallery.tsx + fetch metadata kontrak.
6. Role-Based Access (Admin vs Publik)
Proteksi dashboard /admin
Login email, auth token, atau ThirdWeb Auth
Level akses: Viewer, Admin, Superadmin
Task: Middleware route & pengelolaan auth.
7. Eksperimen Identitas Web3 (opsional)
Dukungan untuk ENS (.eth) atau Lens Protocol
NFT diklaim langsung ke identitas Web3 pengguna
8. Konversi Proyek ke Repositori GitHub
Semua file .tsx, .ts, .env.example, dan dokumentasi .md
README dengan alur sistem dan cara deploy
🚦 REKOMENDASI URUTAN EKSEKUSI LANJUTAN
🎯 Implementasi DB MongoDB
🔍 Halaman tracking status pengguna
🖼 Museum NFT publik (galeri)
🌍 Landing page edukasi publik
🔒 Proteksi role-based akses dashboard
Silakan lanjut sesuai prioritas proyek dan resource tim. Semua langkah ini bersifat modular, dapat dikerjakan paralel.
—Prof. NOTA