React Native Expo Event Management

1

Part 1: Pengenalan & Arsitektur

2

Part 2: Instalasi di Mac, Windows, Ubuntu

3

Part 3: Project Setup

4

Part 4: Autentikasi Admin

5

Part 5: Manajemen Event

6

Part 6: QR Scanner Kehadiran

7

Part 7: Polish & Deploy

Artikel ini tersedia dalam Bahasa Inggris

šŸ‡¬šŸ‡§ Read in English

21 Januari 2026

šŸ‡®šŸ‡© Bahasa Indonesia

React Native Expo Event Management Part 1: Pengenalan & Arsitektur

Mengenal arsitektur sistem aplikasi event management dengan React Native Expo untuk scan QR kehadiran peserta. Memahami tech stack dan flow diagram aplikasi.

5 min read


šŸ“– Tentang Project Ini

Aplikasi mobile Lampung Dev adalah sistem manajemen event dan kehadiran yang digunakan oleh admin untuk:

  • āœ… Melihat daftar event yang tersedia
  • āœ… Melihat detail event dan peserta terdaftar
  • āœ… Scan QR code untuk verifikasi kehadiran peserta
  • āœ… Mencatat waktu check-in peserta

Aplikasi ini dibuat untuk mendukung kegiatan komunitas developer seperti meetup, workshop, dan conference.

šŸŽÆ Siapa yang Cocok Mengikuti Series Ini?

Series ini cocok untuk:

  • Pemula yang baru mau belajar React Native
  • Web developer yang ingin expand ke mobile development
  • Developer yang ingin belajar Expo ecosystem
  • Siapa saja yang tertarik dengan event management system

šŸ—ļø Arsitektur Sistem

Gambaran Arsitektur

Sistem menggunakan arsitektur client-server dengan beberapa client yang terhubung ke satu REST API backend.

LayerDeskripsi
ClientsWeb Client, Mobile Client, Admin Panel
BackendREST API dibangun dengan Next.js
DatabasePostgreSQL untuk penyimpanan data

Komponen Sistem

KomponenTeknologiFitur
🌐 Web ClientNext.jsLanding page, Daftar event, Registrasi
šŸ“± Mobile ClientReact Native + ExpoQR Scanner, Daftar event, Kehadiran (Fokus series ini!)
āš™ļø Admin PanelNext.jsCRUD Event, CRUD Member, Laporan
šŸ”Œ REST APINext.js API Routes/api/admin/auth, /api/admin/events, /api/attendance
šŸ—„ļø DatabasePostgreSQLusers, events, attendances, registrations

Alur Data

DariKeDeskripsi
Clients (Web, Mobile, Admin)REST APIHTTP requests untuk data
REST APIPostgreSQLPenyimpanan data
PostgreSQLREST APIHasil query
REST APIClientsJSON responses

šŸ“± Arsitektur Mobile App

Aplikasi mobile menggunakan pola arsitektur berlapis untuk pemisahan yang bersih.

Layer Aplikasi

LayerFolderDeskripsi
šŸ“± Presentationapp/UI screens dan navigasi
šŸ—ƒļø Statestore/State management dengan Zustand
šŸ”Œ Servicesservices/Layer komunikasi API
ā˜ļø External-Backend REST API

Presentation Layer (Screens)

ScreenPathDeskripsi
Homeapp/(tabs)/index.tsxDaftar event dengan pull-to-refresh
Scannerapp/(tabs)/scanner.tsxQR code scanner untuk kehadiran
Accountapp/(tabs)/account.tsxProfil user dan logout
Event Detailapp/event/[id].tsxInfo event dan peserta
Loginapp/login.tsxAutentikasi admin

State Layer (Zustand Store)

StoreFungsiDeskripsi
auth.tstoken, user, setAuth(), logout(), initialize()Manajemen state autentikasi

Service Layer (API Calls)

ServiceFungsiAPI Endpoint
api.tsAxios instanceKonfigurasi dasar + interceptors
auth.tsloginAdmin()POST /api/admin/auth
events.tsgetAdminEvents(), getEventDetail()GET /api/admin/events
attendance.tsrecordAttendance()POST /api/attendance

šŸ”„ Flow Diagram

Authentication Flow

StepAksiDeskripsi
1ļøāƒ£User masukkan kredensialEmail dan password di Login screen
2ļøāƒ£Panggil loginAdmin()Service kirim POST ke /api/admin/auth
3ļøāƒ£API validasiServer cek kredensial di database
4ļøāƒ£Terima tokenAPI kembalikan { token, user }
5ļøāƒ£Simpan authZustand simpan ke SecureStore (terenkripsi)
6ļøāƒ£Navigasi ke HomeUser diarahkan ke tab navigator

QR Attendance Flow

StepAksiDeskripsi
1ļøāƒ£Admin scan QRKamera baca QR code dari peserta
2ļøāƒ£Decode dataParse format: eventId:uniqueCode
3ļøāƒ£Panggil APIKirim POST ke /api/attendance
4ļøāƒ£Validasi registrasiServer cek apakah peserta terdaftar
5ļøāƒ£Catat check-inDatabase simpan timestamp kehadiran
6ļøāƒ£Tampilkan hasilTampilkan animasi sukses/error

šŸ› ļø Tech Stack

TeknologiKegunaanAlasan
React NativeMobile frameworkCross-platform (iOS + Android)
ExpoDevelopment platformSetup cepat, tidak perlu native code
Expo RouterNavigationFile-based routing seperti Next.js
NativeWindStylingSyntax Tailwind CSS (familiar)
ZustandState managementSimpel, ringan, tanpa boilerplate
AxiosHTTP clientInterceptors untuk auth headers
SecureStoreToken storagePenyimpanan terenkripsi (aman)
Expo CameraQR scanningAkses kamera native

šŸ“‚ Struktur Folder

FolderFilesDeskripsi
app/-Screens (Expo Router)
app/(tabs)/index.tsx, scanner.tsx, account.tsxTab navigation screens
app/event/[id].tsxDetail Event (dynamic route)
app/login.tsx, _layout.tsx, +not-found.tsxLogin, Root Layout, 404
components/EventCard.tsx, LoadingSpinner.tsxKomponen UI reusable
services/api.ts, auth.ts, events.ts, attendance.tsLayer komunikasi API
store/auth.tsZustand state management
constants/Colors.tsKonstanta aplikasi
utils/theme.tsFungsi utilitas
assets/fonts/, images/Aset statis

šŸ” Keamanan

Layer KeamananImplementasiDeskripsi
Token Storageexpo-secure-storeEncrypted keychain/keystore
Komunikasi APIHTTPS onlyTLS encryption in transit
AutentikasiJWT tokensShort-lived, server-validated
OtorisasiRole-basedAdmin-only endpoints

šŸ“… Learning Path

MingguPartsTopik
Minggu 1Part 1-3Arsitektur, Instalasi, Project Setup
Minggu 2Part 4-5Autentikasi, Manajemen Event
Minggu 3Part 6-7QR Scanner, Polish & Deploy

āœ… Checklist Sebelum Lanjut

Sebelum melanjutkan ke Part 2, pastikan kamu:

  • Memahami arsitektur sistem secara keseluruhan
  • Mengerti flow authentication dan QR attendance
  • Familiar dengan tech stack yang akan digunakan
  • Sudah punya akun Expo (gratis di expo.dev)

šŸš€ Selanjutnya

Pada Part 2, kita akan melakukan instalasi environment development di berbagai platform (Mac, Windows, Ubuntu) termasuk Node.js, VS Code, Expo CLI, dan Android Studio/Xcode.


Next: Instalasi di Mac, Windows, Ubuntu →


Series ini dibuat untuk mendukung materi Casual Meetup #15 di LampungDev.

Lanjut Membaca

Artikel Selanjutnya →

React Native Expo Event Management Part 2: Instalasi di Mac, Windows, Ubuntu

Next article thumbnail