Firebase પર કસ્ટમ ઈ-કોમર્સ
મેં શૂન્યથી એક કસ્ટમ ઈ-કોમર્સ સાઇટ બનાવી છે. મેં તૈયાર પ્લેટફોર્મ્સનો ઉપયોગ કર્યો નથી. મેં Firebase Realtime Database અને Netlify નો ઉપયોગ કર્યો છે.
તેનો હેતુ એક POS ટર્મિનલ રિસેલરને સેવા આપવાનો હતો. તેમને કેટલોગ, પ્રાઇસિંગ વેરિઅન્ટ્સ અને એડમિન પેનલની જરૂર હતી. સેલ્સ ટીમને સીધી સાઇટ પરથી ઓર્ડર આપવાની જરૂર હતી.
મેં તે કેવી રીતે બનાવ્યું અને મેં શું શીખ્યું તે અહીં છે.
સ્ટેક
• Vanilla HTML, CSS, અને JS. • ડેટા માટે Firebase Realtime Database. • ફાઇલો માટે Firebase Storage. • હોસ્ટિંગ અને ફંક્શન્સ માટે Netlify.
મુખ્ય નિર્ણયો
ડેટાબેઝનું વિભાજન (Database Separation) મેં ઈ-કોમર્સ ડેટાબેઝને આંતરિક મેનેજમેન્ટ ડેટાબેઝથી અલગ રાખ્યો હતો. આનાથી વ્યાપારી ડેટા પગાર અથવા બજેટ જેવા સંવેદનશીલ એડમિન ડેટા સાથે ભળતો અટકશે.
ગ્લોબલ પ્રાઇસિંગ આર્કાઇવ (Global Pricing Archive) દરેક પ્રોડક્ટની અંદર પ્રાઇસિંગ પ્લાન રાખવાને બદલે, મેં એક ગ્લોબલ ટેરિફ ફોલ્ડર બનાવ્યું. પ્રોડક્ટ્સમાં ફક્ત ID ની એરે (array) હોય છે. આનાથી ડેટાનું ડુપ્લીકેશન ટાળી શકાય છે. જો કોઈ પ્લાન બદલાય, તો મારે તેને ફક્ત એક જ વાર અપડેટ કરવો પડે છે.
એટોમિક ઓર્ડર્સ (Atomic Orders) જ્યારે એકસાથે અનેક લોકો ઓર્ડર આપે છે, ત્યારે 'રેસ કન્ડિશન' (race conditions) નો સામનો કરવો પડે છે. જો બે લોકો એક જ ઓર્ડર નંબર વાંચે, તો એક ઓર્ડર ગુમ થઈ શકે છે. દરેક ઓર્ડરને યુનિક અને ક્રમિક નંબર મળે તે સુનિશ્ચિત કરવા માટે મેં Firebase
runTransaction()નો ઉપયોગ કર્યો.સુરક્ષિત એડમિન એક્સેસ (Secure Admin Access) મેં સોર્સ કોડમાં પાસવર્ડ સ્ટોર કર્યા નથી. મેં Web Crypto API દ્વારા PBKDF2 નો ઉપયોગ કર્યો છે. આનાથી બ્રુટ-ફોર્સ (brute-force) હુમલાઓ ખૂબ મુશ્કેલ બની જાય છે. કોડમાં ફક્ત salt અને hash હોય છે.
શીખેલા પાઠ
• 'Falsy' વેલ્યુઝથી સાવધ રહો. JavaScript માં, 0 એ falsy છે. જો પ્રોડક્ટની કિંમત 0 હોય, તો "price || null" જેવી સાદી તપાસ કિંમતને ડિલીટ કરી દેશે. શૂન્યને સમાવવા માટે હંમેશા "price != null" નો ઉપયોગ કરો.
• HTTP હેડર્સમાં CSP કન્ફિગર કરો. Content Security Policy માટેના મેટા ટેગ્સ સબડોમેન્સ માટે વાઇલ્ડકાર્ડ્સ (wildcards) ને સપોર્ટ કરતા નથી. Firebase ડાયનેમિક સબડોમેન્સનો ઉપયોગ કરે છે. તેને કામ કરવા માટે મેં CSP ને netlify.toml માં ખસેડ્યું.
• વાસ્તવિક સુરક્ષા માટે Security Rules નો ઉપયોગ કરો. તમારા UI માં બટનો છુપાવવા પર ક્યારેય આધાર રાખશો નહીં. કોણ ડેટા વાંચી અને લખી શકે છે તેના પર નિયંત્રણ રાખવા માટે Firebase rules નો ઉપયોગ કરો.
કસ્ટમ સોલ્યુશન્સ બનાવવા માટે સાવચેત આર્કિટેક્ચરલ પસંદગીઓની જરૂર હોય છે. ટ્રાન્ઝેક્શન હેન્ડલિંગ અને હેડર કન્ફિગરેશન જેવી નાની વિગતો પ્રોડક્શનમાં મોટી નિષ્ફળતાઓ અટકાવે છે.
સ્ત્રોત: https://dev.to/androve2k/custom-e-commerce-on-firebase-catalog-atomic-orders-and-admin-panel-42ec
