Kompletna Expo React Native Firebase ecommerce aplikacija za satove i nakit sa admin panelom za upravljanje proizvodima i porudžbinama.
Aplikacija se sastoji od dva glavna dela:
- Customer App - za kupce (pregled proizvoda, korpa, naručivanje)
- Admin App - za administratore (upravljanje proizvodima i porudžbinama)
# Klonirajte repozitorijum
git clone <repository-url>
cd NativeFirebaseEcommerce
# Instalirajte dependencies
npm install# Firebase projekat je već konfigurisan u firebase/config.js
# Samo proverite da li su servisi omogućeni u Firebase Console# Pokrenite aplikaciju
npm start
# Ili direktno na uređaju
npm run android # za Android
npm run ios # za iOSNativeFirebaseEcommerce/
├── 📁 firebase/
│ └── config.js # Firebase konfiguracija
├── 📁 screens/
│ ├── LoginScreen.js # Prijava/registracija
│ ├── CustomerApp.js # Customer navigacija
│ ├── AdminApp.js # Admin navigacija
│ ├── 📁 customer/
│ │ ├── ProductListScreen.js # Lista proizvoda
│ │ ├── CartScreen.js # Korpa
│ │ └── ProfileScreen.js # Profil korisnika
│ └── 📁 admin/
│ ├── ProductManagementScreen.js # Upravljanje proizvodima
│ ├── AddProductScreen.js # Dodavanje proizvoda
│ ├── EditProductScreen.js # Uređivanje proizvoda
│ ├── OrdersScreen.js # Upravljanje porudžbinama
│ └── AdminProfileScreen.js # Admin profil
├── 📁 context/
│ └── CartContext.js # Globalno stanje korpe
├── 📁 utils/
│ └── mockData.js # Mock podaci za proizvode
├── 📁 scripts/
│ ├── seedFirebase.js # Skript za dodavanje mock podataka
│ └── createUsersCollection.js # Skript za kreiranje users kolekcije
├── App.js # Glavna komponenta
├── firebase-rules.txt # Firebase Firestore pravila
└── package.json # Dependencies
// Upravlja autentifikacijom i rutiranje između Customer/Admin app-a
// Proverava da li je korisnik admin (email sadrži "admin")
// Omogućava gost pristup// Centralizovana Firebase konfiguracija
// Eksportuje auth, db, storage instance
// Koristi se u celoj aplikaciji// Context API za upravljanje korpom
// Funkcije: addToCart, removeFromCart, updateQuantity, clearCart
// Dostupno u celoj aplikaciji// Prijava i registracija korisnika
// Kreiranje users dokumenata u Firestore
// Automatsko preusmeravanje na Customer/Admin app// Prikazuje proizvode u grid layout-u (2 kolone)
// Filtriranje po kategorijama (satovi, nakit)
// Dodavanje proizvoda u korpu// Upravljanje količinom proizvoda
// Checkout proces sa kreiranjem porudžbine
// Validacija autentifikacije pre naručivanja// Lista svih proizvoda za admina
// Filtriranje po kategorijama
// Navigacija na EditProduct screen
// Brisanje proizvoda{
name: "Elegantni Ručni Sat",
description: "Klasičan muški ručni sat...",
price: 12000,
stock: 15,
imageUrl: "https://...",
category: "watches", // "watches" ili "jewelry"
createdAt: timestamp,
updatedAt: timestamp
}{
items: [
{ id: "1", name: "Sat", price: 12000, quantity: 1 }
],
totalAmount: 12000,
customerEmail: "user@example.com",
customerId: "firebase-uid",
customerName: "Ime Prezime",
status: "pending", // "pending", "processing", "shipped", "delivered", "cancelled"
createdAt: timestamp,
updatedAt: timestamp
}{
uid: "firebase-uid",
email: "user@example.com",
displayName: "Ime Prezime",
role: "customer", // "customer" ili "admin"
isActive: true,
createdAt: timestamp,
updatedAt: timestamp
}- Email koji sadrži "admin" (npr.
admin@example.com,admin123@test.com) - Automatsko preusmeravanje na AdminApp
- Pristup svim admin funkcionalnostima
- Bilo koji drugi email
- Automatsko preusmeravanje na CustomerApp
- Pristup kupovini i korpi
- Mogu da pregledaju proizvode
- Mogu da dodaju u korpu
- MORAJU se prijaviti pre naručivanja
- Grid layout - 2 kolone za proizvode
- Kategorijski filteri - satovi, nakit, sve
- Kategorijski badge-ovi - na svakom proizvodu
- Moderni dizajn - shadow efekti, zaobljeni uglovi
- Lista proizvoda - sa akcijama (Uredi/Obriši)
- Kategorijski filteri - za lakše upravljanje
- Status management - za porudžbine
- Responsive dizajn - optimizovan za mobilne uređaje
- Satovi - ručni satovi, pametni satovi
- Nakit - ogrlice, prstenje, narukvice, minđuše
# Opcija 1: Koristite npm skript (preporučeno)
npm run seed
# Opcija 2: Direktno pokretanje
node scripts/seedFirebase.jsRezultat: Dodaće se 12 mock proizvoda (satovi i nakit) u Firebase products kolekciju.
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// Products - svi čitaju, samo admini pišu
match /products/{document} {
allow read: if true;
allow write: if request.auth != null &&
request.auth.token.email.matches(".*admin.*");
}
// Orders - svi kreiraju, admini upravljaju
match /orders/{document} {
allow read: if request.auth != null;
allow create: if true;
allow update, delete: if request.auth != null &&
request.auth.token.email.matches(".*admin.*");
}
// Users - kreiranje tokom registracije
match /users/{userId} {
allow read: if request.auth != null &&
(request.auth.uid == userId ||
request.auth.token.email.matches(".*admin.*"));
allow create: if true;
allow update: if request.auth != null &&
(request.auth.uid == userId ||
request.auth.token.email.matches(".*admin.*"));
}
}
}npm start
# Otvorite Expo Go na telefonu
# Skenirajte QR kod- Registrujte se kao običan korisnik
- Pregledajte proizvode
- Dodajte proizvode u korpu
- Napravite porudžbinu
- Registrujte se sa email-om koji sadrži "admin"
- Dodajte novi proizvod
- Uredite postojeći proizvod
- Pregledajte porudžbine
- Ažurirajte status porudžbine
- Nastavite kao gost
- Pregledajte proizvode
- Dodajte u korpu
- Pokušajte da naručite (trebalo bi da traži prijavu)
// U utils/mockData.js
export const categories = [
{ id: "watches", name: "Satovi" },
{ id: "jewelry", name: "Nakit" },
{ id: "new-category", name: "Nova kategorija" }, // ← Dodajte ovde
];// U AddProductScreen.js i EditProductScreen.js
const [newField, setNewField] = useState("");
// U handleAddProduct/handleUpdateProduct
const productData = {
// ... postojeća polja
newField: newField, // ← Dodajte novo polje
};// U App.js
const isAdminUser =
user.email.includes("admin") || user.email === "specific-admin@domain.com"; // ← Dodajte specifične emaile-
"Firebase Auth initialization error"
- Proverite Firebase konfiguraciju
- Proverite da li su servisi omogućeni
-
"Permission denied" greške
- Ažurirajte Firebase pravila
- Proverite da li je korisnik autentifikovan
-
"updateProfile is not a function"
- Problem je rešen u kodu sa error handling-om
-
Registracija ne radi
- Proverite da li je Email/Password omogućen u Firebase Console
- Proverite Firebase pravila
Aplikacija ima detaljne console log-ove za debugging:
- 🔄 Proces registracije
- 📝 Podaci koji se čuvaju
- ✅ Uspešne operacije
- ❌ Greške sa detaljima
expo build:androidexpo build:ios- Kompletna autentifikacija (registracija/prijava)
- Customer i Admin aplikacije
- Upravljanje proizvodima (CRUD)
- Shopping cart funkcionalnost
- Order management
- Kategorijski filteri
- Responsive UI/UX
- Firebase integracija
- Mock podaci za testiranje
- Sigurnosna pravila
- Error handling
- Loading states
- User feedback
- Optimizovane performanse
Za pitanja ili probleme:
- Proverite console log-ove
- Proverite Firebase Console
- Proverite da li su svi servisi omogućeni
- Proverite Firebase pravila
Aplikacija je potpuno funkcionalna i spremna za korišćenje! 🎉