Lovable અને Supabase પર 16 પ્રોડક્ટ્સ ચલાવવામાં થતી ટેકનિકલ ભૂલો

અમે Inithouse માં 16 પ્રોડક્ટ્સ ચલાવીએ છીએ. અમે તે બધા માટે Lovable અને Supabase નો ઉપયોગ કરીએ છીએ. એક જ ટીમ બધું સંભાળે છે. આ સાંભળવામાં સારું લાગે છે, પરંતુ જ્યારે તમે 16 કસ્ટમ ડોમેન્સ, 16 Supabase પ્રોજેક્ટ્સ અને 16 એજ ફંક્શન્સ (edge functions) ના સેટનો સામનો કરો છો, ત્યારે સ્થિતિ બદલાઈ જાય છે.

અમે એવી ભૂલો કરી જેના કારણે અમારો સમય બગડ્યો. અહીં પાંચ સૌથી મોટી ટેકનિકલ ભૂલો અને તેના ઉકેલો છે.

  1. અસંગત ડેટાબેઝ સ્કીમા (Inconsistent database schemas)

અમારી પ્રથમ ત્રણ પ્રોડક્ટ્સ સમાન ડેટા માટે અલગ-અલગ ટેબલના નામનો ઉપયોગ કરતી હતી. એક પ્રોજેક્ટ એનાલિટિક્સ માટે page_views નો ઉપયોગ કરતો હતો. બીજો analytics_events નો ઉપયોગ કરતો હતો. આના કારણે શેર કરેલો કોડ (shared code) લખવો અશક્ય બની ગયો હતો. જે કામ એક બપોરે થઈ જવું જોઈતું હતું, તેમાં બે અઠવાડિયા લાગી ગયા.

ઉકેલ: અમે એક શેર કરેલ માઈગ્રેશન ટેમ્પલેટ (shared migration template) બનાવ્યું. દરેક નવી પ્રોડક્ટને એનાલિટિક્સ, બ્લોગ પોસ્ટ્સ અને auth માટે સમાન બેઝ ટેબલ્સ મળે છે. અમે શાંત અઠવાડિયા દરમિયાન જૂના પ્રોજેક્ટ્સમાં આ સુધારો કર્યો. હવે, મોનિટરિંગ એન્ડપોઈન્ટ ઉમેરવામાં એક દિવસને બદલે માત્ર 20 મિનિટ લાગે છે.

  1. બ્રોકન કસ્ટમ ડોમેન્સ (Broken custom domains)

Lovable તમને કસ્ટમ ડોમેન્સ કનેક્ટ કરવાની સુવિધા આપે છે. ક્યારેક ડિપ્લોય (deploy) સફળ થાય છે પરંતુ DNS વેરિફિકેશન નિષ્ફળ જાય છે. પ્રિવ્યૂ URL કામ કરે છે, પરંતુ લાઈવ ડોમેન ખાલી પેજ બતાવે છે. અમે લાઈવ URL ચેક ન કર્યું હોવાથી ત્રણ દિવસનો ટ્રાફિક ગુમાવ્યો.

ઉકેલ: અમે પોસ્ટ-પબ્લિશ ચેકલિસ્ટનો ઉપયોગ કરીએ છીએ. અમે તેને વેરિફાય કરવા માટે દરેક લાઈવ ડોમેનને ઇન્કોગ્નિટો (incognito) વિન્ડોમાં ખોલીએ છીએ. અમે અપટાઇમ ચેક (uptime check) પણ ઉમેર્યું છે જે ડોમેન નિષ્ફળ જાય તો Slack પર મેસેજ (ping) મોકલે છે.

  1. વિખરાયેલી ડેટા વિઝિબિલિટી (Fragmented data visibility)

દરેક પ્રોડક્ટ માટે અલગ-અલગ ડેશબોર્ડ ખોલ્યા વિના અમે અમારા સમગ્ર પોર્ટફોલિયોનું પ્રદર્શન કેવી રીતે થઈ રહ્યું છે તે જોઈ શકતા નહોતા. અમે અંધારામાં કામ કરી રહ્યા હતા.

ઉકેલ: અમે દરેક Supabase પ્રોજેક્ટમાં એક સ્ટેટ્સ API એન્ડપોઈન્ટ (stats API endpoint) ડિપ્લોય કર્યું. દરેક પ્રોડક્ટ યુઝર્સ અને સાઇનઅપ્સ જેવા મુખ્ય મેટ્રિક્સ એક સ્ટાન્ડર્ડ ફોર્મેટમાં મોકલે છે. એક સિંગલ સ્ક્રિપ્ટ આ ડેટાને એક જ ડેશબોર્ડમાં ખેંચી લાવે છે.

  1. કોપી-પેસ્ટિંગ કમ્પોનન્ટ્સ (Copy-pasting components)

અમે એક પ્રોજેક્ટમાંથી બીજા પ્રોજેક્ટમાં React કમ્પોનન્ટ્સ કોપી કરતા હતા. આ કમ્પોનન્ટ્સ જૂની ધારણાઓ સાથે આવતા હતા. એક પ્રોડક્ટનું પ્રાઇસિંગ કાર્ડ બીજી પ્રોડક્ટમાં નિષ્ફળ ગયું કારણ કે તે અલગ પેમેન્ટ ફ્લોની અપેક્ષા રાખતું હતું. અમે આ 'ફેન્ટમ બગ્સ' (phantom bugs) ને ડિબગ કરવામાં દિવસો વિતાવ્યા.

ઉકેલ: અમે કોપી-પેસ્ટ કરવાનું બંધ કરી દીધું. અમે કમ્પોનન્ટ પેટર્નનું એક ડોક્યુમેન્ટ રાખીએ છીએ. અમે Lovable ને આ પેટર્ન્સના આધારે નવો કમ્પોનન્ટ બનાવવા માટે કહીએ છીએ. આ સેટઅપ કરવામાં થોડું ધીમું છે પરંતુ મેન્ટેન કરવામાં ઘણું સરળ છે.

  1. ડોક્યુમેન્ટેશન તરીકે ચેટ હિસ્ટ્રીનો ઉપયોગ કરવો (Using chat history as documentation)

અમે ટેકનિકલ નિર્ણયો યાદ રાખવા માટે Lovable ચેટ હિસ્ટ્રી પર આધાર રાખતા હતા. ચેટ લોગ્સ ખૂબ જ અસ્તવ્યસ્ત હોય છે. તેમાં સફળ ફેરફારો અને નિષ્ફળ પ્રયાસો મિક્સ હોય છે. લાંબા થ્રેડમાં કોઈ ચોક્કસ ફેરફારનું કારણ શોધવું મુશ્કેલ છે.

ઉકેલ: અમે નિર્ણય લોગિંગ (decision logging) માટે Linear નો ઉપયોગ કરવાનું શરૂ કર્યું. અમે Linear માં એક લાઇન લખીએ છીએ જેમાં શું બદલાયું અને શા માટે તે સમજાવવામાં આવે છે. Lovable ચેટ એ એક્ઝિક્યુશન (execution) માટે છે, જ્યારે Linear એ નિર્ણયો માટે છે.

પાઠ સરળ છે. 16 પ્રોડક્ટ્સને 16 અલગ-અલગ પ્રોજેક્ટ્સ તરીકે ન જુઓ. તેમને એક પોર્ટફોલિયો તરીકે ગણો. તમારા ટેમ્પલેટ્સને સ્ટાન્ડર્ડ બનાવો અને બધું એક જ જગ્યાએથી મોનિટર કરો.

Source: https://dev.to/jakub_inithouse/technical-mistakes-of-running-16-products-on-lovable-supabase-59fh

Optional learning community: https://t.me/GyaanSetuAi