Javis OS
Javis OS는 기업가를 돕는 에이전시 AI로, 업무를 지원하고 함께 성장합니다
ifotoset은 멋진 갤러리·비공개 컬렉션을 만들고, 예약·검수를 관리하는 도구로, 동아프리카 및 전 세계 사진작가를 위해 설계되었습니다
Create stunning client galleries, deliver private collections, and manage bookings and client proofing. Built for modern photographers in East Africa and worldwide.
비즈니스PHP · BladeGitHub @maximemucyo온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기ifotoset is a production-grade, highly scalable SaaS platform for photographers to manage portfolios, organize client galleries, and collect payments.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
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.