🇮🇩 NusaVarta - Cultural Tourism Guide App

NusaVarta Logo

NusaVarta adalah aplikasi mobile yang memadukan teknologi AI dan peta interaktif untuk membantu wisatawan menjelajahi kekayaan budaya Indonesia. Dengan fitur Cultural Route Explorer yang canggih, NusaVarta menawarkan pengalaman wisata budaya yang personal dan edukatif.

📱 Fitur Utama

đŸ—ēī¸ Cultural Route Explorer

  • Perencanaan Rute Budaya: Otomatis merencanakan rute perjalanan dengan memasukkan destinasi budaya
  • Penemuan Situs Bersejarah: Menemukan museum, candi, istana, dan situs bersejarah di sepanjang rute (radius 5km)
  • Visualisasi Rute Interaktif: Peta interaktif dengan marker khusus untuk setiap kategori budaya
  • Estimasi Waktu dan Jarak: Perhitungan akurat untuk perencanaan perjalanan

🤖 AI Chat Assistant

  • Nusa AI: Asisten AI cerdas yang membantu merencanakan perjalanan budaya
  • Rekomendasi Personal: Saran destinasi berdasarkan preferensi pengguna
  • Informasi Budaya: Penjelasan detail tentang sejarah dan budaya setiap lokasi

🔐 Authentication System

  • Email & Password: Registrasi dan login tradisional dengan validasi lengkap
  • Google Sign-In: Login cepat menggunakan akun Google
  • Profile Management: Pengelolaan profil pengguna yang terintegrasi

📍 Interactive Maps

  • MapTiler Integration: Peta berkualitas tinggi dengan berbagai style
  • Custom Markers: Penanda khusus untuk berbagai kategori budaya
  • Real-time Navigation: Navigasi real-time ke destinasi terpilih
  • Location Search: Pencarian lokasi dengan preset destinasi wisata Indonesia

📱 Modern Mobile Experience

  • Cross-Platform: Berjalan di iOS dan Android menggunakan React Native
  • Animated UI: Splash screen dan transisi yang halus
  • Dark/Light Mode: Tema adaptif sesuai preferensi sistem
  • Offline Capability: Beberapa fitur dapat diakses offline

đŸ› ī¸ Tech Stack

Frontend (Mobile App)

  • React Native - Framework mobile development
  • Expo - Platform development dan deployment
  • TypeScript - Bahasa pemrograman dengan type safety
  • React Navigation - Routing dan navigasi
  • React Native Reanimated - Animasi yang performant
  • Expo Router - File-based routing system

Backend & Services

  • Node.js - Runtime JavaScript server-side
  • Express.js - Web framework untuk API
  • Firebase - Platform backend (Authentication, Firestore)
  • Google Maps API - Layanan peta dan routing
  • MapTiler - Penyedia layanan peta interaktif
  • Gemini AI - Model AI untuk chat assistant

Database & Storage

  • Firestore - NoSQL database untuk data real-time
  • Firebase Storage - Penyimpanan file dan gambar
  • AsyncStorage - Local storage untuk mobile

Maps & Location

  • MapTiler SDK - Rendering peta interaktif
  • Google Maps Services - Geocoding dan directions
  • Expo Location - Akses lokasi pengguna
  • React Native Maps - Komponen peta native

Development Tools

  • Expo CLI - Command line interface
  • Metro - JavaScript bundler
  • Babel - JavaScript transpiler
  • Jest - Testing framework

🚀 Cara Menggunakan

Prerequisites

Pastikan Anda telah menginstall:

  • Node.js (v16 atau lebih baru)
  • npm atau yarn
  • Expo CLI
  • Android Studio (untuk Android) atau Xcode (untuk iOS)

Instalasi

  1. Clone repository

    git clone https://github.com/RelaxXYy/nusavarta.git
    cd nusavarta
    
  2. Install dependencies

    npm install
    
  3. Setup environment variables

Buat file .env di root directory:

   # Firebase Configuration
   EXPO_PUBLIC_FIREBASE_API_KEY=your_firebase_api_key
   EXPO_PUBLIC_FIREBASE_AUTH_DOMAIN=your_auth_domain
   EXPO_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
   EXPO_PUBLIC_FIREBASE_STORAGE_BUCKET=your_storage_bucket
   EXPO_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
   EXPO_PUBLIC_FIREBASE_APP_ID=your_app_id

   # Google Maps API
   GOOGLE_MAPS_API_KEY=your_google_maps_api_key

   # MapTiler API
   EXPO_PUBLIC_MAPTILER_API_KEY=your_maptiler_api_key

   # Google Sign-In (Optional)
   GOOGLE_WEB_CLIENT_ID=your_web_client_id
   GOOGLE_IOS_CLIENT_ID=your_ios_client_id
   GOOGLE_ANDROID_CLIENT_ID=your_android_client_id
  1. Setup Server

    cd nusavarta-server
    npm install
    
  2. Jalankan aplikasi

    # Jalankan server backend
    cd nusavarta-server
    npm run dev
    

# Jalankan mobile app (terminal baru) cd .. npm start


### Menjalankan di Device

**Android:**
```bash
npm run android

iOS:

npm run ios

Web:

npm run web

📖 Panduan Penggunaan

1. Registrasi & Login

  • Buka aplikasi dan akan muncul splash screen NusaVarta
  • Pilih "Sign Up" untuk registrasi baru atau "Login" jika sudah memiliki akun
  • Isi data yang diperlukan atau gunakan Google Sign-In untuk login cepat

2. Merencanakan Perjalanan Budaya

  • Buka tab Chat untuk berinteraksi dengan Nusa AI
  • Ketik permintaan seperti "Saya ingin wisata dari Bundaran HI ke Kota Tua Jakarta"
  • AI akan menanyakan apakah Anda tertarik mengunjungi tempat budaya di sepanjang rute
  • Jawab "ya" untuk mendapatkan rute dengan destinasi budaya

3. Menjelajahi Peta

  • Hasil rute akan otomatis muncul di tab Maps
  • Lihat marker berbeda untuk:
    • đŸŸĸ Titik Awal (A)
    • 🔴 Tujuan (B)
    • ⭐ Waypoint Budaya (tempat yang akan dikunjungi)
    • đŸ”ĩ Tempat Bercerita (tempat menarik di sekitar rute)

4. Informasi Detail

  • Tap pada marker untuk melihat informasi detail
  • Gunakan tombol info (â„šī¸) untuk melihat detail lengkap rute
  • Akses informasi jarak, estimasi waktu, dan daftar tempat yang akan dikunjungi

5. Navigasi

  • Tap "Mulai Navigasi" untuk memulai perjalanan
  • Aplikasi akan membuka aplikasi navigasi default device Anda

đŸ—ī¸ Struktur Project

nusavarta/
├── 📁 app/                    # Expo Router screens
│   ├── 📄 index.tsx          # Splash screen
│   ├── 📄 login.tsx          # Login screen
│   ├── 📄 register.tsx       # Register screen
│   └── 📁 (tabs)/            # Tab navigation
│       ├── 📄 home.tsx       # Dashboard
│       ├── 📄 chat.tsx       # AI Chat
│       ├── 📄 maps.tsx       # Interactive maps
│       ├── 📄 history.tsx    # Chat history
│       └── 📄 profile.tsx    # User profile
│
├── 📁 components/             # Reusable components
│   ├── 📁 ui/                # UI components
│   ├── 📄 CulturalRouteMap.tsx
│   └── 📄 GoogleMapsComponent.tsx
│
├── 📁 services/              # API services
│   ├── 📄 backendService.ts  # Backend communication
│   ├── 📄 googleMapsService.ts
│   ├── 📄 mapTilerService.ts
│   └── 📄 googleSignInService.ts
│
├── 📁 context/               # React contexts
│   └── 📄 AuthContext.tsx    # Authentication state
│
├── 📁 lib/                   # Utility libraries
│   └── 📄 auth.ts           # Authentication functions
│
├── 📁 nusavarta-server/      # Backend server
│   ├── 📁 src/
│   │   ├── 📁 routes/        # API routes
│   │   ├── 📁 services/      # Business logic
│   │   └── 📄 index.ts       # Server entry point
│   └── 📄 package.json
│
├── 📁 assets/                # Static assets
│   ├── 📁 images/           # Images and logos
│   └── 📁 fonts/            # Custom fonts
│
├── 📄 firebaseConfig.ts      # Firebase configuration
├── 📄 package.json          # Dependencies
└── 📄 app.json             # Expo configuration

🌟 Fitur Mendatang

  • Offline Maps: Peta yang dapat diakses tanpa internet
  • Social Sharing: Berbagi rute dan pengalaman dengan teman
  • Audio Guide: Panduan audio untuk setiap destinasi budaya
  • AR Experience: Augmented Reality untuk pengalaman immersive
  • Gamification: Sistem poin dan achievement untuk pengguna
  • Multi-language: Dukungan berbagai bahasa

🤝 Kontribusi

Kami welcome kontribusi dari developer untuk membuat NusaVarta semakin baik:

  1. Fork repository ini
  2. Buat branch fitur baru (git checkout -b feature/amazing-feature)
  3. Commit perubahan (git commit -m 'Add amazing feature')
  4. Push ke branch (git push origin feature/amazing-feature)
  5. Buat Pull Request

📄 Lisensi

Distributed under the MIT License. See LICENSE for more information.

👨‍đŸ’ģ Developer

  • RelaxXYy - Lead Developer - GitHub

📞 Support

Jika Anda mengalami masalah atau memiliki pertanyaan:


NusaVarta - Menjelajahi Kekayaan Budaya Nusantara dengan Teknologi Modern 🇮🇩✨

Built With

Share this project:

Updates