Turn messy prescriptions into clean, structured notes.
Lisible is a small, privacy-friendly web app that helps you read your doctor's handwriting. Upload a photo of a prescription or clinical note, and get a tidy, structured transcript you can actually use.
Prereqs:
Install dependencies
composer install
npm install
Configure your environment
cp .env.example .env
php artisan key:generate
Use the built-in SQLite database and run migrations/seeders
php artisan migrate:fresh --seed
php artisan storage:link
Add your Gemini credentials to .env
GEMINI_API_KEY=your_api_key_here
# optional
GEMINI_MODEL=gemini-2.5-flash
GEMINI_TIMEOUT=300
Start the app (backend, queue, logs, and Vite) — one command
composer run dev
Then open http://localhost:8000 and register/login. Go to “Transcripts → Create,” upload an image, and watch the status update in real time.
You can switch databases or front the app with Nginx easily—this repo keeps defaults simple so you can self-host quickly.
Key environment variables in .env:
Gemini config lives in config/services.php and pulls from .env.
Separate processes (alternative to composer script):
php artisan serve
php artisan queue:work --verbose --tries=3 --queue=transcription
npm run dev
Build assets for production:
npm run build
public/.env (set APP_ENV=production, APP_DEBUG=false, DB of choice)composer install --no-dev --optimize-autoloadernpm ci && npm run buildphp artisan migrate --force && php artisan storage:linkstorage/ and bootstrap/cache/ are writable by the web userWhere to look:
storage/logs/laravel.logstorage/logs/transcription.logCommon issues:
GEMINI_API_KEY in .env, then restart workerphp artisan queue:workphp artisan storage:link and correct file permissionsGEMINI_TIMEOUT or ensure outbound network accessRun the PHP test suite:
php artisan test
docs/TECHNICAL.mdApache 2.0