A modern TypeScript stack your developers already know
No proprietary framework and no encrypted files. Nodes Travels is a standard Next.js and Prisma application, so any competent web team can read, extend and maintain it.
The stack
| Layer | Technology | Why it matters |
|---|---|---|
| Web framework | Next.js 16 (App Router), React 19 server components | Fast server-rendered pages that search engines can index |
| Language | TypeScript throughout | Supplier responses and bookings are typed end to end |
| Styling | Tailwind CSS 4 with theme tokens | Themes are data and CSS variables, not forked page copies |
| Database | Prisma 6 ORM on SQLite or MySQL | SQLite for local and small installs, MySQL for production |
| Mobile | Expo SDK 58, React Native, expo-router | One codebase for iOS and Android |
| Runtime | Node.js 20 or newer | Runs on shared Node hosting, a VPS or a container |
Architecture choices that matter to an agency
Provider adapters
Each supplier sits behind a common provider interface, so adding or swapping a supplier does not touch the search pages.
Gateway router
Payment gateways share one adapter shape with failover and a circuit breaker, so a failing gateway is skipped automatically.
One app, many surfaces
Website, admin, B2B channel, public API and mobile API all live in the same Next.js project and share one database.
Settings in the database
Branding, homepage, themes, promos and SEO live in database settings, so most changes need no redeploy.
Security built in
- Revocable database-backed sessions
- TOTP two-factor sign-in for admins
- Optional Cloudflare Turnstile CAPTCHA on public forms
- Database-backed rate limits and per-customer booking caps
- API keys for partners stored hashed, never in plain text
- Signed one-time links for app-to-web checkout handoff
Frequently asked questions
Can we move from SQLite to MySQL later?
Yes. The schema is written to work on both. Switch the Prisma provider to mysql, set DATABASE_URL and run prisma db push against the new database.
Is the code obfuscated?
No. It is ordinary TypeScript you can read and modify. Only the licence check verifies that the key matches the domain.
Do we need a separate API server?
No. The supplier calls, payment webhooks, partner API and mobile API are Next.js route handlers inside the same app.
Check the hosting you will need
See server requirements, then read the install guide.