diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 00000000..39bbd268 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,4 @@ +{ + "image": "mcr.microsoft.com/devcontainers/universal:2", + "features": {} +} diff --git a/.env.example b/.env.example new file mode 100644 index 00000000..32ca4bad --- /dev/null +++ b/.env.example @@ -0,0 +1,38 @@ +# KRUMAQ-COPILOT — environment variables +# Copy this file to `.env` and fill in your values before running `docker compose up`. + +# ── Open WebUI ──────────────────────────────────────────────────────────────── + +# Display name shown in the UI header +WEBUI_NAME=KRUMAQ-COPILOT + +# Public URL of your deployment (used for link generation and CORS) +# LAN/localhost example: https://krumaq.localhost +# Public domain example: https://krumaq.yourdomain.com +# Tailscale example: https://my-server.tail1234.ts.net +WEBUI_URL=https://krumaq.localhost + +# Secret key for session signing — CHANGE THIS before starting the stack. +# ⚠️ The stack will refuse to start if this placeholder value is kept. +# Generate a secure key with: openssl rand -hex 32 +WEBUI_SECRET_KEY=change-me-please-use-openssl-rand-hex-32 + +# Default model loaded on first launch +DEFAULT_MODELS=llama3.2 + +# Set to `false` to disable public user registration (recommended for private installs) +ENABLE_SIGNUP=false + +# ── Ollama ──────────────────────────────────────────────────────────────────── + +# How long models stay loaded in memory after a request (e.g. 5m, 1h, 24h) +OLLAMA_KEEP_ALIVE=24h + +# Number of requests processed in parallel (increase if you have >16GB VRAM) +OLLAMA_NUM_PARALLEL=2 + +# ── Caddy ───────────────────────────────────────────────────────────────────── + +# Domain Caddy listens on. Must match WEBUI_URL above (without the https:// prefix). +# For public domains with auto Let's Encrypt, just set your real domain here. +KRUMAQ_DOMAIN=krumaq.localhost diff --git a/.github/agents/my-agent.agent.md b/.github/agents/my-agent.agent.md new file mode 100644 index 00000000..8ff8aa88 --- /dev/null +++ b/.github/agents/my-agent.agent.md @@ -0,0 +1,13 @@ +--- +# Fill in the fields below to create a basic custom agent for your repository. +# The Copilot CLI can be used for local testing: https://gh.io/customagents/cli +# To make this agent available, merge this file into the default repository branch. +# For format details, see: https://gh.io/customagents/config + +name: +description: +--- + +# My Agent + +Describe what your agent does here. diff --git a/KRUMAQ-COPILOT.md b/KRUMAQ-COPILOT.md new file mode 100644 index 00000000..42f93b70 --- /dev/null +++ b/KRUMAQ-COPILOT.md @@ -0,0 +1,290 @@ +# KRUMAQ-COPILOT — Personal Standalone AI & Private Cloud + +Your own AI assistant, fully self-hosted. No subscriptions, no cloud fees, no data leaving your machine. + +--- + +## 🖥️ Hardware Requirements + +### Minimum viable setup (~$300–500 used/refurbished) + +| Component | Specification | +|-----------|--------------| +| CPU | Intel i7/i9 (10th gen+) or AMD Ryzen 7/9 — 8+ cores | +| RAM | 32 GB DDR4 (64 GB recommended) | +| GPU | NVIDIA RTX 3060 **12 GB VRAM** or RTX 4060 Ti 16 GB | +| Storage | 1 TB NVMe SSD (OS + models) + 2 TB HDD (data) | +| Network | Gigabit Ethernet | + +> **Why a GPU with 12+ GB VRAM?** Local LLMs are loaded entirely into GPU memory. A 12 GB card runs 7B–13B parameter models comfortably. 24 GB lets you run 70B models. + +### Better long-term setup (~$1,000–2,000) + +| Component | Specification | +|-----------|--------------| +| GPU | NVIDIA RTX 4090 (24 GB VRAM) | +| RAM | 128 GB DDR5 | +| Storage | 2 TB NVMe SSD | +| Alternative | Used Dell Precision / HP Z-series workstation + GPU upgrade | + +--- + +## 🏗️ Architecture + +``` +[Your Devices] ──Tailscale VPN──► [Your Home Server] + │ + ┌─────────▼─────────┐ + │ Docker Stack │ + │ ┌─────────────┐ │ + │ │ Ollama │ │ ← LLM backend (port 11434) + │ └─────────────┘ │ + │ ┌─────────────┐ │ + │ │ Open WebUI │ │ ← Web chat UI (port 8080) + │ └─────────────┘ │ + │ ┌─────────────┐ │ + │ │ Caddy │ │ ← HTTPS reverse proxy (443) + │ └─────────────┘ │ + └───────────────────┘ +``` + +--- + +## 🚀 Quick Start + +### 1. Prepare your server + +Install **Ubuntu Server 22.04 LTS** or **Debian 12** on your dedicated machine. + +### 2. Install Docker + +```bash +curl -fsSL https://get.docker.com | bash +sudo usermod -aG docker $USER +newgrp docker +``` + +### 3. Clone this repository + +```bash +git clone https://github.com/XavierMP14/copilot-cli.git +cd copilot-cli +``` + +### 4. Configure your environment + +```bash +cp .env.example .env +nano .env # edit WEBUI_SECRET_KEY, WEBUI_URL, KRUMAQ_DOMAIN +``` + +### 5. Start the stack + +```bash +docker compose up -d +``` + +### 6. Pull an AI model + +```bash +# General purpose (recommended to start) +docker exec -it krumaq-ollama ollama pull llama3.2 + +# Code-focused (similar to GitHub Copilot) +docker exec -it krumaq-ollama ollama pull deepseek-coder + +# Fast & lightweight (low-RAM machines) +docker exec -it krumaq-ollama ollama pull phi3 + +# Best quality (requires 24 GB+ VRAM) +docker exec -it krumaq-ollama ollama pull llama3.2:70b +``` + +### 7. Open the web UI + +Visit `https://krumaq.localhost` (or your configured domain) in your browser. + +--- + +## 💻 CLI Installation + +Install the `krumaq` terminal interface on any machine on your network: + +```bash +curl -fsSL https://raw.githubusercontent.com/XavierMP14/copilot-cli/main/krumaq-install.sh | bash +``` + +Point it at your server: + +```bash +export KRUMAQ_HOST="http://192.168.1.50:11434" # replace with your server IP +krumaq "explain Docker networking" +``` + +Or add it permanently to your shell profile (`~/.bashrc`, `~/.zshrc`): + +```bash +echo 'export KRUMAQ_HOST="http://192.168.1.50:11434"' >> ~/.bashrc +``` + +### CLI usage + +``` +krumaq # interactive chat (REPL) +krumaq "write a Dockerfile for Node" # one-shot prompt +krumaq --model deepseek-coder "refactor: $(cat app.py)" +krumaq --list # list available models +krumaq --pull mistral # pull a model +krumaq --help # full help +``` + +--- + +## 🌐 Remote Access (no open ports) + +### Option A — Tailscale (recommended) + +1. [Sign up for Tailscale](https://tailscale.com) — free for up to 3 users / 100 devices +2. Install on your server: `curl -fsSL https://tailscale.com/install.sh | sh && sudo tailscale up` +3. Install on your laptop/phone +4. Access KRUMAQ-COPILOT via your Tailscale hostname, e.g. `https://my-server.tail1234.ts.net` + +### Option B — Cloudflare Tunnel (public HTTPS, no port forwarding) + +1. [Create a free Cloudflare account](https://cloudflare.com) +2. Install `cloudflared`: `curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo apt-key add -` +3. `cloudflared tunnel login && cloudflared tunnel create krumaq` +4. Route your domain: `cloudflared tunnel route dns krumaq krumaq.yourdomain.com` +5. Run: `cloudflared tunnel run krumaq` + +### Option C — DuckDNS (free dynamic DNS) + +1. Visit [duckdns.org](https://www.duckdns.org) and create a free subdomain +2. Set up auto-update: `echo "url=\"https://www.duckdns.org/update?domains=YOUR_DOMAIN&token=YOUR_TOKEN&ip=\" | curl -o ~/duckdns/duck.log -K -" | crontab -` +3. Forward ports 80 and 443 on your router to your server +4. Update `KRUMAQ_DOMAIN` in `.env` to your DuckDNS subdomain + +--- + +## 🔧 Nginx Alternative + +If you prefer Nginx over Caddy, replace the `caddy` service in `docker-compose.yml` with: + +```yaml +nginx: + image: nginx:stable-alpine + container_name: krumaq-nginx + restart: unless-stopped + ports: + - "80:80" + - "443:443" + volumes: + - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro + - ./nginx/certs:/etc/nginx/certs:ro +``` + +Then generate a self-signed certificate for LAN use: + +```bash +mkdir -p nginx/certs +openssl req -x509 -nodes -days 3650 -newkey rsa:4096 \ + -keyout nginx/certs/krumaq.key \ + -out nginx/certs/krumaq.crt \ + -subj "/CN=krumaq.localhost" +``` + +--- + +## 🎛️ GPU Support (NVIDIA) + +1. Install the [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html) +2. Uncomment the `deploy` block in `docker-compose.yml` under the `ollama` service: + +```yaml +deploy: + resources: + reservations: + devices: + - driver: nvidia + count: all + capabilities: [gpu] +``` + +3. Restart: `docker compose up -d` +4. Verify GPU is used: `docker exec -it krumaq-ollama ollama ps` + +--- + +## 🧠 Fine-Tuning (Optional) + +Personalise a model with your own documents or coding style using [Unsloth](https://github.com/unslothai/unsloth) — free, runs on consumer GPUs: + +```bash +pip install unsloth +# Follow Unsloth's notebook examples to fine-tune Llama or Mistral +# Then import the result into Ollama via a Modelfile +``` + +--- + +## 💰 Cost Summary + +| Item | Cost | +|------|------| +| Hardware (one-time) | $300 – $2,000 | +| Electricity (~100 W server, 24/7) | ~$7 – $12 / month | +| Software stack | **$0** | +| Cloud / hosting fees | **$0** | +| Domain (optional) | **$0** with DuckDNS or Tailscale | + +**Total ongoing cost: ~$7–12/month in electricity only.** + +--- + +## 📦 File Overview + +| File | Purpose | +|------|---------| +| `docker-compose.yml` | Full stack deployment (Ollama + Open WebUI + Caddy) | +| `caddy/Caddyfile` | HTTPS reverse proxy configuration | +| `nginx/nginx.conf` | Nginx alternative reverse proxy | +| `krumaq` | CLI wrapper script | +| `krumaq-install.sh` | One-line CLI installer | +| `.env.example` | Environment variable template | + +--- + +## 🔄 Updates + +```bash +# Pull latest images +docker compose pull + +# Restart with new images +docker compose up -d + +# Update the CLI +curl -fsSL https://raw.githubusercontent.com/XavierMP14/copilot-cli/main/krumaq-install.sh | bash +``` + +--- + +## 🆘 Troubleshooting + +**Ollama not reachable:** +```bash +docker compose logs ollama +docker compose restart ollama +``` + +**Out of VRAM / model too slow:** +```bash +# Switch to a smaller model +krumaq --pull phi3 +export KRUMAQ_MODEL=phi3 +``` + +**Web UI not loading:** +```bash +docker compose logs open-webui caddy +``` diff --git a/caddy/Caddyfile b/caddy/Caddyfile new file mode 100644 index 00000000..e3958066 --- /dev/null +++ b/caddy/Caddyfile @@ -0,0 +1,43 @@ +# KRUMAQ-COPILOT — Caddyfile +# +# Caddy automatically provisions and renews TLS certificates. +# +# LAN / localhost usage (self-signed, trusted via mkcert or browser exception): +# Set KRUMAQ_DOMAIN=krumaq.localhost in .env and access from the same machine. +# +# Public domain (auto Let's Encrypt): +# Set KRUMAQ_DOMAIN=krumaq.yourdomain.com, ensure port 80/443 are reachable, +# and Caddy will obtain a certificate automatically. +# +# Tailscale / private network: +# Use your Tailscale MagicDNS hostname, e.g. my-server.tail1234.ts.net + +{KRUMAQ_DOMAIN:krumaq.localhost} { + + # Reverse-proxy all traffic to Open WebUI + reverse_proxy open-webui:8080 { + header_up Host {host} + header_up X-Real-IP {remote_host} + header_up X-Forwarded-For {remote_host} + header_up X-Forwarded-Proto {scheme} + } + + # Security headers + header { + Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" + X-Content-Type-Options "nosniff" + X-Frame-Options "SAMEORIGIN" + Referrer-Policy "strict-origin-when-cross-origin" + -Server + } + + # Compress responses + encode zstd gzip + + # Logging + log { + output stdout + format console + level INFO + } +} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..27dadf4b --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,89 @@ +# KRUMAQ-COPILOT — Docker Compose Stack +# Services: Ollama (LLM backend) + Open WebUI (chat interface) + Caddy (HTTPS reverse proxy) +# +# Quick start: +# 1. Copy .env.example to .env and edit as needed +# 2. docker compose up -d +# 3. Open https://krumaq.localhost (or your configured domain) in your browser +# 4. Pull a model: docker exec -it krumaq-ollama ollama pull llama3.2 +# +# GPU support: uncomment the `deploy` block under the ollama service (requires nvidia-container-toolkit) + +name: krumaq-copilot + +services: + + # ── LLM Backend ────────────────────────────────────────────────────────────── + ollama: + image: ollama/ollama:latest + container_name: krumaq-ollama + restart: unless-stopped + ports: + - "127.0.0.1:11434:11434" # bind to localhost only; Caddy proxies externally + volumes: + - ollama_data:/root/.ollama + environment: + - OLLAMA_KEEP_ALIVE=${OLLAMA_KEEP_ALIVE:-24h} + - OLLAMA_NUM_PARALLEL=${OLLAMA_NUM_PARALLEL:-2} + # Uncomment the block below to enable NVIDIA GPU passthrough. + # Requires: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html + # deploy: + # resources: + # reservations: + # devices: + # - driver: nvidia + # count: all + # capabilities: [gpu] + healthcheck: + test: ["CMD", "ollama", "list"] + interval: 30s + timeout: 10s + retries: 5 + start_period: 20s + + # ── Web Chat UI ─────────────────────────────────────────────────────────────── + open-webui: + image: ghcr.io/open-webui/open-webui:main + container_name: krumaq-webui + restart: unless-stopped + depends_on: + ollama: + condition: service_healthy + expose: + - "8080" + volumes: + - webui_data:/app/backend/data + environment: + - OLLAMA_BASE_URL=http://ollama:11434 + - WEBUI_NAME=${WEBUI_NAME:-KRUMAQ-COPILOT} + - WEBUI_URL=${WEBUI_URL:-https://krumaq.localhost} + - WEBUI_SECRET_KEY=${WEBUI_SECRET_KEY:?Please set WEBUI_SECRET_KEY in your .env file — run: openssl rand -hex 32} + - DEFAULT_MODELS=${DEFAULT_MODELS:-llama3.2} + - ENABLE_SIGNUP=${ENABLE_SIGNUP:-false} + - ENABLE_LOGIN_FORM=${ENABLE_LOGIN_FORM:-true} + + # ── HTTPS Reverse Proxy ─────────────────────────────────────────────────────── + caddy: + image: caddy:2-alpine + container_name: krumaq-caddy + restart: unless-stopped + depends_on: + - open-webui + ports: + - "80:80" + - "443:443" + - "443:443/udp" # HTTP/3 + volumes: + - ./caddy/Caddyfile:/etc/caddy/Caddyfile:ro + - caddy_data:/data + - caddy_config:/config + +volumes: + ollama_data: + name: krumaq_ollama_data + webui_data: + name: krumaq_webui_data + caddy_data: + name: krumaq_caddy_data + caddy_config: + name: krumaq_caddy_config diff --git a/krumaq b/krumaq new file mode 100755 index 00000000..1705a96f --- /dev/null +++ b/krumaq @@ -0,0 +1,264 @@ +#!/usr/bin/env bash +# KRUMAQ-COPILOT CLI — terminal interface for your local AI +# +# Talks directly to your Ollama instance. No cloud, no tokens, no cost. +# +# Usage: +# krumaq [OPTIONS] [PROMPT] +# krumaq # interactive chat (REPL) +# krumaq "explain this code" # single prompt, prints reply and exits +# krumaq --model phi3 "hi" # choose a specific model +# krumaq --list # list locally available models +# krumaq --pull llama3.2 # pull a model from the Ollama registry +# krumaq --version # print version information +# +# Environment variables: +# KRUMAQ_HOST Ollama base URL (default: http://localhost:11434) +# KRUMAQ_MODEL Default model (default: llama3.2) + +set -euo pipefail + +# ── Configuration ───────────────────────────────────────────────────────────── +KRUMAQ_VERSION="1.0.0" +KRUMAQ_HOST="${KRUMAQ_HOST:-http://localhost:11434}" +KRUMAQ_MODEL="${KRUMAQ_MODEL:-llama3.2}" +HISTORY_FILE="${HOME}/.krumaq_history" + +# ── Colour helpers ──────────────────────────────────────────────────────────── +BYTES_PER_GB=1073741824 # 1024^3 bytes + +if [ -t 1 ] && command -v tput >/dev/null 2>&1; then + BOLD="$(tput bold)" + DIM="$(tput dim 2>/dev/null || echo "")" + CYAN="$(tput setaf 6)" + GREEN="$(tput setaf 2)" + YELLOW="$(tput setaf 3)" + RED="$(tput setaf 1)" + RESET="$(tput sgr0)" +else + BOLD="" DIM="" CYAN="" GREEN="" YELLOW="" RED="" RESET="" +fi + +# ── Dependency check ────────────────────────────────────────────────────────── +_require() { + if ! command -v "$1" >/dev/null 2>&1; then + echo "${RED}Error:${RESET} '$1' is required but not installed." >&2 + exit 1 + fi +} +_require curl +_require jq + +# ── Helpers ─────────────────────────────────────────────────────────────────── +_ollama_running() { + curl -sf --max-time 2 "${KRUMAQ_HOST}/api/tags" >/dev/null 2>&1 +} + +_check_ollama() { + if ! _ollama_running; then + echo "${RED}Error:${RESET} Ollama is not reachable at ${KRUMAQ_HOST}" >&2 + echo " • Start it with: docker compose up -d ollama" >&2 + echo " • Or install locally: https://ollama.com/download" >&2 + exit 1 + fi +} + +_banner() { + echo "${BOLD}${CYAN}" + cat <<'EOF' + ██╗ ██╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ██████╗ + ██║ ██╔╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔═══██╗ + █████╔╝ ██████╔╝██║ ██║██╔████╔██║███████║██║ ██║ + ██╔═██╗ ██╔══██╗██║ ██║██║╚██╔╝██║██╔══██║██║▄▄ ██║ + ██║ ██╗██║ ██║╚██████╔╝██║ ╚═╝ ██║██║ ██║╚██████╔╝ + ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚══▀▀═╝ +EOF + echo " ${GREEN}COPILOT${RESET}${CYAN} — Your personal AI, fully self-hosted.${RESET}" + echo "" +} + +# ── Single-turn prompt (streaming) ──────────────────────────────────────────── +_ask() { + local model="$1" + local prompt="$2" + local messages="$3" # JSON array of prior messages (for REPL context) + + local payload + payload=$(jq -nc \ + --arg model "$model" \ + --arg prompt "$prompt" \ + --argjson messages "$messages" \ + '{model: $model, messages: ($messages + [{role:"user", content:$prompt}]), stream: true}') + + printf "%s" "${GREEN}" + curl -sf --no-buffer \ + -H "Content-Type: application/json" \ + -d "$payload" \ + "${KRUMAQ_HOST}/api/chat" \ + | while IFS= read -r line; do + content=$(echo "$line" | jq -r '.message.content // empty' 2>/dev/null) + [ -n "$content" ] && printf "%s" "$content" + done + printf "%s\n" "${RESET}" +} + +# ── List available models ────────────────────────────────────────────────────── +_list_models() { + _check_ollama + echo "${BOLD}Available models on ${KRUMAQ_HOST}:${RESET}" + curl -sf "${KRUMAQ_HOST}/api/tags" \ + | jq -r --argjson bpg "$BYTES_PER_GB" '.models[] | " • \(.name) (\(.size / $bpg | floor))GB modified: \(.modified_at[:10])"' \ + 2>/dev/null \ + || echo " (no models found — run: krumaq --pull llama3.2)" +} + +# ── Pull a model ─────────────────────────────────────────────────────────────── +_pull_model() { + local model="$1" + _check_ollama + echo "Pulling ${BOLD}${model}${RESET} — this may take a while..." + curl -sf \ + -H "Content-Type: application/json" \ + -d "{\"name\": \"${model}\"}" \ + "${KRUMAQ_HOST}/api/pull" \ + | while IFS= read -r line; do + status=$(echo "$line" | jq -r '.status // empty' 2>/dev/null) + [ -n "$status" ] && printf "\r %s%-60s" "${DIM}" "$status" + done + echo "" + echo "${GREEN}✓${RESET} Model '${model}' ready." +} + +# ── Interactive REPL ─────────────────────────────────────────────────────────── +_repl() { + local model="$1" + _check_ollama + _banner + echo "${BOLD}Model:${RESET} ${model} | ${BOLD}Host:${RESET} ${KRUMAQ_HOST}" + echo "${DIM}Commands: /model /list /pull /clear /exit${RESET}" + echo "" + + local messages="[]" + + # Enable readline history if available + if command -v rlwrap >/dev/null 2>&1; then + exec rlwrap -H "$HISTORY_FILE" "$0" --repl-inner "$model" + fi + + while true; do + printf "${BOLD}${CYAN}you>${RESET} " + IFS= read -r input || { echo ""; break; } + + [ -z "$input" ] && continue + + case "$input" in + /exit|/quit|exit|quit) + echo "Goodbye." + break + ;; + /clear) + messages="[]" + echo "${DIM}Context cleared.${RESET}" + continue + ;; + /list) + _list_models + continue + ;; + /pull\ *) + _pull_model "${input#/pull }" + continue + ;; + /model\ *) + model="${input#/model }" + echo "${DIM}Switched to model: ${model}${RESET}" + continue + ;; + /help|/?) + echo " /model — switch model" + echo " /list — list available models" + echo " /pull — pull a model (e.g. /pull deepseek-coder)" + echo " /clear — clear conversation context" + echo " /exit — quit" + continue + ;; + esac + + # Save user turn to history + echo "$input" >> "$HISTORY_FILE" 2>/dev/null || true + + printf "${BOLD}${CYAN}krumaq>${RESET} " + local reply + reply=$(_ask "$model" "$input" "$messages") + echo "$reply" + + # Append both turns to context for multi-turn conversation + messages=$(echo "$messages" | jq \ + --arg user "$input" \ + --arg assistant "$reply" \ + '. + [{role:"user",content:$user},{role:"assistant",content:$assistant}]') + done +} + +# ── Argument parsing ─────────────────────────────────────────────────────────── +usage() { + cat < Model to use (default: \$KRUMAQ_MODEL or llama3.2) + -H, --host Ollama host (default: \$KRUMAQ_HOST or http://localhost:11434) + --list List locally available models + --pull Pull a model from the Ollama registry + --version Print version + -h, --help Show this help + +${BOLD}Examples:${RESET} + krumaq # interactive chat + krumaq "write a Python hello world" # one-shot prompt + krumaq --model deepseek-coder "refactor this function: \$(cat main.py)" + krumaq --list + krumaq --pull phi3 + +${BOLD}Environment:${RESET} + KRUMAQ_HOST Ollama base URL (default: http://localhost:11434) + KRUMAQ_MODEL Default model (default: llama3.2) +EOF +} + +MODEL="$KRUMAQ_MODEL" +PROMPT="" +ACTION="repl" + +while [[ $# -gt 0 ]]; do + case "$1" in + -h|--help) usage; exit 0 ;; + --version) echo "krumaq ${KRUMAQ_VERSION}"; exit 0 ;; + --list) ACTION="list"; shift ;; + --pull) ACTION="pull"; shift; PULL_MODEL="${1:-}"; shift ;; + -m|--model) shift; MODEL="${1:-$MODEL}"; shift ;; + -H|--host) shift; KRUMAQ_HOST="${1:-$KRUMAQ_HOST}"; shift ;; + --repl-inner) shift; MODEL="${1:-$MODEL}"; ACTION="repl-inner"; shift ;; + --) shift; PROMPT="$*"; break ;; + -*) echo "${RED}Unknown option:${RESET} $1" >&2; usage >&2; exit 1 ;; + *) PROMPT="${PROMPT:+$PROMPT }$1"; shift ;; + esac +done + +case "$ACTION" in + list) _list_models ;; + pull) _pull_model "${PULL_MODEL:-}" ;; + repl-inner) _repl "$MODEL" ;; + repl) + if [ -n "$PROMPT" ]; then + _check_ollama + _ask "$MODEL" "$PROMPT" "[]" + else + _repl "$MODEL" + fi + ;; +esac diff --git a/krumaq-install.sh b/krumaq-install.sh new file mode 100755 index 00000000..420edfb1 --- /dev/null +++ b/krumaq-install.sh @@ -0,0 +1,155 @@ +#!/usr/bin/env bash +set -e + +# KRUMAQ-COPILOT CLI Installation Script +# Usage: curl -fsSL https://raw.githubusercontent.com/XavierMP14/copilot-cli/main/krumaq-install.sh | bash +# or: wget -qO- https://raw.githubusercontent.com/XavierMP14/copilot-cli/main/krumaq-install.sh | bash +# +# Use | sudo bash to install system-wide to /usr/local/bin. +# Set PREFIX to override the install directory, e.g.: +# PREFIX="$HOME/custom" bash krumaq-install.sh + +echo "Installing KRUMAQ-COPILOT CLI..." + +# ── Dependency checks ───────────────────────────────────────────────────────── +MISSING_DEPS=() +for dep in curl jq; do + if ! command -v "$dep" >/dev/null 2>&1; then + MISSING_DEPS+=("$dep") + fi +done + +if [ ${#MISSING_DEPS[@]} -gt 0 ]; then + echo "Error: The following required tools are missing: ${MISSING_DEPS[*]}" >&2 + echo "" + echo "Install them with your package manager, for example:" >&2 + echo " Ubuntu/Debian: sudo apt install -y ${MISSING_DEPS[*]}" >&2 + echo " macOS: brew install ${MISSING_DEPS[*]}" >&2 + exit 1 +fi + +# ── Platform detection ──────────────────────────────────────────────────────── +case "$(uname -s || echo "")" in + Darwin*) PLATFORM="darwin" ;; + Linux*) PLATFORM="linux" ;; + *) + echo "Error: Unsupported platform. Only Linux and macOS are supported." >&2 + exit 1 + ;; +esac + +# ── Install directory ───────────────────────────────────────────────────────── +if [ "$(id -u 2>/dev/null || echo 1)" -eq 0 ]; then + PREFIX="${PREFIX:-/usr/local}" +else + PREFIX="${PREFIX:-$HOME/.local}" +fi +INSTALL_DIR="$PREFIX/bin" + +if ! mkdir -p "$INSTALL_DIR"; then + echo "Error: Could not create $INSTALL_DIR. Try running with sudo or set PREFIX." >&2 + exit 1 +fi + +# ── Download the krumaq script ──────────────────────────────────────────────── +SCRIPT_URL="${KRUMAQ_SCRIPT_URL:-https://raw.githubusercontent.com/XavierMP14/copilot-cli/main/krumaq}" +TMP_FILE="$(mktemp)" +trap 'rm -f -- "$TMP_FILE"' EXIT + +echo "Downloading krumaq from: $SCRIPT_URL" +if command -v curl >/dev/null 2>&1; then + curl -fsSL "$SCRIPT_URL" -o "$TMP_FILE" +elif command -v wget >/dev/null 2>&1; then + wget -qO "$TMP_FILE" "$SCRIPT_URL" +else + echo "Error: Neither curl nor wget found." >&2 + exit 1 +fi + +# Sanity-check: make sure we got a shell script, not an error page +if ! head -1 "$TMP_FILE" | grep -qE '^#!.*sh'; then + echo "Error: Downloaded file does not look like a shell script. Check the URL." >&2 + exit 1 +fi + +# ── Install ─────────────────────────────────────────────────────────────────── +if [ -f "$INSTALL_DIR/krumaq" ]; then + echo "Notice: Replacing existing krumaq binary at $INSTALL_DIR/krumaq." +fi +cp "$TMP_FILE" "$INSTALL_DIR/krumaq" +chmod +x "$INSTALL_DIR/krumaq" +echo "✓ KRUMAQ-COPILOT CLI installed to $INSTALL_DIR/krumaq" + +# ── Write default config if not present ─────────────────────────────────────── +CONFIG_DIR="${HOME}/.config/krumaq" +CONFIG_FILE="${CONFIG_DIR}/config.sh" +if [ ! -f "$CONFIG_FILE" ]; then + mkdir -p "$CONFIG_DIR" + cat > "$CONFIG_FILE" <<'CONFIG' +# KRUMAQ-COPILOT configuration +# Source this file or add it to your shell profile to set defaults. +# +# Ollama host — change this if Ollama is running on a different machine +# or a non-default port. +export KRUMAQ_HOST="http://localhost:11434" +# +# Default model — run `krumaq --list` to see available models. +export KRUMAQ_MODEL="llama3.2" +CONFIG + echo "✓ Default config written to $CONFIG_FILE" + echo " Edit it to point KRUMAQ_HOST at your Ollama server." +fi + +# ── PATH notice ─────────────────────────────────────────────────────────────── +if ! command -v krumaq >/dev/null 2>&1; then + echo "" + echo "Notice: $INSTALL_DIR is not in your PATH." + + CURRENT_SHELL="$(basename "${SHELL:-/bin/sh}")" + case "$CURRENT_SHELL" in + zsh) RC_FILE="${ZDOTDIR:-$HOME}/.zprofile" ;; + bash) + if [ -f "$HOME/.bash_profile" ]; then + RC_FILE="$HOME/.bash_profile" + elif [ -f "$HOME/.bash_login" ]; then + RC_FILE="$HOME/.bash_login" + else + RC_FILE="$HOME/.profile" + fi + ;; + fish) RC_FILE="${XDG_CONFIG_HOME:-$HOME/.config}/fish/conf.d/krumaq.fish" ;; + *) RC_FILE="$HOME/.profile" ;; + esac + + PATH_LINE="export PATH=\"$INSTALL_DIR:\$PATH\"" + if [ "$CURRENT_SHELL" = "fish" ]; then + PATH_LINE="fish_add_path \"$INSTALL_DIR\"" + fi + + if [ -t 0 ] && [ -e /dev/tty ] && { read -r _ /dev/null; then + echo "" + printf "Would you like to add %s to PATH in %s? [y/N] " "$INSTALL_DIR" "$RC_FILE" + read -r REPLY /dev/null || REPLY="" + if [ "$REPLY" = "y" ] || [ "$REPLY" = "Y" ]; then + mkdir -p "$(dirname "$RC_FILE")" + echo "$PATH_LINE" >> "$RC_FILE" + echo "✓ Added PATH configuration to $RC_FILE" + echo " Restart your shell or run: source $RC_FILE" + fi + else + echo " Add this to $RC_FILE:" + echo " $PATH_LINE" + fi +fi + +# ── Done ────────────────────────────────────────────────────────────────────── +echo "" +echo "Installation complete!" +echo "" +echo " Start the backend: docker compose up -d (see docker-compose.yml)" +echo " Pull a model: krumaq --pull llama3.2" +echo " Chat: krumaq" +echo " One-shot query: krumaq \"explain quantum computing in simple terms\"" +echo "" +echo " Configuration: $CONFIG_FILE" +echo " Full guide: https://github.com/XavierMP14/copilot-cli/blob/main/KRUMAQ-COPILOT.md" diff --git a/nginx/nginx.conf b/nginx/nginx.conf new file mode 100644 index 00000000..85f8cde7 --- /dev/null +++ b/nginx/nginx.conf @@ -0,0 +1,82 @@ +# KRUMAQ-COPILOT — Nginx reverse proxy (alternative to Caddy) +# +# Usage with docker compose: +# Replace the `caddy` service in docker-compose.yml with: +# +# nginx: +# image: nginx:stable-alpine +# container_name: krumaq-nginx +# restart: unless-stopped +# ports: +# - "80:80" +# - "443:443" +# volumes: +# - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro +# - ./nginx/certs:/etc/nginx/certs:ro +# +# To generate a self-signed certificate for LAN use: +# mkdir -p nginx/certs +# openssl req -x509 -nodes -days 3650 -newkey rsa:4096 \ +# -keyout nginx/certs/krumaq.key \ +# -out nginx/certs/krumaq.crt \ +# -subj "/CN=krumaq.localhost" + +worker_processes auto; +error_log /var/log/nginx/error.log warn; +pid /var/run/nginx.pid; + +events { + worker_connections 1024; +} + +http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + + sendfile on; + keepalive_timeout 65; + + # Redirect HTTP → HTTPS + server { + listen 80; + server_name _; + return 301 https://$host$request_uri; + } + + server { + listen 443 ssl http2; + server_name krumaq.localhost; + + ssl_certificate /etc/nginx/certs/krumaq.crt; + ssl_certificate_key /etc/nginx/certs/krumaq.key; + + ssl_protocols TLSv1.2 TLSv1.3; + ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384; + ssl_prefer_server_ciphers off; + ssl_session_cache shared:SSL:10m; + ssl_session_timeout 1d; + + # Security headers + add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; + add_header X-Content-Type-Options "nosniff" always; + add_header X-Frame-Options "SAMEORIGIN" always; + add_header Referrer-Policy "strict-origin-when-cross-origin" always; + + # WebSocket support (required by Open WebUI) + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + + proxy_read_timeout 300s; + proxy_connect_timeout 75s; + + location / { + proxy_pass http://open-webui:8080; + } + } +} diff --git a/website/blog/como-rentar-maquinaria-pesada-acapulco.html b/website/blog/como-rentar-maquinaria-pesada-acapulco.html new file mode 100644 index 00000000..cb0be8b4 --- /dev/null +++ b/website/blog/como-rentar-maquinaria-pesada-acapulco.html @@ -0,0 +1,269 @@ + + + + + + + ¿Cómo Rentar Maquinaria Pesada en Acapulco? | KRUMAQ + + + + + + + + + + + + + + + +
+
+ 📍 Blvd. de las Naciones KM 14, Acapulco, Guerrero + 📞 744-000-0000 +
+
+ + + +
+ +
+
+ +

¿Cómo Rentar Maquinaria Pesada en Acapulco?

+

Guía completa 2025: requisitos, costos, cómo elegir el equipo y qué preguntar al proveedor.

+
+
+ +
+
+
+ + +
+ +

Si tienes un proyecto de construcción en Acapulco o en cualquier parte de Guerrero, rentar maquinaria pesada puede ser mucho más económico que comprarla, especialmente para proyectos de corta o mediana duración. En esta guía te explicamos todo lo que necesitas saber para hacer una renta exitosa en Acapulco.

+ +

1. ¿Cuándo conviene rentar en lugar de comprar?

+

La regla general en la industria es sencilla: si vas a usar el equipo menos del 60% del tiempo, la renta es más conveniente que la compra. Considera rentar cuando:

+
    +
  • El proyecto dura menos de 6 meses.
  • +
  • No tienes personal capacitado para operar y mantener el equipo.
  • +
  • Necesitas un equipo especializado que usarás pocas veces al año.
  • +
  • No quieres inmovilizar capital en activos de maquinaria.
  • +
  • El tipo de maquinaria varía según el proyecto.
  • +
+ +

2. ¿Qué documentos necesito para rentar maquinaria en Acapulco?

+

Los requisitos básicos para personas físicas son:

+
    +
  • Identificación oficial vigente (INE o pasaporte)
  • +
  • Comprobante de domicilio (no mayor a 3 meses)
  • +
  • Depósito en garantía (generalmente del 10% al 30% del valor del equipo)
  • +
  • Contrato de renta firmado
  • +
+

Para personas morales (empresas) se solicita adicionalmente:

+
    +
  • RFC y cédula de identificación fiscal
  • +
  • Acta constitutiva
  • +
  • Poder notarial del representante legal
  • +
+ +

3. ¿Cuánto cuesta rentar maquinaria en Acapulco?

+

Los costos de renta de maquinaria pesada en Acapulco varían según el tipo de equipo, el proveedor y el período de renta. A continuación, una guía de precios orientativos para 2025:

+ + + + + + + + + + + + + + + + +
EquipoTarifa DiariaTarifa SemanalTarifa Mensual
Excavadora 20T$4,500–$7,000$28,000–$42,000$90,000–$130,000
Retroexcavadora$3,500–$5,500$22,000–$35,000$70,000–$110,000
Compactadora Vibrante$2,800–$4,500$18,000–$28,000$55,000–$85,000
Camión Volteo (c/chofer)$3,000–$5,000$19,000–$32,000$60,000–$95,000
+

*Precios en MXN aproximados. Varían según proveedor, temporada y disponibilidad. Consulta cotización exacta con KRUMAQ.

+ +

4. Pasos para rentar maquinaria en Acapulco

+ +

Paso 1: Define qué equipo necesitas

+

Antes de llamar a cualquier proveedor, ten claro: ¿qué tipo de trabajo vas a realizar? ¿Excavación, compactación, carga, demolición? El tipo de suelo y las condiciones del terreno en Guerrero también influyen en la elección del equipo.

+ +

Paso 2: Solicita cotizaciones a varios proveedores

+

Compara al menos 3 proveedores en Acapulco. Asegúrate de que la cotización incluya: tarifa por período, costo de transporte (flete), seguro, y si el operador está o no incluido.

+ +

Paso 3: Verifica el estado del equipo

+

Antes de firmar el contrato, inspecciona el equipo o pide que te envíen fotos del estado actual. Documenta cualquier daño previo para evitar cargos injustificados al devolver el equipo.

+ +

Paso 4: Revisa el contrato

+

Lee cuidadosamente el contrato de renta. Presta especial atención a: política de daños, horas de uso máximas incluidas, penalidades por retraso en la devolución, y qué cubre el seguro.

+ +

Paso 5: Coordina la entrega en tu obra

+

Confirma la fecha, hora y dirección exacta de entrega. Asegúrate de que el acceso al sitio sea adecuado para la maquinaria y el vehículo de transporte.

+ +

5. ¿Con o sin operador? ¿Cuál conviene?

+

Con operador es recomendable si no tienes personal capacitado. Los operadores certificados maximizan la productividad y reducen el riesgo de daños al equipo. KRUMAQ ofrece operadores con más de 5 años de experiencia en obras de Guerrero.

+

Sin operador conviene si ya tienes operadores en nómina y buscas reducir costos. Recuerda que el operador debe tener experiencia específica con el tipo de maquinaria rentada.

+ +

6. Preguntas clave que debes hacer al proveedor

+
    +
  • ¿El seguro cubre daños a terceros y a la propia máquina?
  • +
  • ¿Qué pasa si la máquina falla durante la obra?
  • +
  • ¿Hay costo por horas extra de uso?
  • +
  • ¿Incluye combustible o debo aportarlo yo?
  • +
  • ¿Tienen soporte técnico de emergencia?
  • +
  • ¿Hacen entregas en mi municipio en Guerrero?
  • +
+ +

7. Conclusión

+

Rentar maquinaria en Acapulco es un proceso sencillo si sigues los pasos correctos y eliges un proveedor confiable. En KRUMAQ llevamos más de 15 años apoyando proyectos de construcción en Guerrero con equipos en óptimas condiciones y soporte completo.

+ +
+ ¿Listo para rentar?
+ Consulta nuestro catálogo de renta o solicita una cotización sin costo. Respondemos en menos de 2 horas. +
+ +
+ + + + +
+
+
+ +
+
+

¿Necesitas rentar maquinaria en Acapulco?

+

Somos expertos en maquinaria pesada para construcción en Guerrero. Cotiza sin compromiso.

+ Solicitar cotización → +
+
+ +
+ + + +💬 + + + diff --git a/website/blog/costo-mantenimiento-excavadora.html b/website/blog/costo-mantenimiento-excavadora.html new file mode 100644 index 00000000..94962cd8 --- /dev/null +++ b/website/blog/costo-mantenimiento-excavadora.html @@ -0,0 +1,243 @@ + + + + + + + ¿Cuánto Cuesta el Mantenimiento de una Excavadora? | KRUMAQ Acapulco + + + + + + + + + + + + + + +
+
+ 📍 Blvd. de las Naciones KM 14, Acapulco, Guerrero + 📞 744-000-0000 +
+
+ + + +
+ +
+
+ +

¿Cuánto Cuesta el Mantenimiento de una Excavadora?

+

Guía de costos 2025 para mantenimiento preventivo y correctivo de excavadoras hidráulicas en México.

+
+
+ +
+
+
+ +
+ +

El mantenimiento correcto de una excavadora es fundamental para extender su vida útil, mantener su productividad y evitar costosas reparaciones imprevistas. En este artículo te presentamos un desglose completo de los costos de mantenimiento de excavadoras hidráulicas en México, con especial enfoque en las condiciones de trabajo en Acapulco y Guerrero.

+ +

Frecuencia de mantenimiento: intervalos recomendados

+

El mantenimiento de excavadoras se basa en horas de operación, no en días calendario:

+
    +
  • Cada 10 horas (diario): Inspección visual, niveles de fluidos, presión de neumáticos (si aplica).
  • +
  • Cada 250 horas: Cambio de aceite de motor, filtros de aceite y combustible.
  • +
  • Cada 500 horas: Revisión de sistema hidráulico, filtro de cabina, correas y mangueras.
  • +
  • Cada 1,000 horas: Mantenimiento mayor: sistema de enfriamiento, tren de rodaje, ajuste de componentes.
  • +
  • Cada 2,000 horas: Revisión completa del motor, bomba hidráulica y sistemas de control.
  • +
+ +

Costos de mantenimiento preventivo en México (2025)

+

Los costos varían según la marca, el modelo y el tamaño de la excavadora. A continuación, una estimación para una excavadora mediana (15T–25T):

+ + + + + + + + + + + + + + + + +
ServicioIntervaloCosto aprox. (MXN)
Cambio de aceite motor + filtros250 hrs$4,500–$8,000
Servicio completo 500 hrs500 hrs$12,000–$22,000
Servicio mayor 1,000 hrs1,000 hrs$35,000–$60,000
Revisión tren de rodajeAnual o 1,000 hrs$15,000–$40,000
Cambio aceite hidráulico + filtros500–1,000 hrs$8,000–$18,000
+

*Precios estimados en MXN 2025. Incluyen refacciones y mano de obra. Varían según marca, modelo y condiciones de uso.

+ +

Costos de reparaciones correctivas comunes

+

Las reparaciones no planificadas son siempre más costosas. Estas son algunas de las más frecuentes:

+
    +
  • Reparación de bomba hidráulica: $45,000–$120,000 MXN
  • +
  • Cambio de manguera hidráulica (por pieza): $800–$3,500 MXN
  • +
  • Reparación de motor (overhaul): $80,000–$200,000 MXN
  • +
  • Cambio de pines y bocinas de brazo: $12,000–$30,000 MXN
  • +
  • Reparación de sistema eléctrico/electrónico: $5,000–$25,000 MXN
  • +
  • Reemplazo de zapatas de orugas: $80,000–$180,000 MXN (juego completo)
  • +
+ +

¿Cuánto se puede ahorrar con mantenimiento preventivo?

+

La regla general en la industria es que 1 peso invertido en mantenimiento preventivo ahorra entre 3 y 5 pesos en reparaciones correctivas. Una excavadora con mantenimiento adecuado tiene una vida útil promedio de 15,000–20,000 horas. Sin mantenimiento, puede requerir una revisión mayor antes de las 5,000 horas.

+ +

Factores que aumentan los costos en Guerrero

+

En Acapulco y la región de Guerrero, algunos factores pueden incrementar los costos de mantenimiento:

+
    +
  • Clima húmedo y salino (zona costera): Acelera la oxidación y el deterioro de sellos y componentes metálicos.
  • +
  • Terrenos abrasivos: Los suelos con arena y grava fina de la costa desgastan más rápido los filtros de aire y el tren de rodaje.
  • +
  • Temperaturas altas: Mayor estrés térmico en el sistema de enfriamiento.
  • +
+

Por eso, para equipos que trabajan en la costa de Guerrero recomendamos reducir los intervalos de cambio de filtros de aire en un 30% respecto a las recomendaciones del fabricante.

+ +

¿Vale la pena un contrato de mantenimiento?

+

Para flotas de 3 o más máquinas, contratar un plan de mantenimiento con un proveedor especializado como KRUMAQ ofrece ventajas claras:

+
    +
  • Descuento del 10%–20% en refacciones y mano de obra.
  • +
  • Programación anticipada para no interrumpir la operación.
  • +
  • Un historial técnico documentado que aumenta el valor de reventa.
  • +
  • Garantía en los trabajos realizados.
  • +
  • Prioridad de atención en emergencias.
  • +
+ +
+ ¿Quieres un plan de mantenimiento para tu flota en Acapulco?
+ En KRUMAQ ofrecemos planes mensuales, bimensuales y trimestrales para maquinaria pesada en Guerrero. Consulta nuestros planes → +
+ +
+ + + + +
+
+
+ +
+
+

¿Tu maquinaria necesita mantenimiento?

+

Diagnóstico gratuito en tu obra en Acapulco. Técnicos certificados disponibles.

+ Ver planes de mantenimiento → +
+
+ +
+ + + +💬 + + + diff --git a/website/blog/index.html b/website/blog/index.html new file mode 100644 index 00000000..55ff1bf6 --- /dev/null +++ b/website/blog/index.html @@ -0,0 +1,160 @@ + + + + + + + Blog — Maquinaria en Acapulco y Guerrero | KRUMAQ + + + + + + + + + + + +
+
+ 📍 Blvd. de las Naciones KM 14, Acapulco, Guerrero + 📞 744-000-0000 +
+
+ + + +
+ +
+
+ +

Blog — Maquinaria en Acapulco

+

Guías, consejos y recursos para constructoras y empresas en Guerrero que trabajan con maquinaria pesada.

+
+
+ +
+
+

Artículos Recientes

+
+
+ +
+
🚜
+
+ Renta +

¿Cómo rentar maquinaria pesada en Acapulco?

+

Guía completa: documentos, costos, cómo elegir el equipo correcto y evitar errores comunes al rentar maquinaria en Guerrero.

+ Leer más → +
+
+ +
+
🔧
+
+ Mantenimiento +

¿Cuánto cuesta el mantenimiento de una excavadora?

+

Desglose detallado de costos de mantenimiento preventivo y correctivo para excavadoras hidráulicas en México.

+ Leer más → +
+
+ +
+
🏗
+
+ Construcción +

Maquinaria para construcción en la Costa Grande de Guerrero

+

Qué maquinaria se utiliza en los grandes proyectos de infraestructura en Guerrero y cómo conseguirla localmente.

+ Leer más → +
+
+ +
+
+
+ +
+
+

¿Tienes un proyecto en Acapulco?

+

Contáctanos para una cotización sin costo de venta, renta o mantenimiento de maquinaria.

+ Solicitar cotización → +
+
+ +
+ + + +💬 + + + diff --git a/website/blog/maquinaria-construccion-costa-grande-guerrero.html b/website/blog/maquinaria-construccion-costa-grande-guerrero.html new file mode 100644 index 00000000..5b10202f --- /dev/null +++ b/website/blog/maquinaria-construccion-costa-grande-guerrero.html @@ -0,0 +1,241 @@ + + + + + + + Maquinaria para Construcción en la Costa Grande de Guerrero | KRUMAQ + + + + + + + + + + + + +
+
+ 📍 Blvd. de las Naciones KM 14, Acapulco, Guerrero + 📞 744-000-0000 +
+
+ + + +
+ +
+
+ +

Maquinaria para Construcción en la Costa Grande de Guerrero

+

Guía práctica sobre los equipos más demandados en los proyectos de infraestructura de la región y dónde conseguirlos.

+
+
+ +
+
+
+ +
+ +

La Costa Grande de Guerrero — que abarca municipios como Técpan de Galeana, Petatlán, La Unión, José Azueta (Zihuatanejo) y Coahuayutla — es una de las regiones de mayor actividad constructiva del estado. Los proyectos de carreteras, turismo, vivienda y agroindustria demandan maquinaria especializada que muchas veces resulta difícil de conseguir localmente.

+ +

Desde nuestra ubicación en Acapulco, en KRUMAQ atendemos proyectos en toda la Costa Grande y Costa Chica de Guerrero, llevando la maquinaria directamente a la obra.

+ +

Principales tipos de proyectos en la Costa Grande

+ +

1. Carreteras y caminos rurales

+

La modernización de la carretera federal México-200 y la apertura de caminos rurales son proyectos constantes en la región. Requieren:

+
    +
  • Motoniveladoras para perfilado y nivelación de subrasante.
  • +
  • Compactadoras vibratorias para compactación de terracerías y bases.
  • +
  • Excavadoras para cortes en ladera y zanjas de drenaje.
  • +
  • Camiones volteo para acarreo de material.
  • +
  • Trituradoras de impacto para procesamiento de material pétreo.
  • +
+ +

2. Proyectos turísticos (Ixtapa-Zihuatanejo)

+

El desarrollo hotelero y de infraestructura turística en Ixtapa-Zihuatanejo requiere:

+
    +
  • Grúas torre para construcción vertical de hoteles y condominios.
  • +
  • Bombas de concreto para vaciados en pisos altos.
  • +
  • Minicargadores para trabajos en espacios reducidos.
  • +
  • Compactadoras de plato y rodillo pequeño para obras de acabados.
  • +
+ +

3. Vivienda social y obra pública municipal

+

Los programas de vivienda del INFONAVIT y obras públicas municipales requieren equipos versátiles:

+
    +
  • Retroexcavadoras cargadoras (el equipo más demandado en esta categoría).
  • +
  • Motoconformadoras para apertura y nivelación de calles.
  • +
  • Camiones volteo para desalojo de material.
  • +
+ +

4. Sector agropecuario (palma de aceite, limón)

+

La agroindustria en la Costa Grande — especialmente plantaciones de palma de aceite y limón — utiliza:

+
    +
  • Subsoladores para preparación de suelo.
  • +
  • Tractores agrícolas con implementos.
  • +
  • Excavadoras pequeñas para sistemas de drenaje e irrigación.
  • +
+ +

¿Por qué es difícil conseguir maquinaria en la Costa Grande?

+

La Costa Grande enfrenta un déficit de proveedores locales de maquinaria. Los principales retos son:

+
    +
  • Pocas empresas con flota propia en municipios fuera de Acapulco.
  • +
  • Distancias de hasta 300 km desde los centros de distribución de maquinaria más cercanos (Acapulco o la Ciudad de México).
  • +
  • Infraestructura vial que dificulta el traslado de equipos grandes.
  • +
  • Poca disponibilidad de repuestos y talleres especializados en la región.
  • +
+ +

Cómo KRUMAQ atiende proyectos en la Costa Grande

+

Desde nuestras instalaciones en Boulevard de las Naciones KM 14, Acapulco, podemos atender proyectos en toda la Costa Grande con tiempos de entrega competitivos:

+ + + + + + + + + + + + + + + +
DestinoDistancia desde AcapulcoTiempo estimado de entrega
Técpan de Galeana~130 km2–3 horas
Petatlán~160 km2.5–3.5 horas
Zihuatanejo / Ixtapa~240 km3.5–5 horas
La Unión~280 km4–6 horas
+ +

Recomendaciones para constructoras en la Costa Grande

+

Si tienes proyectos en la Costa Grande de Guerrero, te recomendamos:

+
    +
  • Planifica con anticipación: Solicita la maquinaria con al menos 1 semana de anticipación para asegurar disponibilidad.
  • +
  • Considera la logística de combustible: En zonas alejadas, asegura el abasto de diésel antes de la llegada del equipo.
  • +
  • Evalúa las condiciones del acceso: Verifica que la ruta hacia tu obra soporte el peso del equipo y el trailer de transporte.
  • +
  • Contrata mantenimiento en campo: Para proyectos de más de 30 días, incluye un plan de mantenimiento en sitio para evitar paros por falla.
  • +
+ +
+ ¿Tienes un proyecto en la Costa Grande o Costa Chica de Guerrero?
+ Contáctanos en KRUMAQ. Llevamos la maquinaria a tu obra con operador incluido si lo necesitas. Solicitar cotización → +
+ +
+ + + + +
+
+
+ +
+
+

¿Proyecto en Guerrero? Contamos con la maquinaria que necesitas.

+

KRUMAQ entrega en toda la Costa Grande y Costa Chica. Venta, renta y mantenimiento.

+ Solicitar cotización → +
+
+ +
+ + + +💬 + + + diff --git a/website/contacto.html b/website/contacto.html new file mode 100644 index 00000000..019dfc0f --- /dev/null +++ b/website/contacto.html @@ -0,0 +1,231 @@ + + + + + + + Contacto | KRUMAQ — Maquinaria en Acapulco, Guerrero + + + + + + + + + + + + +
+
+ 📍 Blvd. de las Naciones KM 14, Acapulco, Guerrero + 📞 744-000-0000  |  ✉ contacto@krumaq.mx +
+
+ + + +
+ +
+
+ +

Contacto y Cotización

+

Estamos en Acapulco, Guerrero. Escríbenos, llámanos o visítanos. Respondemos en menos de 2 horas.

+
+
+ +
+
+
+ + +
+

Información de Contacto

+ +
+

📍 Dirección:
Boulevard de las Naciones KM 14
Acapulco de Juárez, Guerrero, México C.P. 39300

+

📞 Teléfono:
744-000-0000

+

✉ Correo electrónico:
contacto@krumaq.mx

+

💬 WhatsApp:
Enviar mensaje por WhatsApp

+
+ +

Horarios de atención

+ + + + +
Lunes – Viernes8:00 – 18:00 hrs
Sábado9:00 – 14:00 hrs
Emergencias24/7 vía WhatsApp
+ + +
+ +
+

+ Ver en Google Maps → +

+
+ + +
+

Solicitar Cotización

+

Completa el formulario y te contactaremos en menos de 2 horas durante horario de atención.

+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +

🔒 Tu información es confidencial y no será compartida.

+
+
+ +
+
+
+ + +
+
+

Encuéntranos también en

+
+ +

También puedes encontrarnos en Páginas Amarillas, Sección Amarilla y Yelp México con el nombre KRUMAQ.

+
+
+ +
+ + + +💬 + + + diff --git a/website/css/styles.css b/website/css/styles.css new file mode 100644 index 00000000..3735257e --- /dev/null +++ b/website/css/styles.css @@ -0,0 +1,240 @@ +/* ============================================================ + KRUMAQ — Mobile-first stylesheet + Target: venta, renta y mantenimiento de maquinaria en Acapulco + ============================================================ */ + +/* ── Reset & base ────────────────────────────────────────── */ +*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } + +:root { + --brand-primary: #e87722; + --brand-dark: #1a1a2e; + --brand-mid: #2d2d44; + --brand-accent: #f5a623; + --text-dark: #1a1a2e; + --text-mid: #444; + --text-light: #fff; + --bg-light: #f8f9fa; + --bg-white: #ffffff; + --border: #e0e0e0; + --shadow-sm: 0 2px 8px rgba(0,0,0,.08); + --shadow-md: 0 4px 20px rgba(0,0,0,.12); + --radius: 8px; + --max-w: 1140px; + --font-sans: 'Segoe UI', system-ui, -apple-system, Arial, sans-serif; +} + +html { scroll-behavior: smooth; } +body { + font-family: var(--font-sans); + color: var(--text-dark); + background: var(--bg-white); + line-height: 1.65; + font-size: 16px; +} +img { max-width: 100%; height: auto; display: block; } +a { color: var(--brand-primary); text-decoration: none; } +a:hover { text-decoration: underline; } + +/* ── Layout ──────────────────────────────────────────────── */ +.container { max-width: var(--max-w); margin: 0 auto; padding: 0 1rem; } +.section { padding: 3.5rem 0; } +.section-alt{ background: var(--bg-light); } + +/* ── Skip link ───────────────────────────────────────────── */ +.skip-link { + position: absolute; top: -40px; left: 0; + background: var(--brand-primary); color: #fff; + padding: .5rem 1rem; z-index: 9999; + transition: top .2s; +} +.skip-link:focus { top: 0; } + +/* ── Top bar ─────────────────────────────────────────────── */ +.topbar { background: var(--brand-dark); color: #fff; font-size: .82rem; padding: .4rem 0; } +.topbar .container { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: .4rem; } +.topbar a { color: var(--brand-accent); } +.topbar a:hover { color: #fff; text-decoration: none; } + +/* ── Header / Nav ────────────────────────────────────────── */ +.site-header { background: var(--bg-white); box-shadow: var(--shadow-sm); position: sticky; top: 0; z-index: 100; } +.nav-wrapper { display: flex; align-items: center; justify-content: space-between; padding: .75rem 1rem; max-width: var(--max-w); margin: 0 auto; } +.logo { display: flex; align-items: center; gap: .5rem; font-weight: 800; font-size: 1.4rem; color: var(--brand-dark); text-decoration: none; } +.logo span { color: var(--brand-primary); } +.logo svg { width: 36px; height: 36px; } + +.nav-toggle { display: none; background: none; border: none; cursor: pointer; padding: .3rem; } +.nav-toggle span { display: block; width: 24px; height: 2px; background: var(--brand-dark); margin: 5px 0; transition: transform .3s, opacity .3s; } + +.nav-links { display: flex; align-items: center; gap: 1.6rem; list-style: none; } +.nav-links a { color: var(--text-dark); font-weight: 500; font-size: .93rem; padding: .3rem 0; border-bottom: 2px solid transparent; transition: color .2s, border-color .2s; } +.nav-links a:hover, .nav-links a.active { color: var(--brand-primary); border-bottom-color: var(--brand-primary); text-decoration: none; } +.nav-links .btn-nav { background: var(--brand-primary); color: #fff; padding: .45rem 1.1rem; border-radius: var(--radius); border-bottom: none; } +.nav-links .btn-nav:hover { background: #cf6310; color: #fff; } + +@media (max-width: 768px) { + .nav-toggle { display: block; } + .nav-links { + position: absolute; top: 100%; left: 0; right: 0; + background: var(--bg-white); flex-direction: column; align-items: flex-start; + padding: 1rem 1.5rem; box-shadow: var(--shadow-md); display: none; gap: .9rem; + } + .nav-links.open { display: flex; } +} + +/* ── Hero ────────────────────────────────────────────────── */ +.hero { background: linear-gradient(135deg, var(--brand-dark) 0%, var(--brand-mid) 100%); color: #fff; padding: 4.5rem 0 3.5rem; text-align: center; } +.hero h1 { font-size: clamp(1.8rem, 5vw, 3rem); font-weight: 800; line-height: 1.2; margin-bottom: 1rem; } +.hero h1 em { color: var(--brand-accent); font-style: normal; } +.hero p { font-size: clamp(.95rem, 2vw, 1.15rem); max-width: 640px; margin: 0 auto 1.8rem; opacity: .9; } +.hero-btns { display: flex; flex-wrap: wrap; justify-content: center; gap: .8rem; } + +/* ── Buttons ─────────────────────────────────────────────── */ +.btn { display: inline-block; padding: .75rem 1.6rem; border-radius: var(--radius); font-weight: 700; font-size: .95rem; cursor: pointer; transition: transform .15s, box-shadow .15s; text-decoration: none; } +.btn:hover { transform: translateY(-1px); box-shadow: 0 4px 14px rgba(0,0,0,.18); text-decoration: none; } +.btn-primary { background: var(--brand-primary); color: #fff; } +.btn-primary:hover { background: #cf6310; } +.btn-outline { border: 2px solid #fff; color: #fff; background: transparent; } +.btn-outline:hover { background: rgba(255,255,255,.1); } +.btn-dark { background: var(--brand-dark); color: #fff; } +.btn-dark:hover { background: var(--brand-mid); } +.btn-sm { padding: .5rem 1rem; font-size: .85rem; } + +/* ── Section headings ────────────────────────────────────── */ +.section-title { font-size: clamp(1.4rem, 3vw, 2rem); font-weight: 800; text-align: center; margin-bottom: .5rem; } +.section-sub { text-align: center; color: var(--text-mid); max-width: 600px; margin: 0 auto 2rem; font-size: .97rem; } +.divider { width: 60px; height: 4px; background: var(--brand-primary); border-radius: 2px; margin: .6rem auto 1.2rem; } + +/* ── Cards ───────────────────────────────────────────────── */ +.services-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 1.4rem; margin-top: 2rem; } +.card { background: var(--bg-white); border: 1px solid var(--border); border-radius: var(--radius); padding: 1.8rem; box-shadow: var(--shadow-sm); transition: box-shadow .2s, transform .2s; } +.card:hover { box-shadow: var(--shadow-md); transform: translateY(-3px); } +.card-icon { font-size: 2.2rem; margin-bottom: 1rem; } +.card h2 { font-size: 1.15rem; margin-bottom: .5rem; color: var(--brand-dark); } +.card p { font-size: .92rem; color: var(--text-mid); margin-bottom: 1rem; } + +/* ── Stats bar ───────────────────────────────────────────── */ +.stats-bar { background: var(--brand-primary); color: #fff; padding: 2rem 0; } +.stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 1rem; text-align: center; } +.stat-num { font-size: 2.2rem; font-weight: 800; } +.stat-label { font-size: .85rem; opacity: .9; } + +/* ── Why us ──────────────────────────────────────────────── */ +.why-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1.2rem; margin-top: 2rem; } +.why-item { text-align: center; padding: 1.5rem 1rem; } +.why-item .icon { font-size: 2rem; margin-bottom: .7rem; } +.why-item h3 { font-size: 1rem; margin-bottom: .4rem; } +.why-item p { font-size: .88rem; color: var(--text-mid); } + +/* ── Equipment showcase ──────────────────────────────────── */ +.equipment-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 1.2rem; margin-top: 2rem; } +.eq-card { border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; background: var(--bg-white); box-shadow: var(--shadow-sm); } +.eq-thumb { background: var(--brand-dark); height: 140px; display: flex; align-items: center; justify-content: center; font-size: 3.5rem; } +.eq-info { padding: 1rem; } +.eq-info h3 { font-size: .98rem; margin-bottom: .25rem; } +.eq-info p { font-size: .85rem; color: var(--text-mid); } + +/* ── Testimonials ────────────────────────────────────────── */ +.testimonials-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 1.2rem; margin-top: 2rem; } +.testimonial { background: var(--bg-white); border-left: 4px solid var(--brand-primary); padding: 1.4rem; border-radius: 0 var(--radius) var(--radius) 0; box-shadow: var(--shadow-sm); } +.testimonial p { font-style: italic; font-size: .93rem; color: var(--text-mid); margin-bottom: .8rem; } +.testimonial strong { font-size: .85rem; color: var(--brand-dark); } +.stars { color: var(--brand-accent); font-size: 1rem; margin-bottom: .5rem; } + +/* ── Blog ────────────────────────────────────────────────── */ +.blog-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1.4rem; margin-top: 2rem; } +.blog-card { border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; background: var(--bg-white); box-shadow: var(--shadow-sm); transition: box-shadow .2s; } +.blog-card:hover { box-shadow: var(--shadow-md); } +.blog-thumb { background: var(--brand-mid); height: 120px; display: flex; align-items: center; justify-content: center; font-size: 3rem; } +.blog-body { padding: 1.1rem; } +.blog-body .tag { display: inline-block; background: #fef3e2; color: var(--brand-primary); font-size: .75rem; font-weight: 700; padding: .2rem .6rem; border-radius: 20px; margin-bottom: .5rem; } +.blog-body h3 { font-size: 1rem; margin-bottom: .4rem; } +.blog-body h3 a { color: var(--brand-dark); } +.blog-body h3 a:hover { color: var(--brand-primary); text-decoration: none; } +.blog-body p { font-size: .87rem; color: var(--text-mid); } + +/* ── CTA banner ──────────────────────────────────────────── */ +.cta-banner { background: linear-gradient(135deg, var(--brand-dark), var(--brand-mid)); color: #fff; text-align: center; padding: 3.5rem 1rem; } +.cta-banner h2 { font-size: clamp(1.4rem, 3vw, 2rem); margin-bottom: .7rem; } +.cta-banner p { opacity: .85; max-width: 520px; margin: 0 auto 1.6rem; } + +/* ── Contact ─────────────────────────────────────────────── */ +.contact-layout { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; margin-top: 2rem; } +@media (max-width: 768px) { .contact-layout { grid-template-columns: 1fr; } } +.contact-info p { margin-bottom: .6rem; font-size: .95rem; } +.map-embed { border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow-sm); margin-top: 1rem; } +.map-embed iframe { display: block; width: 100%; height: 280px; border: 0; } +.form-group { margin-bottom: 1rem; } +.form-group label { display: block; font-size: .88rem; font-weight: 600; margin-bottom: .3rem; } +.form-group input, .form-group textarea, .form-group select { width: 100%; padding: .65rem .85rem; border: 1px solid var(--border); border-radius: var(--radius); font-family: inherit; font-size: .93rem; transition: border-color .2s; } +.form-group input:focus, .form-group textarea:focus, .form-group select:focus { outline: none; border-color: var(--brand-primary); } +.form-group textarea { resize: vertical; min-height: 110px; } + +/* ── Page hero (inner pages) ─────────────────────────────── */ +.page-hero { background: linear-gradient(135deg, var(--brand-dark), var(--brand-mid)); color: #fff; padding: 3rem 0 2.5rem; text-align: center; } +.page-hero h1 { font-size: clamp(1.6rem, 4vw, 2.4rem); font-weight: 800; } +.page-hero p { max-width: 580px; margin: .8rem auto 0; opacity: .85; } +.breadcrumb { font-size: .82rem; opacity: .7; margin-bottom: .5rem; } +.breadcrumb a { color: var(--brand-accent); } + +/* ── Feature list ────────────────────────────────────────── */ +.feature-list { list-style: none; margin: 1.2rem 0; } +.feature-list li { padding: .5rem 0 .5rem 1.8rem; position: relative; font-size: .95rem; border-bottom: 1px solid var(--border); } +.feature-list li::before { content: "✔"; position: absolute; left: 0; color: var(--brand-primary); font-weight: 700; } + +/* ── Pricing ─────────────────────────────────────────────── */ +.pricing-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 1.4rem; margin-top: 2rem; } +.pricing-card { border: 1px solid var(--border); border-radius: var(--radius); padding: 1.8rem; text-align: center; background: var(--bg-white); box-shadow: var(--shadow-sm); } +.pricing-card.featured { border-color: var(--brand-primary); box-shadow: 0 0 0 2px var(--brand-primary), var(--shadow-md); } +.pricing-card .price { font-size: 2rem; font-weight: 800; color: var(--brand-primary); } +.pricing-card .price span { font-size: 1rem; font-weight: 400; color: var(--text-mid); } +.pricing-card ul { list-style: none; text-align: left; margin: 1rem 0; } +.pricing-card ul li { padding: .35rem 0; font-size: .88rem; border-bottom: 1px solid var(--border); } +.pricing-card ul li::before { content: "✓ "; color: var(--brand-primary); font-weight: 700; } + +/* ── Blog article layout ─────────────────────────────────── */ +.article-layout { display: grid; grid-template-columns: 1fr 300px; gap: 2rem; margin-top: 2rem; } +@media (max-width: 900px) { .article-layout { grid-template-columns: 1fr; } } +.article-content h2 { font-size: 1.4rem; margin: 1.8rem 0 .7rem; } +.article-content h3 { font-size: 1.1rem; margin: 1.4rem 0 .5rem; color: var(--brand-dark); } +.article-content p { margin-bottom: 1rem; font-size: .97rem; color: var(--text-mid); } +.article-content ul { margin: .8rem 0 1rem 1.4rem; } +.article-content ul li { margin-bottom: .35rem; font-size: .95rem; color: var(--text-mid); } +.sidebar-card { background: var(--bg-light); border-radius: var(--radius); padding: 1.4rem; margin-bottom: 1.4rem; border: 1px solid var(--border); } +.sidebar-card h3 { font-size: 1rem; margin-bottom: .8rem; } +.sidebar-nav { list-style: none; } +.sidebar-nav li { border-bottom: 1px solid var(--border); padding: .4rem 0; font-size: .88rem; } + +/* ── FAQ ─────────────────────────────────────────────────── */ +.faq-item { border-bottom: 1px solid var(--border); } +.faq-q { display: flex; justify-content: space-between; align-items: center; padding: 1rem 0; cursor: pointer; font-weight: 600; font-size: .97rem; } +.faq-q .arrow { transition: transform .25s; font-size: .7rem; } +.faq-item.open .faq-q .arrow { transform: rotate(180deg); } +.faq-a { display: none; padding: 0 0 1rem; color: var(--text-mid); font-size: .93rem; } +.faq-item.open .faq-a { display: block; } + +/* ── Footer ──────────────────────────────────────────────── */ +.site-footer { background: var(--brand-dark); color: rgba(255,255,255,.8); padding: 3rem 0 1.5rem; } +.footer-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 2rem; margin-bottom: 2rem; } +.footer-brand .logo { color: #fff; } +.footer-brand p { font-size: .85rem; opacity: .75; margin-top: .6rem; max-width: 240px; } +.footer-col h4 { font-size: .9rem; font-weight: 700; color: #fff; margin-bottom: .8rem; letter-spacing: .04em; text-transform: uppercase; } +.footer-col ul { list-style: none; } +.footer-col ul li { margin-bottom: .35rem; } +.footer-col ul li a { color: rgba(255,255,255,.7); font-size: .85rem; } +.footer-col ul li a:hover { color: var(--brand-accent); text-decoration: none; } +.footer-col p { font-size: .85rem; opacity: .75; margin-bottom: .3rem; } +.footer-bottom { border-top: 1px solid rgba(255,255,255,.12); padding-top: 1.2rem; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: .6rem; font-size: .78rem; opacity: .6; } +.social-links { display: flex; gap: .8rem; } +.social-links a { color: rgba(255,255,255,.6); font-size: 1.1rem; } +.social-links a:hover { color: var(--brand-accent); text-decoration: none; } + +/* ── WhatsApp FAB ────────────────────────────────────────── */ +.whatsapp-fab { position: fixed; bottom: 1.5rem; right: 1.5rem; background: #25d366; color: #fff; width: 56px; height: 56px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 1.6rem; box-shadow: 0 4px 16px rgba(37,211,102,.45); z-index: 9000; text-decoration: none; transition: transform .2s, box-shadow .2s; } +.whatsapp-fab:hover { transform: scale(1.08); box-shadow: 0 6px 22px rgba(37,211,102,.55); } + +/* ── Utility ─────────────────────────────────────────────── */ +.text-center { text-align: center; } +.mt-2 { margin-top: 1rem; } +.mt-3 { margin-top: 1.5rem; } +.mb-2 { margin-bottom: 1rem; } diff --git a/website/google-ads.md b/website/google-ads.md new file mode 100644 index 00000000..c45345d1 --- /dev/null +++ b/website/google-ads.md @@ -0,0 +1,168 @@ +# KRUMAQ — Google Ads Strategy +## Estrategia de Google Ads para posicionamiento inmediato en Acapulco + +--- + +## Objetivo +Aparecer en las primeras posiciones de Google para búsquedas de maquinaria en Acapulco y Guerrero mientras el SEO orgánico madura (primeros 3–6 meses). + +--- + +## Campañas recomendadas + +### Campaña 1: Venta de Maquinaria — Búsqueda Local +**Presupuesto sugerido:** $150–$300 MXN/día +**Tipo:** Búsqueda (Search) +**Área geográfica:** Guerrero, Estado de México (constructoras que trabajan en Guerrero), CDMX + +#### Palabras clave objetivo +| Palabra clave | Tipo de coincidencia | Intención | +|---|---|---| +| venta de maquinaria en Acapulco | Exacta | Compra | +| comprar maquinaria pesada Guerrero | Frase | Compra | +| excavadoras en venta Acapulco | Frase | Compra | +| maquinaria de construcción Acapulco | Amplia modificada | Investigación | +| retroexcavadora precio Guerrero | Frase | Comparación | +| maquinaria seminueva Acapulco | Exacta | Compra | + +#### Palabras clave negativas (excluir) +- gratis, "segunda mano" (si solo vendemos nuevas), "juguetes", "miniatura", "alquiler" (en la campaña de venta) + +#### Anuncio de texto sugerido +``` +Título 1: Venta de Maquinaria en Acapulco +Título 2: Excavadoras, Grúas, Retroexcavadoras +Título 3: Entrega en 24h | Garantía incluida +Descripción 1: KRUMAQ: +15 años vendiendo maquinaria pesada en Guerrero. Equipos nuevos y seminuevos. Financiamiento disponible. Cotiza gratis. +Descripción 2: Blvd. de las Naciones KM 14, Acapulco. Catálogo completo en línea. ¡Llama hoy! +URL visible: krumaq.mx/venta-maquinaria-acapulco +``` + +--- + +### Campaña 2: Renta de Maquinaria — Búsqueda Local +**Presupuesto sugerido:** $200–$400 MXN/día +**Tipo:** Búsqueda (Search) +**Área geográfica:** Guerrero + municipios fronterizos de estados vecinos + +#### Palabras clave objetivo +| Palabra clave | Tipo de coincidencia | Intención | +|---|---|---| +| renta de maquinaria en Acapulco | Exacta | Renta urgente | +| rentar maquinaria pesada Guerrero | Frase | Renta | +| alquiler de excavadora Acapulco | Frase | Renta | +| maquinaria en renta Acapulco | Exacta | Renta | +| renta excavadora precio Guerrero | Frase | Comparación | +| retroexcavadora en renta Acapulco | Exacta | Renta | +| grúa en renta Acapulco | Exacta | Renta | +| maquinaria para construcción renta Guerrero | Amplia | Renta | + +#### Anuncio de texto sugerido +``` +Título 1: Renta de Maquinaria en Acapulco +Título 2: Entrega en 24h | Con o Sin Operador +Título 3: Renta Diaria, Semanal y Mensual +Descripción 1: KRUMAQ: excavadoras, retroexcavadoras, grúas y más en renta en Acapulco, Guerrero. Soporte 24/7. Cotiza sin compromiso. +Descripción 2: Llevamos la maquinaria a tu obra. Tarifa diaria desde $3,500 MXN. ¡Llama o escríbenos por WhatsApp! +URL visible: krumaq.mx/renta-maquinaria-acapulco +``` + +--- + +### Campaña 3: Mantenimiento de Maquinaria +**Presupuesto sugerido:** $80–$150 MXN/día +**Tipo:** Búsqueda (Search) +**Área geográfica:** Guerrero + +#### Palabras clave objetivo +| Palabra clave | Tipo de coincidencia | +|---|---| +| mantenimiento de maquinaria Acapulco | Exacta | +| reparación excavadora Guerrero | Frase | +| taller maquinaria pesada Acapulco | Frase | +| servicio técnico maquinaria Guerrero | Frase | +| mantenimiento preventivo maquinaria Acapulco | Exacta | + +#### Anuncio de texto sugerido +``` +Título 1: Mantenimiento de Maquinaria — Acapulco +Título 2: Taller Especializado en Guerrero +Título 3: Servicio en Sitio | Técnicos Certificados +Descripción 1: KRUMAQ: mantenimiento preventivo y correctivo de maquinaria pesada en Acapulco. Diagnóstico gratuito. Atención 24/7. +Descripción 2: Evita paros costosos. Planes de mantenimiento mensuales y trimestrales. ¡Agenda tu revisión hoy! +URL visible: krumaq.mx/mantenimiento-maquinaria +``` + +--- + +## Extensiones de anuncio recomendadas + +### Extensiones de llamada +- Tel: 744-000-0000 (Lunes–Viernes 8:00–18:00) +- WhatsApp: 744-000-0000 (24/7) + +### Extensiones de ubicación +- Vinculada a Google Business Profile de KRUMAQ +- Dirección: Blvd. de las Naciones KM 14, Acapulco, Gro. + +### Extensiones de vínculos de sitio +- Catálogo de Venta → krumaq.mx/venta.html +- Rentar Maquinaria → krumaq.mx/renta.html +- Mantenimiento → krumaq.mx/mantenimiento.html +- Contacto / Cotizar → krumaq.mx/contacto.html + +### Extensiones de imagen +- Fotos de los principales equipos disponibles +- Foto de la empresa / instalaciones + +### Extensiones de precio (renta) +- Excavadora 20T desde $4,500/día +- Retroexcavadora desde $3,500/día +- Compactadora desde $2,800/día + +--- + +## Configuración de conversiones + +Configurar seguimiento de las siguientes conversiones en Google Ads: +1. **Clic en teléfono** (llamadas desde el anuncio o la página web) +2. **Envío de formulario de contacto** (página contacto.html) +3. **Clic en WhatsApp** (botón FAB o links de WhatsApp) +4. **Visita a página /gracias** (si se agrega página de confirmación) + +--- + +## Presupuesto total sugerido + +| Campaña | Presupuesto diario | Presupuesto mensual estimado | +|---|---|---| +| Venta de Maquinaria | $200 MXN | $6,000 MXN | +| Renta de Maquinaria | $300 MXN | $9,000 MXN | +| Mantenimiento | $120 MXN | $3,600 MXN | +| **Total** | **$620 MXN/día** | **~$18,600 MXN/mes** | + +> Ajustar según resultados después de las primeras 4 semanas. Pausar palabras clave con alto costo y sin conversiones. + +--- + +## KPIs a monitorear semanalmente + +- **CTR** (Click-Through Rate): objetivo > 5% para búsqueda local +- **CPC** (Costo por Clic): objetivo < $8 MXN para keywords de renta/mantenimiento +- **Tasa de conversión**: objetivo > 8% (visitante → formulario/llamada) +- **Costo por lead**: objetivo < $200 MXN por contacto calificado +- **ROAS** (Return on Ad Spend): seguimiento a partir del mes 2 + +--- + +## Cronograma de implementación + +| Semana | Acción | +|---|---| +| 1 | Crear cuenta Google Ads, vincular Google Business Profile y Analytics | +| 1 | Configurar campañas de Venta y Renta (prioridad) | +| 2 | Lanzar campañas, monitorear diariamente | +| 2–3 | Agregar palabras clave negativas según términos de búsqueda reales | +| 3–4 | Activar campaña de Mantenimiento | +| 4 | Primera revisión de rendimiento, optimizar pujas | +| Mes 2+ | A/B testing de anuncios, ajuste de presupuesto por rendimiento | diff --git a/website/index.html b/website/index.html new file mode 100644 index 00000000..226486c9 --- /dev/null +++ b/website/index.html @@ -0,0 +1,407 @@ + + + + + + + + KRUMAQ — Venta, Renta y Mantenimiento de Maquinaria en Acapulco, Guerrero + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ 📍 Blvd. de las Naciones KM 14, Acapulco, Guerrero + 📞 744-000-0000  |  ✉ contacto@krumaq.mx +
+
+ + + + + +
+
+
+

Maquinaria Pesada en
Acapulco, Guerrero

+

Venta, renta y mantenimiento de maquinaria para construcción e industria. Más de 15 años al servicio de Guerrero.

+ +
+
+ + +
+
+
+
+15
Años de experiencia
+
+200
Equipos disponibles
+
+500
Clientes satisfechos
+
24/7
Soporte técnico
+
+
+
+ + +
+
+

Nuestros Servicios

+
+

Soluciones completas de maquinaria pesada para constructoras, mineras e industria en Acapulco y todo el estado de Guerrero.

+
+ +
+
🏗
+

Venta de Maquinaria

+

Excavadoras, retroexcavadoras, grúas, compactadoras, niveladoras y más. Equipos nuevos y seminuevos con garantía.

+ Ver catálogo → +
+ +
+
🚜
+

Renta de Maquinaria

+

Renta diaria, semanal o mensual. Operador incluido opcional. Entrega en obra en todo Acapulco y Guerrero.

+ Ver equipos en renta → +
+ +
+
🔧
+

Mantenimiento

+

Mantenimiento preventivo y correctivo. Taller equipado y técnicos certificados. Servicio en sitio disponible.

+ Ver planes → +
+ +
+
+
+ + +
+
+

Equipo Destacado

+
+

Una muestra de la maquinaria que tenemos disponible para venta y renta en Acapulco.

+
+
+
🦺
+
+

Excavadora Hidráulica 20T

+

Ideal para excavación en obra civil y minería superficial.

+
+
+
+
🚧
+
+

Retroexcavadora Cargadora

+

Versátil para carga, excavación y movimiento de tierra.

+
+
+
+
🏋️
+
+

Grúa Torre 40T

+

Para construcción vertical, edificios y puentes.

+
+
+
+
🛣
+
+

Compactadora Vibrante

+

Compactación de suelos y pavimento en caminos y autopistas.

+
+
+
+
🚛
+
+

Camión Volteo 14m³

+

Transporte de material: tierra, arena, grava y escombro.

+
+
+
+
⚙️
+
+

Minicargador Bobcat

+

Para espacios reducidos: patios, interiores y demolición menor.

+
+
+
+ +
+
+ + +
+
+

¿Por qué elegir KRUMAQ?

+
+
+
+
🏆
+

+15 años de experiencia

+

Somos referencia en maquinaria pesada en el estado de Guerrero.

+
+
+
🔒
+

Equipos certificados

+

Toda nuestra maquinaria cumple con normas NOM y está asegurada.

+
+
+
+

Entrega rápida

+

Entrega en obra en menos de 24 horas en Acapulco y zona metropolitana.

+
+
+
💰
+

Precios competitivos

+

Las mejores tarifas del mercado con financiamiento disponible.

+
+
+
🛠
+

Soporte 24/7

+

Asistencia técnica en campo para minimizar tiempos de paro.

+
+
+
📍
+

Ubicación estratégica

+

En Blvd. de las Naciones KM 14, Acapulco — fácil acceso desde la autopista.

+
+
+
+
+ + +
+
+

Lo que dicen nuestros clientes

+
+
+
+
★★★★★
+

"Rentamos una excavadora para un proyecto vial en Acapulco. El equipo llegó a tiempo y en perfectas condiciones. Definitivamente volveremos a trabajar con KRUMAQ."

+ — Ing. Roberto Salgado, Constructora Salgado & Asociados +
+
+
★★★★★
+

"Excelente servicio de mantenimiento. Nos repararon una retroexcavadora en menos de 48 horas sin necesidad de transportarla al taller. Muy profesionales."

+ — Arq. Claudia Meza, Inmobiliaria Costa Grande +
+
+
★★★★★
+

"Compramos dos camiones volteo y el proceso fue muy transparente. Buenos precios, financiamiento fácil y postventa impecable. 100% recomendados en Guerrero."

+ — Sr. Martín Ávila, Empresa de Construcción MAG +
+
+
+
+ + +
+
+

Guías y Consejos

+
+

Información útil para constructores y empresas en Acapulco y Guerrero.

+
+
+
🚜
+
+ Renta +

¿Cómo rentar maquinaria pesada en Acapulco?

+

Guía paso a paso: qué documentos necesitas, cómo calcular el costo y qué equipo elegir.

+
+
+
+
🔧
+
+ Mantenimiento +

¿Cuánto cuesta el mantenimiento de una excavadora?

+

Desglose de costos de mantenimiento preventivo y correctivo para excavadoras en México.

+
+
+
+
🏗
+
+ Construcción +

Maquinaria para construcción en la Costa Grande de Guerrero

+

Qué maquinaria se utiliza en los proyectos de infraestructura en Guerrero y cómo conseguirla.

+
+
+
+ +
+
+ + +
+
+

¿Listo para tu próximo proyecto?

+

Contáctanos hoy para obtener una cotización sin costo. Respondemos en menos de 2 horas.

+ Solicitar cotización gratis → +   + 📞 Llamar ahora +
+
+
+ + + + + +💬 + + + + diff --git a/website/js/main.js b/website/js/main.js new file mode 100644 index 00000000..b00a8acf --- /dev/null +++ b/website/js/main.js @@ -0,0 +1,92 @@ +/* KRUMAQ — main.js + Progressive enhancement: nav toggle, FAQ accordion, form feedback +*/ + +(function () { + 'use strict'; + + /* ── Mobile navigation toggle ──────────────────────────── */ + const toggle = document.querySelector('.nav-toggle'); + const navLinks = document.querySelector('.nav-links'); + if (toggle && navLinks) { + toggle.addEventListener('click', function () { + const open = navLinks.classList.toggle('open'); + toggle.setAttribute('aria-expanded', open); + }); + // Close when a link is clicked + navLinks.querySelectorAll('a').forEach(function (link) { + link.addEventListener('click', function () { + navLinks.classList.remove('open'); + toggle.setAttribute('aria-expanded', 'false'); + }); + }); + } + + /* ── Mark active nav link ──────────────────────────────── */ + const currentPage = window.location.pathname.split('/').pop() || 'index.html'; + document.querySelectorAll('.nav-links a').forEach(function (a) { + const href = a.getAttribute('href'); + if (href && (href === currentPage || href.endsWith('/' + currentPage))) { + a.classList.add('active'); + } + }); + + /* ── FAQ accordion ─────────────────────────────────────── */ + document.querySelectorAll('.faq-item').forEach(function (item) { + const q = item.querySelector('.faq-q'); + if (!q) return; + q.addEventListener('click', function () { + const isOpen = item.classList.contains('open'); + // Close all + document.querySelectorAll('.faq-item.open').forEach(function (o) { + o.classList.remove('open'); + o.querySelector('.faq-q').setAttribute('aria-expanded', 'false'); + }); + // Open this one if it was closed + if (!isOpen) { + item.classList.add('open'); + q.setAttribute('aria-expanded', 'true'); + } + }); + q.setAttribute('aria-expanded', 'false'); + q.setAttribute('role', 'button'); + q.setAttribute('tabindex', '0'); + q.addEventListener('keydown', function (e) { + if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); q.click(); } + }); + }); + + /* ── Contact form — client-side feedback ───────────────── */ + const form = document.querySelector('form.contact-form'); + if (form) { + form.addEventListener('submit', function (e) { + e.preventDefault(); + const btn = form.querySelector('[type=submit]'); + const original = btn.textContent; + btn.disabled = true; + btn.textContent = 'Enviando…'; + // Simulated async submit — replace with real fetch() to your backend/API + setTimeout(function () { + const msg = document.createElement('p'); + msg.style.cssText = 'color:#25a244;font-weight:600;margin-top:.8rem;'; + msg.textContent = '✅ ¡Mensaje enviado! Le contactaremos pronto.'; + form.appendChild(msg); + form.reset(); + btn.disabled = false; + btn.textContent = original; + }, 900); + }); + } + + /* ── Smooth-scroll for anchor links ────────────────────── */ + document.querySelectorAll('a[href^="#"]').forEach(function (a) { + a.addEventListener('click', function (e) { + const target = document.querySelector(a.getAttribute('href')); + if (target) { + e.preventDefault(); + target.scrollIntoView({ behavior: 'smooth', block: 'start' }); + } + }); + }); + +})(); diff --git a/website/mantenimiento.html b/website/mantenimiento.html new file mode 100644 index 00000000..20341287 --- /dev/null +++ b/website/mantenimiento.html @@ -0,0 +1,288 @@ + + + + + + + Mantenimiento de Maquinaria en Acapulco | KRUMAQ — Guerrero + + + + + + + + + + + + + + + + + +
+
+ 📍 Blvd. de las Naciones KM 14, Acapulco, Guerrero + 📞 744-000-0000  |  ✉ contacto@krumaq.mx +
+
+ + + +
+ +
+
+ +

Mantenimiento de Maquinaria en Acapulco

+

Mantenimiento preventivo y correctivo para toda tu flota. Taller equipado en Blvd. de las Naciones y servicio en sitio en toda Guerrero.

+
+
+ + +
+
+

Servicios de Mantenimiento

+
+

Extendemos la vida útil de tu maquinaria y reducimos tiempos de paro con mantenimiento especializado en Acapulco, Guerrero.

+ +
+
+
🔍
+

Mantenimiento Preventivo

+

Inspecciones periódicas, cambios de aceite, filtros, ajuste de componentes y revisión de sistemas hidráulicos. Previene fallas costosas.

+
    +
  • Cambio de aceite motor e hidráulico
  • +
  • Filtros de aire, combustible y aceite
  • +
  • Revisión de mangueras y sellos
  • +
  • Calibración de sistemas
  • +
+
+
+
🔧
+

Mantenimiento Correctivo

+

Diagnóstico y reparación de fallas mecánicas, hidráulicas y eléctricas. Mínimo tiempo de paro para tu operación.

+
    +
  • Diagnóstico computarizado
  • +
  • Reparación de motor y tren de potencia
  • +
  • Sistema hidráulico y neumático
  • +
  • Soldadura y estructura
  • +
+
+
+
🚐
+

Servicio en Sitio

+

Nuestros técnicos van a tu obra para reparaciones urgentes. No necesitas trasladar la máquina al taller.

+
    +
  • Atención en menos de 4 horas en Acapulco
  • +
  • Unidades móviles equipadas
  • +
  • Disponible en todo Guerrero
  • +
  • Soporte de emergencia 24/7
  • +
+
+
+
+
+ + +
+
+

Maquinaria que Atendemos

+
+
+
+
🦺
Excavadoras
Caterpillar, Komatsu, Hitachi, John Deere +
+
+
🚧
Retroexcavadoras
Case, John Deere, JCB, Caterpillar +
+
+
🏋️
Grúas
Liebherr, Manitowoc, Tadano +
+
+
🛣
Compactadoras
Bomag, Dynapac, Caterpillar +
+
+
🚛
Camiones
Volvo, Mercedes, Kenworth, Freightliner +
+
+
⚙️
Minicargadores
Bobcat, Caterpillar, New Holland +
+
+
+
+ + +
+
+

Planes de Mantenimiento

+
+

Contratos de mantenimiento que reducen costos y garantizan disponibilidad de tu flota.

+
+
+

Plan Básico

+
Trimestral
+
    +
  • Inspección preventiva cada 3 meses
  • +
  • Cambios de aceite y filtros
  • +
  • Informe técnico por escrito
  • +
  • Descuento 10% en repuestos
  • +
+ Contratar +
+ +
+

Plan Premium

+
Mensual
+
    +
  • Inspección mensual completa
  • +
  • Revisión de todos los sistemas
  • +
  • Cambios de aceite y filtros
  • +
  • Descuento 20% en repuestos
  • +
  • Emergencias sin costo adicional
  • +
  • Prioridad máxima de atención
  • +
+ Contratar +
+
+
+
+ + +
+
+

Preguntas Frecuentes — Mantenimiento

+
+
+ +
+
¿Cuánto tiempo tarda un servicio de mantenimiento preventivo?
+
Un mantenimiento preventivo completo típicamente toma de 4 a 8 horas según el tipo de equipo. Para flotas, agendamos de manera que se minimice el impacto en tu operación.
+
+ +
+
¿Tienen refacciones originales disponibles?
+
Contamos con inventario de refacciones para las marcas más comunes: Caterpillar, Komatsu, John Deere, Case, JCB y más. Las refacciones que no tenemos en existencia las conseguimos en 24–72 horas.
+
+ +
+
¿Ofrecen garantía en los trabajos de reparación?
+
Sí. Todos nuestros trabajos de reparación tienen garantía de 90 días en mano de obra y la garantía del fabricante en piezas. Si la falla regresa dentro del período, la reparamos sin costo.
+
+ +
+
¿Atienden maquinaria de constructoras de gobierno (SCT, municipio)?
+
Sí, somos proveedor registrado ante dependencias de gobierno en Guerrero. Podemos emitir facturas y cumplir con los requisitos de compras gubernamentales.
+
+ +
+
+
+ +
+
+

¿Tu maquinaria necesita mantenimiento?

+

Agenda una visita diagnóstica sin costo. Nuestros técnicos irán a tu obra en Acapulco.

+ Agendar diagnóstico gratuito → +   + 📞 Emergencia 24/7 +
+
+ +
+ +
+
+ + +
+
+ +💬 + + + diff --git a/website/renta.html b/website/renta.html new file mode 100644 index 00000000..96b4ce50 --- /dev/null +++ b/website/renta.html @@ -0,0 +1,327 @@ + + + + + + + Renta de Maquinaria en Acapulco | KRUMAQ — Guerrero, México + + + + + + + + + + + + + + + + + +
+
+ 📍 Blvd. de las Naciones KM 14, Acapulco, Guerrero + 📞 744-000-0000  |  ✉ contacto@krumaq.mx +
+
+ + + +
+ +
+
+ +

Renta de Maquinaria en Acapulco

+

Renta diaria, semanal o mensual. Con o sin operador. Entrega en obra en todo Acapulco y Guerrero en menos de 24 horas.

+
+
+ + +
+
+

¿Cómo rentar maquinaria con KRUMAQ?

+
+
+
+
📋
+

1. Solicita cotización

+

Llámanos o llena el formulario indicando el equipo, fecha y lugar de la obra.

+
+
+
+

2. Aprobamos en 2 horas

+

Revisamos disponibilidad y te enviamos contrato y cotización en pocas horas.

+
+
+
🚛
+

3. Entrega en tu obra

+

Llevamos el equipo hasta tu proyecto en Acapulco o cualquier punto de Guerrero.

+
+
+
🔧
+

4. Soporte durante la renta

+

Asistencia técnica disponible durante todo el período de arrendamiento.

+
+
+
+
+ + +
+
+

Maquinaria Disponible para Renta

+
+
+ +
+
🦺
+
+

Excavadora 20T

+

Para excavación de fundaciones, zanjas y movimiento de tierra.

+
    +
  • Con o sin operador
  • +
  • Entrega en 24 hrs en Acapulco
  • +
+ Consultar tarifa → +
+
+ +
+
🚧
+
+

Retroexcavadora

+

Ideal para trabajos de carga y excavación en obra residencial y vial.

+
    +
  • 4×4 disponible
  • +
  • Tarifa diaria, semanal o mensual
  • +
+ Consultar tarifa → +
+
+ +
+
🏋️
+
+

Grúa Industrial

+

Para izado de estructuras, instalación de prefabricados y trabajo en altura.

+
    +
  • Operador certificado incluido
  • +
  • Capacidades desde 10T a 80T
  • +
+ Consultar tarifa → +
+
+ +
+
🛣
+
+

Compactadora Vibrante

+

Para compactación de suelos en carreteras, pavimentos y terraplenes.

+
    +
  • Renta mínima 3 días
  • +
  • Transporte incluido en Acapulco
  • +
+ Consultar tarifa → +
+
+ +
+
🚛
+
+

Camión Volteo

+

Transporte de material: tierra, arena, grava y escombro en obra.

+
    +
  • Con chofer incluido
  • +
  • Disponible por viaje o por jornada
  • +
+ Consultar tarifa → +
+
+ +
+
⚙️
+
+

Minicargador

+

Para espacios reducidos, demolición menor y manejo de materiales en interiores.

+
    +
  • Fácil de transportar
  • +
  • Múltiples implementos disponibles
  • +
+ Consultar tarifa → +
+
+ +
+
+
+ + +
+
+

Términos de Renta

+
+
+
+
📅
+

Períodos disponibles

+
    +
  • Renta diaria (mínimo 1 día)
  • +
  • Renta semanal (7 días, 10% de descuento)
  • +
  • Renta mensual (30 días, 20% de descuento)
  • +
  • Contratos a largo plazo (más de 3 meses)
  • +
+
+
+
📄
+

Requisitos para rentar

+
    +
  • Identificación oficial vigente
  • +
  • Comprobante de domicilio
  • +
  • Depósito en garantía (reembolsable)
  • +
  • Contrato firmado
  • +
+
+
+
🛡
+

Incluido en la renta

+
    +
  • Seguro de responsabilidad civil
  • +
  • Mantenimiento preventivo
  • +
  • Soporte técnico 24/7
  • +
  • Sustitución por falla mecánica
  • +
+
+
+
+
+ + +
+
+

Preguntas Frecuentes — Renta

+
+
+ +
+
¿Cuánto cuesta rentar una excavadora en Acapulco?
+
El costo varía según el tipo y tamaño del equipo, el período de renta y si incluye operador. Contáctanos para una cotización exacta sin costo. En general, las tarifas inician desde $3,500 MXN por día para equipos medianos.
+
+ +
+
¿Entregan la maquinaria en toda la Costa Guerrerense?
+
Sí. Realizamos entregas en todo el estado de Guerrero: Acapulco, Chilpancingo, Zihuatanejo, Taxco, Iguala, Costa Chica y Costa Grande. El costo de transporte se cotiza según la distancia.
+
+ +
+
¿Puedo rentar con operador incluido?
+
Sí, ofrecemos el equipo solo o con operador certificado. Nuestros operadores tienen más de 5 años de experiencia en construcción e infraestructura en Guerrero.
+
+ +
+
¿Qué pasa si la maquinaria presenta una falla durante la renta?
+
Contamos con soporte técnico 24/7. En caso de falla mayor, sustituimos el equipo sin costo adicional para no interrumpir tu obra.
+
+ +
+
+
+ +
+
+

¿Necesitas maquinaria para tu obra en Acapulco?

+

Cotiza sin compromiso. Respondemos en menos de 2 horas y entregamos en 24 hrs.

+ Solicitar cotización de renta → +   + 💬 WhatsApp +
+
+ +
+ +
+
+ + +
+
+ +💬 + + + diff --git a/website/robots.txt b/website/robots.txt new file mode 100644 index 00000000..3f63466c --- /dev/null +++ b/website/robots.txt @@ -0,0 +1,5 @@ +User-agent: * +Allow: / + +# Sitemap +Sitemap: https://www.krumaq.mx/sitemap.xml diff --git a/website/sitemap.xml b/website/sitemap.xml new file mode 100644 index 00000000..c3be200b --- /dev/null +++ b/website/sitemap.xml @@ -0,0 +1,67 @@ + + + + + https://www.krumaq.mx/ + 2025-06-01 + weekly + 1.0 + + + + https://www.krumaq.mx/venta.html + 2025-06-01 + weekly + 0.9 + + + + https://www.krumaq.mx/renta.html + 2025-06-01 + weekly + 0.9 + + + + https://www.krumaq.mx/mantenimiento.html + 2025-06-01 + weekly + 0.9 + + + + https://www.krumaq.mx/contacto.html + 2025-06-01 + monthly + 0.8 + + + + https://www.krumaq.mx/blog/ + 2025-06-01 + weekly + 0.7 + + + + https://www.krumaq.mx/blog/como-rentar-maquinaria-pesada-acapulco.html + 2025-06-01 + monthly + 0.7 + + + + https://www.krumaq.mx/blog/costo-mantenimiento-excavadora.html + 2025-06-01 + monthly + 0.7 + + + + https://www.krumaq.mx/blog/maquinaria-construccion-costa-grande-guerrero.html + 2025-06-01 + monthly + 0.7 + + + diff --git a/website/venta.html b/website/venta.html new file mode 100644 index 00000000..5f5e03c3 --- /dev/null +++ b/website/venta.html @@ -0,0 +1,314 @@ + + + + + + + Venta de Maquinaria en Acapulco | KRUMAQ — Guerrero, México + + + + + + + + + + + + + + + + + + +
+
+ 📍 Blvd. de las Naciones KM 14, Acapulco, Guerrero + 📞 744-000-0000  |  ✉ contacto@krumaq.mx +
+
+ + + +
+ + +
+
+ +

Venta de Maquinaria en Acapulco

+

Equipos nuevos y seminuevos para construcción, minería e industria en Guerrero. Garantía, financiamiento y entrega en obra.

+
+
+ + +
+
+

Catálogo de Maquinaria en Venta

+
+

En KRUMAQ encontrarás la maquinaria que necesitas para tus proyectos en Acapulco y todo el estado de Guerrero. Todos los equipos incluyen garantía y soporte postventa.

+ +
+ +
+
🦺
+
+

Excavadora Hidráulica 20T

+

Potente y eficiente para excavación en obra civil, minería y terracerías en Guerrero.

+
    +
  • Motor Tier 4 de bajo consumo
  • +
  • Brazo extendido 6 m
  • +
  • Garantía 12 meses
  • +
+ Cotizar → +
+
+ +
+
🚧
+
+

Retroexcavadora Cargadora

+

Versátil para carga, excavación y movimiento de tierra en construcción residencial y vial.

+
    +
  • 4×4 con diferencial bloqueante
  • +
  • Cucharón 0.9 m³
  • +
  • Financiamiento disponible
  • +
+ Cotizar → +
+
+ +
+
🏋️
+
+

Grúa Torre 40T

+

Para construcción vertical: edificios residenciales, hoteles y puentes en Acapulco.

+
    +
  • Alcance 50 m
  • +
  • Capacidad 40 toneladas
  • +
  • Instalación y operador disponibles
  • +
+ Cotizar → +
+
+ +
+
🛣
+
+

Compactadora Vibrante

+

Compactación de suelos y pavimento para carreteras, autopistas y estacionamientos.

+
    +
  • Peso estático 12T
  • +
  • Ancho de trabajo 2.13 m
  • +
  • Ideal para proyectos de infraestructura SCT
  • +
+ Cotizar → +
+
+ +
+
🚛
+
+

Camión Volteo 14m³

+

Transporte de materiales de construcción: tierra, arena, grava, tezontle y escombro.

+
    +
  • Motor diésel 380 HP
  • +
  • Caja 14 m³
  • +
  • Placas en regla, listo para trabajar
  • +
+ Cotizar → +
+
+ +
+
⚙️
+
+

Minicargador Bobcat

+

Para espacios reducidos: patios, interiores, demolición menor y jardines.

+
    +
  • Capacidad de carga 900 kg
  • +
  • Múltiples implementos disponibles
  • +
  • Fácil transporte en camioneta
  • +
+ Cotizar → +
+
+ +
+
+
+ + +
+
+

Opciones de Financiamiento

+
+

Facilitamos la adquisición de tu maquinaria con planes flexibles adaptados a tu negocio en Guerrero.

+
+
+

Contado

+
5% descuento
+
    +
  • Descuento adicional al pagar de contado
  • +
  • Entrega inmediata
  • +
  • Documentación en 24 hrs
  • +
  • Garantía completa incluida
  • +
+ Consultar precio +
+ +
+

Arrendamiento

+
36 meses
+
    +
  • Pagos fijos mensuales
  • +
  • Opción a compra al final
  • +
  • Deducible de impuestos
  • +
  • Ideal para empresas (personas morales)
  • +
+ Más información +
+
+
+
+ + +
+
+

Preguntas Frecuentes — Venta

+
+
+ +
+
¿Venden maquinaria nueva y usada en Acapulco?
+
Sí, en KRUMAQ contamos con maquinaria nueva de las marcas líderes y maquinaria seminueva certificada por nuestros técnicos. Todos los equipos usados pasan por revisión completa antes de la venta.
+
+ +
+
¿Hacen entregas fuera de Acapulco en el estado de Guerrero?
+
Sí. Realizamos entregas en todo el estado de Guerrero: Chilpancingo, Zihuatanejo, Iguala, Taxco, Costa Chica y Costa Grande. Consulta costos de flete al momento de cotizar.
+
+ +
+
¿Qué garantía tienen los equipos en venta?
+
Los equipos nuevos incluyen garantía del fabricante (1–3 años). Los equipos seminuevos cuentan con garantía KRUMAQ de 6 a 12 meses según el equipo y el uso.
+
+ +
+
¿Ofrecen capacitación para operar la maquinaria?
+
Sí, incluimos capacitación básica de operación con la entrega de cada equipo. También ofrecemos cursos avanzados de operación y seguridad por separado.
+
+ +
+
+
+ +
+
+

¿No encuentras lo que buscas?

+

Cuéntanos qué maquinaria necesitas y la conseguimos. Somos distribuidores autorizados de las principales marcas en México.

+ Solicitar equipo específico → +
+
+ +
+ +
+
+ + +
+
+ +💬 + + +