Repository navigation
Getting Started
Zovita+ runs locally without any third-party keys: e-mails go to the log, reCAPTCHA is off, card payments use a built-in sandbox gateway and uploads skip virus scanning.
| Tool | Version | Notes |
|---|---|---|
| PHP | 8.2+ | extensions pdo_mysql, mbstring, gd (with WebP), fileinfo
|
| Composer | 2.x | |
| Node.js | 20+ (22 used in CI) | npm comes with it |
| MySQL / MariaDB | 8.0+ / 10.6+ | XAMPP's MariaDB works |
git clone https://github.com/ahmershahdev/zovita.git
cd zovita
composer install
npm install
cp .env.example .env # Windows PowerShell: copy .env.example .env
php artisan key:generateCreate an empty utf8mb4 database called zovita:
mysql -u root -e "CREATE DATABASE zovita CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"Set DB_USERNAME / DB_PASSWORD in .env if yours aren't root with no password, then:
php artisan migrate --seed # 1,186 products, demo customer, three staff accounts
php artisan storage:link # public/storage → storage/app/public
php artisan catalog:cache-images # downloads product photos as WebP (a few minutes)Products without a cached photo stay hidden from the shop.
A. Built-in server
npm run build
php artisan serve # http://127.0.0.1:8000 (APP_URL=http://127.0.0.1:8000)Use npm run dev instead of npm run build for hot reload.
B. XAMPP / Apache: clone into htdocs/zovita, set APP_URL=http://localhost/zovita, run npm run build and open http://localhost/zovita. The root .htaccess routes requests into public/. Don't run php artisan route:cache under a subfolder install.
| Account | Sign in at | Password | |
|---|---|---|---|
| Owner (admin) | /admin/login |
admin@zovita.com |
Admin@1234 |
| Pharmacist | /admin/login |
pharmacist@zovita.com |
Pharma@1234 |
| Support | /admin/login |
support@zovita.com |
Support@1234 |
| Demo customer | /login |
demo@zovita.pk |
password |
Staff can turn on two-step sign-in from My security in the panel.
Change the staff passwords before going live.
php artisan user:admin you@example.com --role=ownerpromotes your own account;php artisan user:admin admin@zovita.com --revokeremoves the seeded one.
| To enable | Set in .env
|
|---|---|
| Real e-mail |
MAIL_MAILER=resend, RESEND_API_KEY, and a MAIL_FROM_ADDRESS on a domain verified at resend.com/domains |
| reCAPTCHA | v3 and v2 site + secret keys; allow localhost and your domain on each key |
| Stripe |
PAYMENTS_DRIVER=stripe, STRIPE_SECRET, STRIPE_WEBHOOK_SECRET (see Payments) |
| Background work |
php artisan schedule:work; with QUEUE_CONNECTION=database, also php artisan queue:work
|
Every key is listed in Configuration. Stuck? See Troubleshooting.
Zovita+ · MIT © Syed Ahmer Shah · Repository · Product information is not medical advice.
Use it
Product
Engineering
Project