diff --git a/install.sh b/install.sh index d497edc..4adf636 100644 --- a/install.sh +++ b/install.sh @@ -1,59 +1,77 @@ #!/bin/bash -# Farby pre krajší terminál +# --- FARBY PRE TERMINÁL --- GREEN='\033[0;32m' BLUE='\033[0;34m' YELLOW='\033[1;33m' RED='\033[0;31m' -NC='\033[0m' +NC='\033[0m' echo -e "${BLUE}==========================================${NC}" -echo -e "${BLUE} Jetomit_Bio - Automatická Inštalácia ${NC}" +echo -e "${BLUE} JETOMIT_BIO - AUTOMATICKÝ DEPLOY ${NC}" echo -e "${BLUE}==========================================${NC}" -# 1. Kontrola prostredia -echo -e "\n${YELLOW}🔍 Kontrolujem prostredie...${NC}" -if ! command -v npm &> /dev/null; then - echo -e "${RED}❌ Chyba: NPM nie je nainštalované. Nainštaluj si Node.js.${NC}" - exit 1 -fi +# 1. ZBER ÚDAJOV +read -p "Zadaj svoju doménu (napr. jetomit.bio): " DOMAIN +read -p "Zadaj svoj e-mail (pre SSL/Certbot): " EMAIL +read -p "Vlož svoj RESEND_API_KEY: " RESEND_KEY -# 2. Inštalácia závislostí -echo -e "${GREEN}📦 Inštalujem balíčky (Next.js, Framer Motion, Resend, Lucide, Tailwind)...${NC}" +# 2. INŠTALÁCIA SYSTÉMOVÝCH BALÍKOV +echo -e "\n${YELLOW}📦 Inštalujem Nginx, Node.js a Certbot...${NC}" +sudo apt update +curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - +sudo apt install -y nodejs nginx certbot python3-certbot-nginx + +# 3. PRÍPRAVA APLIKÁCIE +echo -e "${GREEN}📦 Inštalujem NPM balíky a buildujem projekt...${NC}" npm install +npm run build -# 3. Kontrola .env súboru -echo -e "${GREEN}🔑 Kontrolujem konfiguračné súbory...${NC}" -if [ ! -f .env ]; then - echo -e "${YELLOW}📝 Súbor .env nebol nájdený. Vytváram šablónu...${NC}" - echo "RESEND_API_KEY=re_tvoj_kluc_tu" > .env - echo -e "${RED}⚠ DOPLŇ SI API KĽÚČ DO SÚBORU .env!${NC}" -else - echo -e "${BLUE}✅ Súbor .env už existuje.${NC}" -fi +# 4. NASTAVENIE .env +echo -e "${GREEN}🔑 Vytváram .env súbor...${NC}" +echo "RESEND_API_KEY=$RESEND_KEY" > .env +echo "NEXT_PUBLIC_DOMAIN=$DOMAIN" >> .env -# 4. Kontrola dátových súborov (JSON) -echo -e "${GREEN}📂 Kontrolujem dátovú štruktúru...${NC}" -FILES=("src/data/navbar.json" "src/data/main_page.json" "src/data/socials.json" "src/data/mainprojects.json" "src/data/contact.json") +# 5. AUTOMATICKÁ KONFIGURÁCIA NGINX +echo -e "${GREEN}🌐 Konfigurujem Nginx pre doménu $DOMAIN...${NC}" -for file in "${FILES[@]}"; do - if [ ! -f "$file" ]; then - echo -e "${YELLOW}⚠ Varovanie: Súbor $file chýba. Skontroluj si priečinok src/data/.${NC}" - fi -done +NGINX_CONF="/etc/nginx/sites-available/$DOMAIN" -# 5. Príprava priečinkov pre obrázky -echo -e "${GREEN}🖼️ Pripravujem priečinky pre médiá...${NC}" -mkdir -p public/images +# Vytvorenie konfiguračného súboru pre Nginx +sudo bash -c "cat < $NGINX_CONF +server { + listen 80; + server_name $DOMAIN www.$DOMAIN; -if [ ! -f public/images/me1.jpg ] || [ ! -f public/images/me2.jpg ]; then - echo -e "${YELLOW}📸 Nezabudni pridať fotky me1.jpg a me2.jpg do public/images/ pre správne zobrazenie polaroidov.${NC}" -fi + location / { + proxy_pass http://localhost:3000; + proxy_http_version 1.1; + proxy_set_header Upgrade \$http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host \$host; + proxy_cache_bypass \$http_upgrade; + } +} +EOF" -# 6. Finálne nastavenie práv pre skripty -chmod +x install.sh +# Aktivácia konfigurácie a reštart Nginxu +sudo ln -sf $NGINX_CONF /etc/nginx/sites-enabled/ +sudo rm -f /etc/nginx/sites-enabled/default +sudo nginx -t && sudo systemctl restart nginx + +# 6. AUTOMATICKÉ SSL (HTTPS) +echo -e "${YELLOW}🔒 Spúšťam Certbot pre automatické SSL...${NC}" +# Certbot sám upraví Nginx konfig a pridá SSL certifikáty +sudo certbot --nginx -d $DOMAIN -d www.$DOMAIN --non-interactive --agree-tos -m $EMAIL --redirect + +# 7. NASTAVENIE PM2 (Proces manažér) +echo -e "${GREEN}🚀 Spúšťam aplikáciu cez PM2, aby bežala nonstop...${NC}" +sudo npm install -g pm2 +pm2 delete jetomit-bio 2>/dev/null || true +pm2 start npm --name "jetomit-bio" -- start +pm2 save +pm2 startup | bash echo -e "\n${BLUE}==========================================${NC}" -echo -e "${GREEN}✅ Všetko je pripravené!${NC}" -echo -e "${BLUE}Spusti projekt príkazom:${NC} ${YELLOW}npm run dev${NC}" +echo -e "${GREEN}✅ HOTOVO! Tvoj web je live na: https://$DOMAIN${NC}" echo -e "${BLUE}==========================================${NC}" \ No newline at end of file diff --git a/src/components/navbar.tsx b/src/components/navbar.tsx index 144b5a8..61c0a7f 100644 --- a/src/components/navbar.tsx +++ b/src/components/navbar.tsx @@ -10,7 +10,6 @@ export default function Navbar() { const [isMounted, setIsMounted] = useState(false); const [activeTab, setActiveTab] = useState(""); - // Funkcia na plynulý scroll const performScroll = (id: string) => { const element = document.getElementById(id); if (element) { @@ -22,11 +21,10 @@ export default function Navbar() { useEffect(() => { setIsMounted(true); - // Detekcia počiatočného stavu a scrollu po príchode z inej stránky if (pathname === "/") { const hash = window.location.hash.replace("#", ""); if (hash) { - setTimeout(() => performScroll(hash), 400); // Dlhší timeout pre istotu + setTimeout(() => performScroll(hash), 400); } else { setActiveTab("/#home"); } @@ -41,14 +39,13 @@ export default function Navbar() { return; } - // Dynamické sledovanie sekcií z JSONu navbarData.navItems.forEach((item) => { if (item.href.includes("#")) { const id = item.href.replace("/#", ""); const el = document.getElementById(id); if (el) { const rect = el.getBoundingClientRect(); - if (rect.top <= 200 && rect.bottom >= 200) { + if (rect.top <= 250 && rect.bottom >= 250) { setActiveTab(item.href); } } @@ -67,18 +64,19 @@ export default function Navbar() { performScroll(id); window.history.pushState(null, "", href); } - // Ak ideme na /projects alebo z /projects na Home, necháme Next.js pracovať }; return ( -