Description
body { font-family: Georgia, “Times New Roman”, serif; color: #1c1915; background: #faf7f2; margin: 0; }
main { max-width: 760px; margin: 0 auto; padding: 32px 20px 64px; }
h1 { font-size: 40px; line-height: 1.1; margin-bottom: 8px; }
.meta { font-family: “Segoe UI”, sans-serif; color: #5c5346; }
.price { display: inline-block; background: #1c1915; color: #fff; border-radius: 999px; padding: 4px 12px; font-family: “Segoe UI”, sans-serif; }
ul { padding-left: 20px; }
table { border-collapse: collapse; width: 100%; font-family: “Segoe UI”, sans-serif; }
td { border-bottom: 1px solid #e4dccd; padding: 8px 6px; vertical-align: top; }
.shots { display: flex; gap: 12px; flex-wrap: wrap; margin: 16px 0 24px; }
.shots img { width: 180px; height: auto; background: #fff; border: 1px solid #e4dccd; }
Lesson Roll
$15
Private tutor ledger. Each student has an hourly rate. Lessons store minutes and a paid flag, and the roll shows the unpaid balance.


Features
- Student list with open balances
- Add a 45-minute lesson
- Mark the oldest unpaid lesson as paid
- Month view of minutes, paid share, and money still open
- Sample roll of three fictional students
- No accounts and no invoices sent off the phone
Who it is for
A lesson book for one tutor, not a payroll app and not a school grade book. The balance rule is unpaid minutes times the hourly rate.
Specification
| Package | ru.lessonroll.app |
| Language | Kotlin |
| UI | Jetpack Compose, Material 3 |
| Min SDK | 26 |
| Target SDK | 35 |
| Network | No permission, no API key |
| Tests | JVM unit tests for the logic core |
| License | One shipped application. Source resale as a template is not included. |
Reskin
Change the app name in strings.xml, the seed colors in MainActivity.kt, and the adaptive icon. The README lists the package rename steps.












Reviews
There are no reviews yet.