Skip to the article
Aniq-UI

HollinaRequirements

Requirements

What to install before you run your package, with Docker or without it, and which services are optional.

For the Full Stack package

What each package contains

PackageApps in the downloadRuns on its own
Full StackAPI, stays website, booking dashboardYes, all three together
Stays WebsiteStays websiteNo: it needs the Hollina API running
Booking DashboardBooking dashboardNo: it needs the Hollina API running
Backend APIAPIYes, serving the API only

A single-app package does not include the other apps. The website and the dashboard read everything from the Hollina API, and the API's code is only in the Full Stack and Backend API packages.

With Docker

  • Docker Desktop on macOS or Windows, or Docker Engine with the Compose plugin on Linux, with Docker Compose 2.24 or newer, which every current Docker Desktop includes; docker compose version prints yours. The full stack starts with one docker compose command, and docker-compose.yml reads back-end/.env only when it exists, a setting older Compose versions reject.
  • An internet connection for the first build, which downloads the base images and the dependencies.
  • Nothing else: Docker brings Node.js, and the database is a SQLite file inside a Docker volume.

With Docker

  • Docker Desktop on macOS or Windows, or Docker Engine on Linux. Your app has its own Dockerfile; Compose is not needed.
  • An internet connection for the first build, which downloads the base image and the dependencies.

Without Docker

  • Node.js 22 or newer, the version every app declares in engines. The Docker images run on Node.js 24. Check yours with node -v.
  • Yarn 4, through Corepack. Run corepack enable once; each app pins its own Yarn version in packageManager and ships its own yarn.lock, so yarn installs the exact tree the template was tested with. If your Node.js has no Corepack (Node.js 25 and newer leave it out), install it first with npm install -g corepack.
  • No global packages.

Database

No database server. The API uses SQLite by default and yarn seed creates the file for you; Docker uses SQLite too. MySQL is supported as a configuration change, not a code change.

Ports

Each app listens on a fixed local port. Make sure nothing else uses them, or, with Docker, move one with SITE_PORT, ADMIN_PORT or API_PORT in a .env beside docker-compose.yml.

AppPort
API8000
Stays website3030
Booking dashboard3031

Port

The website listens on port 3030 and expects the API on 8000. Make sure nothing else uses them.

Port

The dashboard listens on port 3031 and expects the API on 8000. Make sure nothing else uses them.

Port

The API listens on port 8000, and by default accepts the website from 3030 and the dashboard from 3031. Make sure nothing else uses port 8000.

An API to connect

Your app has no data of its own. It needs the Hollina API running and seeded, whose address you set in its .env or pass as a build argument. The API is sold as its own package, the Backend API, and is part of the Full Stack.

Optional services

None of these is needed to run the booking business locally. Each is switched on by its variables in the API's .env; a variable left commented out keeps its feature off.

ServiceWithout it
A Stripe account, for card paymentsWhile neither processor is configured, card bookings go to the shipped simulator, which settles them without contacting anyone. With PayPal alone, card is not offered.
A PayPal business account, for PayPal paymentsWhile neither processor is configured, PayPal bookings go to the simulator too. With Stripe alone, PayPal is not offered. Pay on arrival needs no account: it is a switch in the dashboard.
Cloudflare R2 or another S3-compatible bucketUploads are stored on the API's own disk (with Docker, in the data volume), and the API serves the seeded photographs itself.
A Google Gemini keyThe AI assistant says it is not connected yet, and nothing is billed. Everything else works.
A key for the MCP serverPOST /api/mcp refuses every request.

There is no mail service to set up: the API sends no email. A guest sees what happened on the page they are on, and the host team is told in the dashboard's notifications.

Maps

The stay page draws its map of the approximate area with OpenFreeMap's Positron style, which needs an internet connection and no key or account. It promises no uptime, and NEXT_PUBLIC_MAP_STYLE_LIGHT and NEXT_PUBLIC_MAP_STYLE_DARK point the map at another MapLibre style.

Stuck on a step?

Find a fix before you start over.

Troubleshooting

Cookie Preferences

We use cookies to enhance your browsing experience, analyze site traffic, and personalize content. By clicking "Accept All", you consent to our use of cookies for analytics and personalized advertising.