Auto-Detection
Makofy automatically detects your project type, framework, package manager, and environment variable requirements.
Project type detection
Detection happens during the build phase. The init container inspects your source code in this order:
- Dockerfile — if present, used as-is
- package.json — Node.js (further inspected for framework)
- go.mod — Go
- requirements.txt / pyproject.toml / Pipfile — Python
- Gemfile — Ruby
- index.html — Static HTML
- frontend/ + backend/ — Monorepo
Node.js framework detection
| Detected dependency | Framework | Build strategy |
|---|---|---|
next | Next.js | Standalone build, node server.js |
vite, @vitejs/* | Vite | Static build → nginx |
react-scripts | Create React App | Static build → nginx |
svelte | SvelteKit | Static build → nginx |
astro | Astro | Static build → nginx |
express, fastify | Node.js server | npm start |
Package manager detection
| Lock file | Package manager | Install command |
|---|---|---|
bun.lockb | Bun | bun install --frozen-lockfile |
pnpm-lock.yaml | pnpm | pnpm install --frozen-lockfile |
yarn.lock | Yarn | yarn install --frozen-lockfile |
| (none) | npm | npm ci |
Environment variable scanning
During the build, Makofy scans all source files (excluding node_modules/, vendor/, .git/, __pycache__/) for references to environment variables. The scan runs after cloning and before Dockerfile generation.
Results are stored on the app record and displayed in the dashboard's Env tab.
Overriding detection
To override auto-detection, add a Dockerfile to your project root. If a Dockerfile exists, Makofy always uses it instead of generating one.