Devya Solutions — System of Apps
How the marketing site, admin dashboard, booking app, and backend API fit together. Who logs in where, what each app does, and where the data lives.
Sign-in credentials
For the marketing team and ops admins. Keep these private.
- URL
- https://admin.devya-solutions.com
- admin@devya-solutions.com
- Password
- 5BBQvTAr94BDNDZsH2eE
- Local dev
- https://admin.localhost
Behind portless; same creds.
docker exec devya-backend node dist/seed.js with a new SEED_ADMIN_PASSWORD on the VPS.The four apps
Marketing Site
https://www.devya.dev
Public website. ISR 60s. Reads from /api/public/*.
github.com/eng-AhmedMahmoud/devya-solutions
Admin Dashboard
https://admin.devya-solutions.com
CMS + bookings management. JWT cookie auth. Uploads to Cloudflare Images.
github.com/eng-AhmedMahmoud/devya-admin-app
Booking App
https://book.devya-solutions.com
Public 30-min slot picker for marketing / dev / business calls.
github.com/eng-AhmedMahmoud/devya-booking-app
Backend API
https://api.devya-solutions.com/api/health
NestJS + Prisma. Docker on Hostinger VPS 72.61.81.59 behind nginx + certbot.
github.com/eng-AhmedMahmoud/devya-backend
System map
Users → apps → platform → storage. Solid arrows are real-time requests, dashed are cached.
Who does what
Marketing Team
- →Sign in to admin dashboard
- →Edit Hero, Services, Reasons, Testimonials, Partners, Achievements, Awards
- →Add / publish Projects & Industries
- →Write Blog posts
- →Upload images (auto-pushed to Cloudflare Images)
Ops Admin
- →Same login as marketing team (role ADMIN)
- →Review incoming bookings on /bookings
- →Confirm / cancel / annotate booking entries
- →Monitor contact-form submissions
- →Rotate credentials via SEED_ADMIN_PASSWORD on VPS
Marketing flow — publishing content
From sign-in to a new project appearing on www.devya.dev (typically < 60s via ISR).
Booking flow — customer to admin
Customer books on the public booking app; admin reviews and confirms inside the dashboard.
Where the data lives
Postgres (VPS)
Volume devya-postgres-data on the Hostinger VPS. Holds Users, Bookings, and all CMS entities (Projects, Industries, BlogPost, Services, Hero, etc.).
prisma schema lives in backend repo
Cloudflare Images
All uploads from the admin dashboard go to the Cloudflare account; URLs are stored as plain strings in Postgres. Delivery via imagedelivery.net/<hash>/<id>/public.
env: CLOUDFLARE_ACCOUNT_ID · CLOUDFLARE_API_TOKEN · CLOUDFLARE_IMAGES_ACCOUNT_HASH