Panduan lengkap setup database, auth & realtime untuk LapaRide
laparide-prod ยท Region: Southeast Asia (Singapore) ยท Set password yang kuatPergi Supabase Dashboard โ Database โ SQL Editor โ New query, paste dan run SQL schema (fail laparide_schema.sql)
-- 1. Buka SQL Editor dalam Supabase Dashboard -- 2. Klik "New query" -- 3. Paste semua kandungan laparide_schema.sql -- 4. Klik "Run" (Ctrl+Enter) -- 5. Pastikan "Success. No rows returned" muncul -- Verify tables wujud: SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' ORDER BY table_name;
Tambah dalam setiap HTML file anda (ganti value yang sebenar)
<script src="https://cdn.jsdelivr.net/npm/@supabase/supabase-js@2">script> <script type="module"> import { signIn, getBuyerOrders, subscribeOrderStatus } from './supabase.js' // Atau set terus: const { createClient } = supabase const db = createClient( 'https://XXXXXXXXXXXXXXXX.supabase.co', // <-- your URL 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' // <-- anon key ) script>
http://localhost:3000/** dan https://yourdomain.com/**avatars (public)menu-images (public)restaurant-logos (public)import { signIn, getCurrentUser } from './supabase.js' async function handleLogin(email, password) { try { await signIn({ email, password }) const user = await getCurrentUser() // Redirect ikut role const routes = { buyer: 'user.html', rider: 'rider.html', restaurant: 'restaurant.html', admin: 'admin.html' } window.location.href = routes[user.profile.role] } catch (err) { showError(err.message) } }
import { subscribeOrderStatus, subscribeRiderLocation } from './supabase.js' // Bila user bukak track page async function initTracking(orderId, riderId) { // 1. Subscribe status order const unsubOrder = subscribeOrderStatus(orderId, (order) => { updateStatusBadge(order.status) // update UI if (order.status === 'delivered') { showDeliveredPopup() unsubOrder() // stop subscribe unsubLoc() } }) // 2. Subscribe rider GPS (update map pin) const unsubLoc = subscribeRiderLocation(riderId, ({ lat, lng }) => { riderMarker.setLatLng([lat, lng]) // Leaflet map leafMap.panTo([lat, lng]) }) }
import { updateRiderLocation } from './supabase.js' let trackingInterval = null function startTracking(activeOrderId) { trackingInterval = setInterval(() => { navigator.geolocation.getCurrentPosition( ({ coords }) => { updateRiderLocation( coords.latitude, coords.longitude, activeOrderId ) }, null, { enableHighAccuracy: true, timeout: 5000 } ) }, 5000) // update setiap 5 saat } function stopTracking() { clearInterval(trackingInterval) }
login.html dengan form email/password yang guna signIn() dan redirect ke dashboard ikut role