StockPoint Pro adalah sistem manajemen gudang dan POS (Point of Sale) yang komprehensif yang membantu bisnis dalam mengelola inventaris, menangani transfer stok antar lokasi, dan mempertahankan pengawasan operasional secara real-time.
MOHAMAD MARSTIAS BILLY (koncoweb)
- π¦ Manajemen Inventaris
- πͺ Point of Sale (POS)
- π’ Manajemen Gudang
- π Sistem Transfer Stok
- π₯ Manajemen Pengguna
- π Laporan Real-time
- π Sistem Persetujuan Pemilik
- Node.js (v14 atau lebih tinggi)
- npm atau yarn
- Akun Firebase
- Clone repositori:
git clone https://github.com/yourusername/stockpoint-pro.git
cd stockpoint-pro
- Install dependensi:
npm install
# atau
yarn install
-
Siapkan Firebase (lihat bagian Firebase Setup di bawah)
-
Jalankan server development:
npm run dev
# atau
yarn dev
- Kunjungi Firebase Console
- Klik "Add Project"
- Masukkan nama proyek (misal: "stockpoint-pro")
- Ikuti wizard pengaturan (Anda dapat menonaktifkan Google Analytics jika tidak diperlukan)
- Di Firebase Console, buka "Authentication"
- Klik "Get Started"
- Aktifkan metode sign-in "Email/Password"
- Buka "Firestore Database"
- Klik "Create Database"
- Mulai dalam mode produksi
- Pilih lokasi terdekat dengan pengguna Anda
- Buka Project Settings (ikon gerigi)
- Di bawah "Your apps", pilih ikon web (</>)
- Daftarkan aplikasi Anda dengan nickname
- Salin objek firebaseConfig
- Buat file
.env
di root proyek:
VITE_FIREBASE_API_KEY=your-api-key
VITE_FIREBASE_AUTH_DOMAIN=your-auth-domain
VITE_FIREBASE_PROJECT_ID=your-project-id
VITE_FIREBASE_STORAGE_BUCKET=your-storage-bucket
VITE_FIREBASE_MESSAGING_SENDER_ID=your-messaging-sender-id
VITE_FIREBASE_APP_ID=your-app-id
- Update src/lib/firebase.ts dengan konfigurasi Anda
- users
{
id: string; // Auto-generated
name: string;
email: string;
role: 'owner' | 'staff';
createdAt: timestamp;
updatedAt: timestamp;
}
- products
{
id: string; // Auto-generated
name: string;
price: number;
stock: number;
category: string;
sku: string;
stocks: [{
warehouseName: string;
quantity: number;
}];
createdAt: timestamp;
updatedAt: timestamp;
}
- warehouses
{
id: string; // Auto-generated
name: string;
address: string;
capacity: number;
manager: string;
status: 'active' | 'inactive';
createdAt: timestamp;
updatedAt: timestamp;
}
- transfers
{
id: string; // Auto-generated
transferNumber: string;
transferType: string;
sourceLocation: {
id: string;
name: string;
type: string;
address: string;
};
destinationLocation: {
id: string;
name: string;
type: string;
address: string;
};
items: [{
productId: string;
quantity: number;
currentStock: number;
condition: string;
}];
status: string;
priority: string;
requestDate: timestamp;
expectedDeliveryDate: timestamp;
requestedBy: {
userId: string;
name: string;
role: string;
};
validatedBy?: {
userId: string;
name: string;
role: string;
date: timestamp;
notes: string;
};
totalItems: number;
totalQuantity: number;
createdAt: timestamp;
updatedAt: timestamp;
}
- transactions
{
id: string; // Auto-generated
items: [{
productId: string;
quantity: number;
price: number;
}];
total: number;
date: timestamp;
cashierId: string;
status: string;
createdAt: timestamp;
}
Tambahkan aturan ini ke database Firestore Anda untuk keamanan dasar:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// Helper functions
function isSignedIn() {
return request.auth != null;
}
function isOwner() {
return isSignedIn() &&
get(/databases/$(database)/documents/users/$(request.auth.uid)).data.role == 'owner';
}
// Users collection
match /users/{userId} {
allow read: if isSignedIn();
allow write: if isOwner();
}
// Products collection
match /products/{productId} {
allow read: if isSignedIn();
allow write: if isSignedIn();
}
// Warehouses collection
match /warehouses/{warehouseId} {
allow read: if isSignedIn();
allow write: if isOwner();
}
// Transfers collection
match /transfers/{transferId} {
allow read: if isSignedIn();
allow create: if isSignedIn();
allow update: if isSignedIn();
allow delete: if isOwner();
}
// Transactions collection
match /transactions/{transactionId} {
allow read: if isSignedIn();
allow create: if isSignedIn();
allow update: if isOwner();
allow delete: if isOwner();
}
}
}
src/
βββ components/ # Komponen React
βββ contexts/ # Konteks React
βββ lib/ # Fungsi utilitas dan setup Firebase
βββ pages/ # Komponen halaman
βββ types/ # Definisi tipe TypeScript
- Owner: Memiliki akses penuh ke semua fitur, termasuk persetujuan
- Staff: Dapat membuat transfer, mengelola inventaris, dan memproses penjualan
npm run dev
: Menjalankan server developmentnpm run build
: Build untuk produksinpm run preview
: Preview build produksi
Buat file .env
dengan variabel berikut:
VITE_FIREBASE_API_KEY=xxx
VITE_FIREBASE_AUTH_DOMAIN=xxx
VITE_FIREBASE_PROJECT_ID=xxx
VITE_FIREBASE_STORAGE_BUCKET=xxx
VITE_FIREBASE_MESSAGING_SENDER_ID=xxx
VITE_FIREBASE_APP_ID=xxx
StockPoint Pro dikembangkan oleh MOHAMAD MARSTIAS BILLY (koncoweb) dan tersedia untuk penggunaan komersial dan non-komersial dengan ketentuan berikut:
-
Atribusi: Setiap penggunaan aplikasi ini harus mencantumkan kredit kepada:
- Nama: MOHAMAD MARSTIAS BILLY
- Channel YouTube: KONCOWEB (https://www.youtube.com/@mohmbilly)
-
Penggunaan Komersial:
- Diperbolehkan menggunakan aplikasi ini untuk tujuan komersial
- Wajib mencantumkan atribusi yang jelas dan mudah dilihat
- Tidak boleh mengklaim aplikasi ini sebagai karya sendiri
-
Penggunaan Non-Komersial:
- Bebas menggunakan untuk tujuan non-komersial
- Tetap wajib mencantumkan atribusi
- Diperbolehkan memodifikasi sesuai kebutuhan
-
Distribusi:
- Diperbolehkan mendistribusikan ulang dengan mencantumkan atribusi
- Tidak boleh menghapus atau mengubah informasi lisensi dan atribusi asli
Dengan menggunakan aplikasi ini, Anda setuju untuk mematuhi ketentuan penggunaan di atas.
- Fork repositori
- Buat branch fitur (
git checkout -b feature/FiturKeren
) - Commit perubahan (
git commit -m 'Menambah fitur keren'
) - Push ke branch (
git push origin feature/FiturKeren
) - Buat Pull Request