VesnaLessons · Local download
Fit weekly lessons around pupil availability
Build and review a weekly private-lesson schedule offline.
$9.99 USD · one-time purchase
Setup: Extract the ZIP and open index.html in desktop Google Chrome. Start with the fictional 32-student studio.
Download: ZIP with the described tool and instructions. Check compatibility & limits.
Buy download — $9.99See the worked example
No subscription. Final total and tax appear at checkout.

See it in use
Schedule six fictional piano students
A screenshot walkthrough with fictional practice data. Select a step to explore.
1. Start with
Schedule six fictional piano students
The guide CSV has six students in five families.
Sample files and contents
examples/vesna-lessons/piano-studio-families.csv: 6 fictional students in 5 families (Family, Child, Minutes, Where, availability text, best times, a kept Monday 16:00 slot for one returning student, siblings together). It uses the sample studio's teaching hours and its “Home studio” location.
Practice files and guides are free. The complete app is included only where the product page says so.
2. In the app

Try it in three steps
- Import the CSV into the sample studio.
- Confirm six students and no warnings, then solve.
- Export the schedule CSV and review the planned lessons.
Show every click and setting
- Open vesna-lessons/index.html in Chrome (if your own project opens, choose “Sample studio: 32 students, complete schedule exists” under “Load sample data…” first; save your project before that).
- On Import CSV click “Choose CSV file…” and pick piano-studio-families.csv.
- Check that the preview says “6 students in 5 families” and “No warnings.”, keep “Replace all families and students (settings and locations stay)” and click “Import 6 students”.
- On Schedule keep “Standard: 2,000,000 steps” and click “Solve schedule”.
- Click “Export CSV”; then “Calendar (.ics)” with term 2026-10-05 to 2026-12-18, skip 2026-10-26, “One file per family (ZIP)”, Download.
3. The result
Inspect the result
The actual CSV places all six students with zero conflicts. Noah’s Monday 16:00 slot stays fixed; the screenshot and file use this guide example.
| Day | Start | Student |
|---|---|---|
| Monday | 16:00 | Noah Copperfield |
| Monday | 16:30 | Emma Ashgrove |
| Monday | 17:00 | Liam Ashgrove |
| Tuesday | 17:30 | Sofia Brookfield |
| Wednesday | 16:00 | Oliver Elderby |
| Thursday | 17:30 | Mia Dunlin |
What to check in the practice result
The banner reads “Complete schedule: all 6 students placed”, Conflicts (0) and “Not placed (0)”. Monday: Noah Copperfield 16:00–16:30 (FIXED), Emma Ashgrove 16:30–17:00 and Liam Ashgrove 17:00–17:30 back-to-back; Tuesday: Sofia Brookfield 17:30–18:15; Wednesday: Oliver Elderby 16:00–16:30; Thursday: Mia Dunlin 17:30–18:30. The CSV has one row per lesson (Status, Day, Start, End, Minutes, Student, Family, Location, Fixed, …). The ZIP contains Ashgrove.ics, Brookfield.ics, Copperfield.ics, Dunlin.ics and Elderby.ics with weekly events until 18 December and 26 October skipped. File names start with the studio name, here “Vesna-Music-Studio-sample-data”, until you rename the studio on the Studio tab.
The working example and saved result use the same fictional practice data. Open the output file to inspect the complete result.
What it helps you do
Import a roster and availability CSV, set studio rules, solve or edit the schedule, then export CSV, ICS, per-family ZIP or print/PDF.
What is in your download
- The complete tool for the workflow described here.
- Installation instructions and included license notices.
A practical example
Six fictional piano students in the sample studio
Start with
examples/vesna-lessons/piano-studio-families.csv: 6 fictional students in 5 families (Family, Child, Minutes, Where, availability text, best times, a kept Monday 16:00 slot for one returning student, siblings together). It uses the sample studio's teaching hours and its “Home studio” location.
Get this result
The banner reads “Complete schedule: all 6 students placed”, Conflicts (0) and “Not placed (0)”. Monday: Noah Copperfield 16:00–16:30 (FIXED), Emma Ashgrove 16:30–17:00 and Liam Ashgrove 17:00–17:30 back-to-back; Tuesday: Sofia Brookfield 17:30–18:15; Wednesday: Oliver Elderby 16:00–16:30; Thursday: Mia Dunlin 17:30–18:30. The CSV has one row per lesson (Status, Day, Start, End, Minutes, Student, Family, Location, Fixed, …). The ZIP contains Ashgrove.ics, Brookfield.ics, Copperfield.ics, Dunlin.ics and Elderby.ics with weekly events until 18 December and 26 October skipped. File names start with the studio name, here “Vesna-Music-Studio-sample-data”, until you rename the studio on the Studio tab.
Download guide & practice files (ZIP)
Examples use fictional or synthetic data. Follow this example step by step.
Keep your timetable safe while a file opens
CSV and saved-project reads pause editing, solving and export. Cancel keeps the current timetable and ignores the late file result. A clear error restores the controls so you can retry the same file.
Open, wait or cancel
While a CSV or saved project is opening, the current timetable stays visible and editing and export wait. Use Cancel to keep working with your current timetable.

Actual VesnaLessons 0.1.2 screen with fictional lesson data. View full size Review the file before continuing
After a CSV opens, check the matched columns and preview before importing students. If a file cannot be read, your current timetable remains; correct the file and choose it again.
Chrome 152 on Linux and fictional lesson schedules were checked. Other platforms, real form exports, calendar imports and physical printing remain unverified. This remains the 0.1.x edition; desktop use is recommended.
Free 0.1.2 illustrated guide and fictional examples — application not included
How it works
Buy, download and open
Buy from /store/vesna-lessons/ and download vesna-lessons-0.1.2.zip from the checkout page. Extract it and open vesna-lessons/index.html in Chrome. The first time, it opens a fictional 32-student sample studio; press “Solve schedule” to see how it works. Later it opens your last project from the browser; use “Load sample data…” to see the samples again.
Set up your studio
On the Studio tab enter Studio name, Teacher and “Lesson name in calendars”, the time display, the grid step for lesson start times, default lesson length and sibling default. Under “Teaching hours” tick your teaching days with From and To times, add Breaks, set the Rules (maximum continuous teaching, minimum break, travel time between sites) and list your Locations. Click “New” first if you want to start from an empty project instead of the sample settings.
Import families
On the Import CSV tab click “Choose CSV file…” (or “Use pasted text”). In “2. Match the columns” check which column is “Student name(s)” (required), family, email, lesson length, location, availability, preferred times, fixed lesson time and siblings; columns with matching names are picked automatically. “3. Preview” lists every student with warnings. Choose the Import mode — “Replace all families and students (settings and locations stay)” or “Add to the current families” — and click “Import … students”, or “Discard”.
Before you buy
- Desktop Google Chrome.
- Families' availability as a CSV file, for example a Google Forms or Microsoft Forms response export or your own spreadsheet with a student name column and availability text such as “Mon 15:30-18:00; Wed 15:30-18:00”.
Extract the ZIP and open index.html in desktop Google Chrome. Start with the fictional 32-student studio.
Compatibility & limits
One teacher and one lesson per student per week; at most five siblings in the back-to-back rule. Calendar times are floating local times. Chrome 152 on Linux and synthetic data were tested. Real form exports, calendar imports, other browsers and physical printing are unverified. Search can reach its limit without a complete answer.
Get VesnaLessons
Perpetual use of the purchased version on your devices for personal or internal commercial work. Keep reasonable backups and modify your own copy; do not redistribute or resell original proprietary code. Third-party licenses and any existing preview permissions retain their rights.
Before payment, save the private recovery code shown by checkout. After Paddle confirms payment, use it to download your ZIP or return for it later. No subscription, future update or email delivery is promised. See the illustrated steps.
$9.99 USD · once
Buy download — $9.99