Running the platform
Troubleshooting
symfony serve command not found
Symfony CLI is not installed or not available in your terminal PATH.
Options:
-
Install Symfony CLI from the official Symfony website.
-
Use PHP's built-in server for quick local testing:
php -S 127.0.0.1:8000 -t public
JWT login error
Error:
An error occurred while trying to encode the JWT token.
Common causes:
- JWT keys do not exist.
JWT_PASSPHRASEdoes not match the private key.- The web server cannot read
config/jwt/private.pem.
Fix:
php bin/console lexik:jwt:generate-keypair --skip-if-exists
Then confirm .env.local contains the correct JWT paths and passphrase.
Register works but login fails
Registration may not need to encode a JWT, while login does. If registration works and login fails with a JWT error, check JWT configuration first.
Refresh token test
Call:
POST /api/v1/users/token/refresh
Body:
{
"refreshToken": "refresh_token_from_login_response"
}
If successful, the response should contain a new access token and refresh token.
Admin access denied
If a user reaches an access denied page after login:
- Confirm the user has
ROLE_ADMINfor the admin panel. - Confirm the user has
ROLE_VENDORorROLE_ADMINfor the vendor admin panel. - Log out and log back in after role changes.
Vendor admin says no vendor is associated
The logged-in user has vendor admin permissions but is not linked to a vendor record.
Fix:
- Open the main admin panel.
- Go to Users or Vendors.
- Link the user to the correct vendor record.
- Try logging in to vendor admin again.
Mobile app calls the wrong backend
Check:
store/axiosInstance.ts
Update the live URL and local development behavior. For production, use:
https://your-domain.com/api
Stripe payment fails
Check:
- Backend Stripe secret key in admin Payment Settings.
- Backend Stripe publishable key in admin Payment Settings.
- Mobile Stripe publishable key.
- Stripe webhook secret in admin Payment Settings.
- Order currency.
- Whether the app is using test keys against test mode or live keys against live mode.
- Apple Pay or Google Pay setup if wallet payments fail.
Stripe webhook not received
Confirm:
- Stripe webhook URL is
https://your-domain.com/api/v1/webhook/stripe. - The endpoint is reachable over HTTPS.
- The webhook signing secret matches the value saved in admin Payment Settings.
- Your server is not blocking Stripe requests.
Pusher events do not arrive
Confirm:
- Backend Pusher app ID, key, secret, and cluster.
- Mobile Pusher key and cluster in
app/env.ts. - The rider is authenticated and subscribed to the expected channel.
- The Pusher app is active.
Google Maps or Places do not work
Confirm:
- Backend Google Maps API key.
- Mobile
EXPO_PUBLIC_GOOGLE_MAPS_API_KEY. - Google Cloud APIs are enabled.
- API key restrictions allow the app or server using the key.
Uploads do not work
Check:
- Storage driver setting.
- Local upload directory permissions.
- S3 bucket name, region, key, and secret.
- Public URL or CDN configuration for uploaded assets.
Production shows old CSS or JavaScript
Rebuild assets:
npm run build
php bin/console cache:clear --env=prod
Then clear browser cache or CDN cache if used.
Found a mistake? Tell us.