-
-
Notifications
You must be signed in to change notification settings - Fork 1
Troubleshooting
Common issues and their solutions when running or developing Bill Organizer.
Symptom: file_put_contents(): failed to open stream: Permission denied
chmod -R 775 storage bootstrap/cache
chown -R www-data:www-data storage bootstrap/cacheFor local development (macOS / Linux):
chmod -R 775 storage bootstrap/cacheSymptom: SQLSTATE[HY000] [14] unable to open database file
For SQLite, create the database file first:
touch database/database.sqlite
php artisan migrateTo reset and reseed:
php artisan migrate:fresh --seedSymptom: Configuration changes not taking effect, stale routes, or view errors.
php artisan optimize:clearThis clears all cached config, routes, views, and compiled files. Then:
php artisan optimize # Rebuild for productionSymptom: Notifications not sending, webhook deliveries not firing.
# Restart workers
php artisan queue:restart
# Or run a fresh worker manually
php artisan queue:work --verboseIn production, ensure Supervisor is running the worker process. Check logs at storage/logs/worker.log.
Symptom: No notification emails arriving.
- Verify
.envmail settings:MAIL_MAILER=smtp MAIL_HOST=your-smtp-host MAIL_PORT=587 MAIL_USERNAME=your-user MAIL_PASSWORD=your-password MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS=noreply@yourdomain.com
- For local development, use
MAIL_MAILER=log— emails are written tostorage/logs/laravel.log - Test mail sending:
php artisan tinker Mail::raw('Test', fn($m) => $m->to('test@example.com')->subject('Test'));
Cause: Missing or invalid Bearer token.
- Verify the token is present:
Authorization: Bearer {token} - Check the token has not been revoked (the user may have logged out on another device)
- Login again to obtain a fresh token:
POST /api/v1/auth/login
Cause: The user has no active team set, or the resource belongs to a different team.
- Switch to the correct team:
POST /api/v1/teams/{team}/switch - Verify the user is a member of the team:
GET /api/v1/teams
Cause: Request payload failed validation.
- Read the
errorsfield in the response — it lists all failing fields and their error messages - Cross-reference with the API documentation for required fields and formats
Example response:
{
"message": "The given data was invalid.",
"errors": {
"amount": ["The amount must be at least 0."],
"due_date": ["The due date field is required."]
}
}Cause: Rate limit exceeded.
- Check the
X-RateLimit-Resetheader — it contains the Unix timestamp when the limit resets - Wait and retry
- Implement exponential backoff in your client
- Raise the limit in
.envif needed:API_RATE_LIMIT=120
Cause: The frontend origin is not in the CORS allowed list.
- Add your origin to
.env:CORS_ALLOWED_ORIGINS=https://yourapp.com
- Ensure every request includes
Accept: application/json - Clear config cache:
php artisan config:cache
Symptom: yarn build fails.
- Run TypeScript check first:
yarn tsc --noEmit - Check
vite.config.tsfor misconfigured aliases or plugins - Verify all imported packages are installed:
yarn install
Symptom: Changes to Vue components not reflected after refresh.
# In development — ensure Vite is running
yarn dev
# Hard reload in browser
Ctrl + Shift + R (Windows/Linux) / Cmd + Shift + R (macOS)Symptom: route() helper returns undefined in Vue components.
php artisan ziggy:generateThis regenerates the Ziggy route file used by the frontend.
./vendor/bin/sail down --volumes # Stop and remove volumes
./vendor/bin/sail build # Rebuild images
./vendor/bin/sail up -d # Start freshUpdate port mappings in .env:
APP_PORT=8080 # Change from default 8500
VITE_PORT=5174 # Change Vite port
FORWARD_DB_PORT=33060 # Change DB portFix type errors locally before pushing:
yarn tsc --noEmitCheck that existing git tags follow semver format (v1.2.3):
git tag --list | sort -VDelete a conflicting tag if needed:
git tag -d v1.2.3
git push origin --delete v1.2.3Ensure GitHub Actions has write permissions:
- Go to Settings → Actions → General
- Under Workflow permissions, select Read and write permissions
- Documentation: Browse this wiki
-
Logs:
php artisan pail(real-time) orstorage/logs/laravel.log - GitHub Issues: github.com/4msar/bill-organizer/issues
- Email: support@bills.msar.me
© Bill Organizer - Free for Personal use | Need paid license for Commercial use