Javis OS
Javis OS is an Agentic AI that assists entrepreneurs in business tasks, helping them grow their work.
AI translation
Create stunning client galleries, deliver private collections, and manage bookings and client proofing. Built for modern photographers in East Africa and worldwide.
BusinessGitHub @maximemucyoOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
ifotoset is a production-grade, highly scalable SaaS platform for photographers to manage portfolios, organize client galleries, and collect payments.
Taken from the repository README
Loading the full README.
Read the full README ↗ifotoset is a production-grade, highly scalable SaaS platform for photographers to manage portfolios, organize client galleries, and collect payments.
This platform is a Laravel 11 (PHP 8.3) full-stack application (Blade, Tailwind CSS v4, Alpine.js) with a versioned REST API, backed by MySQL, Redis, and S3-compatible Backblaze B2 storage proxied through Cloudflare CDN for zero egress costs.
ifotoset/ # Laravel 11 app (Blade + Tailwind v4 + Alpine.js, built with Vite)
├── app/
│ ├── Actions/ # Billing, studio and admin use cases
│ ├── Enums/ # Backed enums (PhotoStatus, NotificationPreference, …)
│ ├── Http/Controllers/
│ │ ├── Web/ # Public site, studio, admin, auth
│ │ └── Api/V1/ # Small JSON API used by gallery JavaScript + PawaPay webhook
│ ├── Jobs/ # Photo/video processing, ZIP exports, Google Photos sync
│ └── Services/ # UploadService, StorageService, PawaPayGateway
├── database/ # Migrations and idempotent plan seeders
├── resources/views/ # Blade views (see DESIGN-SYSTEM.md)
├── cdn_cloudflare_worker.js # Cloudflare Worker in front of Backblaze B2 (credentials are Worker secrets)
├── deploy.sh # Production deploy steps run by the push-to-main webhook
├── ecosystem.config.cjs # pm2: queue workers and video worker
├── docker/ # Local docker files
└── docker-compose.yml # Development stack (MySQL, Redis, Mailpit, S3 stand-in)
BINARY(16) fields internally to prevent MySQL index fragmentation.HeadObject metadata requests, preserving application server network bandwidth.PaymentGateway abstraction for PawaPay (MTN, Airtel, …); callbacks are re-verified against the provider before a payment is finalised.The web UI is a Laravel full-stack app (Blade + Tailwind v4 + Alpine.js, built with Vite).
Copy .env.example to .env. For local development, point
storage at the bundled S3-compatible service and mail at Mailpit:
APP_URL=http://localhost:8000
PROTOCOL=http
ROOT_DOMAIN=localhost:8000 # photographer sites live at http://{username}.localhost:8000
DB_HOST=mysql
REDIS_HOST=redis
QUEUE_CONNECTION=redis
MAIL_HOST=mailpit
MAIL_PORT=1025
BACKBLAZE_B2_KEY_ID=ifotoset
BACKBLAZE_B2_APPLICATION_KEY=ifotoset-secret
BACKBLAZE_B2_REGION=us-east-1
BACKBLAZE_B2_BUCKET=ifotoset-media
BACKBLAZE_B2_ENDPOINT=http://s3:8333 # server-side (inside docker)
BACKBLAZE_B2_PUBLIC_ENDPOINT=http://localhost:8333 # browser-facing presigned URLs
CLOUDFLARE_CDN_DOMAIN=localhost:8333/ifotoset-media
CDN_PROTOCOL=http
USE_CDN_DOWNLOADS=false
Host port forwards can be overridden in the same .env (FORWARD_DB_PORT, FORWARD_REDIS_PORT, FORWARD_MAILPIT_PORT,
FORWARD_MAILPIT_DASHBOARD_PORT, FORWARD_S3_PORT).
docker compose up -d --build
docker compose exec backend composer install
docker compose exec backend php artisan key:generate
docker compose exec backend php artisan migrate --seed # includes DemoContentSeeder (real photos, clients, bookings…)
docker compose exec backend php artisan storage:init-local
Services: backend (:8000), queue, queue_photos, scheduler, mysql, redis, mailpit (UI :8025),
and s3 (SeaweedFS S3 gateway on :8333, standing in for Backblaze B2 + Cloudflare CDN).
npm install
npm run dev # Vite dev server with HMR
npm run build # production build into public/build
Demo logins: [email protected] / demo123 (photographer), [email protected] / demo123 (admin).
See resources/views/DESIGN-SYSTEM.md for tokens, component classes, Blade components and layout conventions.
main deploys automatically (see deploy.sh). Back up the database first.php artisan schedule:run every minute). Do not also run schedule:work under pm2, or every job runs twice.docker compose exec -T backend php artisan test.