מקרה בוחן
Snapstems: גוררים שיר, מקבלים בחזרה את השירה, את התופים ואת הבס כערוצים נפרדים
שירות ווב בתשלום שמפרק שיר לחלקים שלו. את ההפרדה עושה מודל קוד פתוח; אני בניתי את כל מה שמסביב, ואני מפעיל את זה לבד.
התפקיד שלי
זה מוצר שלי. אני תכננתי אותו, אני כתבתי אותו ואני מפעיל אותו, לבד.
המצב
מפיקים, דיג׳יים, מפעילי קריוקי ואנשים שעושים רמיקסים צריכים את החלקים של שיר בנפרד: השירה לבד, התופים לבד, המוזיקה בלי השירה. מודל קוד פתוח בשם Demucs עושה את זה טוב, אבל מישהו צריך להריץ אותו. Snapstems שם אותו מאחורי דף אינטרנט: גוררים שיר, מחכים, מורידים את החלקים. העבודה הייתה כל מה שמסביב למודל: העלאות, חשבונות, קרדיטים, תשלום, ועבודות שנכשלו.
האילוץ
שיר הוא קובץ גדול, והפרדה לוקחת יותר מדי זמן בשביל שדף אינטרנט יחכה לה. קובץ של עד 100 MB עובר מהדפדפן ישר לאחסון, ואף פעם לא דרך השרת שלי. השרת מתחיל את העבודה ועונה מיד; שירות המודל קורא בחזרה כשהוא מסיים. הפרדה שעדיין רצה אחרי 10 דקות מבוטלת, והקרדיטים חוזרים.
כל הפרדה עולה לי כסף, ולכן אסור שקרדיט ילך לאיבוד או ינוצל פעמיים. הוא נלקח לפני שהעבודה מתחילה ומוחזר אם היא נכשלת. תשלום מוסיף קרדיטים פעם אחת לכל הזמנה, גם כשהודעת התשלום מגיעה פעמיים.
הפרדות חינם מנוצלות לרעה. חשבון חדש מקבל 3, ורק אחרי אישור האימייל. כל תיבת מייל אמיתית יכולה לקבל אותן פעם אחת, כתובות מ-9,963 דומיינים של אימייל חד-פעמי לא מקבלות כלום, ותקרה יומית מגבילה את הסך הכול.
מה בניתי
השירות חי בכתובת snapstems.com. כל מה שמופיע למטה נמצא היום בקוד; מה שעדיין לא חי מפורט בהמשך.
- ארבעה סוגי הפרדה: 4 חלקים (שירה, תופים, בס, כל השאר), 6 חלקים (מוסיף גיטרה ופסנתר), גרסה באיכות גבוהה יותר, וקריוקי. שישה פורמטי אודיו בכניסה; MP3, WAV או FLAC ביציאה.
- גוררים קובץ או מדביקים קישור ישיר. אחרי ההפרדה הדף מראה אילו כלים באמת נמצאים בשיר, ואתם מסמנים מה שאתם רוצים ומורידים את זה כקובץ zip אחד.
- חשבונות עם שלב אישור אימייל משלי, היסטוריית הפרדות, דף חיוב ומחיקת חשבון, ב-10 שפות, כולל עברית וערבית.
- פנקס קרדיטים: חבילה אחת ושתי תוכניות חודשיות שנמכרות דרך Polar, הודעות תשלום שנבדקות לפי חתימה, והחזרים כספיים שלוקחים את הקרדיטים בחזרה.
- אוטוטיון חינמי לערוץ השירה, שרץ בדפדפן.
- צ׳אט באתר שמותר לו לענות רק מתוך רשימה קבועה של עובדות שפורסמו.
- החלקים השקטים: אודיו שהועלה נמחק אחרי 7 ימים, וכל כישלון כותב שורת לוג אחת בלי האימייל של המשתמש.
המספרים
- 4סוגי הפרדה
- 10שפות ממשק
- 0ספריות קוד חיצוניות בשרת
- 20מסלולי שרת מאחורי הדף
- 306בדיקות, ב-5 סקריפטים של בדיקה עצמית
- 55קומיטים, מ-7 ביולי עד 12 בנובמבר 2026
כל מספר למעלה נספר מהקבצים ומההיסטוריה של הפרויקט עצמו ב-12 בנובמבר 2026. אין בדף הזה מספר משתמשים, אין מספר לקוחות ואין הכנסות.
מה הדף הזה מראה, ומה לא
זה מוצר שבניתי ושאני מפעיל בעצמי, והוא בתחילת הדרך. אין בדף הזה שום נתון שימוש: הוא מראה שהתוכנה קיימת ועונה, לא שאנשים משלמים עליה. מודל ההפרדה, Demucs, הוא קוד פתוח ולא עבודה שלי; הוא רץ על שירות מתארח (Replicate).
חלק ממנו בנוי ולא חי. אפליקציית הטלפון כתובה ולא נמצאת בחנויות. רוב הסטודיו של ״לשיר על זה״ נמצא בקוד, וב-12 בנובמבר היה בדף החי רק השלב הראשון שלו. תשלום לכל הפרדה שתוכנה מבצעת לבדה רץ עד היום רק עם כסף של בדיקות. תשלומים בכרטיס אשראי מחוברים בקוד, ואני לא מציג כאן שום מכירה אמיתית.
איך זה נבדק: חמישה סקריפטים של בדיקה עצמית ובדיקת אודיו אחת, שמורצים ידנית. שום דבר לא מריץ אותם אוטומטית בכל שינוי. 51 מתוך 55 הקומיטים נושאים שורת מחבר שותף של AI. ככה אני כותב קוד, ואני מעדיף להגיד את זה כאן.
מה הייתי עושה אחרת: להכניס את הבדיקות ואת הלוגים לפני שפותחים את הדלתות. הקומיט הראשון הוא מ-7 ביולי 2026. התיקון למייל האישור, שבלעדיו אי אפשר היה להשלים הרשמה באימייל, הוא מ-21 באוקטובר, וכישלונות התחילו להיכתב ללוגים רק מ-3 בנובמבר.
הסטאק
- Python
- Replicate
- Demucs
- Firebase Auth
- Firestore
- Cloud Run
- Cloud Storage
- Polar
לראות
רוצים משהו כזה?
ספרו לי מה אתם בונים, או מה אתם עדיין עושים ידנית, ואני אגיד לכם איך הייתי ניגש לזה. בלי התחייבות.