🔍 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 μου

Νέο Domain
'; 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)]; } var _user=JSON.parse(localStorage.getItem('ae_user')||'null'); if(!_user){location.href='/login.html';} function doLogout(){localStorage.removeItem('ae_user');localStorage.removeItem('ae_access');localStorage.removeItem('ae_domain_cart');location.href='/login.html';} (function(){ if(!_user)return; var av=document.getElementById('sb-av'),nm=document.getElementById('sb-name'),em=document.getElementById('sb-email'); if(av)av.textContent=(_user.name||_user.firstName||_user.email).charAt(0).toUpperCase(); if(nm)nm.textContent=_user.name||(_user.firstName?_user.firstName+' '+(_user.lastName||''):_user.email)||'—'; if(em)em.textContent=_user.email||'—'; })(); async function apiFetch(m,p,b){ var res=await fetch((window.location.hostname==='localhost'?'http://localhost:3001':'https://api.aetherionprojects.cloud')+'/api/v1'+p,{ method:m,credentials:'include', headers:{'Content-Type':'application/json',...(localStorage.getItem('ae_access')?{Authorization:'Bearer '+localStorage.getItem('ae_access')}:{})}, body:b?JSON.stringify(b):undefined}); var j=await res.json();if(!j.success)throw new Error(j.error?.message||'Σφάλμα');return j.data; } var MOCK=[ {fqdn:'aetherionprojects.cloud',tld:'.cloud',status:'ACTIVE',registeredAt:'2024-09-15',expiresAt:'2027-09-15',autoRenew:true,locked:true,renewCost:18.99}, {fqdn:'fahrtrack.de',tld:'.de',status:'ACTIVE',registeredAt:'2024-11-01',expiresAt:'2025-11-01',autoRenew:true,locked:true,renewCost:8.99}, {fqdn:'gokok.gr',tld:'.gr',status:'EXPIRING',registeredAt:'2025-02-14',expiresAt:'2025-12-14',autoRenew:false,locked:false,renewCost:5.99}, ]; var allDomains=MOCK; var _qDomain=null,_qYears=1,_qPrice=0; function daysLeft(d){return Math.ceil((new Date(d)-new Date())/86400000);} function stChip(d){ var days=daysLeft(d.expiresAt); if(d.status==='EXPIRED'||days<0) return '⚫ Ληγμένο'; if(d.status==='EXPIRING'||days<=30) return '⚠ Λήγει σε '+days+' μέρες'; if(d.status==='PENDING') return '⏳ Εκκρεμές'; return '✓ Ενεργό'; } function renderDomains(list){ var el=document.getElementById('domains-list'); if(!list||!list.length){ el.innerHTML='
🌐

Δεν έχεις ακόμα domain

Καταχώρησε το πρώτο σου domain

Αναζήτηση Domain →
'; return; } el.innerHTML=list.map(function(d){ var days=daysLeft(d.expiresAt); var expColor=days<=30&&days>=0?'color:#d97706;font-weight:700':'color:var(--mid)'; var exp=new Date(d.expiresAt).toLocaleDateString('el-GR',{day:'2-digit',month:'long',year:'numeric'}); var needsRenew=days>=0&&days<=60; return '
' +'
' +'
' +'
' +''+d.fqdn+'' +stChip(d) +(d.locked?'🔒':'') +'
' +'
' +'Λήγει: '+exp+'' +'Auto-renew: '+(d.autoRenew?'✓ Ενεργό':'✗ Off')+'' +'
' +'
' +'
' +(needsRenew?'':'') +'Διαχείριση →' +'
' +'
' +'
'; }).join(''); } function renderStats(){ var days=function(d){return daysLeft(d.expiresAt);}; document.getElementById('st-tot').textContent=allDomains.length; document.getElementById('st-act').textContent=allDomains.filter(function(d){return d.status==='ACTIVE';}).length; document.getElementById('st-exp').textContent=allDomains.filter(function(d){var dd=days(d);return dd>=0&&dd<=30;}).length; document.getElementById('st-ar').textContent=allDomains.filter(function(d){return d.autoRenew;}).length; } function filterDomains(){ var q=(document.getElementById('df-q').value||'').toLowerCase(); var s=document.getElementById('df-s').value; renderDomains(allDomains.filter(function(d){ if(q&&d.fqdn.indexOf(q)<0)return false; if(s){var dd=daysLeft(d.expiresAt); if(s==='ACTIVE'&&d.status!=='ACTIVE')return false; if(s==='EXPIRING'&&!(dd>=0&&dd<=30))return false; if(s==='EXPIRED'&&!(d.status==='EXPIRED'||dd<0))return false; } return true; })); } function openQRenew(fqdn,price,expiresAt){ _qDomain=fqdn;_qPrice=price;_qYears=1; document.getElementById('qr-fqdn').textContent=fqdn; document.getElementById('qr-exp').textContent='Λήγει: '+new Date(expiresAt).toLocaleDateString('el-GR',{day:'2-digit',month:'long',year:'numeric'}); qCalc(); document.getElementById('q-renew-modal').style.display='flex'; } function qSetYrs(y){ _qYears=y; [1,2,3,5].forEach(function(n){ var b=document.getElementById('qy-'+n); if(b){b.style.background=n===y?'#111':'#fff';b.style.color=n===y?'#fff':'#111';b.style.borderColor=n===y?'#111':'var(--line)';} }); qCalc(); } function qCalc(){ var sub=_qPrice*_qYears,vat=sub*.24,tot=sub+vat; document.getElementById('qr-yrs').textContent=_qYears; document.getElementById('qr-sub').textContent='€'+sub.toFixed(2); document.getElementById('qr-vat').textContent='€'+vat.toFixed(2); document.getElementById('qr-tot').textContent='€'+tot.toFixed(2); } function qGoCheckout(){ localStorage.setItem('ae_domain_cart',JSON.stringify([{fqdn:_qDomain,tld:'.'+_qDomain.split('.').slice(1).join('.'),price:_qPrice*_qYears,years:_qYears,type:'renew'}])); location.href='/domains-checkout.html'; } async function loadDomains(){ try{var data=await apiFetch('GET','/account/domains');allDomains=data;}catch(e){allDomains=MOCK;} renderStats();renderDomains(allDomains); } document.addEventListener('DOMContentLoaded',function(){ loadDomains(); var m=document.getElementById('q-renew-modal'); if(m)m.addEventListener('click',function(e){if(e.target===m)m.style.display='none';}); });