במחשוב, המונח סטאק (Stack; בתרגום חופשי "מקבץ תוכנות", Software Stack, או "מקבץ פתרונות", Solution Stack) מתייחס לאוסף של רכיבי תוכנה וטכנולוגיות הדרושים על מנת ליצור פלטפורמה שלמה כך שלא נדרשות עבורה תוכנות נוספות על מנת לתמוך ביישומים שבה.[1] לדוגמה, בעת יצירת יישום רשת, אדריכל התוכנה מגדיר את הסטאק של היישום בבחירת שרת האינטרנט שעליו יאוכסן היישום, מסד הנתונים שבו יאוכסנו נתוניו, שפת התכנות בה יפותח היישום ומערכות ההפעלה עליהן ירוצו אותם הרכיבים. בדרך כלל, הרכיבים שמשמשים את הסטאק מפותחים באופן עצמאי על ידי מפתחים שונים ללא קשר ביניהם.
חלק מהרכיבים/תת-מערכות של מערכת סטאק כוללת, נבחרים יחד לעיתים קרובות מספיק כך שאותה קבוצת רכיבים מכונה בשם המייצג את השלם, במקום שמות שונים לכל חלק בסטאק. בדרך כלל, השם של אותו הסטאק מיוצג בראשי תיבות המייצגים את הרכיבים הבודדים המרכיבים את הסטאק. (לדוגמה: MERN - שמו של הסטאק הכולל בתוכו את פלטפורמות MongoDB, ExpressJS, React ו-NodeJS ומורכב מראשי התיבות של הרכיבים שבו)[2]
לפיכך, המונח פול סטאק מתאר את כל רכיבי היישום באשר הם והטכנולוגיות בהן הם פועלים, ומפתח פול סטאק הוא מפתח תוכנה המיומן בפיתוח תוכנה עבור כל אותן שכבות היישום. במובן המצומצם יותר של המונח, ניתן להגדיר מפתח פול סטאק כמפתח תוכנה או מהנדס תוכנה שעובד גם בצד הלקוח וגם בצד השרת של אתר אינטרנט, יישום רשת, יישום מחשב או מובייל.[3] משמעות הדבר היא שהם יכולים להוביל בניית פלטפורמות הכוללות מסדי נתונים, אתרים נגישים למשתמש ועבודה עם לקוחות כבר במהלך שלב התכנון של פרויקטים.
מבחינה היסטורית, המונח "סטאק" כלל במקור גם רכיבי חומרה שנועדו להיכלל במסגרת הסופית, תוך שילוב בין החומרה והתוכנה בשכבות תמיכה.[4][5]