Stundenplan Leitfaden Lesson Scheduler Playbook
Willkommen! Stell dir diesen Leitfaden wie ein Bilderbuch vor, nur für Stundenplan-Helden. Ich erkläre dir alles in super einfachen Worten: Wo du klicken musst, was jede Schaltfläche macht und was danach passiert.
Tipps: Nutze die linke Leiste oder springe mit den blauen Links zu dem Teil, den du gerade brauchst.
Hi there! Think of this guide as a friendly comic that shows you every button to press. No tech-speak, just clear steps so you always know what happens next.
Use the left menu or the blue links to hop to whatever topic you need.
Zeige die Landingpage mit Navigation und den Buttons „Login“ sowie „Kostenlos starten“.
Show the landing page with the navigation bar and the “Login / Start Free” buttons.
1 · Einstieg & Konto 1 · Getting Started & Accounts
Alles beginnt auf der Startseite. Stell dir vor, du öffnest ein buntes Buch: Oben rechts sind nur zwei Knöpfe, „Login“ und „Kostenlos starten“.
- Neues Konto erstellen: Klicke „Kostenlos starten“, gib Name, Mailadresse und ein geheimes Passwort ein. Öffne danach deine Mailbox und tippe auf den Bestätigungslink – erst dann darfst du weiter.
- Schon angemeldet? Drücke „Login“, gib Mail + Passwort ein und du landest direkt im Dashboard.
- Freunde einladen: Auf dem Dashboard findest du die Kachel „🔐 Registration Codes“. Hol dir dort Codes, die du verschicken kannst (kostenlos = 5 Stück, Supporter = 10, Premium = unendlich).
- Nächster Schritt: Folge einfach der kleinen To-do-Liste auf dem Dashboard: zuerst Saison auswählen, dann Verfügbarkeit eintragen, dann Registrierungslink verschicken.
The adventure starts on the home page. Think of two friendly buttons in the top-right corner: “Login” and “Start Free”.
- Create a new account: Click “Start Free”, fill in your name, email, and a secret password, then open your inbox and tap the confirmation link.
- Already have one? Hit “Login”, enter your details, and the dashboard pops up immediately.
- Invite other teachers: On the dashboard tap the “🔐 Registration Codes” card. Free plan = 5 codes, Supporter = 10, Premium = endless.
- Next steps: Follow the mini checklist on the dashboard: pick your season, add availability, send your registration link.
Screenshot vom Login-Dialog oder Registrierungsformular einfügen.
Add a screenshot of the login dialog or registration form.
2 · Dashboard & Saisons 2 · Dashboard & Seasons
Stell dir jede Saison wie ein Schulheft vor. Du arbeitest immer nur in einem Heft gleichzeitig – oben im Dashboard siehst du, welches es ist.
- Neues Heft anlegen: Drücke auf die Kachel „🗓️ Seasons“, tippe einen Namen wie „Frühling 2025“ ein und speichere. Danach klickst du auf „Switch to This“, damit dieses Heft aktiv ist.
- Warum das wichtig ist: Alle Schüler, Zeiten und Dokumente gehören nur zu dem Heft, das oben aktiv ist. Wenn du die falsche Saison geöffnet hast, siehst du auch die falschen Daten.
- Aufräumen: „Clear schedule“ leert nur den Stundenplan, Schüler und Verfügbarkeit bleiben erhalten. „Duplicate“ erstellt ein frisches Heft mit denselben Schülern und Time-Slots. Löschen geht nur, wenn das Heft gerade nicht aktiv ist.
- Unterlagen hochladen: In „📎 Season Resources“ kannst du PDFs ablegen (z. B. Infobriefe). Sie tauchen automatisch im Elternformular und im Elternportal auf.
Each season is like a folder. You can only edit one folder at a time, and the blue banner on the dashboard tells you which one is open.
- Create or switch: Tap the “🗓️ Seasons” card, type a name (e.g. “Spring 2025”), save, then hit “Switch to This”.
- Remember: Students, availability, groups, and documents live inside the active folder only. Switch folders before you make changes.
- Housekeeping: “Clear schedule” removes the timetable but keeps students and slots. “Duplicate” makes a fresh folder with the same students and times so you can plan a new term quickly. Delete is available only for inactive folders.
- Season resources: Upload PDFs inside “📎 Season Resources” and parents will see them during registration and in their portal.
Zeige den Season-Bildschirm mit der Liste aller Saisons.
Show the Seasons screen with the list of all seasons.
3 · Verfügbarkeit & Pausen 3 · Availability & Break Settings
Hier sagst du der App ganz genau, wann du unterrichten kannst und wann du eine Pause brauchst. Stell dir vor, du malst deine Woche mit bunten Bausteinen.
- Pausen einstellen: Oben siehst du die Felder „☕ Break Settings". Wähle, nach wie vielen Minuten du eine Pause brauchst und wie lang sie sein darf. Du kannst auch einen kleinen „Puffer" zwischen Schülern einplanen.
- Arbeitsprozent & Gehalt: Im Bereich „💼 Work Percentage" kannst du deine wöchentlichen Arbeitsstunden für 100% und dein Jahresgehalt eingeben. Der Stundenplan zeigt dann automatisch dein Arbeitspensum und monatliches Gehalt basierend auf deinen tatsächlichen Unterrichtsstunden. Perfekt um zu sehen, ob du 50% oder 80% arbeitest! Du kannst auch die Option „13 Gehälter pro Jahr" aktivieren.
- Zeiten eintragen: Nutze entweder den KI-Block („Montag 14–18 Uhr in Raum 3") oder klicke auf „➕ Add Availability" und trag Tag, Startzeit, Endzeit und Ort ein.
- Alle Slots im Blick: Unter der Tabelle kannst du einzelne Slots löschen, falls sich dein Stundenplan ändert.
This page is your weekly calendar. You tell the app "I can teach here, I rest there".
- Set break rules: Use the "☕ Break Settings" boxes to decide when you need a break and how long it should last. Add a buffer if you like a few calm minutes between lessons.
- Work Percentage & Salary: In the "💼 Work Percentage" section, you can enter your weekly work hours for 100% and your yearly salary. The schedule will then automatically show your work percentage and monthly salary based on your actual teaching hours. Perfect to see if you're working 50% or 80%! You can also enable the "13 salaries per year" option.
- Add teaching slots: Either describe your day in the AI text box ("Tuesday 3-7pm, Downtown Studio") or press "➕ Add Availability" and fill the mini form.
- Edit anytime: The table lists all slots. Hit "Delete" to remove one if your plan changes.
Zeige den Verfügbarkeits-Screen mit einem ausgefüllten Slot.
Show the availability screen with a filled slot.
4 · Anmeldung & Links 4 · Intake & Registration Links
Jetzt lädst du Eltern ein – ganz bequem über einen Link:
- Link bauen: Öffne „🔗 Registration Links“, stell (wenn du möchtest) ein Ablaufdatum oder eine maximale Anzahl ein und klicke auf „Generate Link“. Eine Kopie landet sofort in deinem Postfach.
- Link verschicken: Sende ihn per E-Mail, Messenger oder sogar als QR-Code herum.
- Formular aus Sicht der Eltern: Sie geben den Namen des Kindes an, wählen 30/40/50/60 Minuten, tragen Kontaktinfos ein und klicken bei deinen Slots auf „Select Times“, damit du ihre Wunschzeiten kennst. Hochgeladene PDFs erscheinen in der Box „Helpful Resources“.
- Automatische Schritte: Das Kind landet direkt in deiner Schülerliste und die Eltern erhalten ihren persönlichen Portal-Link.
Wenn du lieber selbst ausfüllst, geh zu „Students → Add Student“ und trag alles manuell ein.
Invite parents with a single friendly link:
- Create it: Visit “🔗 Registration Links”, optionally set an expiry or max number, then press “Generate Link”. The system emails it to you.
- Share it: Send the link however you like—email, chat, printed flyer.
- Parents’ view: They enter the student’s name, pick a lesson length, add their contact info, and tap “Select Times” on every slot that works. Your uploaded PDFs appear automatically.
- Auto-magic: The student shows up in your list instantly and the parents receive their personal portal link.
Need to add someone by hand? Use “Students → Add Student”.
Screenshot-Idee: Seite „Registration Links“ mit Button „Generate Link“.
Screenshot idea: “Registration Links” page showing the “Generate Link” button.
5 · Schülerverwaltung & Gruppen 5 · Student Management & Groups
Hier wohnen alle deine Schülerkarten – wie ein Stickeralbum.
- Oben siehst du Zahlen: Wie viele Schüler du hast, wie viele schon einen Termin haben und wie viele noch warten.
- Gruppen bauen: Drücke „Create Group“, hake zwei oder mehr Kinder an und leg die gemeinsame Dauer fest. Perfekt für Geschwister oder Band-Ensembles.
- Auto-Gruppenplanung: Sobald eine Gruppe existiert, sucht der Algorithmus beim Auto-Schedule nach einem Slot, der für alle Mitglieder passt, und legt eine gemeinsame Lesson an (inkl. Ort & Pausenregeln).
- Listenansicht: Jede Zeile zeigt Name, Kontakt, Parent-Link (mit Kopier-Button), Anzahl ihrer Zeiten, Priorität und ob sie schon eingeplant sind.
- Priorität ändern: Wähle im Dropdown z. B. „Priority“, wenn ein Kind besonders wichtig ist, oder „Locked“, wenn du den Slot nicht verschieben möchtest.
- Bearbeiten: Klick auf den Schülernamen oder den „Edit“-Button, um Kontaktdaten oder Zeiten zu ändern. Mit „↶ Revert to Original Times“ holst du dir die Angaben aus der Registrierung zurück.
This page is your roster.
- Summary cards: Quickly see total students, who’s scheduled, and who still needs a slot.
- Create groups: Tap “Create Group”, pick the students, and choose their shared lesson length.
- Automatic group matching: Once a group exists, auto-scheduling looks for a time block that fits everyone and drops a single shared lesson (location + break rules respected).
- Row details: Every row shows name, parent contact, handy copy buttons for the parent links, number of availability slots, priority, and schedule status.
- Priority dropdown: Mark a student as “Priority” or “Locked” if you want them handled first or kept in place.
- Edit flow: Click the student to edit info, add slots, or revert to their original submission.
Zeige die Schülerliste mit hervorgehobenen Aktionen.
Show the students list with key actions highlighted.
6 · Terminplan & Drag & Drop 6 · Schedule Workspace
Hier bastelst du deinen Wochenplan – wie ein Magnetboard.
- Aktionen rechts: Knöpfe für „🤖 Auto-Schedule“, „↩️ Revert“, „📅 Export iCal“, „✉️ Send Confirmations“ und später „📢 Publish“.
- Auto-Schedule: Klick, Kaffee holen, zurückkommen – die App setzt Schüler selbstständig in freie Slots. Gelbe Hinweise zeigen, wenn etwas nicht passt.
- Drag & Drop: Ziehe Schülerkarten aus der „Unscheduled“-Liste in den passenden Tag oder verschiebe bestehende Termine. Solange du nicht veröffentlicht hast, ist alles beweglich.
- Manuell löschen: Ziehe eine Lesson zurück in die Warteliste, wenn sie wieder frei sein soll.
- Ansichten: Nutze oben die Buttons „Calendar View“ und „List View“, um die Darstellung zu wechseln.
This is your drag-and-drop playground.
- Action buttons: Use the right-hand panel for auto-scheduling, reverting, exporting, emailing, and later publishing.
- Auto schedule: Click once and let the app arrange lessons for you. Yellow cards tell you if someone still needs attention.
- Drag cards: Pull students from the waiting list into a day, or rearrange existing lessons until the week looks perfect.
- Switch views: Toggle between calendar and list layouts whenever you prefer a different look.
- Remove lessons: Drag a lesson back to the waiting area if the slot should become free again.
Zeige die Schedule-Seite mit Drag-&-Drop-Hinweis.
Show the schedule page highlighting drag-and-drop.
7 · Veröffentlichung & Kommunikation 7 · Publishing & Communications
Wenn alles gut aussieht, drücke die Knöpfe von oben nach unten:
- ✉️ Send Confirmations: Eine freundliche Sammelmail (und optional SMS) an alle Familien.
- 📢 Publish Schedule: Macht den Plan offiziell. Danach ist Drag & Drop aus.
- 🔗 Send Parent Links: Jede Familie bekommt ihren persönlichen Link automatisch zugeschickt.
- 🔒 Finalize: Optional. Schließt das Tauschen von Terminen.
Finish the plan with these steps:
- ✉️ Send Confirmations: Notify all families (email/SMS).
- 📢 Publish Schedule: Lock in the timetable so parents can see it.
- 🔗 Send Parent Links: Email each parent their unique link.
- 🔒 Finalize: Optional—turns off swaps for good.
Screenshot-Idee: Aktionsspalte nach dem Auto-Schedule.
Screenshot idea: action column after auto-scheduling.
8 · Elternportal & Swaps 8 · Parent Portal & Swaps
Jedes Kind bekommt einen geheimen Link für die Eltern.
- Was Eltern sehen: Den eigenen Termin, deine PDFs und – wenn erlaubt – andere Slots ohne Namen.
- Plätze tauschen: Sie klicken auf einen freien Slot, schreiben eine kurze Nachricht und schicken sie ab.
- Antwort geben: Die andere Familie erhält eine Mail mit „Annehmen“ oder „Ablehnen“. Bei „Annehmen“ tauscht das System die Zeiten automatisch.
- Bevor du veröffentlichst: Der Link zeigt einfach „Plan kommt bald“.
Each student has a private parent link.
- What parents see: Lesson time, shared PDFs, and any pending swap requests.
- Request swaps: Tap another slot, type a short note, and send.
- Replying: The other family gets an email with Accept/Decline buttons; accepting swaps the lessons instantly.
- Before publish: The page gently says the schedule isn’t ready yet.
Screenshot-Idee: Elternportal mit Swap-Button markieren.
Screenshot idea: parent portal with the swap button highlighted.
9 · Betrieb, Templates & Abos 9 · Maintenance, Templates & Billing
Zum Schluss noch deine Werkzeugkiste:
- Messaging Settings: Hier stellst du ein, ob SMS mitlaufen sollen und prüfst, ob E-Mails versendet werden.
- Message Templates: Schreibe einmal schöne Texte und nutze sie für alle zukünftigen Nachrichten.
- Registration Codes: Hol neue Einladungs-Codes für Kolleg:innen.
- Subscription: Upgrade zu Supporter oder Premium, wenn du mehr Heftchen oder SMS brauchst.
- Admin Panel: (Falls du Admin bist) Benutzer verwalten, Backups starten, Status prüfen.
This is your toolbox:
- Messaging settings: Toggle SMS and make sure email sending is ready.
- Message templates: Save reusable email/SMS wording.
- Registration codes: Generate invite codes for other teachers.
- Subscription: Upgrade to Supporter or Premium for extra power.
- Admin panel: (If available) manage users and backups.
Zeige z. B. die Messaging-Settings-Seite.
Show the messaging settings page.
FAQ – Häufige Fragen FAQ – Quick Answers
Keine Sorge, die App übernimmt den Großteil für dich:
- Registrierung: Sobald ein Elternteil das Formular abschickt, verschickt
EmailService::sendParentProfileLink()automatisch eine Bestätigungs-Mail mit dem persönlichen Elternlink. - Auto-Infos: Wenn du auf Send Confirmations klickst, gehen Sammelmails (und optional SMS) raus – du musst keine einzelnen Nachrichten schreiben.
- Swap-Anfragen: Eltern schicken Anfragen direkt im Portal, der
EmailServiceinformiert die Gegenseite automatisch. - Manuelle Mails: Falls du jemanden direkt anschreiben willst, nutze den Button „📧 Email Student“ auf der Schedule-Seite – das Formular ist schon ausgefüllt.
Du steuerst nur wann Mails verschickt werden (z. B. „Send Confirmations“ anklicken). Den Rest erledigt das System.
Denk an zwei verschiedene Türen:
➡ Registrierungstür (geteilt)
- Ort:
/registration-links - Du erstellst einen Link und schickst ihn an alle Eltern.
- Gleiches URL für alle, kann mehrere Einreichungen haben, optional mit Ablaufdatum.
- Beispiel:
https://yoursite.com/register/abc123xyz
➡ Elternportal-Tür (persönlich)
- Wird automatisch erzeugt, sobald ein Elternteil das Formular sendet.
- Einzigartig pro Familie & Saison, bleibt für immer gültig.
- Nur diese Familie darf hinein, nicht weitergebbar.
- Beispiel:
https://yoursite.com/parent/profile/student-xyz789-unique-token
Kompletter Flow
STEP 1: Du erstellst den Registrierungslink
├─ /registration-links öffnen
├─ Link anlegen (optional Limit/Ablauf)
└─ Ergebnis: https://yoursite.com/register/abc123xyz
↓
STEP 2: Du sendest DIESEN Link an alle Eltern
├─ Per Mail/SMS/Broadcast teilen
├─ Eltern A, B, C benutzen denselben Link
└─ Alle landen im gleichen Formular
↓
STEP 3: Eltern füllen das Formular aus
├─ Schüler- und Elterninfos
├─ Dauer auswählen
├─ Eigene Zeiten markieren
└─ Abschicken
↓
STEP 4: System erzeugt den individuellen Elternlink
├─ Legt den Schüler an
├─ Speichert Availability
├─ Erstellt einen ParentToken
└─ Beispiel: https://yoursite.com/parent/profile/UNIQUE-TOKEN
↓
STEP 5: Eltern sehen ihren persönlichen Link
├─ Direkt auf der Success-Seite
├─ Zusätzlich per E-Mail zugeschickt
└─ Sie behalten diesen Link für immer
↓
STEP 6: Jeder weitere Elternteil wiederholt Schritt 3–5
├─ Gleicher Registrierungslink
└─ Eigenen, neuen Profil-Link
Wichtige Dateien:
- Registrierungslink erstellen:
RegistrationLinkController.php - Formular:
/register/{token} - Einzigartiger Elternlink:
StudentRegistrationController.php(Zeilen 138–143) - Success-Seite:
student-registration/success.blade.php
Ja! So läuft es ab:
- Gruppe bauen: Im Bereich „Students“ klickst du auf „Create Group“, wählst die Schüler und definierst die gemeinsame Dauer.
- Auto-Schedule startet: Der Algorithmus sucht nach einem Slot, der bei allen markierten Zeiten passt – egal ob 2er-Gruppe oder komplette Klasse.
- Ein Termin für alle: Sobald ein passendes Fenster gefunden wird, erstellt das System genau eine Lesson, trägt alle Mitglieder ein und respektiert Location/Breakeinstellungen.
- Manuelle Steuerung: Du kannst die Gruppenkachel jederzeit per Drag & Drop verschieben oder zurück in „Unscheduled“ legen.
Perfekt für Ensembles, Band-Coaching oder parallele Schulstunden.
Übersicht der Abo-Stufen:
- 1 Saison – Läuft 90 Tage nach Erstellung ab
- 30 Schüler maximal
- 5 Einladungscodes
- 1 PDF-Upload möglich
- Keine SMS – nur E-Mail-Benachrichtigungen
- 10 Saisons – Laufen nie ab (solange Abo aktiv)
- 10 Einladungscodes
- Unbegrenzte PDF-Uploads
- Unbegrenzte Schüler
- Supporter-Badge
- Keine SMS
- Unbegrenzte Saisons
- Unbegrenzte Schüler
- Unbegrenzte Einladungscodes
- Unbegrenzte PDF-Uploads
- SMS-Benachrichtigungen über Twilio
- Supporter-Badge
Upgrade durchführen:
Klicke im Dashboard auf „💳 Subscription" und wähle dein gewünschtes Abo. Die Zahlung läuft sicher über Stripe.
Das System ist darauf ausgelegt, dir Zeit zu geben, Probleme zu lösen – du verlierst nicht sofort alles! 🛡️
Szenario 1: Zahlung schlägt fehl (z. B. abgelaufene Karte)
- Tag 1: Deine Zahlung wird von Stripe abgelehnt → Dein Status wird auf „past_due" gesetzt.
- Nächste ~30 Tage: Stripe versucht automatisch, die Zahlung erneut durchzuführen. Du behältst alle Funktionen während dieser Kulanzfrist (alle Saisons, Schüler, PDFs, SMS bleiben verfügbar).
- Nach 30 Tagen: Wenn die Zahlung immer noch nicht funktioniert, löscht Stripe dein Abo automatisch.
- Herabstufung: Das System stuft dich auf Free Tier herab und setzt ein „Herabstufungs-Datum". Ab diesem Moment beginnt der 90-Tage-Countdown für alle deine Saisons.
Szenario 2: Du kündigst dein Abo manuell
- Du klickst „Cancel": Dein Abo wird zur Kündigung vorgemerkt.
- Kulanzfrist: Du behältst alle Funktionen bis zum Ende deines aktuellen Abrechnungszeitraums (z. B. wenn du am 15. März kündigst und dein Abo am 30. März endet, behältst du alles bis zum 30. März).
- Abrechnungszeitraum endet: Stripe sendet eine „subscription.deleted"-Benachrichtigung.
- Herabstufung: Das System stuft dich auf Free Tier herab und setzt das Herabstufungs-Datum. Der 90-Tage-Countdown beginnt.
Szenario 3: Du reaktivierst dein Abo
Wenn du während der Kulanzfrist auf „Resume Subscription" klickst oder erneut ein Abo abschließt, wird das Herabstufungs-Datum gelöscht und alle deine Saisons bleiben unbegrenzt gültig. Du verlierst nichts!
Sehr gute Frage! Hier ist der genaue Ablauf:
Ausgangssituation:
- Du hattest Premium (unbegrenzte Saisons)
- Du hast 20 Saisons erstellt
- Du kündigst dein Abo oder die Zahlung schlägt dauerhaft fehl
Was passiert Schritt für Schritt:
- Während der Kulanzfrist: Du behältst alle 20 Saisons und kannst sie normal nutzen. Du kannst sogar weitere hinzufügen (solange du noch Supporter/Premium bist).
- Abrechnungszeitraum endet: Das System stuft dich auf Free Tier herab und setzt das „Herabstufungs-Datum" auf z. B. den 1. April 2025.
- 90-Tage-Countdown startet: Alle 20 Saisons laufen nun am 30. Juni 2025 ab (90 Tage nach dem 1. April).
- Kannst du neue Saisons erstellen? Nein. Free Tier erlaubt nur 1 Saison. Da du bereits 20 hast (über dem Limit), blockiert das System das Erstellen neuer Saisons.
- Nach 90 Tagen: Alle 20 Saisons laufen ab und werden automatisch gelöscht. Erst dann kannst du wieder 1 neue Saison erstellen.
Was du tun kannst:
- Backup: Exportiere wichtige Daten (iCal-Export, PDFs herunterladen) bevor die 90 Tage ablaufen.
- Reaktivierung: Wenn du vor Ablauf der 90 Tage erneut Supporter/Premium buchst, wird das Herabstufungs-Datum gelöscht und alle Saisons bleiben erhalten!
- Saisons löschen: Du kannst unwichtige Saisons manuell löschen, aber das ändert nichts am Limit – du kannst erst wieder neue erstellen, wenn du unter 1 Saison bist.
Das hängt davon ab, ob du jemals ein Abo hattest:
Fall 1: Neue Free-Tier-Nutzer (nie bezahlt)
- Der Countdown beginnt ab dem Erstellungsdatum der Saison.
- Beispiel: Du erstellst eine Saison am 1. März → sie läuft am 30. Mai ab (90 Tage später).
Fall 2: Herabgestufte Nutzer (hatten Supporter/Premium)
- Der Countdown beginnt ab dem Herabstufungs-Datum, nicht ab Erstellung!
- Beispiel: Du hast 10 Saisons erstellt (eine vor 2 Jahren, eine gestern). Du kündigst am 1. April → alle laufen am 30. Juni ab (90 Tage nach Herabstufung).
Relax, the app is your mail assistant:
- After registration:
EmailService::sendParentProfileLink()immediately emails the parent their personal link. - Bulk confirmations: When you tap Send Confirmations, the system delivers all emails (and SMS if enabled) for you.
- Swap requests: Parents trigger those inside the portal, and the app emails the other family automatically.
- Manual note? Use the “📧 Email Student” button; it opens a prefilled message window.
You decide when to send (by pressing the buttons). The system handles the rest.
Picture two doors:
➡ Registration door (shared)
- Location:
/registration-links - You create one link and send it to every parent.
- Same URL, multiple uses, optional limits.
- Example:
https://yoursite.com/register/abc123xyz
➡ Parent profile door (personal)
- Generated automatically after the form is submitted.
- One-of-a-kind per student + season, stays valid forever.
- Private – only that family may enter.
- Example:
https://yoursite.com/parent/profile/student-xyz789-unique-token
Complete flow
STEP 1: You create the registration link
├─ Visit /registration-links
├─ Configure limits/expiry if needed
└─ Result: https://yoursite.com/register/abc123xyz
↓
STEP 2: Send this SAME link to all parents
├─ Email/SMS/broadcast it to everyone
├─ Parent A, B, C all open the same URL
└─ Everyone sees the registration form
↓
STEP 3: Parent fills the form
├─ Student + parent info
├─ Lesson duration
├─ Selects available slots
└─ Clicks submit
↓
STEP 4: System creates a UNIQUE profile link
├─ Saves student + availability
├─ Generates a ParentToken
└─ Example: https://yoursite.com/parent/profile/UNIQUE-TOKEN
↓
STEP 5: Parent receives the personal link
├─ Shown instantly on the success page
├─ Emailed for safekeeping
└─ Works forever for that family
↓
STEP 6: Other parents repeat steps 3–5
├─ Same registration link
└─ Their own personal link at the end
Key references:
- Registration link creation:
RegistrationLinkController.php - Shared form:
/register/{token} - Unique parent link:
StudentRegistrationControllerlines 138–143 - Success page:
student-registration/success.blade.php
Absolutely—here’s how it works:
- Create the group: Inside “Students”, press “Create Group”, pick the kids, and set their shared duration.
- Run auto-schedule: The engine scans everyone’s availability to find a block that satisfies every member (duos up to entire classes).
- One shared lesson: When it finds a match it drops a single lesson, attaches every student, and honours location/break rules.
- Manual control: Drag the group lesson around or toss it back to “Unscheduled” whenever you need.
Perfect for band rehearsals, workshop blocks, or any multi-student class.
Subscription tiers overview:
- 1 season – Expires 90 days after creation
- 30 students maximum
- 5 invite codes
- 1 PDF upload only
- No SMS – email notifications only
- 10 seasons – Never expire (while subscription active)
- 10 invite codes
- Unlimited PDF uploads
- Unlimited students
- Supporter badge
- No SMS
- Unlimited seasons
- Unlimited students
- Unlimited invite codes
- Unlimited PDF uploads
- SMS notifications via Twilio
- Supporter badge
How to upgrade:
Click "💳 Subscription" on your dashboard and choose your plan. Payment is securely handled by Stripe.
The system is designed to give you time to fix problems – you don't lose everything immediately! 🛡️
Scenario 1: Payment fails (e.g., expired card)
- Day 1: Your payment is declined by Stripe → Your status becomes "past_due".
- Next ~30 days: Stripe automatically retries the payment. You keep all features during this grace period (all seasons, students, PDFs, SMS remain available).
- After 30 days: If payment still doesn't work, Stripe automatically cancels your subscription.
- Downgrade: The system downgrades you to Free Tier and sets a "downgrade date". From this moment, the 90-day countdown begins for all your seasons.
Scenario 2: You cancel manually
- You click "Cancel": Your subscription is marked for cancellation.
- Grace period: You keep all features until the end of your current billing period (e.g., if you cancel on March 15 and your subscription ends on March 30, you keep everything until March 30).
- Billing period ends: Stripe sends a "subscription.deleted" notification.
- Downgrade: The system downgrades you to Free Tier and sets the downgrade date. The 90-day countdown begins.
Scenario 3: You reactivate
If you click "Resume Subscription" during the grace period or subscribe again, the downgrade date is cleared and all your seasons remain valid forever. You lose nothing!
Great question! Here's exactly what happens:
Starting situation:
- You had Premium (unlimited seasons)
- You created 20 seasons
- You cancel your subscription or payment permanently fails
Step-by-step breakdown:
- During grace period: You keep all 20 seasons and can use them normally. You can even add more (while you're still Supporter/Premium).
- Billing period ends: The system downgrades you to Free Tier and sets the "downgrade date" to, say, April 1, 2025.
- 90-day countdown starts: All 20 seasons now expire on June 30, 2025 (90 days after April 1).
- Can you create new seasons? No. Free Tier allows only 1 season. Since you already have 20 (over the limit), the system blocks creating new seasons.
- After 90 days: All 20 seasons expire and are automatically deleted. Only then can you create 1 new season again.
What you can do:
- Backup: Export important data (iCal export, download PDFs) before the 90 days expire.
- Reactivate: If you subscribe to Supporter/Premium again before the 90 days expire, the downgrade date is cleared and all seasons are preserved!
- Delete seasons: You can manually delete unimportant seasons, but this doesn't change the limit – you can only create new ones when you're under 1 season.
It depends on whether you ever had a subscription:
Case 1: New Free Tier users (never paid)
- The countdown starts from the season creation date.
- Example: You create a season on March 1 → it expires on May 30 (90 days later).
Case 2: Downgraded users (had Supporter/Premium)
- The countdown starts from the downgrade date, not creation!
- Example: You have 10 seasons (one created 2 years ago, one yesterday). You cancel on April 1 → all expire on June 30 (90 days after downgrade).