3 פרויקטים מעניינים לפיתוח צד שרת ב Python
רוצים להתאמן על פיתוח צד שרת בפייתון? הנה 5 הצעות לפרויקטים שבטוח יהיה לכם מעניין לכתוב.
1. מנוע שיחה עם Chat GPT
מכירים את הממשק של Chat GPT נכון? יופי עכשיו בואו נבנה אחד. מתחילים עם טופס ששולח הודעה לשרת שלכם, השרת שולח את ההודעה ל ChatGPT ועונה לדפדפן עם התשובה.
בשלב שני הוסיפו תמיכה ל Streaming, ושימו לב שתצטרכו לטפל ב Streaming גם בתקשורת מהשרת שלכם ל ChatGPT וגם מהשרת שלכם לדפדפן.
בשלב שלישי הוסיפו שיחות ארוכות יותר. שימרו את ההודעות הישנות בבסיס נתונים ושילחו ל Chat GPT את כל היסטוריית השיחה כדי לקבל את ההודעה הבאה. מתקדמים יכולים להוסיף רשימה של שיחות שמתנהלות במקביל, כולן יישמרו בבסיס הנתונים עם אפשרות לעבור ביניהן דרך תפריט ניווט בעמוד.
שימו לב שאנחנו מתמקדים כאן בקוד צד שרת ולכן לא צריך לבזבז זמן על CSS או על הממשק. יש מספיק עבודה גם בלעדיהם.
2. טורניר איקס עיגול
משחק איקס עיגול הוא די פשוט לבנייה - יש 9 כפתורים וכל כפתור שולח הודעה לשרת עם מזהה הכפתור שנלחץ. ככה יעבוד הטורניר:
שחקנים נכנסים לדף הבית ושם נרשמים ועוברים לחדר המתנה.
ברגע שיש שני שחקנים בחדר המתנה השרת שולח לשניהם הודעה שמשחק מתחיל ומעביר אותם למסך משחק.
מסך משחק מציג גריד של 9 כפתורים (3 על 3). כל שחקן בתורו לוחץ על כפתור וגורם לשינוי המספר על הכפתור. הלחיצה נשמרת בבסיס הנתונים בשרת.
ברגע שיש מנצח שני השחקנים חוזרים למסך הבית שם הם רואים את רשימת המשחקים שבוצעו ואת המנצח בכל משחק.
אפשר להיכנס למשחק ישן ולראות "פס זמן" באמצעותו אפשר לצפות במשחק בהילוך איטי, כלומר מזיזים את הסליידר כדי לזוז קדימה ואחורה בזמן (זכרו המשחק כבר נגמר).
בשביל האינטרקטיביות תרצו להשתמש ב Web Sockets ואין פה בעיה כי FastAPI תומך בהם: https://fastapi.tiangolo.com/advanced/websockets/#in-production
3. שליחת קבצים גדולים במייל
מכירים את WeTransfer? יופי, עכשיו בואו נבנה אחד:
במסך הבית אפשר להעלות קבצים (עד 2 ג'יגה בחינם).
בוחרים למי לשלוח ולוחצים Transfer כדי לשלוח מייל עם קישור לקבצים.
אחרי שבוע הקבצים נמחקים מהשרת (בשביל הבדיקה תמחקו אחרי 10 דקות רק לראות שהכל עובד).
בבסיס הנתונים תרצו לשמור מידע על הקבצים ששלחתם והנמענים שקיבלו אותם. משתמשים יוכלו להיכנס ולהיזכר איזה קבצים הם שלחו למי והאם אותם נמענים הורידו את הקבצים.
שימו לב להגדרות ברמת השרת כדי לאפשר העלאה של קבצים גדולים והעלאת הקבצים ב Ajax כדי לאפשר זרימה טובה בקוד צד לקוח. בשלב שני תוכלו להעלות את הקבצים ל S3.
את המייל אפשר לשלוח דרך Mailgun (יותר קל) או דרך AWS (קצת יותר מאתגר).