Skip to content
This repository was archived by the owner on Oct 25, 2026. It is now read-only.

Getting Started

Syed Ahmer Shah edited this page Oct 25, 2026 · 1 revision

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.

1. Requirements

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

2. Install

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:generate

3. Database

Create 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.

4. Build and run

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.

5. Sign in

Account Sign in at Email 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=owner promotes your own account; php artisan user:admin admin@zovita.com --revoke removes the seeded one.

6. Optional services

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.

Clone this wiki locally