🔍 ESC
↑ ↑ ↓ ↓ ← → ← → B A
AETHERION CHEAT CODE ACTIVATED
click anywhere to close
Press ⌘K or Ctrl+K to open command palette
ΔΙΑΘΕΣΙΜΟΣ
↑
💬
A
Aetherion Assistant
Online
Γεια! 👋 Είμαι ο AI assistant της Aetherion Projects. Μπορώ να απαντήσω για υπηρεσίες, τιμές, timelines και projects. Τι θέλεις να μάθεις;
← Πίσω στη σύνδεση
Δημιουργία επαγγελματικού λογαριασμού
Domains από €5.99 · Τιμολόγηση με ΑΦΑ · Domain Lock & Auto-renew
Χρησιμοποίησε κεφαλαία, αριθμούς και σύμβολα για ισχυρό κωδικό
GDPR compliant
·
Αυτόματη έκδοση τιμολογίων
·
Εγγραφή σε 2 λεπτά
'; if(ch) ch.textContent=ed.value.length+' chars'; } window.pgUpdate=upd; window.pgReset=function(){ed.value=DEF;upd();}; window.pgSnippet=function(k){ed.value=SN[k]||DEF;upd();}; ed.addEventListener('keydown',function(e){ if((e.ctrlKey||e.metaKey)&&e.key==='Enter'){e.preventDefault();upd();} if(e.key==='Tab'){e.preventDefault();var s=ed.selectionStart;ed.value=ed.value.slice(0,s)+' '+ed.value.slice(ed.selectionEnd);ed.selectionStart=ed.selectionEnd=s+2;} }); ed.value=DEF; upd(); })(); /* ══ SERVER LOGS ════════════════════════════════════════════════════ */ (function(){ var out=document.getElementById('log-output'); if(!out) return; var C={'GET':'#4ade80','POST':'#818cf8','PUT':'#fbbf24','DELETE':'#f87171','200':'#4ade80','201':'#34d399','204':'#60a5fa','[WS]':'#c084fc','[DB]':'#60a5fa','[CRON]':'#fb923c'}; var R=[ ['GET','/api/v2/devices','200','18ms'],['POST','/api/v2/location','201','12ms'], ['GET','/api/v2/fleet','200','24ms'],['GET','/api/v2/alerts','200','8ms'], ['POST','/api/v2/auth/token','200','31ms'],['PUT','/api/v2/devices/3421','200','14ms'], ['[WS]','device:3421 connected','',''],['[WS]','device:1189 location update','',''], ['[DB]','SELECT devices WHERE active=true','','4ms'],['[CRON]','heartbeat 2.147 devices','',''], ['GET','/api/v2/map/tiles','200','6ms'],['DELETE','/api/v2/sessions/old','204','9ms'], ['POST','/api/v2/webhooks','200','22ms'],['[WS]','fleet:DE-Munich 14 vehicles','',''], ]; function addLog(){ var e=R[Math.floor(Math.random()*R.length)]; var t=new Date().toLocaleTimeString('en',{hour12:false}); var d=document.createElement('div'); d.style='border-bottom:1px solid rgba(255,255,255,.03);padding:.1rem 0;display:flex;gap:.6rem;overflow:hidden'; d.innerHTML=''+t+'' +''+e[0]+'' +''+e[1]+'' +(e[2]?''+e[2]+'':'') +(e[3]?''+e[3]+'':''); out.appendChild(d); if(out.children.length>40) out.removeChild(out.firstChild); out.scrollTop=out.scrollHeight; } setTimeout(function(){for(var i=0;i<5;i++)addLog();setInterval(addLog,1000+Math.random()*600);},800); function jitter(){ var api=20+Math.floor(Math.random()*20),db=8+Math.floor(Math.random()*12); var dev=2140+Math.floor(Math.random()*20),ws=840+Math.floor(Math.random()*20); function s(id,v){var e=document.getElementById(id);if(e)e.textContent=v;} function w(id,pct){var e=document.getElementById(id);if(e)e.style.width=pct+'%';} s('pm-api',api+'ms');s('pm-db',db+'ms'); s('pm-dev',dev.toLocaleString('el-GR'));s('pm-ws',ws); w('pm-api-bar',Math.max(40,100-api*2));w('pm-db-bar',Math.max(60,100-db*3)); w('pm-dev-bar',dev/3000*100);w('pm-ws-bar',ws/2000*100); } setInterval(jitter,2000);setTimeout(jitter,1500); })(); /* ══ CUSTOM CURSOR ═══════════════════════════════════════════════════ */ (function(){ var dot = document.getElementById('cursor-dot'); var ring = document.getElementById('cursor-ring'); if(!dot||!ring||window.matchMedia('(hover:none)').matches) return; var dx=0,dy=0,rx=0,ry=0; window.addEventListener('mousemove',function(e){ dx=e.clientX; dy=e.clientY; dot.style.transform='translate(calc('+dx+'px - 50%), calc('+dy+'px - 50%))'; },{passive:true}); // ring removed // expand effects removed })(); /* ══ SOCIAL PROOF TOASTS (disabled) ════════════════════════════════ */ /* DISABLED (function(){ var container = document.getElementById('toast-container'); if(!container) return; var visitors = [ {name:'Μ. Παπαδόπουλος', city:'Αθήνα 🇬🇷', action:'είδε το Portfolio', color:'#818cf8'}, {name:'Klaus M.', city:'München 🇩🇪', action:'ζήτησε προσφορά', color:'#fbbf24'}, {name:'Γ. Κωνσταντίνου', city:'Θεσσαλονίκη 🇬🇷', action:'διάβασε για FahrTrack', color:'#E03030'}, {name:'Nikos A.', city:'Λευκωσία 🇨🇾', action:'άνοιξε το Contact', color:'#4ade80'}, {name:'Thomas B.', city:'Wien 🇦🇹', action:'χρησιμοποίησε το Terminal', color:'#c084fc'}, {name:'Σ. Αλεξάνδρου', city:'Πάτρα 🇬🇷', action:'είδε τις τιμές', color:'#fb923c'}, ]; var i=0; function showToast(){ var v=visitors[i%visitors.length]; i++; var t=document.createElement('div'); t.className='toast'; t.innerHTML= '
👤
'+ '
'+ '
'+v.name+'
'+ '
'+v.city+' · '+v.action+'
'+ '
'; container.appendChild(t); requestAnimationFrame(function(){ requestAnimationFrame(function(){ t.classList.add('show'); }); }); setTimeout(function(){ t.classList.remove('show'); setTimeout(function(){ if(t.parentNode) t.parentNode.removeChild(t); },400); }, 4500); } // Start after 3s, then every 8s setTimeout(showToast, 3000); setInterval(showToast, 8000); })(); /* ══ LIVE TYPING DEMO (simplified) ══════════════════════════════ */ (function(){ var code = document.getElementById('live-demo-code'); if(!code) return; var lines = [ 'const site = await buildSite({', ' stack: ["React", "Node", "Stripe"],', ' lighthouse: 98,', ' deploy: "netlify"', '});', 'await site.deploy(); // ✓ live!', ]; var li=0; var obs=new IntersectionObserver(function(entries){ if(!entries[0].isIntersecting) return; obs.disconnect(); (function next(){ if(li>=lines.length) return; var d=document.createElement('div'); d.innerHTML=lines[li++]; code.appendChild(d); if(li'+cmd.icon+''+ ''+cmd.label+''+ ''+cmd.sub+''; div.addEventListener('click', function(){ execute(cmd); }); div.addEventListener('mouseenter', function(){ selected=idx; updateSelected(); }); return div; } function updateSelected(){ results.querySelectorAll('.cmd-item').forEach(function(el,i){ el.classList.toggle('selected', i===selected); }); } function execute(cmd){ close(); setTimeout(function(){ if(cmd.r){ if(window.showPage) window.showPage(cmd.r); window.scrollTo(0,0); } else if(cmd.action==='whatsapp'){ window.open('https://wa.me/30398371244','_blank'); } else if(cmd.action==='email'){ window.location.href='mailto:info@aetherionprojects.cloud'; } else if(cmd.action==='dark'){ if(window.toggleDark) window.toggleDark(); } else if(cmd.action==='terminal'){ if(window.showPage) window.showPage('home'); setTimeout(function(){ var t=document.getElementById('term-input'); if(t){ t.scrollIntoView({behavior:'smooth',block:'center'}); t.focus(); } },500); } }, 100); } // Keyboard shortcuts document.addEventListener('keydown', function(e){ if((e.metaKey||e.ctrlKey) && e.key==='k'){ e.preventDefault(); open(); return; } if(!backdrop.classList.contains('open')) return; if(e.key==='Escape'){ close(); return; } if(e.key==='ArrowDown'){ e.preventDefault(); selected=Math.min(selected+1,filtered.length-1); updateSelected(); } if(e.key==='ArrowUp'){ e.preventDefault(); selected=Math.max(selected-1,0); updateSelected(); } if(e.key==='Enter'){ if(filtered[selected]) execute(filtered[selected]); } }); input.addEventListener('input', function(){ var q=input.value.toLowerCase(); if(!q){ render(commands); return; } render(commands.filter(function(c){ return c.label.toLowerCase().includes(q) || c.sub.toLowerCase().includes(q); })); }); backdrop.addEventListener('click', function(e){ if(e.target===backdrop) close(); }); })(); /* ══ CONFETTI 🎉 ═════════════════════════════════════════════════════ */ window.launchConfetti = function(x, y){ var colors=['#818cf8','#c084fc','#4ade80','#fb923c','#f472b6','#fbbf24','#60a5fa']; for(var i=0;i<60;i++){ (function(i){ var el=document.createElement('div'); el.className='confetti-piece'; var color=colors[Math.floor(Math.random()*colors.length)]; el.style.cssText='left:'+(x||50)+'%;top:'+(y||0)+'px;background:'+color+ ';border-radius:'+(Math.random()>.5?'50%':'2px')+ ';animation-duration:'+(Math.random()*1.5+1)+'s'+ ';animation-delay:'+(Math.random()*.5)+'s'; document.body.appendChild(el); setTimeout(function(){ el.remove(); }, 2500); })(i); } }; /* ══ MOUSE TRAIL 🌟 ══════════════════════════════════════════════════ */ (function(){ var colors=['#6366f1','#818cf8','#c084fc','#4ade80','#f472b6']; var ci=0; var lastX=0,lastY=0; window.addEventListener('mousemove',function(e){ if(Math.abs(e.clientX-lastX)<25 && Math.abs(e.clientY-lastY)<25) return; lastX=e.clientX; lastY=e.clientY; // Only on dark sections var el=document.elementFromPoint(e.clientX,e.clientY); var dark=false; for(var k=el,d=0;k&&d<5;k=k.parentElement,d++){ var bg=window.getComputedStyle(k).backgroundColor; if(bg&&(bg.includes('17, 17')||bg.includes('10, 10')||bg.includes('12, 12')||bg.includes('13, 13'))){ dark=true;break; } } if(!dark) return; var dot=document.createElement('div'); dot.className='trail-dot'; dot.style.cssText='left:'+e.clientX+'px;top:'+e.clientY+'px;background:'+colors[ci%colors.length]+';opacity:.7;animation-duration:'+(Math.random()*.3+.4)+'s'; ci++; document.body.appendChild(dot); setTimeout(function(){dot.remove();},700); },{passive:true}); })(); /* ══ KONAMI CODE ↑↑↓↓←→←→BA ══════════════════════════════════════ */ (function(){ var seq=[38,38,40,40,37,39,37,39,66,65]; var pos=0; document.addEventListener('keydown',function(e){ if(e.keyCode===seq[pos]){ pos++; if(pos===seq.length){ pos=0; var ov=document.getElementById('konami-overlay'); if(!ov) return; ov.classList.add('show'); window.launchConfetti && window.launchConfetti(50,0); // Matrix rain on the konami canvas var wrap=document.getElementById('konami-canvas-wrap'); if(wrap){ var c=document.createElement('canvas'); c.width=300;c.height=120; c.style.cssText='display:block;margin:0 auto;opacity:.6'; wrap.innerHTML=''; wrap.appendChild(c); var ctx=c.getContext('2d'); var chars='アイウエオΑΒΓΔ0101'; var cols=Math.floor(c.width/14); var drops=Array(cols).fill(1); var iv=setInterval(function(){ ctx.fillStyle='rgba(10,0,20,.15)'; ctx.fillRect(0,0,c.width,c.height); ctx.fillStyle='#c084fc'; ctx.font='13px monospace'; drops.forEach(function(y,i){ ctx.fillText(chars[Math.floor(Math.random()*chars.length)],i*14,y*14); if(y*14>c.height && Math.random()>.95) drops[i]=0; drops[i]++; }); },60); setTimeout(function(){ clearInterval(iv); },6000); } } } else { pos=0; } }); })(); /* ══ CONTACT FORM CONFETTI ═══════════════════════════════════════════ */ (function(){ var form=document.getElementById('contact-form'); if(!form) return; form.addEventListener('submit',function(e){ setTimeout(function(){ window.launchConfetti && window.launchConfetti(50,0); },400); }); // Also on chat send var chatSend=document.getElementById('chat-send'); if(chatSend){ chatSend.addEventListener('click',function(){ window.launchConfetti && window.launchConfetti(Math.random()*80+10,200); }); } })(); /* ══ TIME-BASED GREETING IN HERO ════════════════════════════════════ */ (function(){ var el=document.getElementById('hero-greeting'); if(!el) return; var h=new Date(new Date().toLocaleString('en',{timeZone:'Europe/Athens'})).getHours(); var greet= h<5?'🌙 Καλά ξημερώματα' : h<12?'☀️ Καλημέρα' : h<17?'🌤 Καλό απόγευμα' : h<21?'🌆 Καλό βράδυ' : '🌙 Καλό βράδυ'; el.textContent=greet; })(); var API_BASE = (function(){ var h = window.location.hostname; return (h==='localhost'||h==='127.0.0.1') ? 'http://localhost:3001/api/v1' : 'https://api.aetherionprojects.cloud/api/v1'; })(); async function apiFetch(method, path, body){ var res = await fetch(API_BASE+path,{ method: method, credentials: 'include', headers: {'Content-Type':'application/json'}, body: body ? JSON.stringify(body) : undefined }); var json = await res.json(); if(!json.success) throw new Error(json.error?.message||'Σφάλμα'); return json.data; } function showErr(id, msg){ var el=document.getElementById(id); el.textContent=msg; el.style.display='block'; } function hideErr(id){ document.getElementById(id).style.display='none'; } function showOk(id, msg){ var el=document.getElementById(id); el.textContent=msg; el.style.display='block'; } function pwStrength(pw){ var score = 0; if(pw.length>=8) score++; if(pw.length>=12) score++; if(/[A-Z]/.test(pw)) score++; if(/[0-9]/.test(pw)) score++; if(/[^a-zA-Z0-9]/.test(pw)) score++; var bar = document.getElementById('pw-bar'); if(!bar)return; var cols=['#ef4444','#f97316','#eab308','#22c55e','#16a34a']; var widths=['20%','40%','60%','80%','100%']; bar.style.background = cols[Math.min(score,4)]; bar.style.width = widths[Math.min(score,4)]; } async function doRegister(){ hideErr('err-r'); hideErr('ok-r'); var co=document.getElementById('r-co').value.trim(); var fn=document.getElementById('r-fn').value.trim(); var ln=document.getElementById('r-ln').value.trim(); var em=document.getElementById('r-em').value.trim(); var ph=document.getElementById('r-ph').value.trim(); var vat=document.getElementById('r-vat').value.trim(); var pw=document.getElementById('r-pw').value; var terms=document.getElementById('r-terms').checked; if(!co){ showErr('err-r','Συμπλήρωσε την επωνυμία εταιρείας'); return; } if(!fn||!ln){ showErr('err-r','Συμπλήρωσε όνομα και επώνυμο'); return; } if(!em){ showErr('err-r','Συμπλήρωσε email'); return; } if(!ph){ showErr('err-r','Συμπλήρωσε τηλέφωνο'); return; } if(!vat||vat.length<9){ showErr('err-r','Συμπλήρωσε έγκυρο ΑΦΜ (9 ψηφία)'); return; } if(pw.length<8){ showErr('err-r','Ο κωδικός πρέπει να έχει τουλάχιστον 8 χαρακτήρες'); return; } if(!terms){ showErr('err-r','Πρέπει να αποδεχτείς τους Όρους Υπηρεσιών'); return; } var btn=document.getElementById('btn-r'); btn.textContent='Δημιουργία...'; btn.disabled=true; try{ await apiFetch('POST','/auth/register',{ email:em, password:pw, firstName:fn, lastName:ln, company:co, phone:ph, vatNumber:vat, }); var data=await apiFetch('POST','/auth/login',{email:em,password:pw}); localStorage.setItem('ae_access',data.accessToken); localStorage.setItem('ae_user',JSON.stringify({...data.user,name:fn+' '+ln,company:co})); showOk('ok-r','✓ Ο λογαριασμός δημιουργήθηκε! Ανακατεύθυνση...'); setTimeout(function(){ window.location.href='/account/domains.html'; },1200); }catch(e){ // Demo localStorage.setItem('ae_user',JSON.stringify({ email:em,name:fn+' '+ln,firstName:fn,lastName:ln, company:co,vatNumber:vat,phone:ph,role:'CUSTOMER' })); showOk('ok-r','✓ Καλώς ήρθες '+fn+'! Ανακατεύθυνση...'); setTimeout(function(){ window.location.href='/account/domains.html'; },1200); }finally{ btn.textContent='Δημιουργία Επαγγελματικού Λογαριασμού'; btn.disabled=false; } } document.addEventListener('DOMContentLoaded',function(){ document.getElementById('r-pw').addEventListener('keydown',function(e){ if(e.key==='Enter') doRegister(); }); // ΑΦΜ - μόνο αριθμοί document.getElementById('r-vat').addEventListener('input',function(){ this.value=this.value.replace(/\D/g,'').slice(0,9); }); });