Skip to content

dhaatrik/vellor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

881 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Vellor Logo

Vellor ๐ŸŽ“

Manage your tutoring business like a pro.

CI Version License: MIT TypeScript React Tests

Vellor is a free, open-source Progressive Web App built for private teachers and tutors. It provides a single, beautifully designed interface to manage students, track lessons and payments, generate invoices, and stay motivated through built-in gamification โ€” all while keeping your data 100% private on your own device.

Getting Started ยท Features ยท Tech Stack ยท Contributing


Vellor Dashboard

Dashboard โ€” your command center for students, income, and goals.


๐Ÿ“‘ Table of Contents


๐Ÿ’ก Why Vellor?

Most tutoring management tools are either too complex, too expensive, or require handing over your data to a third-party service. Vellor was built to solve this:

Pain Point Vellor's Answer
Expensive SaaS Free & open-source โ€” no subscriptions, no hidden fees
Data privacy concerns Privacy-first โ€” all data lives in your browser's encrypted localStorage. Nothing leaves your device
Motivation burnout Gamified โ€” earn points, level up, and unlock 25+ achievements to stay motivated
Complex setup Zero-config โ€” runs instantly in any modern browser, installable as a PWA

โœจ Features

๐Ÿš€ The Tutor OS Update (v4.0)

Vellor has evolved into a complete operating system for private educators with 7 major capabilities:

  • WhatsApp Integration โ€” One-click, pre-filled WhatsApp reminders for overdue payments directly from the dashboard.
  • Automated Monthly Invoicing โ€” Generate comprehensive, multi-page PDF statements for all unpaid lessons with a single click.
  • Secure Client Portals โ€” Generate read-only Base64 URL snapshots of a student's progress and attendance to share with parents instantly.
  • Financial Forecasting โ€” Dynamic charts predicting your future monthly income based on scheduled lessons and active student rates.
  • Smart Rescheduling โ€” Automatically prompts and pre-fills the make-up class scheduler whenever a student is marked as "Absent" or "Cancelled".
  • White-Label Customization โ€” Upload your own brand logo and set a custom accent color that dynamically themes the entire UI and PDF invoices.
  • Enhanced Offline Engine โ€” Seamlessly detects network drops with UI indicators and proactively reminds you to backup data upon reconnecting.

โšก Power-Tutor Essentials

  • Guided Onboarding Wizard โ€” A beautiful 4-step interactive walkthrough for new users.
  • Push Notifications โ€” Automated local lesson reminders sent directly to your device.
  • PWA Install Prompt โ€” Persistent prompts to install Vellor as a native app for a seamless offline experience.
  • Bulk Actions โ€” Manage, archive, clear debts, or delete multiple students at once.
  • Branded PDF Invoices & WhatsApp Share โ€” Generate professional invoices with one click and share them instantly.
  • Progress & Grade Tracking โ€” Track academic performance and add progress remarks alongside payments.
  • Smart Data Import Wizard โ€” Migrate your existing student roster seamlessly from a CSV file.
  • Customizable Gamification โ€” Set custom rank titles and personalized achievements to stay motivated.
  • Interactive Drag-and-Drop Calendar โ€” Schedule lessons visually by dragging students right onto the dates.
  • Power-User Keyboard Shortcuts โ€” Ctrl+K for a global command palette, Ctrl+L for quick lesson logging, and Shift+P for instant quick-pay.

๐ŸŽ Student Management

  • Organized Profiles โ€” Store contact info, parent details, rates, and subjects in one place.
  • Instant Search โ€” Filter your roster by name in real time.
  • Detailed History โ€” View the complete lesson and payment record for each student.

๐Ÿ’ธ Financial Tracking

  • Quick Lesson Logging โ€” Record a lesson and payment in seconds via the floating action button.
  • Payment Statuses โ€” Automatically categorized as Paid, Due, Partially Paid, or Overpaid.
  • Dashboard Overview โ€” At-a-glance cards showing monthly income, unpaid fees, active students, and overdue alerts.
  • Income Charts โ€” 6-month interactive area chart for income and student growth trends.
  • CSV & PDF Export โ€” Export financial data to CSV for tax season, or generate professional PDF invoices.
  • Calendar View โ€” Visualize your schedule with a color-coded calendar of all lessons and payments.

๐ŸŽฎ Gamification

  • Points System โ€” Earn points for adding students, logging payments, and clearing debts.
  • Ranks & Levels โ€” Progress from Novice Tutor to Scholarly Sensei across multiple tiers.
  • 25+ Achievements โ€” Unlock badges for milestones like your first $100 earned, a 30-day login streak, or managing 50 students.
  • Monthly Goal Tracker โ€” Set an income target and watch your progress bar fill up in real time.
  • Confetti Celebrations โ€” Achievement unlocks are accompanied by confetti animations ๐ŸŽ‰

๐Ÿ”’ Privacy & Data Control

  • 100% Offline (PWA) โ€” Install directly to your device. No server, no database, no tracking.
  • AES-GCM Encryption โ€” Data is encrypted before being saved to localStorage, with a secure "Recovery Key" fallback.
  • Export & Import โ€” Back up your data to a JSON file and restore it anytime.
  • Automated Backup Alerts โ€” Gentle reminders to secure your data every 14 days.
  • Secure Reset โ€” Wipe all application data with one click.

๐ŸŽจ Design & UX

  • Dark / Light Mode โ€” Toggle between themes with smooth transitions.
  • Responsive Layout โ€” Fully usable on desktop, tablet, and mobile.
  • Smooth Animations โ€” Page transitions and micro-interactions powered by Framer Motion.
  • Multi-Currency Support โ€” Configure your preferred currency symbol in settings.
  • International Phone Input โ€” Country code selection with flag indicators.

๐Ÿš€ Getting Started

Prerequisites

Tool Version Purpose
Node.js โ‰ฅ 18.x (LTS recommended) JavaScript runtime
npm โ‰ฅ 9.x (bundled with Node.js) Package manager

Installation

# 1. Clone the repository
git clone https://github.com/dhaatrik/vellor.git

# 2. Navigate into the project
cd vellor

# 3. Install dependencies
npm install

# 4. Start the development server
npm run dev

The app will launch at http://localhost:5173 (default Vite port). Open it in your browser and you're ready to go!


๐Ÿ“– Usage

First Launch

  1. Welcome Screen โ€” Enter your name, email, country, phone, and preferred currency to personalize the app, then click Get Started.
  2. Dashboard โ€” Your home base. View stats, charts, recent activity, and overdue alerts.
  3. Add a Student โ€” Click + Add Student and fill in their details: name, country, contact, parent info, subjects, and rate.
  4. Log a Lesson โ€” Click + Log Lesson (or the floating โšก button) to quickly record a lesson duration and payment.

Key Workflows

Dashboard โ†’ Add Student โ†’ Log Lesson โ†’ Track Payments โ†’ Unlock Achievements
Action How
Add a student Navigate to Students โ†’ click + Add Student โ†’ fill the form
Log a lesson Click the โšก floating button โ†’ select student โ†’ enter duration & amount
View payment history Students โ†’ click a student card โ†’ scroll to Transactions
Export data Profile & Settings โ†’ scroll to Data Management โ†’ click Export Data
Change theme Click the โ˜€๏ธ/๐ŸŒ™ icon in the top navigation bar
Keyboard shortcuts Ctrl+K โ€” Command Palette ยท Ctrl+L โ€” Quick Log ยท Shift+P โ€” Quick Pay

๐Ÿ› ๏ธ Tech Stack

Technology Role Why
React 19 UI framework Component-based architecture with hooks and concurrent features
TypeScript 5.7 Language Compile-time type safety and superior developer experience
Vite 6 Build tool Lightning-fast HMR and optimized production builds
Zustand 5 State management Lightweight, scalable store with slice-based architecture
Zod 4 Validation Schema-based runtime validation for forms and data integrity
React Hook Form 7 Form handling Performant, flexible forms with minimal re-renders
Tailwind CSS 3 Styling Utility-first CSS with PostCSS integration
React Router 6 Navigation Client-side routing with URL-based navigation
Framer Motion 11 Animations Declarative animations and page transitions
Radix UI Primitives Accessible, unstyled UI components (Dialog, Select, Accordion)
Recharts 3 Charts Composable, responsive charting for dashboards
jsPDF PDF generation Client-side PDF invoice and statement generation
date-fns 4 Date utilities Lightweight, tree-shakeable date manipulation
Lucide React Icons Beautiful, consistent open-source icon set
Vitest 4 Testing Blazing-fast unit and component testing with Jest-compatible API
vite-plugin-pwa PWA support Service worker generation and offline caching

๐Ÿ“‚ Project Structure

vellor/
โ”œโ”€โ”€ .github/
โ”‚   โ””โ”€โ”€ workflows/
โ”‚       โ””โ”€โ”€ ci.yml                    # CI pipeline (lint โ†’ test โ†’ build)
โ”œโ”€โ”€ components/
โ”‚   โ”œโ”€โ”€ auth/                         # Authentication components
โ”‚   โ”œโ”€โ”€ dashboard/                    # Dashboard charts & goals
โ”‚   โ”‚   โ”œโ”€โ”€ DashboardCharts.tsx
โ”‚   โ”‚   โ””โ”€โ”€ DashboardGoal.tsx
โ”‚   โ”œโ”€โ”€ error/                        # Error boundary components
โ”‚   โ”œโ”€โ”€ layout/                       # App layout & navigation
โ”‚   โ”‚   โ”œโ”€โ”€ AppContent.tsx
โ”‚   โ”‚   โ””โ”€โ”€ AppLayout.tsx
โ”‚   โ”œโ”€โ”€ students/                     # Student-specific components
โ”‚   โ”‚   โ”œโ”€โ”€ CSVImportWizard.tsx       #   CSV data import wizard
โ”‚   โ”‚   โ”œโ”€โ”€ StudentDetailView.tsx     #   Full student profile view
โ”‚   โ”‚   โ”œโ”€โ”€ StudentForm.tsx           #   Add/edit student form
โ”‚   โ”‚   โ”œโ”€โ”€ StudentHistoryTab.tsx     #   Lesson history tab
โ”‚   โ”‚   โ”œโ”€โ”€ StudentListItem.tsx       #   Student card in roster
โ”‚   โ”‚   โ””โ”€โ”€ StudentProgressTab.tsx    #   Academic progress tab
โ”‚   โ”œโ”€โ”€ transactions/                 # Transaction-specific components
โ”‚   โ”‚   โ”œโ”€โ”€ QuickLogModal.tsx         #   Quick lesson logging modal
โ”‚   โ”‚   โ”œโ”€โ”€ TransactionForm.tsx       #   Full transaction form
โ”‚   โ”‚   โ”œโ”€โ”€ TransactionListItem.tsx   #   Transaction row item
โ”‚   โ”‚   โ””โ”€โ”€ TransactionStatusBadge.tsx
โ”‚   โ”œโ”€โ”€ ui/                           # Reusable UI primitives (19 components)
โ”‚   โ”‚   โ”œโ”€โ”€ Button.tsx, Card.tsx, Modal.tsx, Input.tsx, Select.tsx,
โ”‚   โ”‚   โ”‚   FAB.tsx, Toast.tsx, Badge.tsx, ProgressBar.tsx,
โ”‚   โ”‚   โ”‚   PhoneInput.tsx, OnboardingWizard.tsx, SearchModal.tsx,
โ”‚   โ”‚   โ”‚   StatDisplayCard.tsx, ConfirmationModal.tsx, ...
โ”‚   โ”‚   โ””โ”€โ”€ index.ts                  #   Barrel export
โ”‚   โ””โ”€โ”€ BackupPromptModal.tsx         # Backup reminder modal
โ”œโ”€โ”€ helpers/
โ”‚   โ””โ”€โ”€ globalHover.ts                # Global hover event utilities
โ”œโ”€โ”€ hooks/
โ”‚   โ””โ”€โ”€ useKeyboardShortcuts.ts       # Keyboard shortcut handler
โ”œโ”€โ”€ pages/                            # Route-level page components
โ”‚   โ”œโ”€โ”€ DashboardPage.tsx             #   Main dashboard with stats & charts
โ”‚   โ”œโ”€โ”€ StudentsPage.tsx              #   Student roster & management
โ”‚   โ”œโ”€โ”€ TransactionsPage.tsx          #   Transaction list & filters
โ”‚   โ”œโ”€โ”€ CalendarPage.tsx              #   Drag-and-drop calendar view
โ”‚   โ”œโ”€โ”€ AchievementsPage.tsx          #   Gamification badges & progress
โ”‚   โ”œโ”€โ”€ ProfilePage.tsx               #   User profile & data management
โ”‚   โ”œโ”€โ”€ SettingsPage.tsx              #   App settings & customization
โ”‚   โ”œโ”€โ”€ WelcomePage.tsx               #   First-time onboarding
โ”‚   โ”œโ”€โ”€ PortalPage.tsx                #   Secure client portal view
โ”‚   โ”œโ”€โ”€ TutorAdvicePage.tsx           #   Tutor tips & best practices
โ”‚   โ””โ”€โ”€ MarketingPage.tsx             #   Public marketing landing page
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ crypto.ts                     # AES-GCM encryption utilities
โ”‚   โ””โ”€โ”€ defaultLogo.ts               # Embedded default logo (Base64)
โ”œโ”€โ”€ store/
โ”‚   โ”œโ”€โ”€ createStudentSlice.ts         # Student CRUD operations
โ”‚   โ”œโ”€โ”€ createTransactionSlice.ts     # Transaction & payment logic
โ”‚   โ”œโ”€โ”€ createGamificationSlice.ts    # Points, ranks, achievements
โ”‚   โ”œโ”€โ”€ createSettingsSlice.ts        # User preferences & config
โ”‚   โ”œโ”€โ”€ createDataManagementSlice.ts  # Import/export/reset
โ”‚   โ”œโ”€โ”€ createUISlice.ts             # UI state (modals, toasts)
โ”‚   โ”œโ”€โ”€ validation.ts                 # Zod schemas for store actions
โ”‚   โ”œโ”€โ”€ types.ts                      # Store-specific type definitions
โ”‚   โ””โ”€โ”€ tests/                        # 28 test suites (see Testing)
โ”œโ”€โ”€ App.tsx                           # Root component, layout & routing
โ”œโ”€โ”€ store.ts                          # Zustand store composition
โ”œโ”€โ”€ types.ts                          # Global TypeScript type definitions
โ”œโ”€โ”€ constants.ts                      # App constants & achievement definitions
โ”œโ”€โ”€ helpers.ts                        # Utility functions (formatting, etc.)
โ”œโ”€โ”€ pdf.ts                            # PDF invoice generation engine
โ”œโ”€โ”€ usePwaInstall.ts                  # PWA install prompt hook
โ”œโ”€โ”€ useReminders.ts                   # Lesson reminder notifications hook
โ”œโ”€โ”€ index.tsx                         # Application entry point
โ”œโ”€โ”€ index.html                        # HTML shell with meta tags
โ”œโ”€โ”€ index.css                         # Custom scrollbar & animation styles
โ”œโ”€โ”€ vite.config.ts                    # Vite + PWA + Vitest configuration
โ”œโ”€โ”€ vitest.setup.ts                   # Test environment setup
โ”œโ”€โ”€ tsconfig.json                     # TypeScript configuration
โ”œโ”€โ”€ tailwind.config.js                # Tailwind CSS configuration
โ”œโ”€โ”€ postcss.config.js                 # PostCSS configuration
โ”œโ”€โ”€ CONTRIBUTING.md                   # Contribution guidelines
โ”œโ”€โ”€ LICENSE                           # MIT License
โ””โ”€โ”€ package.json                      # Dependencies & scripts

๐Ÿ“œ Available Scripts

Command Description
npm run dev Start the Vite development server with HMR
npm run build Create an optimized production build in dist/
npm run preview Preview the production build locally
npm run lint Run TypeScript type-checking (tsc --noEmit)
npm run test Run the full Vitest test suite

๐Ÿงช Testing

Vellor has a comprehensive test suite powered by Vitest with 28 test files covering unit tests, component tests, and integration tests.

Running Tests

# Run the full test suite
npm run test

# Run tests in watch mode (for development)
npx vitest

# Run tests with coverage report
npx vitest run --coverage

Test Coverage

The test suite covers:

Category Test Files What's Tested
Store Slices 6 suites Student CRUD, transactions, gamification, settings, data management, UI state
Page Components 5 suites Dashboard, Students, Transactions, Welcome, and core page rendering
UI Components 4 suites Button, Card, Modal, ProgressBar variants and interactions
Form Components 2 suites StudentForm and TransactionForm validation and submission
Core Logic 2 suites Financial derivations, calculation edge cases, and store composition
Utilities 4 suites Helpers, PDF generation, crypto encryption, input validation schemas
Hooks 3 suites Keyboard shortcuts, PWA install, and lesson reminders
Other 2 suites Storage persistence, global hover utilities

Test Stack

Tool Purpose
Vitest 4 Test runner with Jest-compatible API
React Testing Library Component rendering and user-event simulation
jsdom Browser environment simulation
@testing-library/jest-dom Custom DOM matchers (toBeInTheDocument, toHaveClass, etc.)

๐Ÿ”„ CI/CD Pipeline

Vellor uses GitHub Actions for continuous integration. The pipeline runs automatically on every push or pull request to the main branch.

Pipeline Steps:

Checkout โ†’ Setup Node.js 20 โ†’ npm ci โ†’ Type-check (tsc) โ†’ Test (vitest) โ†’ Build (vite)

The workflow is defined in .github/workflows/ci.yml.


๐Ÿค Contributing

Contributions are welcome and appreciated! Whether it's a bug fix, a new feature, or a documentation improvement โ€” every contribution makes Vellor better.

Please read the full Contributing Guide before getting started.

Quick Start

  1. Fork the repository
  2. Create a feature branch
    git checkout -b feature/your-feature-name
  3. Make your changes and ensure they pass all checks:
    npm run lint && npm run test
  4. Commit with a descriptive message following Conventional Commits:
    git commit -m "feat: add your feature description"
  5. Push your branch
    git push origin feature/your-feature-name
  6. Open a Pull Request on GitHub

Guidelines

  • Follow the existing TypeScript conventions and code style.
  • Ensure npm run lint and npm run test both pass with zero errors.
  • Keep pull requests focused โ€” one feature or fix per PR.
  • New functionality should be accompanied by relevant tests.

Code of Conduct

This project adheres to the Contributor Covenant Code of Conduct. By participating, you agree to uphold a welcoming and inclusive community.


๐Ÿ”ฎ Roadmap

Planned features for future releases:

  • Cloud Sync โ€” Sync data across devices via Firebase or Supabase
  • Advanced Analytics โ€” Trend analysis, student retention metrics, and forecasting
  • Calendar View โ€” Visual scheduling for lessons and due dates
  • PDF Invoices โ€” Generate professional invoices for parents
  • Unit Tests โ€” Vitest + React Testing Library coverage (28 suites)
  • PWA Support โ€” Install Vellor as a native-like app on mobile
  • Smart CSV Imports โ€” Import existing student rosters seamlessly
  • Browser Push Notifications โ€” Automated local reminders for lessons
  • AES-GCM Encryption โ€” Client-side data encryption with recovery key
  • White-Label Branding โ€” Custom logos and accent colors

๐Ÿ“„ License

This project is licensed under the MIT License โ€” you are free to use, modify, and distribute this software.

See the LICENSE file for details.


Built with โค๏ธ for educators everywhere.

Made by Dhaatrik Chowdhury

โฌ† Back to Top

About

Vellor is a React-based web application designed for teachers and tutors to manage student information, track payments and lessons, and view financial summaries. It incorporates gamification features like points, levels, and achievements to enhance user engagement. All data is stored locally in the browser's localStorage.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages