CodeGym /Kurslar /ChatGPT Apps /Yetkin iş axınında tunellər: sabit dev‑URL-lər və Dev Mod...

Yetkin iş axınında tunellər: sabit dev‑URL-lər və Dev Mode-da yenilənmə

ChatGPT Apps
Səviyyə , Dərs
Mövcuddur

1. “Random” tunellərin problemi

İlk dəfə ngrok http 3000 və ya sürətli Cloudflare Quick Tunnel işə salanda sehr kimidir: birdən — sizin http://localhost:3000 https://random-1234.tunnelprovider.com ünvanına çevrilir. URL-i ChatGPT Dev Mode-a kopyalamaq olar və GPT sevinə-sevinə App-ınızı yükləyir.

Sonra tuneli yenidən işə salırsınız… və yeni domen alırsınız. ChatGPT-də Dev‑tətbiqin ayarlarında köhnə URL qəfil “ölü keçid” olur, GPT səmimi şəkildə “App unavailable” yazır, siz isə yenə ayarlara gedib URL-i dəyişir, Save düyməsini basır, onun orada yenilənməsini gözləyir və səssizcə bütün bu stekdən bezirsiniz.

Birdəfəlik “axşam bir az oynamaq” üçün bu, dözüləndir. Amma siz:

  • hər gün App üzərində işləyirsinizsə;
  • ara versiyanı həmkar/menecerə göstərmək istəyirsinizsə;
  • paralel olaraq staging və production da qurursunuzsa,

Dev Mode-u hər yeni təsadüfi URL üçün yenidən qoşmaq saf əzaba çevrilir.

Üstəlik, tətbiqinizdə domenə bağlı nəsə artıq əlavə etmisinizsə (məsələn, OAuth redirect URI və ya webhook-lar), hər yeni URL onları da sındırır. Zəncirvari effekt yaranır: tuneli dəyişdiniz — və App konfiqurasiyasını, OAuth provayderində redirect‑URL-i və webhook qəbuleyicisinin ayarlarını da düzəltməli olursunuz.

Buradan dərsin əsas ideyası çıxır: sabit dev‑URL — lüks deyil, developerlərin psixi sağlamlığını qorumaq vasitəsidir.

Insight

ChatGPT sizin tətbiqlə işləyərkən çox sərt taymautlara malikdir və bunları asanlıqla kiçildmək olar. MCP-tool-call üçün vaxt limiti var: maksimum 2 dəqiqə — bu müddətdən sonra platforma çağırışı uğursuz sayır, serveriniz hələ də nəsə etsə belə.

Tətbiqin qeydiyyatı (Store və ya Dev Mode) ilə vəziyyət daha sərtdir: ChatGPT manifesti, resursları və alət təsvirlərini oxumaq üçün təxminən 20 saniyə verir. Bu vaxt ərzində MCP serveriniz inizializasiya olub, tools/resources siyahısını və s. qaytara bilməsə, App qeydiyyatı taymautla qırılacaq.

Tövsiyə: bütün ağır inizializasiya Dev Mode-a və ya Store-a getməzdən əvvəl baş verməlidir. Məlumat bazasına bağlantıların qızdırılması, böyük konfiqlərin yüklənməsi, tənbəl keşlər — bunları öncədən, məsələn, serveri bir dəfə MCP Jam və ya ayrıca daxili skriptlə vuraraq icra edin. Platformanın baxış bucağından MCP server “isti” olmalı və saniyələr içində cavab verməlidir, qeydiyyat zamanı “oyanmalı” deyil.

2. “Yetkin” tunel nədir

Gəlin, “yetkin” tunelin kursun əvvəlində işə saldığınız şeydən nəyilə fərqləndiyini dəqiqləşdirək.

Erkən rejim (modul 2) belə idi:

# ngrok nümunəsi
ngrok http 3000
# Nəticə: https://random-abc123.ngrok-free.app

Siz bu birdəfəlik URL-i götürüb Dev Mode-a qoyurdunuz. Növbəti ngrok işə salınanda URL artıq başqa olurdu və ChatGPT konfiqurasiyası köhnəlirdi.

“Yetkin” yanaşmada sizdə:

  • statik subdomen (tunel provayderində və ya öz domeninizdə) var;
  • eyni domen həmişə sizin localhost:3000-a yönləndirilir;
  • tuneli, kompüteri, router-i yenidən başlada bilərsiniz, amma URL dəyişməz qalır.

Belə statik subdomenlər, məsələn, mövcuddur:

  • ngrok-da — hesab üçün pulsuz statik domain;
  • Cloudflare Tunnel-də — adlandırılmış tunel və öz domeninizə bağlama vasitəsilə.

Və ChatGPT tətbiqi Dev Mode-da məhz bu bir URL-ə köklənir və sizi artıq narahat etmir.

Formal baxımdan bizim “yetkin” tunel üçün tələblər bunlardır:

  • dayanıqlı, dəyişməyən publik HTTPS domen;
  • etibarlı TLS sertifikatı (provayder bunu bizim üçün edir);
  • belə bir konfiq: “https://dev.yourdomain.com‑a gələn hər şeyi http://localhost:3000‑a ötür”;
  • opsional — minimal təhlükəsizlik tədbirləri (heç olmasa URL-i StackOverflow-da paylaşmamaq).

3. Sabit dev‑URL qururuq: Cloudflare Tunnel nümunəsi

Kursda əsas alət kimi Cloudflare Tunnel tövsiyə edirik, çünki həm dev, həm də daha ciddi ssenarilərdə yaxşı işləyir. Artıq modul 2-də baza quruluşunu görmüsünüz, indi bunu daimi dev‑URL-ə qədər “bükəcəyik”.

Tutaq ki, bizdə GiftGenius adlı tədris tətbiqi var və sabit URL istəyirik: giftgenius-dev.yourdomain.com.

Minimal addımlar (sadələşdirilmiş, Cloudflare UI‑a bağlı olmadan):

  1. Domeni Cloudflare hesabınıza bağlayın (bir dəfə, onların paneli ilə).
  2. cloudflared-i lokala qurun və login olun.
brew install cloudflare/cloudflare/cloudflared   # macOS
cloudflared login                                # avtorizasiya üçün brauzeri açacaq

3. Adlandırılmış tunel yaradın:

cloudflared tunnel create giftgenius-dev

4. ~/.cloudflared/config.yml-də marşrutu tənzimləyin:

tunnel: giftgenius-dev
credentials-file: /Users/you/.cloudflared/giftgenius-dev.json

ingress:
  - hostname: giftgenius-dev.yourdomain.com
    service: http://localhost:3000  # bizim Next.js dev-server
  - service: http_status:404

5. Tuneli işə salın:

cloudflared tunnel run giftgenius-dev

İndi npm run devcloudflared tunnel run işlədiyi müddətdə lokal Next.js tətbiqiniz daimi URL ilə əlçatandır: https://giftgenius-dev.yourdomain.com. Və məhz bunu ChatGPT Dev Mode ayarlarında göstərirsiniz.

Bu, bizim tətbiqlə necə uzlaşır

ChatGPT‑də Dev‑tətbiqi qoşarkən daxil etdiyiniz tətbiq URL‑ini brauzerdə açsanız:

https://giftgenius-dev.yourdomain.com/mcp

belə bir cavab (səhv) görəcəksiniz:

{"jsonrpc":"2.0","error":{"code":-32000,"message":"Method not allowed."},"id":null}

Bu tam normaldır, çünki /mcp endpoint-i GET sorğusunu gözləmir. Tətbiqin qalan bütün hissələri — vidcet, /mcp MCP endpoint-i, API marşrutlar — eyni tunellə gedir, hər dəfə yeni domeni yadda saxlamağa ehtiyac yoxdur.

4. Alternativ: ngrok-da sabit subdomen

Əgər siz artıq ngrok-a öyrəşmisinizsə, onu da təxminən eyni cür “yetkinləşdirə” bilərsiniz, static domain istifadə edərək. 2023‑dən etibarən ngrok pulsuz planında belə myapp-dev.ngrok-free.app kimi bir statik subdomeni bərkitməyə imkan verir.

Minimal sxem:

# ~/.config/ngrok/ngrok.yml
authtoken: <sizin token>
tunnels:
  giftgenius-dev:
    addr: 3000
    proto: http
    domain: giftgenius-dev.ngrok-free.app

İşə salma:

ngrok start giftgenius-dev

Nəticədə https://giftgenius-dev.ngrok-free.app URL-i daimi olacaq və onu ChatGPT Dev Mode-a tətbiqin baza URL-i kimi verirsiniz.

Fəlsəfə eynidir:

  • heç bir “random” ünvan yoxdur;
  • dəyişən yalnız tunelin daxili statusudur (işləyir/işləmir), domen yox;
  • Dev Mode-u yenidən qoşmağa ehtiyac yoxdur.

Bu mənada Cloudflare və ngrok sadəcə müxtəlif dondurma dadlarıdır. Bəziləri öz domenlərini və DNS üzərində “incə” nəzarəti sevir (Cloudflare), bəziləri isə “YAML yaz — hazırdır” yanaşmasını üstün tutur (ngrok). Kurs üçün hər iki yanaşma keçərlidir, əsas odur ki, URL sabit olsun.

5. Sxem: ChatGPT Dev Mode ↔ tunel ↔ lokal stek

Baş verəni bir az formallaşdırmaq üçün şəkil çəkək.

flowchart TD
    ChatGPT["ChatGPT (Dev Mode)"]
    AppCfg["Dev App (konfiq: https://giftgenius-dev...)"]
    Tunnel["Cloudflare/ngrok tuneli (giftgenius-dev...)"]
    Next["Next.js dev-server localhost:3000 + MCP handler"]

    ChatGPT --> AppCfg
    AppCfg -->|"konfiqdə https://giftgenius-dev.../.well-known/openai-app göstərilib"| Tunnel
    Tunnel -->|"HTTPS → HTTP proksi"| Next

ChatGPT heç vaxt noutbukda nəyi işlətdiyinizi bilmir. Onun üçün yalnız bir HTTPS endpoint var. Onun arxasında nə var — Vercel, lokal tunel, Kubernetes — artıq sizin işinizdir. Və bu dərsdə bizi məhz lokal inkişaf üçün həmin HTTPS endpoint-in sabitliyi maraqlandırır.

Qalır elə etmək ki, tətbiq daxilində də bu ünvan “həqiqətin yeganə mənbəyi” olsun, ayrı-ayrı hardkod olunmuş sətirlər üzrə “sürüşməsin” — növbəti bölmə buna həsr olunub.

6. Ətraf mühit dəyişənləri və baseURL kodda

Bütün bunların sürprizsiz işləməsi üçün Next.js kodunda bir dəfə “tətbiqin xarici baza URL-i”ni müəyyənləşdirmək və sonra yalnız ona əsaslanmaq faydalıdır.

Məsələn, GiftGenius tətbiqimizdə app/lib/config.ts qovluğunda belə yaza bilərsiniz:

// app/lib/config.ts
export const baseUrl =
  process.env.NEXT_PUBLIC_APP_URL ?? "http://localhost:3000"; // fallback

export const mcpEndpoint = `${baseUrl}/mcp`;  // MCP serverinin URL-i

Və inkişaf zamanı .env.local-da göstərmək:

NEXT_PUBLIC_APP_URL=https://giftgenius-dev.yourdomain.com

Beləliklə:

  • vidcet daxilində və hər cür linklərdə həmişə baseUrl-dan istifadə edirsiniz;
  • ChatGPT Dev Mode və brauzer üçün hər şey konsistent görünür;
  • sabah Vercel staging-ə https://giftgenius-staging.vercel.app domeni ilə keçsəniz, yalnız ətraf mühit dəyişənini yeniləmək kifayətdir.

Bu xüsusilə vacibdir:

  • callback‑URL üçün (məsələn, OAuth, webhook işləyiciləri);
  • vidcetdə istifadəçiyə göstərdiyiniz linklər üçün (“Brauzerdə aç” düyməsi openExternal vasitəsilə);
  • tətbiq məntiqindəki istənilən absolut URL-lər üçün.

Hələ yalnız dev‑URL-dən danışıram, amma “baseUrl üçün yeganə mənbə” arxitektura ideyası həmçinin problemsiz şəkildə staging/production-a da köçəcək.

7. ChatGPT Dev Mode-da URL-in yenilənməsi

Yaxşı, biz özümüzə gözəl sabit domen düzəltdik. İndi Dev Mode-da bununla necə yaşayaq?

Məntiq belədir:

  1. Dev‑tətbiqin ayarlarında bir dəfə kök URL göstərirsiniz: https://giftgenius-dev.yourdomain.com/
  2. ChatGPT həmin URL üzrə manifestə (.well-known/openai-app) müraciət edir və sonra MCP (/mcp), statika və s. üçün eyni köklərdən istifadə edir.
  3. Yalnız kodu dəyişirsinizsə (React vidceti, MCP handler-lər, stillər), URL-i ümumiyyətlə dəyişməyə ehtiyac yoxdur. Tunelin işləməsi və Next.js serverinin cavab verməsi kifayətdir.
  4. Əgər domeni dəyişirsinizsə (nadir hallarda, məsələn ngrok-dan Cloudflare-ə), Dev Mode-a bir dəfə daxil olub endpoint-i dəyişmək lazımdır.

Bəzi hallarda ChatGPT manifesti keşləyir və oradakı dəyişikliklər dərhal görünməyə bilər. Dev Mode interfeysində adətən “Reload configuration / Refresh App” kimi düymə olur, ən pis halda isə eyni URL ilə App-ı söküb yenidən qoşmaq da kömək edir.

Vacibdir: URL-i dəyişmədiyiniz müddətdə Dev Mode kodun yeni versiyalarını avtomatik “tutur”. Tətbiq üçün əsas triger domendir, commit‑hash deyil.

8. Dev Mode-da dev / staging / prod arasında keçid

Sabit dev domen yalnız birinci pillədir. Layihə böyüdükcə URL xaosunda boğulmamaq üçün dev tunelin ümumi mühitlər (dev/staging/prod) və Dev Mode sxeminə necə oturduğunu əvvəlcədən anlamaq faydalıdır. Staging və prod daha çox Vercel mövzusudur, amma Dev Mode artıq bir neçə mühitlə işləməyi bacarır.

Anlamaq üçün belə bir cədvəl faydalıdır:

Mühit Baza URL Kod harada işləyir
Local
https://giftgenius-dev.yourdomain.com
Lokal Next.js + MCP tunel üzərindən
Staging
https://giftgenius-staging.vercel.app
Vercel Preview / staging deploy
Prod
https://giftgenius.vercel.app
Vercel Production

Dev Mode ilə işləməyin iki yolu var.

Birinci — bir Dev‑App saxlayırsınız, amma bəzən onun ayarlarında URL-i yeniləyib staging və ya prod-u yoxlayırsınız (ehtiyatla). Bu yanaşma erkən mərhələlərdə keçərlidir, amma asanlıqla qarışır: bu gün lokalı test etdiniz, sabah staging, birisi gün keçidi unutdunuz və təsadüfən Dev‑App vasitəsilə sorğuları proda göndərirsiniz.

İkinci — daha sağlamdır: bir neçə Dev‑tətbiq, hərəsi konkret mühitə bağlı:

  • GiftGenius Devgiftgenius-dev.yourdomain.com;
  • GiftGenius Staginggiftgenius-staging.vercel.app;
  • GiftGenius (döyüş, Store vasitəsilə) → giftgenius.vercel.app.

Bu mühazirədə addım-addım gedərək ən azı dev‑URL-i qaydaya salırıq. Növbəti mühazirədə Vercel və preview deploy-ları staging/production ilə necə məntiqli bağlamağı görəcəksiniz.

9. Komanda ilə iş: bir neçə developer və bir tunel

Hələ ki bir dev domen və bir introvert developer var, tunel — sizin şəxsi dostunuzdur. Amma layihəyə komanda gələn kimi tunellər və mühitlər kəsişməyə başlayır, və burada “bir subdomen uğrunda müharibə”ni yaratmamaq vacibdir.

Təsəvvür edək ki, iki developer eyni statik subdomeni istifadə etmək qərarına gəlib: məsələn, giftgenius-dev.ngrok-free.app. Hər ikisi özündə ngrok start giftgenius-dev işə salır. Ən yaxşı halda tunellərdən biri ümumiyyətlə qalxmayacaq (domen konflikti), ən pis halda isə növbə ilə bir-birinizin sessiyasını “tutacaqsınız” və ChatGPT gah birinizə, gah o birinizə düşəcək.

Burada bir neçə strategiya var.

Ən sadəsi — şəxsi dev domenlər:

  • alex.dev.giftgenius.app;
  • maria.dev.giftgenius.app.

Və hər kəs üçün öz Dev‑App-ı, məsələn GiftGenius Dev (Alex)GiftGenius Dev (Maria). Beləliklə, hər kəs lokalı rahatca işlədir və qonşusuna mane olmur.

Daha “komandalı” yol — ümumi staging endpoint:

  • Hər developerin şəxsi dev tuneli var (şəxsi debug üçün).
  • Üstəlik Vercel-də staging var, feature budaqları ora birləşdirilir və ümumi Dev‑App GiftGenius Staging ora baxır.

Bu yanaşma real komandalar üçün çox yayğındır:

  • feature lokalda doğulur və şəxsi tunel vasitəsilə sazlanır;
  • pull‑request və merge-dən sonra hamı onu staging-də test edir (tunelsiz, sadəcə Vercel URL-i ilə).

10. Dev tunelin təhlükəsizliyi (qısa və paranoyasız)

Tunel — lokal serverinizi internetə çıxarmağın rahat yoludur. İnternetin isə, bildiyimiz kimi, əksər hissəsi botlar, skanerlər və admin/admin parolunu unutmusunuzmu deyə yoxlamağı sevən insanlardan ibarətdir.

Artıq dev mərhələsində yadınızda saxlamağa dəyən baza şeylər:

  • tunel həmin porta bağlı olan hər şeyə xarici giriş verir; ora bir də DB admin panelini, phpMyAdmin-i və “parolsuz test CRM-im” kimi şeyləri qaldırmayın;
  • tunel URL-inizi açıq repozitoriyalarda və çatlarda paylaşmayın;
  • işləmədiyiniz zaman tuneli söndürün (və noutbuku da bəzən söndürün — onun da dincəlməyə ehtiyacı var).

Basic Auth, xüsusi başlıqların yoxlanması və ya URL-də token kimi daha ciddi tədbirləri təhlükəsizlik modullarında müzakirə edəcəyik. İndi vacib olan yalnız budur: tunel — inkişaf alətidir, qorunan server deyil. Production Vercel kimi normal hostinqdə yaşayacaq, başqa müdafiə mexanizmləri ilə — bunlara növbəti mühazirədə çatacağıq.

11. Praktika: tətbiqimiz üçün sabit dev‑URL qururuq

İndi nəzəriyyə və xəbərdarlıqlardan praktikaya keçək: bunları Next.js üzərində tədris tətbiqimizə (Apps SDK şablonu) bağlayaq.

Güman edək, layihə strukturu belədir:

apps/
  web/          # Next.js App + vidcet
  mcp-server/   # (opsional) ayrıca MCP, yaxud web-də /mcp handler

Praktikada MCP-ni elə Next.js daxilində, app/api/mcp/route.ts-də saxlaya bilərsiniz, prinsip eynidir.

Addım 1. .env.local-ı düzəldirik

Oraya sabit dev‑URL tunelini əlavə edək:

NEXT_PUBLIC_APP_URL=https://giftgenius-dev.yourdomain.com

Dev kodunda artıq bu dəyişəndən gələn baseUrl-dən istifadə etmişdik (yuxarıya baxın). Əgər etməmisinizsə — indi ayırmağın tam vaxtıdır.

Addım 2. Dev server və tuneli işə salırıq

cd apps/web
npm run dev          # Next.js localhost:3000-də

# ayrı terminal
cloudflared tunnel run giftgenius-dev

Brauzerdə https://giftgenius-dev.yourdomain.com açılıb App-ınızı göstərdiyini yoxlayın.

Addım 3. ChatGPT Dev Mode-da qoşuruq

ChatGPT interfeysində (developer bölməsi):

  • GiftGenius Dev yaradın və ya redaktə edin;
  • URL/Endpoint sahəsinə https://giftgenius-dev.yourdomain.com/ yazın;
  • yadda saxlayın.

Bundan sonra ChatGPT /.well-known/openai-app yoluna görə manifestə müraciət edir, ardınca tətbiqinizi bu domen üzərindən işə salır.

İndi edə biləcəkləriniz:

  • vidcet kodunu, MCP handler-ləri, stilləri dəyişmək;
  • npm run dev-i yenidən başlatmaq;
  • cloudflared tunnel run giftgenius-dev-i yenidən başlatmaq;

və domen eyni qaldığı müddətdə artıq heç vaxt Dev‑App ayarlarına girməmək.

12. Kod məntiqində bu necə görünür: openExternal nümunəsi

Əvvəlki mühazirələrdə yazdıqlarımıza bağlamaq üçün vidcetə “Tam interfeysi brauzerdə aç” düyməsini əlavə edək — bu da sabit dev‑URL-dən istifadə edəcək.

Tutaq ki, bizdə vidcetin React komponenti GiftWidget var:

// app/components/GiftWidget.tsx
"use client";

import { baseUrl } from "../lib/config"; // baseUrl-i env-dən götürürük

export function GiftWidget() {
  const handleOpenFull = () => {
    window.openai.openExternal({
      // tətbiqin səhifəsini ayrıca vərəqdə açırıq
      url: `${baseUrl}/full`,
      label: "Tam interfeysi aç",
    });
  };

  return (
    <div>
      <button onClick={handleOpenFull}>
        Tam rejim
      </button>
    </div>
  );
}

Əgər NEXT_PUBLIC_APP_URL tuneli göstərirsə, onda:

  • lokal inkişaf zamanı https://giftgenius-dev.yourdomain.com/full açılacaq;
  • staging-ə deploydan sonra — https://giftgenius-staging.vercel.app/full;
  • prod-da — döyüş domeni.

Yenə də — domen üçün yeganə həqiqət mənbəyi: mühiti dəyişirik, amma kodu yox.

13. Mini strategiya: tunel haqqında “yetkin” düşünmək

Hər şeyi sadə mental modeldə toplasaq:

  • tunel sadəcə noutbukunuzla sabit publik domen arasında müvəqqəti kabeldir;
  • ChatGPT Dev Mode yalnız domeni tanıyır və kodun fiziki olaraq harada işləməsi onun üçün fərq etmir;
  • domeni nə qədər az dəyişsəniz, ChatGPT və OAuth provayderlərinin ayarlarında o qədər az vaxt xərcləyirsiniz;
  • dev tunel — ümumi mühit xəritənizdəki yeganə sətr deyil, staging (Vercel preview) və prod (Vercel production) yanında duran bir sətirdir.

Növbəti mühazirə bu kabelin Vercel-də tam hüquqlu hostinqlə necə əvəzləndiyini, Git budaqları, preview deploy-lar və production ilə bunun necə bağlandığını göstərəcək.

14. “Yetkin” tunellə işləyərkən tipik səhvlər

Səhv №1: “Statik domen qurdum, amma yenə də random URL-lərdən istifadə edirəm”.
Bəzən developer bir dəfə gözəl giftgenius-dev.yourdomain.com qurur, amma vərdişlə ngrok http 3000-i konfiqsiz işə salır. Nəticədə ChatGPT bir domenə baxır, kod isə başqa birinin arxasında işləyir. Artıq sabit dev‑URL düzəltdinizsə — yalnız ondan istifadə edin və tuneli konfiq (adlandırılmış tunel/profil) vasitəsilə işə salın.

Səhv №2: Koda sərt hardkod olunmuş localhost:3000.
React komponentində və ya MCP işləyicisində fetch("http://localhost:3000/api/...") yazılanda baş verir. Lokalda birtəhər işləyir, amma Dev Mode-da və xüsusilə staging/prod-da dərhal qırılır. Baza URL-i həmişə konfiqə çıxarın (baseUrl, NEXT_PUBLIC_APP_URL) və absolut link tələb olunan hər yerdə ondan istifadə edin.

Səhv №3: Sabit tunel əvəzinə Dev Mode-da URL-i daimi redaktə etmək.
Əgər “yaxşı, bu dəfə də ayarlarda URL-i dəyişərəm, nə olacaq ki” deyə düşünürsünüzsə — bu, siqnaldır. ngrok/Cloudflare-də statik subdomen qurmaq bir dəfə 10–15 dəqiqə çəkir, amma inkişaf boyu saatlarla vaxt qazandırır.

Səhv №4: Qaydasız komandaya bir ümumi statik domen.
İki developer, bir domen giftgenius-dev.ngrok-free.app və hər ikisi istədikləri zaman tuneli işə salır. Nəticə — tunel konflikti, Dev Mode-da “mistik” yox olan cavablar və “məndə işləyirdi axı” tipli debug. Komanda üçün ya şəxsi dev domenlər, ya da real hostinqdə bir staging domeni seçin.

Səhv №5: Tuneli “demək olar ki, production” kimi görmək.
Bəzən kimsə düşünür: “Əgər tunel vasitəsilə sabit HTTPS URL-im varsa, niyə real istifadəçiləri/ödənişləri bunun üzərindən buraxmayaq”. Bu, ağrıya aparan yoldur: noutbuk söndü — tətbiq öldü, internet getdi — eyni, təhlükəsizlik isə ən yaxşı halda simvolikdir. Tunel — dev alətidir. Döyüş trafiki üçün Vercel və digər yetkin infrastruktur nəzərdə tutulur, onlara növbəti mühazirədə çatacağıq.

Səhv №6: Ətraf mühit dəyişənləri ilə Dev Mode-un sinxronizasiyasını unutmaq.
Çox vaxt NEXT_PUBLIC_APP_URL .env.local-da dəyişdirilir, amma Dev Mode-da URL-i dəyişməyi (və ya əksinə) unudurlar. Nəticədə vidcet bir domenə linklər yaradır, ChatGPT isə başqa birinə müraciət edir. Sadə “mühit ↔ domen ↔ ChatGPT-də App” cədvəli saxlayın və dəyişikliklərdə onu yeniləyin — bu, “indi həqiqi URL hansıdır” sualını təxmin etməkdən ucuzdur.

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION