āĻĄā§āĻ, āϏā§āĻā§āĻāĻŋāĻ, āĻĒā§āϰā§āĻĄ-āĻāϰ āĻāύā§āϝ āĻā§āĻĒāύ āĻ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻŽā§āϝāĻžāύā§āĻāĻŽā§āύā§āĻ
āĻĄā§āĻ, āϏā§āĻā§āĻāĻŋāĻ, āĻ āĻĒā§āϰā§āĻĄ-āĻ API āĻā§, SMTP āĻā§āϰā§āĻĄā§āύāĻļāĻŋāϝāĻŧāĻžāϞ āĻ webhook āϏāĻŋāĻā§āϰā§āĻ āϞāĻŋāĻ āĻāĻžāĻĄāĻŧāĻžāĻ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻ āϏāĻŋāĻā§āϰā§āĻ āĻŽā§āϝāĻžāύā§āĻ āĻāϰā§āύâāϏāĻšāĻ āĻĒā§āϝāĻžāĻāĻžāϰā§āύ āĻ āĻā§āĻāϞāĻŋāϏā§āĻ āϏāĻšāĨ¤

āĻāĻŽāϰāĻž āĻā§ āϏāĻŽāϏā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύ āĻāϰāĻāĻŋ
āĻā§āĻĒāύāĻŽā§āϞā§āϝ āĻāĻŦāĻ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻŽā§āϝāĻžāύā§āĻāĻŽā§āύā§āĻ āύāĻŋāϝāĻŧā§ āĻāĻžāĻāĻāĻŋ āĻšāϞ āϏāĻāĻŦā§āĻĻāύāĻļā§āϞ āĻŽāĻžāύāĻā§āϞ⧠āĻāĻŽāύ āϏā§āĻĨāĻžāύ⧠āϰāĻžāĻāĻž āϝāĻžāϤ⧠āϤāĻž āĻĻā§āϰā§āĻāĻāύāĻžāĻŦāĻļāϤ āĻāĻĒāĻŋ, āĻā§āĻļ āĻŦāĻž āĻļā§āϝāĻŧāĻžāϰ āύāĻž āĻšāϝāĻŧā§ āϝāĻžāϝāĻŧāĨ¤
āĻāĻāĻāĻŋ secret (āĻā§āĻĒāύ) āĻšāϞ⧠āĻāĻŽāύ āĻāĻŋāĻā§ āϝāĻž āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻĻā§āϝāĻŧ āĻŦāĻž āĻĒāϰāĻŋāĻāϝāĻŧ āĻĒā§āϰāĻŽāĻžāĻŖ āĻāϰ⧠â āϝā§āĻŽāύ API āĻā§, āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ, SMTP āϞāĻāĻāύ, āĻŦāĻž webhook signing secretāĨ¤ āϏāĻžāϧāĻžāϰāĻŖ config āĻšāϞ⧠āĻāĻŽāύ āĻŽāĻžāύ āϝāĻž āĻĒā§āϰāĻāĻžāĻļ āĻāϰāĻž āĻā§āϞā§āĻ āĻā§āώāϤāĻŋ āĻšāϝāĻŧ āύāĻž, āϝā§āĻŽāύ āĻāĻāĻāĻŋ āĻĢāĻŋāĻāĻžāϰ āĻĢā§āϞā§āϝāĻžāĻā§āϰ āύāĻžāĻŽ, āĻāĻžāĻāĻŽāĻāĻāĻ, āĻŦāĻž āĻĒāĻžāĻŦāϞāĻŋāĻ āϏāĻžāĻāĻā§āϰ āĻŦā§āϏ URLāĨ¤
Dev, staging, āĻāĻŦāĻ prod-āĻ āĻāϞāĻžāĻĻāĻž āĻŽāĻžāύ āĻĨāĻžāĻāĻž āĻāĻāĻŋāϤ āĻāĻžāϰāĻŖ āϤāĻžāĻĻā§āϰ āĻāĻĻā§āĻĻā§āĻļā§āϝ āĻāϞāĻžāĻĻāĻžāĨ¤ Dev āĻĻā§āϰā§āϤ āĻĒāϰā§āĻā§āώāĻž-āĻĒāϰāĻŋāĻā§āώāĻžāϰ āĻāύā§āϝ, staging āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύā§āϰ āĻ āύā§āϰā§āĻĒ āĻĻā§āĻāϤ⧠āĻāĻŋāύā§āϤ⧠āĻŦāĻŋāĻā§āĻāĻŋāύā§āύ āĻĨāĻžāĻāĻžāϰ āĻāύā§āϝ, āĻāĻŦāĻ prod-āĻā§ āϞāĻāĻĄāĻžāĻāύ, āĻ āĻĄāĻŋāĻāϝā§āĻā§āϝ āĻ āϏā§āĻĨāĻŋāϤāĻŋāĻļā§āϞ āϰāĻžāĻāϤ⧠āĻšāϝāĻŧāĨ¤ āĻāĻāĻ āĻā§āĻĒāύ āϏāĻŦ āĻāĻžāϝāĻŧāĻāĻžāϝāĻŧ reuse āĻāϰāϞ⧠dev-āĻ āĻā§āύ⧠āϞāĻŋāĻ āĻĨāĻžāĻāϞā§āĻ āϤāĻž āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύ⧠breach-āĻ āĻĒāϰāĻŋāĻŖāϤ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤
âLeaking into buildsâ āĻŦāϞāϤ⧠āĻŦā§āĻāĻžāϝāĻŧ āĻā§āύ⧠āĻā§āĻĒāύ āĻāĻŽāύ āĻāĻŋāĻā§āϤ⧠āĻĸā§āĻā§ āϝāĻžāĻāϝāĻŧāĻž āϝāĻž āĻĒā§āϝāĻžāĻā§āĻ āĻšāϝāĻŧā§ āĻļā§āϝāĻŧāĻžāϰ āĻšāϝāĻŧ, āϝā§āĻŽāύ āĻāĻŽā§āĻĒāĻžāĻāϞ āĻāϰāĻž āĻŦā§āϝāĻžāĻāĻāύā§āĻĄ āĻŦāĻžāĻāύāĻžāϰāĻŋ, āĻŽā§āĻŦāĻžāĻāϞ āĻ ā§āϝāĻžāĻĒ āĻŦāĻžāύā§āĻĄā§āϞ, āĻŦāĻž āĻĢā§āϰāύā§āĻ-āĻāύā§āĻĄ āĻŦāĻžāύā§āĻĄāϞāĨ¤ āĻāĻāĻŦāĻžāϰ āĻā§āĻĒāύ āĻā§āύ⧠āĻŦāĻŋāϞā§āĻĄ āĻāϰā§āĻāĻŋāĻĢā§āϝāĻžāĻā§āĻā§ āĻā§āϞ⧠āϤāĻž āĻāĻŽāύ āĻāĻžāϝāĻŧāĻāĻžāϝāĻŧ āĻĒā§āĻāĻā§ āϝāĻžāĻŦā§ āϝāĻž āĻāĻĒāύāĻŋ āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŖ āĻāϰā§āύ āύāĻžāĨ¤
āĻ ā§āϝāĻžāĻā§āϏāĻŋāĻĄā§āύā§āĻāĻžāϞ āϞāĻŋāĻ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻāϝāĻŧā§āĻāĻāĻŋ āĻĒā§āϰāϤā§āϝāĻžāĻļāĻŋāϤ āĻĒāĻĨ āĻĻāĻŋāϝāĻŧā§ āĻāĻā§:
- āϏā§āϰā§āϏ āĻā§āĻĄ, āϏā§āϝāĻžāĻŽā§āĻĒāϞ āĻŦāĻž āĻāĻŽā§āύā§āĻā§ āĻā§āĻĒāύ āĻšāĻžāϰā§āĻĄāĻā§āĻĄ āĻāϰāĻž
- āϞā§āĻāĻžāϞ
.envāĻĢāĻžāĻāϞ āĻŦāĻž āĻāύāĻĢāĻŋāĻ āĻāĻā§āϏāĻĒā§āϰā§āĻ āϰā§āĻĒā§āϤ⧠āĻāĻŽāĻŋāĻ āĻāϰāĻž - āĻĢā§āϰāύā§āĻ-āĻāύā§āĻĄ āĻŦāĻž āĻŽā§āĻŦāĻžāĻāϞ āĻŦāĻŋāϞā§āĻĄā§ āĻā§āĻĒāύ āĻŦā§āĻ āĻāϰāĻž āϝāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻĄāĻŋāĻāĻžāĻāϏ⧠āĻāϞā§
- āϞāĻ, āĻā§āϰā§āϝāĻžāĻļ āϰāĻŋāĻĒā§āϰā§āĻ āĻŦāĻž āĻŦāĻŋāϞā§āĻĄ āĻāĻāĻāĻĒā§āĻā§ āĻā§āĻĒāύ āĻĒā§āϰāĻŋāύā§āĻ āĻāϰāĻž
- "āĻāĻāĻā§ āĻĒāϰā§āĻā§āώāĻž āĻāϰ⧠āĻĻā§āĻāĻžāϰ āĻāύā§āϝ" āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύā§āϰ āĻŽāĻžāύāĻā§āϞ⧠āϏā§āĻā§āĻāĻŋāĻ-āĻ āĻāĻĒāĻŋ āĻāϰāĻž
āĻāĻāĻāĻŋ āϏāĻšāĻ āĻāĻĻāĻžāĻšāϰāĻŖ: āĻāĻāĻāύ āĻĄā§āĻ SMTP āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻāύāĻĢāĻŋāĻ āĻĢāĻžāĻāϞ⧠āϝā§āĻ āĻāϰ⧠āϝāĻžāϤ⧠âāĻāĻŽā§āĻāϞ āĻāĻžāĻ āĻāϰā§,â āϤāĻžāϰāĻĒāϰ āĻĢāĻžāĻāϞāĻāĻŋ āĻāĻŽāĻŋāĻ āĻŦāĻž āϰāĻŋāϞāĻŋāĻ āĻŦāĻŋāϞā§āĻĄā§ āĻĒā§āϝāĻžāĻā§āĻ āĻšāϝāĻŧā§ āϝāĻžāϝāĻŧāĨ¤ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻĒāϰ⧠āϰā§āĻā§āĻ āĻāϰāϞā§āĻ āĻĒā§āϰāĻžāύ⧠āĻŦāĻŋāϞā§āĻĄ CI āĻā§āĻļā§, āĻ ā§āϝāĻžāĻĒ āϏā§āĻā§āϰ āĻāĻĒāϞā§āĻĄā§, āĻŦāĻž āĻāĻžāϰ⧠āĻĄāĻžāĻāύāϞā§āĻĄ āĻĢā§āϞā§āĻĄāĻžāϰ⧠āĻĨāĻžāĻāϤ⧠āĻĒāĻžāϰā§āĨ¤
āϞāĻā§āώā§āϝ āϏāĻšāĻ: āĻā§āĻĒāύāĻā§āϞ⧠āĻā§āĻĄ āĻ āĻŦāĻŋāϞā§āĻĄā§āϰ āĻŦāĻžāĻāϰ⧠āϰāĻžāĻā§āύ, āĻāĻŦāĻ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻā§ āϏāĻ āĻŋāĻ āĻŽāĻžāύ āϰāĻžāύāĻāĻžāĻāĻŽā§ āĻŦāĻž āĻāĻāĻāĻŋ āϏāĻŋāĻāĻŋāĻāϰ āĻĄāĻŋāĻĒā§āϞāϝāĻŧāĻŽā§āύā§āĻ āϏā§āĻā§āĻĒā§ āĻāύāĻā§āĻā§āĻ āĻāϰā§āύāĨ¤
āĻāĻŽāύ āĻŽā§āϞāĻŋāĻ āύā§āϤāĻŋāĻŽāĻžāϞāĻž āϝāĻž āĻŦā§āĻļāĻŋāϰāĻāĻžāĻ āϞāĻŋāĻ āϰā§āϧ āĻāϰā§
āĻ āϧāĻŋāĻāĻžāĻāĻļ āϏā§āĻĢāĻāĻŋ āĻāϏ⧠āĻāϝāĻŧā§āĻāĻāĻŋ āĻ āĻā§āϝāĻžāϏ āĻĨā§āĻā§ āϝāĻž āĻāĻĒāύāĻŋ āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰ āĻ āύā§āϏāϰāĻŖ āĻāϰāĻŦā§āύāĨ¤
āĻā§āĻĒāύāĻā§āϞ⧠āĻā§āĻĄ āĻ āĻŦāĻŋāϞā§āĻĄ āĻāĻāĻāĻĒā§āĻ āĻĨā§āĻā§ āĻĻā§āϰ⧠āϰāĻžāĻā§āύāĨ¤ āĻā§āĻĄ āĻāĻĄāĻŧāĻžāϝāĻŧâāĻāĻĒāĻŋ āĻšāϝāĻŧ, āϰāĻŋāĻāĻŋāĻ āĻšāϝāĻŧ, āϞāĻ āĻšāϝāĻŧ, āĻā§āĻļ āĻšāϝāĻŧ, āĻāĻĒāϞā§āĻĄ āĻšāϝāĻŧāĨ¤ āĻŦāĻŋāϞā§āĻĄāĻ āĻāĻĄāĻŧāĻžāϝāĻŧ: āĻāϰā§āĻāĻŋāĻĢā§āϝāĻžāĻā§āĻ CI āϞāĻ, āĻ ā§āϝāĻžāĻĒ āĻŦāĻžāύā§āĻĄāϞ, āĻāύāĻā§āĻāύāĻžāϰ āϰā§āĻāĻŋāϏā§āĻā§āϰāĻŋ āĻŦāĻž āĻļā§āϝāĻŧāĻžāϰā§āĻĄ āĻĢā§āϞā§āĻĄāĻžāϰ⧠āĻĒā§āĻāĻā§ āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤ āϝā§āĻāĻž āĻāĻŽāĻŋāĻ āĻŦāĻž āĻāĻŽā§āĻĒāĻžāĻāϞ āĻšāϝāĻŧ, āϏā§āĻāĻžāĻā§ āĻĒāĻžāĻŦāϞāĻŋāĻ āĻāĻžāĻŦā§āύāĨ¤
āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻā§āϰ āĻāύā§āϝ āĻāϞāĻžāĻĻāĻž āĻā§āϰā§āĻĄā§āύāĻļāĻŋāϝāĻŧāĻžāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ (least privilege)āĨ¤ āĻāĻĒāύāĻžāϰ dev āĻā§ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ dev-āĻ āĻāĻžāĻ āĻāϰāĻž āĻāĻāĻŋāϤ āĻāĻŦāĻ āϏā§āĻāĻž āĻāĻŋ āĻāĻŋ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āϤāĻž āϏā§āĻŽāĻŋāϤ āϰāĻžāĻāĻž āĻāĻāĻŋāϤāĨ¤ āϞā§āϝāĻžāĻĒāĻāĻĒ āĻŦāĻž āĻā§āϏā§āĻ āϏāĻžāϰā§āĻāĻžāϰ āĻĨā§āĻā§ āĻā§ āϞāĻŋāĻ āĻšāϞ⧠āĻā§āώāϤāĻŋ āϏā§āĻŽāĻŋāϤ āĻĨāĻžāĻā§āĨ¤ āĻāĻāĻ āϧāĻžāϰāĻŖāĻž SMTP āĻāĻāĻāĻžāϰ, āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ, āĻ webhook āϏāĻŋāĻā§āϰā§āĻā§ āĻĒā§āϰāϝā§āĻā§āϝāĨ¤
āϰā§āĻā§āĻļāύāĻā§ āϏāĻžāϧāĻžāϰāĻŖ āĻāϰā§āύāĨ¤ āϧāϰ⧠āύāĻŋāύ āĻāĻĒāύāĻŋ āĻā§āĻĒāύ āϰā§āĻā§āĻ āĻāϰāĻŦā§āύ; āϤāĻžāĻ āĻĄāĻŋāĻāĻžāĻāύ āĻāĻŽāύ āĻāϰā§āύ āϝāĻžāϤ⧠āĻŽāĻžāύ āĻŦāĻĻāϞāĻžāϤ⧠āĻā§āĻĄ āĻāĻĄāĻŋāĻ āĻŦāĻž āϏāĻŦ āĻ ā§āϝāĻžāĻĒ āĻĒā§āύāϰāĻžāϝāĻŧ āĻŦāĻŋāϞā§āĻĄ āĻāϰāĻžāϰ āĻĻāϰāĻāĻžāϰ āύāĻž āĻĒāĻĄāĻŧā§āĨ¤ āĻ āύā§āĻ āϏāĻŋāϏā§āĻā§āĻŽā§ āĻāϰ āĻŽāĻžāύ⧠āĻšāϞ⧠āϰā§āĻāĻāĻžāĻāĻŽā§ āϏāĻŋāĻā§āϰā§āĻ āĻĒāĻĄāĻŧāĻž (āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ āĻā§āϝāĻžāϰāĻŋāϝāĻŧā§āĻŦāϞ āĻŦāĻž āϏāĻŋāĻā§āϰā§āĻ āϏā§āĻā§āϰ āĻĨā§āĻā§) āĻāĻŦāĻ āĻā§āϰāĻžāύāĻāĻŋāĻļāύā§āϰ āϏāĻŽāϝāĻŧ āĻāĻāĻžāϧāĻŋāĻ āϏāĻŋāĻā§āϰā§āĻ āϏāĻŽāϰā§āĻĨāύ āĻāϰāĻžāĨ¤
āĻ ā§āϝāĻžāĻāϏā§āϏ āϏā§āĻŽāĻžāĻŦāĻĻā§āϧ āĻ āϞāĻ āĻāϰā§āύāĨ¤ āĻā§āĻĒāύ āĻā§āĻŦāϞ āϏā§āĻ āϏāĻžāϰā§āĻāĻŋāϏāĻ āĻĒāĻĄāĻŧāϤ⧠āĻĒāĻžāϰāĻŦā§ āϝā§āĻāĻž āĻĻāϰāĻāĻžāϰ, āĻāĻŦāĻ āĻļā§āϧ⧠āϏā§āĻ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻā§ āϝā§āĻāĻžāύ⧠āĻāϞā§āĨ¤ āĻŽāĻžāύā§āώāĻĻā§āϰ āĻ ā§āϝāĻžāĻāϏā§āϏ āĻāĻŽ, āϏāĻŽāϝāĻŧāϏā§āĻŽāĻžāĻŦāĻĻā§āϧ āĻāĻŦāĻ āĻ āĻĄāĻŋāĻā§āĻŦāϞ āϰāĻžāĻā§āύāĨ¤
āĻāĻāĻāĻŋ āĻā§āĻ āϰā§āϞāϏā§āĻ āϝāĻž āĻŦā§āĻļāĻŋāϰāĻāĻžāĻ āĻā§āϏ āĻāĻāĻžāϰ āĻāϰāĻŦā§:
- āĻā§āĻĒāύ āĻāĻŽāĻŋāĻ āĻāϰāĻŦā§āύ āύāĻž āĻŦāĻž āĻāĻŋāĻāĻŋāĻā§, āĻā§āϝāĻžāĻā§, āϏā§āĻā§āϰāĻŋāύāĻļāĻā§ āĻĒā§āϏā§āĻ āĻāϰāĻŦā§āύ āύāĻžāĨ¤
- dev, staging, āĻāĻŦāĻ prod-āĻāϰ āĻāύā§āϝ āĻāϞāĻžāĻĻāĻž āĻā§āϰā§āĻĄā§āύāĻļāĻŋāϝāĻŧāĻžāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύāĨ¤
- āĻŦāĻŋāϞā§āĻĄā§ āĻŽāĻžāύ āĻŦā§āĻ āĻāϰāĻžāϰ āĻā§āϝāĻŧā§ āϰāĻžāύāĻāĻžāĻāĻŽ āĻāύāĻĢāĻŋāĻ āĻĒā§āϰā§āĻĢāĻžāϰ āĻāϰā§āύāĨ¤
- āϏāĻžāϏā§āĻĒāĻŋāĻļāĻžāϏ āĻāĻā§āϏāĻĒā§āĻāĻžāϰā§āϰ āĻĒāϰ⧠āĻŦāĻž āϏāĻŽāϝāĻŧāĻŽāϤ āϰā§āĻā§āĻ āĻāϰā§āύāĨ¤
- āĻā§ āĻāĻŦāĻ āĻā§ āĻĒāĻĄāĻŧāϤ⧠āĻĒāĻžāϰ⧠āϏā§āĻāĻž āϏā§āĻŽāĻžāĻŦāĻĻā§āϧ āĻāϰā§āύ āĻāĻŦāĻ āĻ ā§āϝāĻžāĻā§āϏā§āϏ āϞāĻ āϰāĻžāĻā§āύāĨ¤
āĻāĻ āύā§āϤāĻŋāĻā§āϞ⧠āϏāĻžāϧāĻžāϰāĻŖ āĻā§āĻĄ āϏā§āĻā§āϝāĻžāĻ āĻŦāĻž AppMaster-āĻāϰ āĻŽāϤ⧠no-code āĻĒā§āϞā§āϝāĻžāĻāĻĢāϰā§āĻŽ āĻĻā§āĻā§āϤā§āĻ āĻĒā§āϰāϝā§āĻā§āϝāĨ¤ āύāĻŋāϰāĻžāĻĒāĻĻ āĻĒāĻĨ āĻāĻāĻ: āĻā§āĻĒāύāĻā§āϞ⧠āĻŦāĻŋāϞā§āĻĄā§āϰ āĻŦāĻžāĻāϰ⧠āϰāĻžāĻā§āύ āĻāĻŦāĻ āϝā§āĻāĻžāύ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšāĻŦā§ āϏā§āĻāĻžāύ⧠āĻāĻĄāĻŧāĻž āϏā§āĻŽāĻžāĻŦāĻĻā§āϧ āĻāϰā§āύāĨ¤
āĻā§āĻĒāύ āĻā§āĻĨāĻž āĻĨā§āĻā§ āϏāĻŦāĻā§āϝāĻŧā§ āĻŦā§āĻļāĻŋ āϞāĻŋāĻ āĻšāϝāĻŧ
āĻŦā§āĻļāĻŋāϰāĻāĻžāĻ āϞāĻŋāĻ âāĻšā§āϝāĻžāĻâ āύāϝāĻŧâāϏā§āĻā§āϞ⧠āϏāĻžāϧāĻžāϰāĻŖ āĻāĻžāĻā§āϰ āϏāĻŽāϝāĻŧ āĻāĻā§: āĻĻā§āϰā§āϤ āĻāĻāĻāĻŋ āĻā§āϏā§āĻ, āĻāĻāĻāĻŋ āϏāĻšāĻžāϝāĻŧāĻ āϏā§āĻā§āϰāĻŋāύāĻļāĻ, āĻāĻŽāύ āĻāĻāĻāĻŋ āĻŦāĻŋāϞā§āĻĄ āϝāĻž āĻŦā§āĻļāĻŋ āĻĒā§āϰāĻŋāύā§āĻ āĻāϰā§āĨ¤ āĻļā§āϰ⧠āĻāϰāĻžāϰ āĻāĻžāϞ⧠āĻāĻžāϝāĻŧāĻāĻž āĻšāĻā§āĻā§ āĻāĻžāύāĻž āϝ⧠āĻā§āĻ āϤā§āϰā§āĻāĻŋāĻā§āϞ⧠āϏāĻžāϧāĻžāϰāĻŖāϤ āĻā§āĻĨāĻžāϝāĻŧ āĻāĻā§āĨ¤
Source control āĻšāϞ⧠āĻā§āϞāĻžāϏāĻŋāĻāϞāĨ¤ āĻā§āĻ āĻāĻāĻāĻŋ API āĻā§ āĻāύāĻĢāĻŋāĻ āĻĢāĻžāĻāϞ⧠āĻĒā§āϏā§āĻ āĻāϰ⧠âāĻāϤāĻŋāĻŽāϧā§āϝā§â āĻŦāϞ⧠āĻāĻŽāĻŋāĻ āĻāϰā§, āĻāĻŦāĻ āϏā§āĻāĻž āĻŦā§āϰāĻžāĻā§āĻ, āĻĒā§āϞ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ, āĻ āĻā§āĻĄ āϰāĻŋāĻāĻŋāĻāϝāĻŧā§āϰ āĻŽāϧā§āϝ⧠āĻāĻĄāĻŧāĻŋāϝāĻŧā§ āĻĒāĻĄāĻŧā§āĨ¤ āĻĒāϰ⧠āϏā§āĻāĻŋ āϏāϰāĻžāύ⧠āĻšāϞā§āĻ, āĻā§āĻĒāύ āĻāϤāĻŋāĻšāĻžāϏ⧠āĻŦāĻž āĻāĻĒāĻŋ āĻāϰāĻž āĻĒā§āϝāĻžāĻā§ āĻāĻŋāϰāĻāĻžāϞ āĻĨāĻžāĻāϤ⧠āĻĒāĻžāϰā§āĨ¤
āϝāĻž āĻāĻŋāĻā§ āĻāĻāĻāĻžāϰāĻā§ āĻļāĻŋāĻĒ āĻāϰā§āύ āϏā§āĻāĻžāĻ āĻŦāĻĄāĻŧ āϞāĻŋāĻ āϏā§āϰā§āϏāĨ¤ āĻĢā§āϰāύā§āĻ-āĻāύā§āĻĄ āĻŦāĻžāύā§āĻĄāϞ āĻāĻŦāĻ āĻŽā§āĻŦāĻžāĻāϞ āĻŦāĻžāĻāύāĻžāϰāĻŋ āĻĒāϰā§āĻā§āώāĻž āĻāϰ⧠āĻĻā§āĻāĻž āϏāĻšāĻāĨ¤ āϝāĻĻāĻŋ āĻā§āĻĒāύ JavaScript-āĻ āĻĨāĻžāĻā§, iOS/Android āĻ ā§āϝāĻžāĻĒ āĻŦāĻž âāĻŦā§āĻ āĻāϰāĻžâ āĻāύāĻĢāĻŋāĻā§ āĻĨāĻžāĻā§, āϧāϰ⧠āύāĻŋāύ āϏā§āĻāĻž āĻĒāĻžāĻŦāϞāĻŋāĻāĨ¤ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻ ā§āϝāĻžāĻĒāĻā§āϞ⧠āĻĒāĻžāĻŦāϞāĻŋāĻ āĻāĻāĻĄā§āύā§āĻāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ āϰāĻžāĻāϤ⧠āĻĒāĻžāϰā§, āϤāĻŦā§ āĻĒā§āϰāĻžāĻāĻā§āĻ āĻāĻŋ āϰāĻžāĻāĻŦā§ āύāĻžāĨ¤
āĻā§āĻĒāύāĻā§āϞ⧠"āϏāĻšāĻžāϝāĻŧāĻ āĻļāĻŦā§āĻĻāĻļā§āĻā§āĻāϞ" āĻšāĻŋāϏā§āĻŦā§ āĻ
āĻā§āĻŽā§āĻļāύ āĻ āϏāĻžāĻĒā§āϰā§āĻā§āĻ āϞāĻŋāĻ āĻšāϝāĻŧāĨ¤ āϏāĻžāϧāĻžāϰāĻŖ āĻāĻĻāĻžāĻšāϰāĻŖ: CI āϞāĻā§ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ āĻā§āϝāĻžāϰāĻŋāϝāĻŧā§āĻŦāϞ āĻāĻā§ āĻāϰāĻž, āĻĄāĻŋāĻŦāĻžāĻ āĻĒā§āϰāĻŋāύā§āĻā§ SMTP āĻā§āϰā§āĻĄā§āύāĻļāĻŋāϝāĻŧāĻžāϞ āĻĨāĻžāĻāĻž, āĻā§āϰā§āϝāĻžāĻļ āϰāĻŋāĻĒā§āϰā§āĻā§ āĻāύāĻĢāĻŋāĻ āĻāĻŦāĻ āĻāĻāĻāĻŦāĻžāĻāύā§āĻĄ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻāϰ āĻā§āϝāĻžāĻĒāĻāĻžāϰ āĻāϰāĻž, āĻāύāĻā§āĻāύāĻžāϰ āĻāĻŽā§āĻ āĻ āĻŦāĻŋāϞā§āĻĄ āĻā§āĻļā§ .env āĻĢāĻžāĻāϞ āĻĢā§āϞ⧠āϰāĻžāĻāĻž, āĻāĻŦāĻ āϏāĻžāĻĒā§āϰā§āĻ āĻāĻŋāĻā§āĻā§ āĻāĻĒāĻŋ āĻāϰāĻž āϞāĻ āĻŦāĻž āϏā§āĻā§āϰāĻŋāύāĻļāĻāĨ¤
āĻāĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻĒā§āϝāĻžāĻāĻžāϰā§āύ āĻšāϞ⧠āĻāĻāĻŦāĻžāϰ āĻā§āĻĒāύ āĻŦāĻŋāϞā§āĻĄ āĻĒāĻžāĻāĻĒāϞāĻžāĻāύ⧠āĻĸā§āĻāϞ⧠āϏā§āĻāĻž āĻĒāϰ⧠āĻāĻĒāĻŋ āĻšāϝāĻŧā§ āϝāĻžāϝāĻŧ: āĻāύāĻā§āĻāύāĻžāϰ āϞā§āϝāĻŧāĻžāϰā§, āĻā§āĻļāĻĄ āĻāϰā§āĻāĻŋāĻĢā§āϝāĻžāĻā§āĻā§, āϞāĻā§, āĻāϰ āĻāĻŋāĻā§āĻā§āĨ¤ āϏāĻŽāĻžāϧāĻžāύ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻāĻ āĻā§āϞ āύāϝāĻŧâāĻāĻāĻŋ āĻ āĻā§āϝāĻžāϏ: āĻā§āĻĒāύāĻā§āϞ⧠āĻā§āĻĄ, āĻŦāĻŋāϞā§āĻĄ āĻāĻŦāĻ āĻŽāĻžāύā§āώā§āϰ āĻĒā§āϏā§āĻ āĻāϰāĻž āĻāĻŋāĻā§āϰ āĻŦāĻžāĻāϰ⧠āϰāĻžāĻā§āύāĨ¤
āϏāĻžāϧāĻžāϰāĻŖ āĻā§āĻĒāύ āϧāϰāύā§āϰ āĻā§āĻāĻāĻŋ
āĻā§āύ āϧāϰāύā§āϰ āĻā§āĻĒāύ āϤāĻž āĻāĻžāύāĻž āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰā§âāϞāĻŋāĻ āĻšāϞ⧠āĻā§ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āĻāĻŦāĻ āĻā§āĻĨāĻžāϝāĻŧ āĻāĻāύā§āĻ āĻāĻĒāϏā§āĻĨāĻŋāϤ āĻšāĻāϝāĻŧāĻž āĻāĻāĻŋāϤ āύāĻžāĨ¤
API keys (Stripe, maps, analytics, āĻāϤā§āϝāĻžāĻĻāĻŋ) āĻĒā§āϰāĻžāϝāĻŧāĻ âāĻĒā§āϰāĻā§āĻā§āĻ āϞā§āĻā§āϞâ āĻā§āϰā§āĻĄā§āύāĻļāĻŋāϝāĻŧāĻžāϞāĨ¤ āĻāĻā§āϞ⧠āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒāĻā§ āĻļāύāĻžāĻā§āϤ āĻāϰ⧠āĻāĻŦāĻ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻ ā§āϝāĻžāĻāĻļāύ āĻāϰāϤ⧠āĻĻā§āϝāĻŧ, āϝā§āĻŽāύ āĻāĻžāϰā§āĻĄ āĻāĻžāϰā§āĻ āĻāϰāĻž āĻŦāĻž āĻāĻāĻā§āĻ āϏā§āĻā§āϝāĻžāĻ āĻĒāĻĄāĻŧāĻžāĨ¤ āĻāĻā§āϞ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻā§āĻā§āύ āύāϝāĻŧâāĻā§āĻā§āύ āϏāĻžāϧāĻžāϰāĻŖāϤ āϏā§āĻļāύ āĻĒā§āϰāϤāĻŋāύāĻŋāϧāĻŋāϤā§āĻŦ āĻāϰ⧠āĻāĻŦāĻ āĻļā§āώ āĻšāϝāĻŧāĨ¤ āĻ āύā§āĻ API āĻā§ āύāĻŋāĻā§ āĻĨā§āĻā§ āĻāĻā§āϏāĻĒāĻžāϝāĻŧāĻžāϰ āĻāϰ⧠āύāĻž, āϤāĻžāĻ āϞāĻŋāĻ āĻšāϞ⧠āĻā§āώāϤāĻŋ āĻŦāĻĄāĻŧ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤
SMTP āĻā§āϰā§āĻĄā§āύāĻļāĻŋāϝāĻŧāĻžāϞ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻāĻāĻāĻžāϰāύā§āĻŽ āĻāĻŦāĻ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄāĨ¤ āĻāĻā§āϞ⧠āϞāĻŋāĻ āĻšāϞ⧠āĻāĻā§āϰāĻŽāĻŖāĻāĻžāϰ⧠āĻāĻĒāύāĻžāϰ āĻĄā§āĻŽā§āĻāύ āĻĨā§āĻā§ āϏā§āĻĒā§āϝāĻžāĻŽ āĻĒāĻžāĻ āĻžāϤ⧠āĻĒāĻžāϰāĻŦā§ āĻāĻŦāĻ āĻĄā§āϞāĻŋāĻāĻžāϰāĻŋāĻŦāĻŋāϞāĻŋāĻāĻŋ āύāώā§āĻ āĻšāϝāĻŧā§ āϝāĻžāĻŦā§āĨ¤ API-āĻāĻŋāϤā§āϤāĻŋāĻ āĻāĻŽā§āĻāϞ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰāĻž āĻāĻžāĻāĻāĻž SMTP āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄā§āϰ āĻŦāĻĻāϞ⧠API āĻā§ āĻ āϏā§āĻā§āĻĒāĻĄ āĻĒāĻžāϰāĻŽāĻŋāĻļāύ āĻĻā§āϝāĻŧ, āϝāĻž āύāĻŋāϰāĻžāĻĒāĻĻ āĻšāϤ⧠āĻĒāĻžāϰā§, āϤāĻŦā§ āϝāĻĻāĻŋ āĻā§ āĻĻāĻŋāϝāĻŧā§ āĻāĻĒāύāĻžāϰ āĻāĻāĻžāĻāύā§āĻ āĻĨā§āĻā§ āĻŽā§āĻāϞ āĻĒāĻžāĻ āĻžāύ⧠āϝāĻžāϝāĻŧ āϤāĻŦā§ āĻā§āĻāĻāĻŋ āĻĨāĻžāĻā§āĨ¤
Webhook secrets (signing secrets āĻŦāĻž verification keys) āĻāύāĻŦāĻžāĻāύā§āĻĄ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻāĻā§āϞā§āĻā§ āύāĻŋāϰāĻžāĻĒāĻĻ āϰāĻžāĻā§āĨ¤ āϝāĻĻāĻŋ signing secret āϞāĻŋāĻ āĻšāϝāĻŧ, āĻā§āĻ "payment succeeded" āĻŦāĻž "subscription canceled" āĻāĻā§āύā§āĻ āύāĻāϞ āĻāϰ⧠āĻāĻĒāύāĻžāϰ āϏāĻŋāϏā§āĻā§āĻŽāĻā§ āĻ āĻāĻžāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻā§āĻāĻāĻŋ āĻā§āĻŦāϞ āĻĄā§āĻāĻž āĻāύā§āĻŽā§āĻāύ āύāϝāĻŧâāĻŦā§āϝāĻŦāϏāĻžāϝāĻŧāĻŋāĻ āϞāĻāĻŋāĻ āύāĻāϞ āĻāĻā§āύā§āĻā§ āĻāĻžāϞāĻžāύā§āĨ¤
āĻ āύā§āϝāĻžāύā§āϝ āĻāĻā§āĻ-āĻāĻŽāĻĒā§āϝāĻžāĻā§āĻ āϏāĻŋāĻā§āϰā§āĻāĻā§āϞā§āϰ āĻŽāϧā§āϝ⧠āĻāĻā§ āĻĄāĻžāĻāĻžāĻŦā§āϏ URL (āĻ āϧāĻŋāĻāĻžāĻāĻļ āϏāĻŽāϝāĻŧ āĻāĻŽāĻŦā§āĻĄ āĻāϰāĻž āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āϏāĻš), āϏāĻžāϰā§āĻāĻŋāϏ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āĻā§āϰā§āĻĄā§āύāĻļāĻŋāϝāĻŧāĻžāϞ, āĻāĻŦāĻ āĻāύāĻā§āϰāĻŋāĻĒāĻļāύ āĻā§āĨ¤ āĻāĻāĻāĻŋ āϞāĻŋāĻ āĻšāĻāϝāĻŧāĻž āĻĄāĻžāĻāĻžāĻŦā§āϏ URL āĻŽāĻžāύ⧠āĻĒā§āϰā§āĻŖ āĻĄā§āĻāĻž āĻā§āϰāĻŋ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāĻāĻāĻŋ āϞāĻŋāĻ āĻšāĻāϝāĻŧāĻž āĻāύāĻā§āϰāĻŋāĻĒāĻļāύ āĻā§ āĻ āϤā§āϤ āĻ āĻāĻŦāĻŋāώā§āϝāϤā§āϰ āĻĄā§āĻāĻžāĻā§ āĻĒāĻĄāĻŧāĻžāϰ āϝā§āĻā§āϝ āĻāϰ⧠āϤā§āϞāϤ⧠āĻĒāĻžāϰā§, āĻāĻŦāĻ āϰā§āĻā§āĻļāύ āĻāώā§āĻāϏāĻžāϧā§āϝ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻāĻŽāĻĒā§āϝāĻžāĻā§āĻ āĻŦā§āĻāĻžāϰ āĻĻā§āϰā§āϤ āĻāĻĒāĻžāϝāĻŧ:
- āĻāĻžāĻāĻž āĻāϰāĻ āĻāϰāϤ⧠āĻŦāĻž āĻ ā§āϝāĻžāĻāĻļāύ āĻā§āϰāĻŋāĻāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§: payment keys, admin API keys, webhook signing secrets
- āĻāĻĒāύāĻŋ āĻšāĻŋāϏā§āĻŦā§ āĻāĻĻā§āĻŽāĻŦā§āĻļ āϧāĻžāϰāĻŖ āĻāϰāϤ⧠āĻĒāĻžāϰā§: SMTP āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ, āĻāĻŽā§āĻāϞ āϏā§āύā§āĻĄāĻŋāĻ āĻā§, āĻŽā§āϏā§āĻāĻŋāĻ āĻŦāĻ āĻā§āĻā§āύ
- āϏāĻŦ āĻĄā§āĻāĻž āĻāύā§āĻŽā§āĻāύ āĻāϰāϤ⧠āĻĒāĻžāϰā§: āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻā§āϰā§āĻĄā§āύāĻļāĻŋāϝāĻŧāĻžāϞ, āĻā§āϞāĻžāĻāĻĄ āϏāĻžāϰā§āĻāĻŋāϏ āĻāĻāĻžāĻāύā§āĻ
- āĻā§āĻĒāύā§āϝāĻŧāϤāĻž āϏā§āĻĨāĻžāϝāĻŧā§āĻāĻžāĻŦā§ āĻā§āĻā§ āĻĻāĻŋāϤ⧠āĻĒāĻžāϰā§: āĻāύāĻā§āϰāĻŋāĻĒāĻļāύ āĻā§, āϏāĻžāĻāύāĻŋāĻ āĻā§
- āĻĒā§āϰāĻžāϝāĻŧāĻ āĻļāĻŋāĻĒ āĻāϰāĻž āύāĻŋāϰāĻžāĻĒāĻĻ: āĻŦā§āϰāĻžāĻāĻāĻžāϰā§āϰ āĻāύā§āϝ āĻĒāĻžāĻŦāϞāĻŋāĻļā§āĻŦāϞ āĻā§ (āĻāĻāύāĻ āĻĄā§āĻŽā§āĻāύ/āĻ ā§āϝāĻžāĻĒ āĻĻā§āĻŦāĻžāϰāĻž āϏā§āĻŽāĻžāĻŦāĻĻā§āϧ āĻāϰā§āύ)
āĻāĻāύāĻ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻ ā§āϝāĻžāĻĒā§ āĻĒāĻžāĻ āĻžāĻŦā§āύ āύāĻž: secret API keys, SMTP āĻā§āϰā§āĻĄā§āύāĻļāĻŋāϝāĻŧāĻžāϞ, āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ, āϏāĻžāϰā§āĻāĻŋāϏ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ, āĻĒā§āϰāĻžāĻāĻā§āĻ āĻāύāĻā§āϰāĻŋāĻĒāĻļāύ āĻā§, āĻāĻŦāĻ webhook signing secretsāĨ¤ āϝāĻĻāĻŋ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻāĻā§ āĻĨāĻžāϰā§āĻĄ-āĻĒāĻžāϰā§āĻāĻŋ API āĻāϞ āĻāϰāϤ⧠āĻšāϝāĻŧ, āĻŦā§āϝāĻžāĻāĻāύā§āĻĄā§āϰ āĻŽāϧā§āϝ āĻĻāĻŋāϝāĻŧā§ āϰāĻžāĻāĻ āĻāϰā§āύ āϝāĻžāϤ⧠āϏāĻŋāĻā§āϰā§āĻ āϏāĻžāϰā§āĻāĻžāϰ-āϏāĻžāĻāĻĄā§āĻ āĻĨāĻžāĻā§āĨ¤
āĻŦāĻŋāϞā§āĻĄā§ āĻā§āĻĒāύ āύāĻž āĻĸā§āĻāĻŋāϝāĻŧā§ āϰāĻžāĻāĻžāϰ āĻĒā§āϝāĻžāĻāĻžāϰā§āύ
āĻāĻāĻāĻŋ āύāĻŋāϰāĻžāĻĒāĻĻ āĻĄāĻŋāĻĢāϞā§āĻ āϏāĻšāĻ: āĻā§āύ āĻāĻŋāĻā§ āĻāĻŽā§āĻĒāĻžāĻāϞ, āĻāĻā§āϏāĻĒā§āϰā§āĻ āĻŦāĻž āĻļā§āϝāĻŧāĻžāϰ āĻāϰāĻž āĻšāϞ⧠āϤāĻžāϤ⧠āĻā§āĻĒāύ āĻŦā§āĻ āĻāϰāĻŦā§āύ āύāĻžāĨ¤ āĻŦāĻŋāϞā§āĻĄāĻā§ āĻĒāĻžāĻŦāϞāĻŋāĻ āĻāϰā§āĻāĻŋāĻĢā§āϝāĻžāĻā§āĻ āĻāĻžāĻŦā§āύ, āĻāĻŽāύāĻāĻŋ āĻāĻĒāύāĻŋ āĻŽāύ⧠āĻāϰā§āύ āϏā§āĻā§āϞ⧠āĻĒā§āϰāĻžāĻāĻā§āĻāĨ¤
āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻā§āϰ āĻāύā§āϝ āϏāĻ āĻŋāĻ āĻāύāĻā§āĻāύāĻžāϰ āĻāϝāĻŧāύ āĻāϰā§āύ
āϞā§āĻāĻžāϞ āĻĄā§āĻā§āϞāĻĒāĻŽā§āύā§āĻā§āϰ āĻāύā§āϝ, āĻāĻāĻāĻŋ āĻāύāĻĢāĻŋāĻ āĻĢāĻžāĻāϞ āĻ āĻŋāĻ āĻāĻā§ āϝāĻĻāĻŋ āĻāĻāĻŋ āĻāĻžāϰā§āϏāύ āĻāύā§āĻā§āϰā§āϞ⧠āύāĻž āϝāĻžāϝāĻŧ āĻāĻŦāĻ āϏāĻšāĻā§ āĻĒā§āϰāϤāĻŋāϏā§āĻĨāĻžāĻĒāύāϝā§āĻā§āϝ āĻšāϝāĻŧ (āĻāĻĻāĻžāĻšāϰāĻŖ: āϞā§āĻāĻžāϞ-āĻ
āύāϞāĻŋ .env āϏā§āĻāĻžāĻāϞ āĻĢāĻžāĻāϞ)āĨ¤ Staging āĻāĻŦāĻ production-āĻāϰ āĻāύā§āϝ, āĻāĻāĻāĻŋ āϰāĻŋāϝāĻŧā§āϞ āϏāĻŋāĻā§āϰā§āĻ āϏā§āĻā§āϰ āĻĒā§āĻĢāĻžāϰ āĻāϰā§āύ: āĻā§āϞāĻžāĻāĻĄ āĻĒā§āϰā§āĻāĻžāĻāĻĄāĻžāϰā§āϰ āϏāĻŋāĻā§āϰā§āĻ āĻŽā§āϝāĻžāύā§āĻāĻžāϰ, āĻāĻāĻāĻŋ āĻĄā§āĻĄāĻŋāĻā§āĻā§āĻĄ āĻāϞā§āĻ, āĻŦāĻž āĻāĻĒāύāĻžāϰ āĻĒā§āϞā§āϝāĻžāĻāĻĢāϰā§āĻŽā§āϰ āĻĒā§āϰāĻā§āĻā§āĻā§āĻĄ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ āϏā§āĻāĻŋāĻāϏāĨ¤
Environment variables āĻāĻžāϞ āĻĄāĻŋāĻĢāϞā§āĻ āĻāĻžāϰāĻŖ āϏā§āĻā§āϞ⧠āϰāĻžāύāĻāĻžāĻāĻŽā§ āĻāύāĻā§āĻā§āĻ āĻāϰāĻž āϏāĻšāĻ āĻāĻŦāĻ āĻā§āĻĄāĻŦā§āϏ āĻĨā§āĻā§ āĻāϞāĻžāĻĻāĻž āϰāĻžāĻāĻž āϝāĻžāϝāĻŧāĨ¤ āĻŽā§āϞ āĻŦāĻŋāώāϝāĻŧ āĻšāϞ⧠āĻāĻžāĻāĻŽāĻŋāĻ: āĻŦāĻŋāϞā§āĻĄ-āĻāĻžāĻāĻŽ āĻāύāĻā§āĻāĻļāύ āύāĻž āĻāϰ⧠āϰāĻžāύāĻāĻžāĻāĻŽ āĻāύāĻā§āĻāĻļāύ āĻāϰāĻž āύāĻŋāϰāĻžāĻĒāĻĻ āĻāĻžāϰāĻŖ āϏāĻŋāĻā§āϰā§āĻ āĻāϰ āĻŦāĻŋāϞā§āĻĄ āĻāĻāĻāĻĒā§āĻā§āϰ āĻ āĻāĻļ āĻšāϝāĻŧ āύāĻžāĨ¤
āĻāĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻŋāĻ āĻŦāĻŋāĻāĻžāĻāύ āϝāĻž āĻ āύā§āĻ āĻāĻŋāĻŽā§āϰ āĻāύā§āϝ āĻāĻžāĻ āĻāϰā§:
- Local dev: āϞā§āĻāĻžāϞ env vars āĻŦāĻž āϞā§āĻāĻžāϞ āϏāĻŋāĻā§āϰā§āĻ āĻĢāĻžāĻāϞ, āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĄā§āĻā§āϰ āĻŽā§āĻļāĻŋāύ āĻāϞāĻžāĻĻāĻž
- Staging: āϏāĻŋāĻā§āϰā§āĻ āĻŽā§āϝāĻžāύā§āĻāĻžāϰ āĻŦāĻž āĻĒā§āϰāĻā§āĻā§āĻā§āĻĄ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ āϏā§āĻāĻŋāĻāϏ, āĻļā§āϧā§āĻ āϏā§āĻā§āĻāĻŋāĻā§āϰ āĻāύā§āϝ āϏā§āĻā§āĻĒāĻĄ
- Production: āĻāϰāĻ āĻāĻĄāĻŧāĻž āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻāύāĻā§āϰā§āϞ, āĻ āĻĄāĻŋāĻ āϞāĻ, āĻāĻŦāĻ āϰā§āĻā§āĻļāύāϏāĻš āϏāĻŋāĻā§āϰā§āĻ āĻŽā§āϝāĻžāύā§āĻāĻžāϰ
āύāĻžāĻŽāĻāϰāĻŖ āĻ āĻŦāĻžāĻāύā§āĻĄāĻžāϰāĻŋ āĻāĻāϰāĻāĻŽ āϰāĻžāĻā§āύ
āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻā§ āĻāĻāĻ āĻā§ āύāĻžāĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ āϝāĻžāϤ⧠āĻ
ā§āϝāĻžāĻĒ āĻāĻāϰāĻŖ āĻāĻāĻ āĻĨāĻžāĻā§: SMTP_HOST, SMTP_USER, SMTP_PASS, STRIPE_SECRET_KEY, WEBHOOK_SIGNING_SECRETāĨ¤ āĻļā§āϧ⧠āĻā§āϝāĻžāϞ⧠āĻŦāĻĻāϞāĻžāύāĨ¤
āϝāĻāύ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ āĻā§āϰā§āϤā§āĻŦ āĻĒāĻžāϝāĻŧ (āĻĒā§āĻŽā§āύā§āĻ, āĻāĻŽā§āĻāϞ, āĻā§ā§āĻŦāĻšā§āĻ), āϏāĻŽā§āĻāĻŦ āĻšāϞ⧠āĻāϞāĻžāĻĻāĻž āĻĒā§āϰāĻā§āĻā§āĻ āĻŦāĻž āĻā§āϞāĻžāĻāĻĄ āĻāĻāĻžāĻāύā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύāĨ¤ āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, āϏā§āĻā§āĻāĻŋāĻ Stripe āĻā§ āĻ webhook secret āϏā§āĻā§āĻāĻŋāĻ-āĻāύāϞāĻŋ āϏā§āĻā§āϰ⧠āϰāĻžāĻā§āύ āϝāĻžāϤ⧠āϏā§āĻā§āĻāĻŋāĻ āĻŽāĻŋāϏāĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύāĻā§ āϏā§āĻĒāϰā§āĻļ āύāĻž āĻāϰā§āĨ¤
āϝāĻĻāĻŋ āĻāĻĒāύāĻŋ AppMaster āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻĄāĻŋāĻĒā§āϞāϝāĻŧ āĻāϰā§āύ, āĻŦā§āϝāĻžāĻāĻāύā§āĻĄ āϏāĻžāϰā§āĻāĻŋāϏā§āϰ āĻāύā§āϝ āϰāĻžāύāĻāĻžāĻāĻŽ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ āϏā§āĻāĻŋāĻāϏ āĻĒāĻāύā§āĻĻ āĻāϰā§āύ āϝāĻžāϤ⧠āϏāĻŋāĻā§āϰā§āĻ āϏāĻžāϰā§āĻāĻžāϰ-āϏāĻžāĻāĻĄā§āĻ āĻĨāĻžāĻā§ āĻāĻŦāĻ āĻāĻā§āϏāĻĒā§āϰā§āĻā§āĻĄ āĻā§āĻĄ āĻŦāĻž āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻ ā§āϝāĻžāĻĒā§ āĻāĻŽāĻŦā§āĻĄ āύāĻž āĻšāϝāĻŧāĨ¤
āĻĄā§āĻ, āϏā§āĻā§āĻāĻŋāĻ, āĻĒā§āϰā§āĻĄ-āĻ āϧāĻžāĻĒā§ āϧāĻžāĻĒā§ āϏā§āĻāĻāĻĒ
āĻ āĻĒāĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāĻ āĻŋāύ āĻāϰ⧠āĻĻāĻŋāύāĨ¤
-
āĻāĻĒāύāĻžāϰ āĻā§ āĻāĻā§ āĻāĻŦāĻ āĻā§āĻĨāĻžāϝāĻŧ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšāĻā§āĻā§ āϤāĻž āĻāύāĻā§āύā§āĻāϰāĻŋ āĻāϰā§āύāĨ¤ API āĻā§, SMTP āĻāĻāĻāĻžāϰāύā§āĻŽ āĻ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ, webhook signing secret, āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ, JWT āϏāĻžāĻāύāĻŋāĻ āĻā§, āĻāĻŦāĻ āĻĨāĻžāϰā§āĻĄ-āĻĒāĻžāϰā§āĻāĻŋ āĻā§āĻā§āύ āĻ āύā§āϤāϰā§āĻā§āĻā§āϤ āĻāϰā§āύāĨ¤ āĻĒā§āϰāϤāĻŋāĻāĻŋāϰ āĻāύā§āϝ āĻŽāĻžāϞāĻŋāĻ (āĻāĻŋāĻŽ āĻŦāĻž āĻā§āύā§āĻĄāϰ), āϝ⧠āĻāĻŽā§āĻĒā§āύā§āύā§āĻ āĻĒāĻĄāĻŧā§ (āĻŦā§āϝāĻžāĻāĻāύā§āĻĄ, āĻāϝāĻŧāĻžāϰā§āĻāĻžāϰ, āĻŽā§āĻŦāĻžāĻāϞ, āĻāϝāĻŧā§āĻŦ), āĻāĻŦāĻ āϰā§āĻā§āĻļāύ āĻāϤ āĻāύāĻ āĻšāϤ⧠āĻĒāĻžāϰ⧠āϤāĻž āύā§āĻ āĻāϰā§āύāĨ¤
-
Dev, staging, āĻāĻŦāĻ prod-āĻāϰ āĻāύā§āϝ āĻāϞāĻžāĻĻāĻž āĻā§āϝāĻžāϞ⧠āĻāĻŦāĻ āĻāϞāĻžāĻĻāĻž āĻĒāĻžāϰāĻŽāĻŋāĻļāύ āϤā§āϰāĻŋ āĻāϰā§āύāĨ¤ Dev āϏāĻŋāĻā§āϰā§āĻāĻā§āϞ⧠āϞā§āϝāĻžāĻĒāĻāĻĒ āĻāĻŦāĻ āϞā§āĻāĻžāϞ āĻāύā§āĻā§āĻāύāĻžāϰ āĻĨā§āĻā§ āύāĻŋāϰāĻžāĻĒāĻĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāϝā§āĻā§āϝ āĻšāĻāϝāĻŧāĻž āĻāĻāĻŋāϤāĨ¤ Staging āĻĒā§āϰā§āĻĄā§āϰ āĻŽāϤ⧠āĻĻā§āĻāϤ⧠āĻšāĻŦā§, āĻāĻŋāύā§āϤ⧠āĻāĻāύ⧠āĻĒā§āϰā§āĻĄ āĻā§āϰā§āĻĄā§āύāĻļāĻŋāϝāĻŧāĻžāϞ āĻļā§āϝāĻŧāĻžāϰ āĻāϰāĻž āϝāĻžāĻŦā§ āύāĻžāĨ¤ Prod āĻā§āĻŦāϞ āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύ āϰāĻžāύāĻāĻžāĻāĻŽ āĻāĻāĻĄā§āύā§āĻāĻŋāĻāĻŋ āĻĒāĻĄāĻŧāϤ⧠āĻĒāĻžāϰāĻŦā§, āĻŽāĻžāύā§āώ āĻĄāĻŋāĻĢāϞā§āĻāĻāĻžāĻŦā§ āύāϝāĻŧāĨ¤
-
āϏāĻŋāĻā§āϰā§āĻāĻā§āϞ⧠āĻŦāĻŋāϞā§āĻĄ āĻāĻžāĻāĻŽ āύāϝāĻŧ, āϰāĻžāύāĻāĻžāĻāĻŽ āĻāύāĻĢāĻŋāĻā§ āϏāϰāĻžāύāĨ¤ āϝāĻĻāĻŋ āĻā§āύ⧠āϏāĻŋāĻā§āϰā§āĻ āĻŦāĻŋāϞā§āĻĄā§āϰ āϏāĻŽāϝāĻŧ āĻāĻĒāϏā§āĻĨāĻŋāϤ āĻĨāĻžāĻā§, āϤāĻž āĻŦāĻŋāϞā§āĻĄ āϞāĻ, Docker āϞā§āϝāĻŧāĻžāϰ, āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻŦāĻžāύā§āĻĄāϞ, āĻŦāĻž āĻā§āϰā§āϝāĻžāĻļ āϰāĻŋāĻĒā§āϰā§āĻā§ āĻĒāĻĄāĻŧā§ āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤ āϏāĻšāĻ āύāĻŋāϝāĻŧāĻŽ: āĻŦāĻŋāϞā§āĻĄ āĻāĻŽāύ āĻāϰā§āĻāĻŋāĻĢā§āϝāĻžāĻā§āĻ āϤā§āϰāĻŋ āĻāϰ⧠āϝāĻž āĻāĻĒāĻŋ āĻāϰāĻž āύāĻŋāϰāĻžāĻĒāĻĻ; āϏāĻŋāĻā§āϰā§āĻ āĻā§āĻŦāϞ āĻ ā§āϝāĻžāĻĒ āĻāϰāĻŽā§āĻā§āϰ āϏāĻŽāϝāĻŧ āĻāύāĻā§āĻā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤
-
āĻāĻāĻāĻŋ āϧāĻžāϰāĻžāĻŦāĻžāĻšāĻŋāĻ āĻĄāĻŋāĻĒā§āϞāϝāĻŧāĻŽā§āύā§āĻ āĻĢā§āϞ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύāĨ¤ āĻāĻāĻāĻŋ āĻĒāĻĻā§āϧāϤāĻŋ āϝāĻž āĻāĻŋāĻŽāĻā§ āϏāĻŽāϏā§āϝāĻžāϝāĻŧ āĻĢā§āϞāĻžāϰ āϏāĻŽā§āĻāĻžāĻŦāύāĻž āĻāĻŽ āϰāĻžāĻā§:
- āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āϏāĻŋāĻā§āϰā§āĻ āϏā§āĻā§āϰ āϤā§āϰāĻŋ āĻāϰā§āύ (āĻŦāĻž āĻāĻĄāĻŧāĻž namespace)āĨ¤
- āĻ ā§āϝāĻžāĻĒā§āϰ runtime identity-āĻā§ āĻā§āĻŦāϞ āύāĻŋāĻ āĻĒāϰāĻŋāĻŦā§āĻļā§āϰ āϏāĻŋāĻā§āϰā§āĻ āĻĒāĻĄāĻŧāĻžāϰ āĻ āύā§āĻŽāϤāĻŋ āĻĻāĻŋāύāĨ¤
- āϏā§āĻāĻžāϰā§āĻāĻāĻĒā§ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ āĻā§āϝāĻžāϰāĻŋāϝāĻŧā§āĻŦāϞ āĻŦāĻž āĻŽāĻžāĻāύā§āĻ āĻāϰāĻž āĻĢāĻžāĻāϞā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϏāĻŋāĻā§āϰā§āĻ āĻāύāĻā§āĻā§āĻ āĻāϰā§āύ, āĻāĻŦāĻ āϏā§āĻā§āϞ⧠āĻāĻŽā§āĻ āĻŦāĻž āĻĢā§āϰāύā§āĻ-āĻāύā§āĻĄ āĻŦāĻžāύā§āĻĄāϞ⧠āϰāĻžāĻāĻŦā§āύ āύāĻžāĨ¤
- āĻĒā§āϰāϤāĻŋāĻāĻŋ āϏāĻŋāĻā§āϰā§āĻā§āϰ āĻāύā§āϝ āϰā§āĻā§āĻļāύ āύāĻŋāϝāĻŧāĻŽ (āĻŽā§āϝāĻŧāĻžāĻĻ, āĻŽāĻžāϞāĻŋāĻ, āĻāĻŦāĻ āϰāĻŋāĻŽāĻžāĻāύā§āĻĄāĻžāϰ āĻā§āϝāĻžāĻĄā§āύā§āϏ) āϝā§āĻ āĻāϰā§āύāĨ¤
- āĻāĻāĻāĻŋ āĻļāĻā§āϤ āĻā§āϏā§āĻ āϝā§āĻ āĻāϰā§āύ: āϝāĻĻāĻŋ āϏā§āĻā§āĻāĻŋāĻ āĻāĻāύāĻ āĻĒā§āϰā§āĻĄ āϏāĻŋāĻā§āϰā§āĻ āĻĒāĻĄāĻŧāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰā§, āĻĄāĻŋāĻĒā§āϞāϝāĻŧ āĻŦā§āϝāϰā§āĻĨ āĻšāĻŦā§āĨ¤
āϞāĻāĻĄāĻžāĻāύ āĻŽāĻžāύ⧠āĻĒā§āϰāϧāĻžāύāϤ āĻā§ āĻāĻŦāĻ āĻā§ āĻĒāĻĄāĻŧāϤ⧠āĻĒāĻžāϰ⧠āϤāĻž āĻāĻŽāĻžāύā§āĨ¤ āĻļā§āϝāĻŧāĻžāϰā§āĻĄ āĻāĻāĻžāĻāύā§āĻ āĻāĻĄāĻŧāĻžāύ, āĻĻā§āϰā§āĻāĻā§āĻŦā§ āĻā§āĻā§āύ āϝāϤāĻāĻž āϏāĻŽā§āĻāĻŦ āĻĒāϰāĻŋāĻšāĻžāϰ āĻāϰā§āύ, āĻāĻŦāĻ āϰāĻŋāĻĄ āĻĒāĻžāϰāĻŽāĻŋāĻļāύ āϞā§āĻāĻžāϰ āϤā§āϞāύāĻžāϝāĻŧ āϏāĻā§āĻā§āĻāĻŋāϤ āϰāĻžāĻā§āύāĨ¤
AppMaster-āĻāϰ āĻŽāϤ⧠no-code āĻĒā§āϞā§āϝāĻžāĻāĻĢāϰā§āĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϞ⧠āĻāĻāĻ āĻĒāĻĻā§āϧāϤāĻŋ āĻāĻžāĻ āĻāϰā§: āĻĨāĻžāϰā§āĻĄ-āĻĒāĻžāϰā§āĻāĻŋ āĻā§āϰā§āĻĄā§āύāĻļāĻŋāϝāĻŧāĻžāϞ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ-āϏā§āĻĒā§āϏāĻŋāĻĢāĻŋāĻ āϰāĻžāύāĻāĻžāĻāĻŽ āϏā§āĻāĻŋāĻāϏ⧠āϰāĻžāĻā§āύ, āĻāĻŦāĻ āĻā§āύāĻžāϰā§āĻ āĻāϰāĻž āĻŦāĻŋāϞā§āĻĄ āĻāϰā§āĻāĻŋāĻĢā§āϝāĻžāĻā§āĻāĻā§āϞā§āĻā§ āĻāĻŋāĻŽā§āϰ āĻāĻŋāϤāϰā§āĻ āĻĒāĻžāĻŦāϞāĻŋāĻ āĻšāĻŋāϏā§āĻŦā§ āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰā§āύāĨ¤ āĻāĻ āĻāĻ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ āĻ āύā§āĻ āĻĻā§āϰā§āĻāĻāύāĻžāĻāύāĻŋāϤ āϞāĻŋāĻ āĻĒā§āϰāϤāĻŋāϰā§āϧ āĻāϰā§āĨ¤
API āĻā§ āĻ SMTP āĻā§āϰā§āĻĄā§āύāĻļāĻŋāϝāĻŧāĻžāϞā§āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻŋāĻ āĻĒā§āϝāĻžāĻāĻžāϰā§āύ
āĻ āύā§āĻ āϞāĻŋāĻ āĻāĻā§ āϝāĻāύ āĻ ā§āϝāĻžāĻĒāĻā§ âāĻāĻŋāĻā§ āĻĒāĻžāĻ āĻžāϤā§â āĻšāϝāĻŧ āĻāĻŦāĻ āĻĻā§āϰā§āϤ āϏāĻŽāĻžāϧāĻžāύ āĻšāĻŋāϏā§āĻŦā§ āĻā§āϰā§āĻĄā§āύāĻļāĻŋāϝāĻŧāĻžāϞāĻā§ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻā§ āĻĒā§āϏā§āĻ āĻāϰāĻž āĻŦāĻž āĻāύāĻĢāĻŋāĻ āĻĢāĻžāĻāϞ⧠āϰā§āĻā§ āĻĻā§āĻāϝāĻŧāĻž āĻšāϝāĻŧ āϝāĻž āĻŦāĻžāύā§āĻĄāϞ⧠āĻĒāĻĄāĻŧā§ āϝāĻžāϝāĻŧāĨ¤ āĻāĻāĻāĻŋ āĻāĻžāϞ āĻĄāĻŋāĻĢāϞā§āĻ āϰā§āϞ: āĻāϝāĻŧā§āĻŦ āĻ āĻŽā§āĻŦāĻžāĻāϞ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻāĻāύ⧠SMTP āĻāĻāĻāĻžāϰāύā§āĻŽ, SMTP āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻŦāĻž āĻāĻŽāύ āĻā§āύ⧠āĻĒā§āϰā§āĻāĻžāĻāĻĄāĻžāϰ āĻā§ āϰāĻžāĻāĻŦā§ āύāĻž āϝāĻž āĻŽā§āϏā§āĻ āĻĒāĻžāĻ āĻžāϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻāĻŽā§āĻāϞā§āϰ āĻāύā§āϝ, āϏāĻŽā§āĻāĻŦ āĻšāϞ⧠āĻāĻžāĻāĻāĻž SMTP-āĻāϰ āĻŦāĻĻāϞ⧠āĻāĻŽā§āĻāϞ āĻĒā§āϰā§āĻāĻžāĻāĻĄāĻžāϰā§āϰ API āĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύāĨ¤ API-āĻāĻŋāϤā§āϤāĻŋāĻ āϏā§āύā§āĻĄāĻŋāĻ āϏā§āĻā§āĻĒāĻĄ āĻāϰāĻž āϏāĻšāĻ (āĻļā§āϧ⧠āĻŽā§āĻāϞ āĻĒāĻžāĻ āĻžāϤ⧠āĻĒāĻžāϰā§), āϰā§āĻā§āĻ āĻ āĻŽāύāĻŋāĻāϰ āĻāϰāĻž āϏāĻšāĻāĨ¤ āϝāĻĻāĻŋ SMTP āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ āĻāϰāϤ⧠āĻšāϝāĻŧ, āϏāĻžāϰā§āĻāĻžāϰ-āϏāĻžāĻāĻĄā§āĻ āϰāĻžāĻā§āύ āĻāĻŦāĻ āĻŦā§āϝāĻžāĻāĻāύā§āĻĄāĻā§ āĻāĻāĻ āĻāύā§āĻāĻžāϰāĻĢā§āϏ āĻŦāĻžāύāĻžāύ āϝā§āĻāĻžāĻ āĻŽā§āϞ āϏāĻžāϰā§āĻāĻžāϰā§āϰ āϏāĻžāĻĨā§ āĻāĻĨāĻž āĻŦāϞā§āĨ¤
āϏā§āϰāĻā§āώāĻŋāϤ āϏā§āĻāĻāĻĒ āĻāĻĻāĻžāĻšāϰāĻŖ:
- āĻāĻŽā§āĻāϞ āϏā§āύā§āĻĄāĻŋāĻāĻā§ āĻŦā§āϝāĻžāĻāĻāύā§āĻĄ āĻāύā§āĻĄāĻĒāϝāĻŧā§āύā§āĻā§āϰ āĻĒāĻŋāĻāύ⧠āϰāĻžāĻā§āύ (āĻāĻĻāĻžāĻšāϰāĻŖ: âsend password resetâ āĻŦāĻž âsend invoiceâ)āĨ¤
- API āĻā§ āĻŦāĻž SMTP āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻŦā§āϝāĻžāĻāĻāύā§āĻĄā§āϰ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ āϏāĻŋāĻā§āϰā§āĻā§ āϏā§āĻā§āϰ āĻāϰā§āύ, āϏā§āϰā§āϏ āĻā§āĻĄ āĻŦāĻž UI āϏā§āĻāĻŋāĻāϏ⧠āύāϝāĻŧāĨ¤
- Dev, staging, āĻāĻŦāĻ prod-āĻāϰ āĻāύā§āϝ āĻāϞāĻžāĻĻāĻž āĻā§āϰā§āĻĄā§āύāĻļāĻŋāϝāĻŧāĻžāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ (āĻāĻāĻĄāĻŋāϝāĻŧāĻžāϞāĻŋ āĻāϞāĻžāĻĻāĻž āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āĻ āϏā§āύā§āĻĄāĻžāϰ āĻĄā§āĻŽā§āĻāύ)āĨ¤
- āϏā§āĻā§āĻāĻŋāĻ āϰāĻŋāϏāĻŋāĻĒāĻŋāϝāĻŧā§āύā§āĻ allowlist āϰāĻžāĻā§āύ āϝāĻžāϤ⧠āĻā§āĻŦāϞ āĻ āύā§āĻŽā§āĻĻāĻŋāϤ āĻ āĻŋāĻāĻžāύāĻžāĻā§āϞāĻŋāϤā§āĻ āĻŽā§āĻāϞ āϝāĻžāĻŦā§āĨ¤
- āĻĄā§āϞāĻŋāĻāĻžāϰāĻŋ āĻĢāϞāĻžāĻĢāϞ āϞāĻ āĻāϰā§āύ (message ID, provider response, recipient domain) āĻāĻŋāύā§āϤ⧠āĻā§āϰā§āĻĄā§āύāĻļāĻŋāϝāĻŧāĻžāϞ āĻŦāĻž āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻŽā§āϏā§āĻ āĻŦāĻĄāĻŋ āĻāĻāύ⧠āϞāĻ āĻāϰāĻŦā§āύ āύāĻžāĨ¤
āϏā§āĻā§āĻāĻŋāĻ āĻ āĻĒā§āϰā§āĻĄ āĻāϞāĻžāĻĻāĻž āύāĻž āϰāĻžāĻāĻžāĻāĻž āĻŦā§āĻļāĻŋ āĻā§āĻāĻāĻŋāĻĒā§āϰā§āĻŖâāϏā§āĻā§āĻāĻŋāĻ āϏāĻžāϰā§āĻāĻžāϰ āĻā§āϞ āĻāϰāϞā§āĻ āĻŦāĻžāϏā§āϤāĻŦ āĻā§āϰāĻžāĻšāĻāĻĻā§āϰ āĻāĻžāĻā§ āϏā§āĻĒā§āϝāĻžāĻŽ āĻĒā§āĻāĻāĻžāϤ⧠āĻĒāĻžāϰ⧠āϝāĻĻāĻŋ āĻāĻāĻ āϏā§āύā§āĻĄāĻžāϰ āĻ āϰā§āϞ āĻļā§āϝāĻŧāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻāĻŋ āϏāĻšāĻ āĻāĻžāϰā§āĻĄ: āϏā§āĻā§āĻāĻŋāĻ-āĻ āĻāĻāĻāĻŦāĻžāĻāύā§āĻĄ āĻāĻŽā§āĻāϞ āĻŦā§āϞāĻ āĻāϰā§āύ āϝāĻĻāĻŋ āϰāĻŋāϏāĻŋāĻĒāĻŋāϝāĻŧā§āύā§āĻ allowlist-āĻ āύāĻž āĻĨāĻžāĻā§ (āϝā§āĻŽāύ āĻāĻĒāύāĻžāϰ āĻāĻŋāĻŽā§āϰ āĻ āĻŋāĻāĻžāύāĻžāĻā§āϞā§)āĨ¤
āĻāĻĻāĻžāĻšāϰāĻŖ: āĻāĻĒāύāĻŋ AppMaster-āĻ āĻāĻāĻāĻŋ āĻāĻžāϏā§āĻāĻŽāĻžāϰ āĻĒā§āϰā§āĻāĻžāϞ āĻŦāĻžāύāĻžāĻā§āĻā§āύāĨ¤ āĻŽā§āĻŦāĻžāĻāϞ āĻ ā§āϝāĻžāĻĒ "login code āĻĒāĻžāĻ āĻžāĻ" āĻā§āϰāĻŋāĻāĻžāϰ āĻāϰā§āĨ¤ āĻ ā§āϝāĻžāĻĒ āĻŦā§āϝāĻžāĻāĻāύā§āĻĄ āĻāϞ āĻāϰā§, āĻŦā§āϝāĻžāĻāĻāύā§āĻĄ āĻĒā§āϰā§āĻĄ āĻŦāĻž āϏā§āĻā§āĻāĻŋāĻ āĻŽā§āĻāϞ āϏāĻŋāĻā§āϰā§āĻ āĻĒāĻĄāĻŧā§ āĻāĻŦāĻ āĻŽā§āĻāϞ āĻĒāĻžāĻ āĻžāϝāĻŧāĨ¤ āĻā§āϏā§āĻāĻžāϰ āϏā§āĻā§āĻāĻŋāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϞ⧠allowlist āĻŦāĻžāϏā§āϤāĻŦ āĻā§āϰāĻžāĻšāĻāĻĻā§āϰ āĻāĻžāĻā§ āĻŽā§āϏā§āĻ āĻĨāĻžāĻŽāĻžāϝāĻŧ, āĻāĻŦāĻ āϞāĻāĻā§āϞ⧠āĻĻā§āĻāĻžāϝāĻŧ āϝ⧠āĻĒāĻžāĻ āϏāĻĢāϞ āĻšāϝāĻŧā§āĻā§ āĻāĻŋāύāĻž āĻāĻŋāύā§āϤ⧠āĻā§ āĻāĻā§āϏāĻĒā§āĻ āĻāϰāĻā§ āύāĻžāĨ¤
Webhook āϏāĻŋāĻā§āϰā§āĻ: āϏāĻžāĻāύāĻŋāĻ, āĻā§āϰāĻŋāĻĢāĻŋāĻā§āĻļāύ, āĻ āϰā§āĻā§āĻļāύ
Webhook āϏāĻŋāĻāĻŋāĻāϰāĻŋāĻāĻŋ āĻāĻāĻāĻŋ āύāĻŋāϝāĻŧāĻŽā§ āϝāĻžāĻā§āĻā§: āĻĒā§āϰāϤāĻŋāĻāĻŋ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āϏāĻžāϰā§āĻāĻžāϰ-āϏāĻžāĻāĻĄā§ āĻā§āϰāĻŋāĻĢāĻžāĻ āĻāϰā§āύ āĻāĻŽāύ āĻāĻāĻāĻŋ āϏāĻŋāĻā§āϰā§āĻ āĻĻāĻŋāϝāĻŧā§ āϝāĻž āĻŦāĻžāĻāϰ⧠āϝāĻžāϝāĻŧ āύāĻžāĨ¤ āϝāĻĻāĻŋ āϏāĻŋāĻā§āϰā§āĻ āĻāϝāĻŧā§āĻŦ āĻŦāĻž āĻŽā§āĻŦāĻžāĻāϞ āĻ ā§āϝāĻžāĻĒā§ āĻāϞ⧠āϝāĻžāϝāĻŧ, āϤāĻž āĻāϰ āϏāĻŋāĻā§āϰā§āĻ āĻĨāĻžāĻā§ āύāĻžāĨ¤
āϏāĻžāĻāύāĻŋāĻ āĻ āĻā§āϰāĻŋāĻĢāĻŋāĻā§āĻļāύ
āĻāĻāĻāĻž webhookāĻā§ āĻāύāĻāĻžāĻŽāĻŋāĻ āĻāĻžāϰā§āĻĄ āĻĒā§āĻŽā§āύā§āĻā§āϰ āĻŽāϤ⧠āĻāĻŋāύā§āϤāĻž āĻāϰā§āύ: āĻā§āϰāĻŋāĻĢāĻžāĻ āύāĻž āĻšāĻāϝāĻŧāĻž āĻĒāϰā§āϝāύā§āϤ āĻāĻŋāĻā§ āĻā§āϰāĻšāĻŖ āĻāϰāĻŦā§āύ āύāĻžāĨ¤ āĻĒā§āϰā§āĻāĻžāĻāĻĄāĻžāϰ āĻāĻāĻāĻŋ āϏāĻŋāĻāύā§āĻāĻžāϰ āĻšā§āĻĄāĻžāϰ āĻĒāĻžāĻ āĻžāϝāĻŧ āϝāĻž āĻĒā§āϞā§āĻĄ āĻ āĻāĻĒāύāĻžāϰ āĻļā§āϝāĻŧāĻžāϰā§āĻĄ āϏāĻŋāĻā§āϰā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻšāĻŋāϏāĻžāĻŦ āĻāϰāĻžāĨ¤ āĻāĻĒāύāĻžāϰ āϏāĻžāϰā§āĻāĻžāϰ āĻĒā§āϰāϤā§āϝāĻžāĻļāĻŋāϤ āϏāĻŋāĻāύā§āĻāĻžāϰ āĻĒā§āύāϰāĻžāϝāĻŧ āĻšāĻŋāϏāĻžāĻŦ āĻāϰ⧠āĻāĻŦāĻ āϤā§āϞāύāĻž āĻāϰā§āĨ¤
āϏāĻšāĻ āĻā§āϰāĻŋāĻĢāĻŋāĻā§āĻļāύ āĻĢā§āϞā§:
- āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āĻŦāĻĄāĻŋ āĻ āύā§āϞāĻŋāĻĒāĻŋ āύā§āĻŦā§āύ āύāĻžâāĻāĻžāĻāĻāĻž āĻŦāĻĄāĻŋ āĻ āĻŋāĻ āϝā§āĻāĻžāĻŦā§ āĻāϏā§āĻā§ āϤā§āĻŽāύ āĻĒāĻĄāĻŧā§āύāĨ¤
- āĻāĻĒāύāĻžāϰ webhook āϏāĻŋāĻā§āϰā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻĒā§āϰāϤā§āϝāĻžāĻļāĻŋāϤ āϏāĻŋāĻāύā§āĻāĻžāϰ āĻāĻŖāύāĻž āĻāϰā§āύāĨ¤
- āĻāύāϏā§āĻā§āϝāĻžāύā§āĻ-āĻāĻžāĻāĻŽ āϤā§āϞāύāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύāĨ¤
- āĻ āύā§āĻĒāϏā§āĻĨāĻŋāϤ āĻŦāĻž āĻ āĻŦā§āϧ āϏāĻŋāĻāύā§āĻāĻžāϰāĻā§ āϏā§āĻĒāώā§āĻ 401 āĻŦāĻž 403 āĻĻāĻŋāϝāĻŧā§ āĻĒā§āϰāϤā§āϝāĻžāĻā§āϝāĻžāύ āĻāϰā§āύāĨ¤
- āϤāĻžāϰāĻĒāϰāĻ JSON āĻĒāĻžāϰā§āϏ āĻāϰ⧠āĻāĻā§āύā§āĻ āĻĒā§āϰāϏā§āϏ āĻāϰā§āύāĨ¤
Dev, staging, āĻāĻŦāĻ prod-āĻ āĻāϞāĻžāĻĻāĻž webhook āĻāύā§āĻĄāĻĒāϝāĻŧā§āύā§āĻ āĻāĻŦāĻ āĻāϞāĻžāĻĻāĻž āϏāĻŋāĻā§āϰā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύāĨ¤ āĻāϤ⧠āĻāĻāĻāĻŋ dev āĻā§āϞ āĻŦāĻž āĻā§āϏā§āĻ āϏāĻŋāϏā§āĻā§āĻŽ āĻĒā§āϰā§āĻĄ āĻ ā§āϝāĻžāĻāĻļāύ āĻā§āϰāĻŋāĻāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŦā§ āύāĻž, āĻāĻŦāĻ āĻāύāϏāĻŋāĻĄā§āύā§āĻ āĻāύāĻā§āĻāύ āĻāϰāĻž āϏāĻšāĻ āĻšāϝāĻŧāĨ¤ AppMaster-āĻ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĄāĻŋāĻĒā§āϞāϝāĻŧāĻŽā§āύā§āĻā§āϰ āĻāύā§āϝ āĻāϞāĻžāĻĻāĻž āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ āĻāύāĻĢāĻŋāĻ āĻĨāĻžāĻā§, āĻāĻŦāĻ webhook secret āϏāĻžāϰā§āĻāĻžāϰ-āϏāĻžāĻāĻĄ āĻā§āϝāĻžāϰāĻŋāϝāĻŧā§āĻŦāϞ āĻšāĻŋāϏā§āĻŦā§ āϰāĻžāĻāĻž āĻšāϝāĻŧ, UI āĻŦāĻž āĻŽā§āĻŦāĻžāĻāϞ/āĻāϝāĻŧā§āĻŦ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻā§ āύāϝāĻŧāĨ¤
āϰā§āĻĒā§āϞ⧠āĻĒā§āϰā§āĻā§āĻāĻļāύ āĻ āϰā§āĻā§āĻļāύ
āϏāĻŋāĻāύā§āĻāĻžāϰ āĻā§āĻŽā§āĻĒāĻžāϰāĻŋāĻ āĻĨāĻžāĻŽāĻžāϝāĻŧ, āĻāĻŋāύā§āϤ⧠āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āϰā§āĻĒā§āϞ⧠āĻĨāĻžāĻŽāĻžāϝāĻŧ āύāĻžāĨ¤ āĻĒā§āϰāϤāĻŋāĻāĻŋ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻāĻā§ āĻāĻāĻŦāĻžāϰāĻ āĻŦā§āϧ āĻāϰ⧠āϤā§āϞā§āύ, āĻŦāĻž āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻāĻāĻāĻŋ āϏāĻāĻā§āώāĻŋāĻĒā§āϤ āϏāĻŽāϝāĻŧ āĻāĻāύā§āĻĄā§āϤ⧠āĻā§āϰāĻšāĻŖ āĻāϰā§āύāĨ¤ āϏāĻžāϧāĻžāϰāĻŖ āĻ āĻĒāĻļāύāĻā§āϞ⧠āĻšāϞ⧠āĻāĻžāĻāĻŽāϏā§āĻā§āϝāĻžāĻŽā§āĻĒ āĻšā§āĻĄāĻžāϰ āϏāĻš āĻāĻĄāĻŧāĻž āϏāĻŽāϝāĻŧāϏā§āĻŽāĻž, āύāύāϏ, āĻŦāĻž āĻāĻāĻāĻŋ idempotency āĻā§ āϝāĻž āĻāĻĒāύāĻŋ āϏā§āĻā§āϰ āĻāϰ⧠āĻĒā§āύāϰāĻžāϝāĻŧ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻž āĻāϰāϤ⧠āĻ āϏā§āĻŦā§āĻāĻžāϰ āĻāϰā§āύāĨ¤
āϰā§āĻā§āĻļāύ āĻĒāϰāĻŋāĻāϞā§āĻĒāύāĻž āĻāĻā§ āĻĨā§āĻā§ āϰāĻžāĻā§āύāĨ¤ āĻāĻāĻāĻŋ āύāĻŋāϰāĻžāĻĒāĻĻ āĻĒā§āϝāĻžāĻāĻžāϰā§āύ āĻšāϞ⧠āϏāĻāĻā§āώāĻŋāĻĒā§āϤ overlap-āĻ āĻĻā§āĻāĻāĻŋ āϏāĻā§āϰāĻŋāϝāĻŧ āϏāĻŋāĻā§āϰā§āĻ āϏāĻŽāϰā§āĻĨāύ āĻāϰāĻž: āĻāĻĒāύāĻŋ provider-āĻā§ āĻāĻĒāĻĄā§āĻ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻāĻāϝāĻŧ āϏāĻŋāĻā§āϰā§āĻ āĻā§āϰāĻšāĻŖ āĻāϰā§āύ, āϤāĻžāϰāĻĒāϰ āĻĒā§āϰāĻžāϤāύāĻāĻŋ āϰāĻŋāĻāĻžāϝāĻŧāĻžāϰ āĻāϰā§āύāĨ¤ āĻāĻāĻāĻŋ āĻĒāϰāĻŋāώā§āĻāĻžāϰ āĻāĻžāĻāĻ āĻĢ āϏāĻŽāϝāĻŧ āϰāĻžāĻā§āύ āĻāĻŦāĻ āĻĒā§āϰāύ⧠āϏāĻŋāĻāύā§āĻāĻžāϰā§āϰ āĻā§āϰāĻžāĻĢāĻŋāĻ āĻŽāύāĻŋāĻāϰ āĻāϰā§āύāĨ¤
āϞāĻ āύāĻŋāϝāĻŧā§ āϏāĻžāĻŦāϧāĻžāύ āĻĨāĻžāĻā§āύāĨ¤ Webhook āĻĒā§āϞā§āĻĄā§ āĻĒā§āϰāĻžāϝāĻŧāĻ āĻāĻŽā§āĻāϞ, āĻ āĻŋāĻāĻžāύāĻž āĻŦāĻž āĻĒā§āĻŽā§āύā§āĻ āĻŽā§āĻāĻžāĻĄā§āĻāĻž āĻĨāĻžāĻā§āĨ¤ āĻāĻā§āύā§āĻ ID, āĻāĻžāĻāĻĒ āĻāĻŦāĻ āĻā§āϰāĻŋāĻĢāĻŋāĻā§āĻļāύ āĻĢāϞāĻžāĻĢāϞ āϞāĻ āĻāϰā§āύ, āĻāĻŋāύā§āϤ⧠āĻĒā§āϰ⧠āĻĒā§āϞā§āĻĄ āĻŦāĻž āĻšā§āĻĄāĻžāϰ āĻĒā§āϰāĻŋāύā§āĻ āĻāϰāĻž āĻĨā§āĻā§ āĻŦāĻŋāϰāϤ āĻĨāĻžāĻā§āύāĨ¤
āϏāĻžāϧāĻžāϰāĻŖ āĻā§āϞ āĻāĻŦāĻ āĻā§āϝā§āϰā§āϝāĻžāĻĒ
āĻ āϧāĻŋāĻāĻžāĻāĻļ āϞāĻŋāĻ āϏāĻšāĻ āĻ āĻā§āϝāĻžāϏ āĻĨā§āĻā§ āĻāϏ⧠āϝāĻž āĻĄā§āĻā§āϞāĻĒāĻŽā§āύā§āĻā§ āϏā§āĻŦāĻŋāϧāĻžāĻāύāĻ āϞāĻžāĻā§, āϤāĻžāϰāĻĒāϰ āϏā§āĻā§āĻāĻŋāĻ āĻ āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύ⧠āĻāĻĒāĻŋ āĻšāϝāĻŧā§ āϝāĻžāϝāĻŧāĨ¤
āϞā§āĻāĻžāϞ .env āĻĢāĻžāĻāϞāĻā§ āĻāĻŋāϰāĻāĻžāϞ āύāĻŋāϰāĻžāĻĒāĻĻ āϏā§āĻĨāĻžāύ⧠āĻŽāύ⧠āĻāϰāĻž āĻāĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āϤā§āϰā§āĻāĻŋāĨ¤ āĻāĻĒāύāĻžāϰ āϞā§āϝāĻžāĻĒāĻāĻĒā§ āĻāĻāĻž āĻ āĻŋāĻ āĻāĻā§, āĻāĻŋāύā§āϤ⧠āĻāĻāĻāĻŋ āĻŽā§āĻšā§āϰā§āϤ⧠āϤāĻž āϰā§āĻĒā§āϤā§, āĻļā§āϝāĻŧāĻžāϰā§āĻĄ āĻāĻŋāĻĒā§ āĻŦāĻž āĻĄāĻāĻžāϰ āĻāĻŽā§āĻā§ āĻāĻĒāĻŋ āĻšāϞ⧠āϏā§āĻāĻž āĻŦāĻŋāĻĒāĻā§āĻāύāĻāĨ¤ āϝāĻĻāĻŋ āĻāĻĒāύāĻŋ .env āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ, āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰā§āύ āĻāĻāĻŋ āĻāĻžāϰā§āϏāύ āĻāύā§āĻā§āϰā§āϞ⧠ignore āĻāϰāĻž āĻāĻā§ āĻāĻŦāĻ āĻŦāĻžāϏā§āϤāĻŦā§ āĻĄāĻŋāĻĒā§āϞāϝāĻŧāĻŽā§āύā§āĻā§ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ āϏā§āĻāĻŋāĻāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāĻā§āĻā§āĨ¤
āĻāĻāĻ āĻā§āϰā§āĻĄā§āύāĻļāĻŋāϝāĻŧāĻžāϞ āϏāĻŦ āĻāĻžāϝāĻŧāĻāĻžāϝāĻŧ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻāϰā§āĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āϏāĻŽāϏā§āϝāĻžāĨ¤ āĻāĻāĻ API āĻā§ dev, staging, āĻāĻŦāĻ prod-āĻ reuse āĻāϰāϞ⧠dev-āĻ āĻā§āύ⧠āĻā§āϞ āĻĒā§āϰā§āĻĄ āĻāύāϏāĻŋāĻĄā§āύā§āĻā§ āĻĒāϰāĻŋāĻŖāϤ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāϞāĻžāĻĻāĻž āĻā§ āϰā§āĻā§āĻ, āϰāĻŋāĻā§āĻ āĻāĻŦāĻ āĻ āĻĄāĻŋāĻ āĻāϰāĻž āϏāĻšāĻ āĻāϰā§āĨ¤
āĻāϝāĻŧā§āĻŦ āĻĢā§āϰāύā§āĻāĻāύā§āĻĄ āĻ āĻŽā§āĻŦāĻžāĻāϞ āĻ ā§āϝāĻžāĻĒā§ āĻŦāĻŋāϞā§āĻĄ āĻāĻžāĻāĻŽā§ āϏāĻŋāĻā§āϰā§āĻ āĻāύāĻā§āĻāĻļāύ āĻāϰāĻž āĻŦāĻŋāĻļā§āώāĻāĻžāĻŦā§ āĻā§āĻāĻāĻŋāĻĒā§āϰā§āĻŖāĨ¤ āϝāĻĻāĻŋ āĻā§āύ⧠āĻā§āĻĒāύ āĻāĻŽā§āĻĒāĻžāĻāϞā§āĻĄ āĻŦāĻžāύā§āĻĄāϞ⧠āĻŦāĻž āĻ ā§āϝāĻžāĻĒ āĻĒā§āϝāĻžāĻā§āĻā§ āĻĒāĻĄāĻŧā§ āϝāĻžāϝāĻŧ, āϧāϰ⧠āύāĻŋāύ āϤāĻž āĻāĻā§āϏāĻā§āϰāĻžāĻā§āĻ āĻāϰāĻž āϝāĻžāĻŦā§āĨ¤ āĻĢā§āϰāύā§āĻā§āύā§āĻĄāĻā§āϞ⧠āĻā§āĻŦāϞ āĻĒāĻžāĻŦāϞāĻŋāĻ āĻāύāĻĢāĻŋāĻ āϰāĻžāĻāϤ⧠āĻĒāĻžāϰ⧠(āϝā§āĻŽāύ āĻŦā§āϏ API URL)āĨ¤ āϏāĻāĻŦā§āĻĻāύāĻļā§āϞ āĻāĻŋāĻā§ āϏāĻžāϰā§āĻāĻžāϰā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϰā§āĻ āĻāϰāĻž āĻāĻāĻŋāϤāĨ¤
āϞāĻ āĻāĻāĻāĻŋ āĻā§āĻĒāĻāĻžāĻĒ āϞāĻŋāĻ āϏā§āϰā§āϏāĨ¤ "āĻ āϏā§āĻĨāĻžāϝāĻŧā§" āĻĄāĻŋāĻŦāĻžāĻ āĻĒā§āϰāĻŋāύā§āĻ āĻŽāĻžāϏāĻā§āϞā§āϰ āĻāύā§āϝ āĻĨāĻžāĻāϤ⧠āĻĒāĻžāϰ⧠āĻāĻŦāĻ āĻļāĻŋāĻĒ āĻšāϝāĻŧā§ āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤ āϝāĻĻāĻŋ āĻŽāĻžāύ āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰāϤ⧠āϞāĻ āĻāϰāϤ⧠āĻšāϝāĻŧ, āĻā§āĻŦāϞ āĻŽāĻžāϏā§āĻ āĻāϰāĻž āϏāĻāϏā§āĻāϰāĻŖ āϞāĻ āĻāϰā§āύ (āĻāĻĻāĻžāĻšāϰāĻŖ: āĻļā§āώ 4 āĻ āĻā§āώāϰ) āĻāĻŦāĻ āϏāĻā§āĻ āϏā§āĻā§āĻāĻŽā§āύā§āĻāĻāĻŋ āϏāϰāĻŋāϝāĻŧā§ āĻĻāĻŋāύāĨ¤
āϰā§āĻĄ āĻĢā§āϞā§āϝāĻžāĻ āϝāĻž āϏāĻžāϧāĻžāϰāĻŖāϤ āϏāĻŽāϏā§āϝāĻž āĻŦā§āĻāĻžāϝāĻŧ
- āĻā§āĻĒāύ Git āĻāϤāĻŋāĻšāĻžāϏ⧠āĻĻā§āĻāĻž āϝāĻžāϝāĻŧ, āĻāĻŽāύāĻāĻŋ āĻĒāϰ⧠āϏāϰāĻžāύ⧠āĻšāϝāĻŧā§āĻā§ āĻŦāϞā§āĻāĨ¤
- āĻāĻāĻāĻŋ āĻā§ āϏāĻŦ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻā§ āĻāĻžāĻ āĻāϰā§āĨ¤
- āĻāĻāĻāĻŋ āĻŽā§āĻŦāĻžāĻāϞ āĻ ā§āϝāĻžāĻĒā§ āĻā§āύā§āĻĄāϰ āĻā§ āĻŦāĻž SMTP āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻāĻā§āĨ¤
- āϏāĻžāĻĒā§āϰā§āĻ āĻāĻŋāĻā§āĻā§ āĻĒā§āϰā§āĻŖ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āĻĄāĻžāĻŽā§āĻĒ āĻāĻā§ āĻšā§āĻĄāĻžāϰāϏāĻšāĨ¤
- āĻŽāĻžāύāĻā§āϞ⧠Base64-āĻ āϰāĻžāĻāĻž āĻŦāĻž āĻĢāϰā§āĻŽ āĻĢāĻŋāϞā§āĻĄā§ "āϞā§āĻāĻžāύā§" āĻāĻā§āĨ¤
āĻāύāĻā§āĻĄāĻŋāĻ āϏā§āϰāĻā§āώāĻž āύāϝāĻŧ, āĻāĻŦāĻ āϞā§āĻāĻžāύ⧠āĻĢāĻŋāϞā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻāύā§āϝ āĻāĻāύāĻ āĻĻā§āĻļā§āϝāĻŽāĻžāύāĨ¤
AppMaster-āĻ āĻāĻžāĻ āĻāϰāϞā§, āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĄāĻŋāĻĒā§āϞāϝāĻŧāĻŽā§āύā§āĻ āĻāĻžāϰā§āĻā§āĻā§āϰ āĻāύā§āϝ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ-āϞā§āĻā§āϞ āĻāύāĻĢāĻŋāĻā§ āϏāĻāĻŦā§āĻĻāύāĻļā§āϞ āĻŽāĻžāύ āϰāĻžāĻā§āύ āĻāĻŦāĻ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻ ā§āϝāĻžāĻĒā§ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻ -āϏāĻāĻŦā§āĻĻāύāĻļā§āϞ āϏā§āĻāĻŋāĻ āĻĒāĻžāϏ āĻāϰā§āύāĨ¤ āĻāĻāĻāĻŋ āĻŦāĻžāϏā§āϤāĻŦāϤāĻžāĻā§āĻ: āĻŦā§āϰāĻžāĻāĻāĻžāϰ āϝāĻĻāĻŋ āĻĻā§āĻāϤ⧠āĻĒāĻžāϰā§, āϏā§āĻāĻž āĻĒāĻžāĻŦāϞāĻŋāĻ āĻāĻžāĻŦā§āύāĨ¤
āĻļāĻŋāĻĒ āĻāϰāĻžāϰ āĻāĻā§ āĻĻā§āϰā§āϤ āĻā§āĻāϞāĻŋāϏā§āĻ
"āĻā§ āϞāĻŋāĻ āĻšāϤ⧠āĻĒāĻžāϰā§" āĻāĻ āĻŽāύā§āĻāĻžāĻŦ āύāĻŋāϝāĻŧā§ āĻāĻāĻāĻŋ āĻĢāĻžāĻāύāĻžāϞ āĻĒāĻžāϏ āĻāϰā§āύāĨ¤ āĻŦā§āĻļāĻŋāϰāĻāĻžāĻ āĻāύāϏāĻŋāĻĄā§āύā§āĻ āĻ āĻĒā§āϰā§āϤāĻŋāĻāϰ āĻāĻŦāĻ āϏāĻžāϧāĻžāϰāĻŖ: āĻāĻāĻāĻŋ āĻā§ āĻāĻŋāĻāĻā§ āĻĒā§āϏā§āĻ āĻāϰāĻž, āĻāύāĻĢāĻŋāĻ āĻĒā§āϝāĻžāύā§āϞā§āϰ āϏā§āĻā§āϰāĻŋāύāĻļāĻ, āĻŦāĻž āĻŦāĻŋāϞā§āĻĄ āĻāϰā§āĻāĻŋāĻĢā§āϝāĻžāĻā§āĻ āϝāĻž āĻā§āĻĒāĻāĻžāĻĒ āĻā§āĻĒāύ āĻ āύā§āϤāϰā§āĻā§āĻā§āϤ āĻāϰā§āĨ¤
āĻļāĻŋāĻĒ āĻāϰāĻžāϰ āĻāĻā§ āĻāĻ āĻāĻŋāϤā§āϤāĻŋāĻā§āϞ⧠āϝāĻžāĻāĻžāĻ āĻāϰā§āύ:
- āĻā§āĻĒāύāĻā§āϞ⧠āϰā§āĻĒā§ āĻāϤāĻŋāĻšāĻžāϏā§, āĻāϏā§āϝā§, āĻĄāĻāϏ, āϏā§āĻā§āϰāĻŋāύāĻļāĻ āĻŦāĻž āĻā§āϝāĻžāĻ āϞāĻā§ āύā§āĻāĨ¤ āϝāĻĻāĻŋ āĻāĻāύ⧠āĻĒā§āϏā§āĻ āĻāϰāĻž āĻšāϝāĻŧā§ āĻĨāĻžāĻā§, āϧāϰ⧠āύāĻŋāύ āϤāĻž āϏāĻŽā§āĻŽā§āĻāĻāĻžāĻā§ āĻĒā§āϰāĻāĻžāĻļāĻŋāϤ āĻšāϝāĻŧā§āĻā§ āĻāĻŦāĻ āϰā§āĻā§āĻ āĻāϰā§āύāĨ¤
- āĻāĻĒāύāĻžāϰ āĻāϝāĻŧā§āĻŦ āĻ āĻŽā§āĻŦāĻžāĻāϞ āĻŦāĻŋāϞā§āĻĄā§ āĻā§āĻŦāϞ āĻĒāĻžāĻŦāϞāĻŋāĻ āϏā§āĻāĻŋāĻāϏ āĻāĻā§ (āϝā§āĻŽāύ API āĻŦā§āϏ URL āĻŦāĻž āĻĢāĻŋāĻāĻžāϰ āĻĢā§āϞā§āϝāĻžāĻ)āĨ¤ āĻĒā§āϰāĻžāĻāĻā§āĻ āĻā§āĻā§āϞāĻŋ, SMTP āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ, āĻāĻŦāĻ webhook signing secrets āϏāĻžāϰā§āĻāĻžāϰ-āϏāĻžāĻāĻĄā§ āĻŦāĻž āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ-āϏā§āĻĒā§āϏāĻŋāĻĢāĻŋāĻ āϏāĻŋāĻā§āϰā§āĻ āϏā§āĻā§āϰ⧠āĻĨāĻžāĻāĻž āĻāĻāĻŋāϤāĨ¤
- āϏā§āĻā§āĻāĻŋāĻ āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύ āĻĨā§āĻā§ āĻŦāĻŋāĻā§āĻāĻŋāύā§āύāĨ¤ āϏā§āĻā§āĻāĻŋāĻāϝāĻŧā§āϰ āĻāϞāĻžāĻĻāĻž API āĻā§, āĻāϞāĻžāĻĻāĻž SMTP āĻāĻāĻžāĻāύā§āĻ, āĻāĻŦāĻ āĻāϞāĻžāĻĻāĻž webhook secret āĻĨāĻžāĻāĻž āĻāĻāĻŋāϤāĨ¤ āϏā§āĻā§āĻāĻŋāĻ āĻāĻāύ⧠āĻĒā§āϰā§āĻĄ āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻŦāĻž āĻĒā§āϰā§āĻĄ āϏāĻŋāĻā§āϰā§āĻ āĻŽā§āϝāĻžāύā§āĻāĻžāϰ āĻĒāĻĄāĻŧāĻžāϰ āĻā§āώāĻŽāϤāĻž āĻĨāĻžāĻāĻž āĻāĻāĻŋāϤ āύāϝāĻŧāĨ¤
- CI āϞāĻ, āĻŽāύāĻŋāĻāϰāĻŋāĻ, āĻāĻŦāĻ āĻāϰāϰ āϰāĻŋāĻĒā§āϰā§āĻāĻŋāĻ āϏāĻāĻŦā§āĻĻāύāĻļā§āϞ āĻŽāĻžāύ āĻĒā§āϰāĻŋāύā§āĻ āĻāϰ⧠āύāĻžāĨ¤ āĻŦāĻŋāϞā§āĻĄ āĻāĻāĻāĻĒā§āĻ, āĻā§āϰā§āϝāĻžāĻļ āϰāĻŋāĻĒā§āϰā§āĻ āĻāĻŦāĻ āĻĄāĻŋāĻŦāĻžāĻ āϞāĻ āĻā§āĻ āĻāϰā§āύāĨ¤ āĻā§āĻā§āύ āĻŽāĻžāϏā§āĻ āĻāϰā§āύ āĻāĻŦāĻ
AuthorizationāĻŽāϤ⧠āĻšā§āĻĄāĻžāϰāĻā§āϞ⧠āϰā§āĻĄā§āϝāĻžāĻā§āĻ āĻāϰā§āύāĨ¤ - āĻāĻĒāύāĻŋ āĻĻā§āϰā§āϤ āĻā§āĻĄ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāĻžāĻĄāĻŧāĻž āϰā§āĻā§āĻ āĻ āϰāĻŋāĻā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰā§āύ āϏāĻŋāĻā§āϰā§āĻ āĻĄāĻŋāĻĒā§āϞāϝāĻŧ āĻāĻžāĻāĻŽā§ āĻāύāĻā§āĻā§āĻ āĻāϰāĻž āĻšāϝāĻŧ (āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ āĻā§āϝāĻžāϰāĻŋāϝāĻŧā§āĻŦāϞ āĻŦāĻž āϏāĻŋāĻā§āϰā§āĻ āĻŽā§āϝāĻžāύā§āĻāĻžāϰ), āϤāĻžāĻ āĻā§ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāĻāĻāĻŋ āĻāύāĻĢāĻŋāĻ āĻāĻĒāĻĄā§āĻā§ āĻšāϝāĻŧā§ āϝāĻžāϝāĻŧ, āĻāϰā§āϰāĻŋ āĻĒā§āύāϰā§āĻŦāĻŋāϞā§āĻĄ āύāϝāĻŧāĨ¤
AppMaster āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϞā§, āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻā§āϰ āĻāύā§āϝ āϏāĻŋāĻā§āϰā§āĻāĻā§āϞā§āĻā§ āĻĄāĻŋāĻĒā§āϞāϝāĻŧāĻŽā§āύā§āĻ-āĻāĻžāĻāĻŽ āĻāύāĻĢāĻŋāĻ āĻŽāύ⧠āĻāϰā§āύ, UI āϏā§āĻā§āϰāĻŋāύ āĻŦāĻž āĻāĻā§āϏāĻĒā§āϰā§āĻā§āĻĄ āĻŦāĻŋāϞā§āĻĄā§ āύāϝāĻŧāĨ¤ āĻāĻāĻāĻŋ āĻĻāϰāĻāĻžāϰ⧠āĻļā§āώ āĻā§āĻ āĻšāϞ⧠āĻāĻŽā§āĻĒāĻžāĻāϞāĻĄ āĻāϰā§āĻāĻŋāĻĢā§āϝāĻžāĻā§āĻ āĻ āϞāĻā§ āϏāĻžāϧāĻžāϰāĻŖ āĻĒā§āϝāĻžāĻāĻžāϰā§āύāĻā§āϞā§āϰ āĻāύā§āϝ āϏāĻžāϰā§āĻ āĻāϰāĻž, āϝā§āĻŽāύ sk_live, Bearer , āĻŦāĻž SMTP āĻšā§āϏā§āĻāύā§āĻŽāĨ¤
āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāύā§āĻāĻŋāĻā§āϰā§āĻļāύā§āϰ āĻāύā§āϝ âāĻāĻŋāϞ āϏā§āĻāĻâ āϞāĻŋāĻā§ āϰāĻžāĻā§āύ: āĻā§ āĻā§āĻĨāĻžāϝāĻŧ āĻĄāĻŋāĻā§āĻŦāϞ āĻāϰāĻŦā§āύ, āĻāĻŦāĻ āĻā§ āϤāĻž āĻĒāĻžāĻāĻ āĻŽāĻŋāύāĻŋāĻā§āϰ āĻŽāϧā§āϝ⧠āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻāĻĻāĻžāĻšāϰāĻŖ āĻĻā§āĻļā§āϝ: āĻĒā§āĻŽā§āύā§āĻ, āĻāĻŽā§āĻāϞ, āĻāĻŦāĻ āĻāϝāĻŧā§āĻŦāĻšā§āĻ
āĻāĻāĻāĻŋ āϤāĻŋāύ-āĻāύā§āϰ āĻāĻŋāĻŽ āĻāĻāĻāĻŋ āĻāĻžāϏā§āĻāĻŽāĻžāϰ āĻĒā§āϰā§āĻāĻžāϞ (āĻāϝāĻŧā§āĻŦ), āĻāĻāĻāĻŋ āĻŽā§āĻŦāĻžāĻāϞ āĻ ā§āϝāĻžāĻĒ, āĻāĻŦāĻ āĻā§āĻ āĻŦā§āϝāĻžāĻāĻā§āϰāĻžāĻāύā§āĻĄ āĻāĻŦ āĻāĻžāϞāĻžāϝāĻŧ āϝāĻž āϰāϏāĻŋāĻĻ āĻĒāĻžāĻ āĻžāϝāĻŧ āĻ āĻĄā§āĻāĻž āϏāĻŋāĻā§āĻ āĻāϰā§āĨ¤ āϤāĻžāĻĻā§āϰ āϤāĻŋāύāĻāĻŋ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ āĻāĻā§: āϞā§āĻāĻžāϞ dev, QA-āĻāϰ āĻāύā§āϝ staging, āĻāĻŦāĻ āĻŦāĻžāϏā§āϤāĻŦ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻāύā§āϝ prodāĨ¤ āϤāĻžāϰāĻž āĻāĻžāϝāĻŧ āĻāĻŽāύ āĻāĻāĻāĻŋ āϏāĻŋāĻā§āϰā§āĻ āĻ āĻāύāĻĢāĻŋāĻ āϏā§āĻāĻāĻĒ āϝāĻž āĻĻā§āύāύā§āĻĻāĻŋāύ āĻāĻžāĻāĻā§ āϧā§āϰ āĻāϰ⧠āĻĻā§āĻŦā§ āύāĻžāĨ¤
Dev-āĻ āϤāĻžāϰāĻž āĻā§āĻŦāϞ āϏā§āϝāĻžāύā§āĻĄāĻŦāĻā§āϏ āĻĒā§āĻŽā§āύā§āĻ āĻā§ āĻ āĻā§āϏā§āĻ SMTP āĻāĻāĻžāĻāύā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĨ¤ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĄā§āĻ āϤāĻžāϰ āϞā§āĻāĻžāϞ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ āĻā§āϝāĻžāϰāĻŋāϝāĻŧā§āĻŦāϞ⧠āϏāĻŋāĻā§āϰā§āĻ āϰāĻžāĻā§ (āĻŦāĻž āĻāĻāĻāĻŋ āϞā§āĻāĻžāϞ āĻāύāĻā§āϰā§āϝāĻžāĻāĻĄ āĻĢāĻžāĻāϞ āϝāĻž env āĻā§āϝāĻžāϰāĻŋāϝāĻŧā§āĻŦāϞ⧠āϞā§āĻĄ āĻšāϝāĻŧ), āϝāĻžāϤ⧠āĻāĻŋāĻā§āĻ āϰā§āĻĒā§āϤ⧠āύāĻž āϝāĻžāϝāĻŧāĨ¤ āĻāϝāĻŧā§āĻŦ āĻ
ā§āϝāĻžāĻĒ, āĻŽā§āĻŦāĻžāĻāϞ āĻ
ā§āϝāĻžāĻĒ, āĻ āĻŦā§āϝāĻžāĻāĻā§āϰāĻžāĻāύā§āĻĄ āĻāĻŦ āĻāĻāĻ āĻā§āϝāĻžāϰāĻŋāϝāĻŧā§āĻŦāϞ āύāĻžāĻŽ āĻĒāĻĄāĻŧā§ â āϝā§āĻŽāύ PAYMENTS_KEY, SMTP_USER, āĻāĻŦāĻ WEBHOOK_SECRETâāĻāĻŋāύā§āϤ⧠āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻā§ āĻā§āϝāĻžāϞā§āĻā§āϞ⧠āĻāϞāĻžāĻĻāĻžāĨ¤
Staging-āĻ CI āĻŦāĻŋāϞā§āĻĄ āĻĄāĻŋāĻĒā§āϞāϝāĻŧ āĻāϰā§, āĻāĻŦāĻ āĻĒā§āϞā§āϝāĻžāĻāĻĢāϰā§āĻŽ āϰāĻžāύāĻāĻžāĻāĻŽā§ āϏāĻŋāĻā§āϰā§āĻ āĻāύāĻā§āĻā§āĻ āĻāϰā§āĨ¤ Staging āύāĻŋāĻā§āϰ āĻĒā§āĻŽā§āύā§āĻ āĻāĻāĻžāĻāύā§āĻ, āύāĻŋāĻā§āϰ SMTP āĻā§āϰā§āĻĄā§āύāĻļāĻŋāϝāĻŧāĻžāϞ āĻāĻŦāĻ āύāĻŋāĻā§āϰ webhook signing secret āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĨ¤ QA āĻŦāĻžāϏā§āϤāĻŦ āĻĢā§āϞ⧠āĻā§āϏā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āĻāĻŋāύā§āϤ⧠āĻĒā§āϰā§āĻĄ āϏāĻŋāϏā§āĻā§āĻŽā§ āĻāĻāĻžāϤ āĻšāĻŦā§āύāĻžāĨ¤
Prod-āĻ āĻāĻāĻ āĻŦāĻŋāϞā§āĻĄ āĻāϰā§āĻāĻŋāĻĢā§āϝāĻžāĻā§āĻ āĻĄāĻŋāĻĒā§āϞāϝāĻŧ āĻāϰāĻž āĻšāϝāĻŧ, āĻāĻŋāύā§āϤ⧠āϏāĻŋāĻā§āϰā§āĻāĻā§āϞ⧠āĻāĻāĻāĻŋ āĻĄā§āĻĄāĻŋāĻā§āĻā§āĻĄ āϏāĻŋāĻā§āϰā§āĻ āϏā§āĻā§āϰ (āĻŦāĻž āĻā§āϞāĻžāĻāĻĄ āĻĒā§āϰā§āĻāĻžāĻāĻĄāĻžāϰā§āϰ āϏāĻŋāĻā§āϰā§āĻ āĻŽā§āϝāĻžāύā§āĻāĻžāϰ) āĻĨā§āĻā§ āĻāϏ⧠āĻāĻŦāĻ āĻā§āĻŦāϞ āϰāĻžāύāĻŋāĻ āϏāĻžāϰā§āĻāĻŋāϏāĻā§āϞā§āĻ āϏā§āĻā§āϞ⧠āĻĒāĻĄāĻŧāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāĻŋāĻŽ āĻāϰāĻ āĻāĻžāĻāĻ āĻĒāĻžāϰāĻŽāĻŋāĻļāύ āĻĻā§āϝāĻŧ: āĻā§āĻŦāϞ āĻŦā§āϝāĻžāĻāĻā§āϰāĻžāĻāύā§āĻĄ āĻāĻŦ SMTP āĻā§āϰā§āĻĄā§āύāĻļāĻŋāϝāĻŧāĻžāϞ āĻĒāĻĄāĻŧāĻŦā§, āĻāĻŦāĻ āĻā§āĻŦāϞ webhook āĻšā§āϝāĻžāύā§āĻĄāϞāĻžāϰ webhook secret āĻĒāĻĄāĻŧāĻŦā§āĨ¤
āĻā§āύ⧠āĻā§ āĻāĻā§āϏāĻĒā§āĻ āĻšāϞ⧠(āĻāĻĻāĻžāĻšāϰāĻŖ: āĻāĻāĻāĻŋ āϏā§āĻā§āϰāĻŋāύāĻļāĻ API āĻā§ āĻĻā§āĻāĻžāϝāĻŧ), āϤāĻžāĻĻā§āϰ āĻĢāĻŋāĻā§āϏāĻĄ āĻĒā§āϞā§āĻŦā§āĻ āĻāĻā§:
- āĻāĻā§āϏāĻĒā§āĻ āĻšāĻāϝāĻŧāĻž āĻā§ āĻ āĻŦāĻŋāϞāĻŽā§āĻŦā§ āϰāĻŋāĻā§āĻ āĻāϰ⧠āĻāĻŦāĻ āϏāĻŽā§āĻĒāϰā§āĻāĻŋāϤ āϏāĻŋāĻā§āϰā§āĻ āϰā§āĻā§āĻ āĻāϰā§āύāĨ¤
- āĻāĻā§āϏāĻĒā§āĻāĻžāϰā§āϰ āϏāĻŽāϝāĻŧāĻāĻžāϞā§āϰ āĻŽāϧā§āϝ⧠āϏāύā§āĻĻā§āĻšāĻāύāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āϞāĻāĻā§āϞ⧠āĻā§āĻāĻā§āύāĨ¤
- āύāϤā§āύ āĻā§āϝāĻžāϞ⧠āĻĒā§āϤ⧠āϏāĻžāϰā§āĻāĻŋāϏāĻā§āϞ⧠āĻĒā§āύāϰāĻžāϝāĻŧ āĻĄāĻŋāĻĒā§āϞāϝāĻŧ āĻāϰā§āύāĨ¤
- āĻā§ āĻāĻā§āĻā§ āϤāĻž āĻĄāĻā§āĻŽā§āύā§āĻ āĻāϰā§āύ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻāĻžāϰā§āĻĄāϰā§āĻāϞ āϝā§āĻ āĻāϰā§āύ (āϝā§āĻŽāύ pre-commit āϏā§āĻā§āϝāĻžāύ)āĨ¤
āϞā§āĻāĻžāϞ āĻāĻžāĻ āϏāĻšāĻ āϰāĻžāĻāϤā§, āϤāĻžāϰāĻž āĻāĻāύ⧠āĻĒā§āϰā§āĻĄ āϏāĻŋāĻā§āϰā§āĻ āĻļā§āϝāĻŧāĻžāϰ āĻāϰ⧠āύāĻžāĨ¤ āĻĄā§āĻāϰāĻž āϏā§āϝāĻžāύā§āĻĄāĻŦāĻā§āϏ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§, āĻāĻŦāĻ āϝāĻĻāĻŋ AppMaster-āϰ āĻŽāϤ⧠no-code āĻā§āϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§, āϤāĻžāϰāĻž dev, staging, āĻāĻŦāĻ prod-āĻāϰ āĻāύā§āϝ āĻāϞāĻžāĻĻāĻž āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ āĻā§āϝāĻžāϞ⧠āϏāĻāϰāĻā§āώāĻŖ āĻāϰ⧠āϝāĻžāϤ⧠āĻāĻāĻ āĻ ā§āϝāĻžāĻĒ āϞāĻāĻŋāĻ āϏāĻŦ āĻāĻžāϝāĻŧāĻāĻžāϝāĻŧ āύāĻŋāϰāĻžāĻĒāĻĻā§ āĻāϞā§āĨ¤
āĻĒāϰāĻŦāϰā§āϤ⧠āϧāĻžāĻĒ: āĻāĻĒāύāĻžāϰ āĻāϝāĻŧāĻžāϰā§āĻāĻĢā§āϞā§āϤ⧠āĻāĻāĻŋ āĻĒā§āύāϰāĻžāĻŦā§āϤā§āϤāĻŋāĻŽā§āϞāĻ āĻāϰā§āύ
āĻā§āĻĒāύ āύāĻŋāϝāĻŧā§ āĻāĻžāĻāĻāĻžāĻā§ āĻšāĻžāĻāĻāĻŋāύā§āϰ āĻŽāϤ⧠āĻāĻāϰāĻŖ āĻāϰā§āύāĨ¤ āĻĒā§āϰāĻĨāĻŽāĻŦāĻžāϰ āĻāĻāĻž āĻāĻāĻŋāϞ āĻŽāύ⧠āĻšāĻŦā§, āĻĒāϰ⧠āϰā§āĻāĻŋāύ āĻšāϝāĻŧā§ āϝāĻžāĻŦā§āĨ¤
āĻļā§āϰ⧠āĻāϰā§āύ āĻāĻāĻāĻŋ āϏāĻšāĻ āϏāĻŋāĻā§āϰā§āĻ āĻŽā§āϝāĻžāĻĒ āϞāĻŋāĻā§:
- āϏāĻŋāĻā§āϰā§āĻāĻāĻŋ āĻā§ (API key, SMTP password, webhook secret)
- āĻā§āĻĨāĻžāϝāĻŧ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšāϝāĻŧ (āϏāĻžāϰā§āĻāĻŋāϏ, āĻāĻŦ, āĻŽā§āĻŦāĻžāĻāϞ āĻ ā§āϝāĻžāĻĒ, āĻā§āύā§āĻĄāϰ āĻĄā§āϝāĻžāĻļāĻŦā§āϰā§āĻĄ)
- āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻā§ āĻā§āĻĨāĻžāϝāĻŧ āϏā§āĻā§āϰ āĻāϰāĻž āĻāĻā§ (dev, staging, prod)
- āĻā§ āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠(āĻŽāĻžāύā§āώ, CI/CD, āĻā§āĻŦāϞ āϰāĻžāύāĻāĻžāĻāĻŽ)
- āĻā§āĻāĻžāĻŦā§ āϰā§āĻā§āĻ āĻāϰāĻŦā§āύ (āϧāĻžāĻĒ āĻāĻŦāĻ āĻāĻŋ āĻŽāύāĻŋāĻāϰ āĻāϰāĻŦā§āύ)
āĻāϰāĻĒāϰ, āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āϏā§āĻā§āϰā§āĻ āĻĒā§āϝāĻžāĻāĻžāϰā§āύ āĻŦāĻžāĻā§āύ āĻāĻŦāĻ āϏā§āĻāĻŋ āĻŽā§āύ⧠āĻāϞā§āύāĨ¤ āϏāĻā§āĻāϤāĻŋ āĻā§āϝāĻŧāĻžāϰāĻĢā§āϞ āĻā§āĻļāϞā§āϰ āĻā§āϝāĻŧā§ āĻŦā§āĻļāĻŋ āĻāĻžāĻā§ āϞāĻžāĻā§āĨ¤ āĻāĻĻāĻžāĻšāϰāĻŖ: āĻĄā§āĻāϰāĻž āϞā§āĻāĻžāϞ āϏāĻŋāĻā§āϰā§āĻ āϏā§āĻā§āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§, āϏā§āĻā§āĻāĻŋāĻ āĻŽā§āϝāĻžāύā§āĻāĻĄ āϏāĻŋāĻā§āϰā§āĻāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϏā§āĻŽāĻŋāϤ āĻ ā§āϝāĻžāĻā§āϏā§āϏāϏāĻš, āĻāĻŦāĻ āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύ āĻāĻāĻ āĻŽā§āϝāĻžāύā§āĻāĻĄ āϏāĻŋāĻā§āϰā§āĻāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāϰāĻ āĻāĻĄāĻŧāĻž āĻ āĻĄāĻŋāĻ āϏāĻšāĨ¤
āϰā§āĻā§āĻļāύā§āϰ āϏāĻŽāϝāĻŧāϏā§āĻā§ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻā§āĻ āĻāύāϏāĻŋāĻĄā§āύā§āĻ āĻĒā§āϞā§āϝāĻžāύ āϝā§āĻ āĻāϰā§āύ āϝāĻž āĻŽāĻžāύā§āώ āĻŦāĻžāϏā§āϤāĻŦā§ āĻĢāϞ⧠āĻāϰāĻŦā§:
- āĻāĻā§āĻ-āĻā§āĻāĻāĻŋāĻĒā§āϰā§āĻŖ āĻā§āĻā§āϞ⧠āĻā§āϝāĻžāϞā§āύā§āĻĄāĻžāϰ⧠āϰā§āĻā§āĻ āĻāϰā§āύ (āĻāĻŦāĻ āϏā§āĻāĻžāĻĢ āĻĒāϰāĻŋāĻŦāϰā§āϤāύā§āϰ āĻĒāϰ⧠āĻ āĻŦāĻŋāϞāĻŽā§āĻŦā§)āĨ¤
- āϞāĻŋāĻ āϧāϰ⧠āύāĻŋāύ: āϰāĻŋāĻā§āĻ, āϰāĻŋāĻĒā§āϞā§āϏ, āĻāĻŦāĻ āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰā§āύ āĻā§āϰāĻžāĻĢāĻŋāĻ āĻĒā§āύāϰā§āĻĻā§āϧāĻžāϰ āĻāϰā§āĨ¤
- āĻā§ āĻāĻāύ āĻā§ āϰā§āĻā§āĻ āĻāϰā§āĻā§ āϤāĻž āϞāĻ āĻāϰā§āύāĨ¤
- āĻŦā§āϞāĻžāϏā§āĻ āϰā§āĻĄāĻŋāϝāĻŧāĻžāϏ āĻā§āĻ āĻ āĻŋāĻ āĻāϰā§āύ (āĻĒā§āĻŽā§āύā§āĻ, āĻāĻŽā§āĻāϞ āϏā§āύā§āĻĄāĻŋāĻ, āĻāϝāĻŧā§āĻŦāĻšā§āĻ)āĨ¤
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ AppMaster (appmaster.io) āĻĻāĻŋāϝāĻŧā§ āĻŦāĻžāύāĻžāύ, āĻĒā§āϰāĻžāĻāĻā§āĻ āĻā§āĻā§āϞ⧠āϏāĻžāϰā§āĻāĻžāϰ-āϏāĻžāĻāĻĄ āĻāύāĻĢāĻŋāĻā§ āϰāĻžāĻā§āύ āĻāĻŦāĻ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ āĻ āύā§āϝāĻžāϝāĻŧā§ āĻĄāĻŋāĻĒā§āϞāϝāĻŧ āĻāϰā§āύ āϝāĻžāϤ⧠āĻāϝāĻŧā§āĻŦ āĻ āĻŽā§āĻŦāĻžāĻāϞ āĻŦāĻŋāϞā§āĻĄāĻā§āϞāĻŋāϤ⧠āĻā§āĻĒāύ āĻāĻŽāĻŦā§āĻĄ āύāĻž āĻšāϝāĻŧāĨ¤ āϤāĻžāϰāĻĒāϰ āĻāĻāĻŦāĻžāϰ āϏā§āĻā§āĻāĻŋāĻ āĻĻāĻŋāϝāĻŧā§ āĻĒā§āϰ⧠āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻž āĻĒāϰā§āĻā§āώāĻž āĻāϰā§āύ: āĻāĻāĻāĻŋ āĻā§ āϰā§āĻā§āĻ āĻāϰā§āύ āĻāύā§āĻĄ-āĻā§-āĻāύā§āĻĄ (āϏā§āĻā§āϰ āĻāĻĒāĻĄā§āĻ, āϰāĻŋāĻĄāĻŋāĻĒā§āϞāϝāĻŧ, āĻā§āϝāĻžāϰāĻŋāĻĢāĻžāϝāĻŧ, āĻĒā§āϰāĻžāύ⧠āĻā§ āϰāĻŋāĻāĻžāϝāĻŧāĻžāϰ)āĨ¤ āĻāĻāĻŦāĻžāϰ āĻĒā§āϰāĻŽāĻžāĻŖāĻŋāϤ āĻšāϞā§, āĻĒāϰā§āϰ āϏāĻŋāĻā§āϰā§āĻā§ āĻāĻāĻ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻž āĻĒā§āύāϰāĻžāĻŦā§āϤā§āϤāĻŋ āĻāϰā§āύāĨ¤
āĻĒā§āϰāĻļā§āύā§āϤā§āϤāϰ
A secret is any value that proves identity or grants access, like API keys, database passwords, SMTP logins, and webhook signing secrets. Config is a value that can be public without harm, like timeouts, feature flag names, or a public site base URL.
If a value would cause damage when copied from a screenshot or a repo, treat it as a secret.
Use separate secrets to keep the blast radius small. If a dev laptop, test server, or staging app leaks a key, you donât want that key to also unlock production.
Separate environments also let you use safer permissions in dev and staging, and stricter, auditable access in production.
Assume anything compiled, bundled, exported, or uploaded can be copied and inspected later. Keep secrets out of source code and out of build-time variables, and inject them at runtime through environment variables or a secret manager.
If you can swap a secret without rebuilding the app, youâre usually on the safer path.
A local .env file is fine for personal development if it never enters version control and never gets baked into images or artifacts. Put it in ignore rules, and avoid sharing it through chat, tickets, or zip files.
For staging and production, prefer protected environment settings or a secret manager so you donât rely on files traveling around.
Donât put private keys, SMTP passwords, database credentials, or webhook signing secrets in any client app. If the code runs on a user device or in a browser, assume attackers can extract values from it.
Instead, route sensitive actions through your backend so the secret stays server-side and the client only sends a request.
Design rotation to be a configuration change, not a code change. Store secrets outside the codebase, redeploy services to pick up new values, and keep a clear owner and reminder cadence for each key.
When possible, allow a short overlap where both old and new secrets work, then retire the old one after traffic confirms the change.
Verify every webhook request on the server using a secret that never leaves the backend. Compute the expected signature from the raw request body exactly as received and compare it safely before you parse and process the event.
Use different webhook endpoints and secrets per environment so test events canât trigger production actions.
Avoid printing secrets, full headers, or full payloads into logs, build output, or crash reports. If you need troubleshooting, log metadata like event IDs, status codes, and masked values, not credentials.
Treat any pasted log in a ticket or chat as potentially public and redact before sharing.
Staging should mimic production behavior but remain isolated. Use separate vendor accounts or projects where you can, separate SMTP credentials, separate payment keys, and separate webhook secrets.
Add a guardrail so staging cannot read production secret stores or databases, even if someone misconfigures a deployment.
In AppMaster, keep sensitive values in environment-specific runtime settings for each deployment target, not in UI screens or client-side configuration. That helps ensure generated web and mobile builds carry only public settings, while secrets stay on the server.
A good practice is to keep the same variable names across dev, staging, and prod and only change the values per environment.


