DESPLIEGUE DEL FUNCTION DEL EDITOR PROPIO LIDER CODE
# 1. Preparar el espacio de trabajo
mkdir -p ~/lidercode-native && cd ~/lidercode-native
# 2. Dockerfile Maestro: Pure Firebase Native SDK
cat <<EOF > Dockerfile
FROM nixos/nix:latest AS nix-env
WORKDIR /app
RUN nix-channel --update && nix-env -iA nixpkgs.nodejs_18 nixpkgs.go nixpkgs.git
FROM node:18-slim
COPY --from=nix-env /nix /nix
ENV PATH="/nix/var/nix/profiles/default/bin:\${PATH}"
WORKDIR /home/coder
# Instalar Angular CLI
RUN npm install -g @angular/cli@latest
# CREACIÓN DEL ADN ARQUILIDER L10
RUN ng new lider-app --style=css --routing=true --skip-install && \
cd lider-app && \
# Creación de las 10 carpetas obligatorias
mkdir -p src/app/components src/app/core src/app/data src/app/enums \
src/app/guards src/app/interfaces src/app/global src/app/tools \
src/app/views src/app/workers && \
# INSTALACIÓN PURA: SDK Nativo de Firebase + PWA + Material
npm install firebase @angular/pwa @angular/material @angular/cdk && \
ng add @angular/pwa --skip-confirmation && \
# CONFIGURACIÓN DE SERVICIO CORE NATIVO
echo "import { inject, Injectable } from '@angular/core'; \
import { initializeApp } from 'firebase/app'; \
import { getFirestore } from 'firebase/firestore'; \
import { getAuth } from 'firebase/auth'; \
@Injectable({ providedIn: 'root' }) \
export class FirebaseNativeService { \
private firebaseApp = initializeApp({ /* config */ }); \
public firestore = getFirestore(this.firebaseApp); \
public auth = getAuth(this.firebaseApp); \
}" > src/app/core/firebase-native.service.ts
# Orquestador Go
FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY main.go .
RUN go build -o orquestador main.go
# Imagen Final
FROM node:18-slim
WORKDIR /home/coder
COPY --from=builder /app/orquestador /usr/local/bin/orquestador
COPY --from=nix-env /nix /nix
ENV PATH="/nix/var/nix/profiles/default/bin:\${PATH}"
COPY --from=1 /home/coder/lider-app /home/coder/lider-app
EXPOSE 8080
CMD ["orquestador"]
EOF
# 3. Código del Orquestador (main.go)
cat <<EOF > main.go
package main
import (
"fmt"
"net/http"
"os"
)
func main() {
p := os.Getenv("PORT")
if p == "" { p = "8080" }
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "text/html")
fmt.Fprintf(w, "<body style='background:#050505;color:#00f7ff;font-family:sans-serif;padding:40px;'>")
fmt.Fprintf(w, "<h1 style='border-bottom:2px solid #00f7ff'>LiderCode Engine: Native Firebase</h1>")
fmt.Fprintf(w, "<ul><li><b>SDK:</b> firebase (Pure Native)</li><li><b>Architecture:</b> L10 No-Shared</li><li><b>State:</b> Signals Global</li></ul>")
fmt.Fprintf(w, "</body>")
})
http.ListenAndServe(":"+p, nil)
}
EOF
# 4. Despliegue
gcloud run deploy lidercode-native \
--source . \
--region us-central1 \
--allow-unauthenticated \
--min-instances 0 \
--max-instances 1 \
--memory 2Gi