One-time downloads · $2.99–$9.99 USD. No subscription.

Perunlight

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.

Real VesnaLessons timetable after solving the built-in fictional family availability
Real VesnaLessons timetable after solving the built-in fictional family availability; the resulting schedule CSV was exported. Review any unplaced pupils before using a schedule. View full size

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

Actual VesnaLessons 0.1.2: import the guide’s piano-studio CSV. The preview shows six students in five families, with no warnings. The result tab shows their exported timetable.
Actual VesnaLessons 0.1.2: import the guide’s piano-studio CSV. The preview shows six students in five families, with no warnings. The result tab shows their exported timetable. Enlarge image ↗

Try it in three steps

  1. Import the CSV into the sample studio.
  2. Confirm six students and no warnings, then solve.
  3. Export the schedule CSV and review the planned lessons.
Show every click and setting
  1. 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).
  2. On Import CSV click “Choose CSV file…” and pick piano-studio-families.csv.
  3. 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”.
  4. On Schedule keep “Standard: 2,000,000 steps” and click “Solve schedule”.
  5. 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.

Selected columns from the actual fictional example CSV. Download the file above for every column.
DayStartStudent
Monday16:00Noah Copperfield
Monday16:30Emma Ashgrove
Monday17:00Liam Ashgrove
Tuesday17:30Sofia Brookfield
Wednesday16:00Oliver Elderby
Thursday17:30Mia 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.

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.

  1. 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.

    Keep your timetable safe while a file opens
    Actual VesnaLessons 0.1.2 screen with fictional lesson data. View full size
  2. 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.

How it works

  1. 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.

  2. 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.

  3. 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”.

Read the complete guide

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.

License · Terms · Privacy · Refunds · Support

$9.99 USD · once

Buy download — $9.99