HolyVault (HV) = Holy + Vault (ืืืขืืคืื ืงืืืฉืื ืืืื ื ืืจืืืกืืืช, ืกืื ืื ืื, ืืืืคืืฉ)
- ๐๏ธ ืืจืืืกืืื ืืื ืืืืจ (ืืืื GitHub + ืืชืจ ืื ืงืืื)
- ๐ท๏ธ ืชืืืืช ืืกืื ืื ืื (Chip Filters)
- ๐ ืืืคืืฉ ืืืืจ
- โญ ืืืขืืคืื ืงืืืฉืื (ื ืฉืืจ ื-
localStorage) - ๐จ ืคืืืช ืฆืืขืื ืืื ืืืืจ (ืืืฉื/ืืืจ-ืืื/ืืฉ, ืืกืื ืื TorahClarity + GoMag)
- ๐ ืืกืชืืืงื: Dark + Gold + Fire Glow
<div class="hv">
<header class="hv__top">
<div class="hv__brand">
<div class="hv__logo">HV</div>
<div class="hv__titles">
<h1>HolyVault</h1>
<p>โญ Sacred Favorites โข Dark ร Gold ร Fire</p>
</div>
</div>
<div class="hv__controls">
<div class="hv__search">
<span class="hv__icon">๐</span>
<input id="q" type="search" placeholder="ืืคืฉ ืืืืจ / ืชืืืช / ืืืืช ืืคืชื..." autocomplete="off" />
</div>
<div class="hv__row">
<select id="sort">
<option value="fav">โญ ืืืขืืคืื ืงืืื</option>
<option value="az">๐ค A โ Z</option>
<option value="za">๐ค Z โ A</option>
<option value="tag">๐ท๏ธ ืืคื ืชืืืืช</option>
</select>
<label class="hv__toggle">
<input id="onlyFav" type="checkbox" />
<span>โญ ืจืง ืืืขืืคืื</span>
</label>
<button id="reset" class="hv__btn">โป๏ธ ืืืคืืก</button>
</div>
</div>
</header>
<section class="hv__tags">
<div class="hv__chips" id="chips"></div>
</section>
<main class="hv__grid" id="grid"></main>
<footer class="hv__foot">
<div class="hv__footline">
<span>โก AnLoMinus</span>
<span>โข</span>
<span id="meta"></span>
</div>
</footer>
</div>:root{
--bg0:#07070a;
--bg1:#0b0b12;
--card:#0f1018;
--text:#e9e6df;
--muted:#b7b1a6;
--gold0:#ffedb0;
--gold1:#f7c86a;
--gold2:#b8872c;
--fire0:#ffb35a;
--fire1:#ff6a2a;
--fire2:#b61d0f;
--line:rgba(255,232,180,.14);
--shadow: 0 18px 50px rgba(0,0,0,.55);
--radius:18px;
}
*{box-sizing:border-box}
html,body{height:100%}
body{
margin:0;
font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Arial;
background:
radial-gradient(1200px 600px at 20% 0%, rgba(255,200,90,.10), transparent 55%),
radial-gradient(900px 500px at 90% 10%, rgba(255,90,40,.10), transparent 60%),
radial-gradient(700px 700px at 50% 120%, rgba(185,135,44,.10), transparent 55%),
linear-gradient(180deg, var(--bg0), var(--bg1));
color:var(--text);
}
.hv{
max-width:1180px;
margin:0 auto;
padding:18px 16px 26px;
}
.hv__top{
display:flex;
gap:16px;
align-items:flex-start;
justify-content:space-between;
flex-wrap:wrap;
padding:16px;
border:1px solid var(--line);
border-radius:var(--radius);
background: linear-gradient(180deg, rgba(255,232,180,.06), rgba(0,0,0,.0));
box-shadow: var(--shadow);
}
.hv__brand{display:flex; gap:12px; align-items:center}
.hv__logo{
width:46px;height:46px;
border-radius:14px;
display:grid; place-items:center;
font-weight:900;
letter-spacing:.6px;
color:#120d05;
background: linear-gradient(135deg, var(--gold0), var(--gold1), var(--gold2));
box-shadow:
0 0 0 1px rgba(255,232,180,.35),
0 10px 30px rgba(255,140,60,.18);
}
.hv__titles h1{margin:0;font-size:22px}
.hv__titles p{margin:2px 0 0; color:var(--muted); font-size:13px}
.hv__controls{min-width:320px; flex:1}
.hv__search{
display:flex;
align-items:center;
gap:10px;
padding:10px 12px;
border-radius:14px;
border:1px solid var(--line);
background: rgba(10,10,16,.55);
}
.hv__icon{opacity:.9}
.hv__search input{
width:100%;
outline:none;
border:0;
background:transparent;
color:var(--text);
font-size:14px;
}
.hv__row{
display:flex;
gap:10px;
flex-wrap:wrap;
align-items:center;
margin-top:10px;
}
select{
padding:10px 12px;
border-radius:14px;
border:1px solid var(--line);
background: rgba(10,10,16,.55);
color:var(--text);
outline:none;
}
.hv__toggle{
display:flex;
gap:8px;
align-items:center;
padding:8px 10px;
border-radius:14px;
border:1px solid var(--line);
background: rgba(10,10,16,.45);
color:var(--muted);
user-select:none;
}
.hv__toggle input{accent-color: #f7c86a}
.hv__btn{
padding:10px 12px;
border-radius:14px;
border:1px solid rgba(255,232,180,.22);
background: linear-gradient(135deg, rgba(255,200,90,.12), rgba(255,90,40,.08));
color: var(--text);
cursor:pointer;
box-shadow: 0 10px 24px rgba(0,0,0,.35);
}
.hv__btn:hover{filter:brightness(1.06)}
.hv__tags{margin-top:14px}
.hv__chips{
display:flex;
flex-wrap:wrap;
gap:10px;
padding:12px;
border-radius:var(--radius);
border:1px solid var(--line);
background: rgba(10,10,16,.35);
}
.chip{
padding:8px 10px;
border-radius:999px;
border:1px solid rgba(255,232,180,.18);
background: rgba(0,0,0,.22);
color: var(--muted);
cursor:pointer;
display:flex;
gap:8px;
align-items:center;
transition: .15s ease;
}
.chip:hover{transform: translateY(-1px); color:var(--text)}
.chip.is-on{
color:#120d05;
background: linear-gradient(135deg, var(--gold0), var(--gold1));
border-color: rgba(255,232,180,.55);
box-shadow: 0 10px 26px rgba(255,140,60,.18);
}
.hv__grid{
margin-top:14px;
display:grid;
grid-template-columns: repeat( auto-fit, minmax(260px, 1fr) );
gap:14px;
}
.card{
position:relative;
border-radius: 18px;
border:1px solid rgba(255,232,180,.14);
background: rgba(14,14,22,.58);
box-shadow: 0 20px 50px rgba(0,0,0,.55);
overflow:hidden;
min-height: 190px;
}
.card::before{
content:"";
position:absolute; inset:-2px;
background: linear-gradient(135deg, var(--a), var(--b), var(--c));
opacity:.22;
filter: blur(18px);
}
.card__in{
position:relative;
padding:14px;
display:flex;
flex-direction:column;
gap:10px;
}
.card__top{
display:flex; align-items:flex-start; justify-content:space-between; gap:10px;
}
.card__name{
margin:0;
font-size:16px;
letter-spacing:.2px;
}
.badges{display:flex; gap:8px; flex-wrap:wrap; justify-content:flex-end}
.badge{
font-size:12px;
color: rgba(255,255,255,.86);
padding:6px 8px;
border-radius:999px;
border:1px solid rgba(255,232,180,.14);
background: rgba(0,0,0,.25);
}
.badge--pal{
border-color: rgba(255,232,180,.18);
background: linear-gradient(135deg, rgba(0,0,0,.20), rgba(0,0,0,.10));
}
.card__desc{
margin:0;
color: var(--muted);
line-height:1.45;
font-size:13px;
}
.card__tags{
display:flex; gap:8px; flex-wrap:wrap;
}
.tg{
font-size:12px;
color: rgba(255,232,180,.85);
border:1px solid rgba(255,232,180,.18);
background: rgba(255,200,90,.06);
padding:6px 8px;
border-radius:999px;
}
.card__actions{
display:flex;
gap:10px;
margin-top:auto;
flex-wrap:wrap;
}
a.btn{
text-decoration:none;
color: var(--text);
font-size:13px;
padding:9px 10px;
border-radius:14px;
border:1px solid rgba(255,232,180,.18);
background: rgba(0,0,0,.22);
}
a.btn:hover{filter:brightness(1.07)}
.btn--main{
border-color: rgba(255,232,180,.26);
background: linear-gradient(135deg, rgba(255,200,90,.10), rgba(255,90,40,.08));
}
.fav{
margin-left:auto;
padding:9px 10px;
border-radius:14px;
border:1px solid rgba(255,232,180,.22);
background: rgba(0,0,0,.22);
cursor:pointer;
color: var(--text);
}
.fav.is-on{
background: linear-gradient(135deg, rgba(255,232,180,.18), rgba(255,90,40,.10));
border-color: rgba(255,232,180,.42);
}
.hv__foot{
margin-top:14px;
padding:12px;
border-radius:var(--radius);
border:1px solid var(--line);
background: rgba(10,10,16,.28);
color: var(--muted);
font-size:12px;
}
.hv__footline{display:flex; gap:10px; flex-wrap:wrap; align-items:center; justify-content:space-between}// HolyVault (HV) โ Sacred Favorites Widget
// Built for AnLoMinus repos โข Dark ร Gold ร Fire style
const repos = [
// ๐ง Torah / Learning
{
id:"DatOS",
title:"DatOS โ ืืืืฉื ืืืืฉื ืชืืจื (ืืืืืืื)",
gh:"https://github.com/AnLoMinus/DatOS",
site:"https://anlominus.github.io/DatOS/",
tags:["Torah","Learning","Chumash","Siddur","Docs"],
desc:"ืืืืจ ืืืืื ืืืืืืื ืจืื: ืืืืฉืื, ืชืื ืื ืืืืืื, ืชืคืืืืช, ื ืืงืื ืืชืืงืืืช ืชืืื ืืืื ืืช.",
pal:["#FFE9B3","#F7C86A","#FF6A2A"]
},
{
id:"TorahClarity",
title:"TorahClarity (TC) โ ืืืืจืืช ืืชืืจื",
gh:"https://github.com/AnLoMinus/TorahClarity",
site:"https://anlominus.github.io/TorahClarity/",
tags:["Torah","Clarity","Halacha","Mapping","Learning"],
desc:"ืืืช ืฉื ืกืืจ ืืืื ื ืืื ืืชืื ืื ืืชืืจื: ืืกืืืืช ืืืืจืืช, ืืืืงื ื ืืฉืืืช, ืืืคืื ืืืฉืืื ืืชืฉืืืืช ืืืืงืืืช.",
pal:["#FFE9B3","#B8872C","#0C0C12"]
},
{
id:"TorahMatrix",
title:"TorahMatrix โ ืืคืช ืืืื ืืืึพืชืืืืืช ืืจื ืืชืืจื",
gh:"https://github.com/AnLoMinus/TorahMatrix",
site:"https://anlominus.github.io/TorahMatrix/",
tags:["Torah","Systems","Kabbalah","Strategy","Mind"],
desc:"ืืขืจืืช ืืืืืช ืฉืืืืจืช ืชืืจื + ืืขืจืืืช ืืืื (ืคืกืืืืืืืื/ืืืืื/ืืกืืจืืืื/ืงืืื) ืืืื ืื ืฉื 10ร10 ืขื ืฉืืืืช ื ืืชืื.",
pal:["#FFE9B3","#FFB35A","#2A0B0B"]
},
{
id:"TenLight",
title:"TenLight โ ืขืฉืจืช ืืืืืจืืช (ืืืืืช ืืืจืืช)",
gh:"https://github.com/AnLoMinus/TenLight",
site:"",
tags:["Torah","Ten","Covenant","Learning"],
desc:"ืืกืืจืช ืชืืื/ืืืืื ืกืืื ืขืฉืจืช ืืืืืจืืช: ืกืืจ, ืืืืจืื, ืืืืืืจ ืืขืฉื ืืขืงืจืื ืืช ืืกืื.",
pal:["#FFE9B3","#F7C86A","#3A2A0A"]
},
{
id:"TalmudX",
title:"TalmudX โ ืืืืื ืืืจื ืขื ืืืืืฉืื ืืืฆืืืื",
gh:"https://github.com/AnLoMinus/TalmudX",
site:"",
tags:["Talmud","Learning","Cross","Modern"],
desc:"ืืืืืจ ืื ืืื ืกืืืืืช ืืืจื ืืืื ืืฉืืื ืืืืื ืืืืจื ืืื: ืฉืืืืช ืืงืืจ/ืชืืื ืืช/ืงืืื/ืืืฉืื.",
pal:["#FFE9B3","#B8872C","#0A1022"]
},
{
id:"Koelet",
title:"Koelet โ ืงืืืช",
gh:"https://github.com/AnLoMinus/Koelet",
site:"",
tags:["Tanakh","Wisdom","Mussar"],
desc:"ืืจืื ืขืืืื ืืชืืื ืืืื ืืืขืืงื ืืกืคืจ ืงืืืช: ืกืืจ ืคืกืืงืื, ื ืงืืืืช ืชืืืขื, ืืกืงื ืืช ืืืืื.",
pal:["#FFE9B3","#F7C86A","#141018"]
},
// ๐ฏ๏ธ Light / Hanukkah / Path
{
id:"PathLight",
title:"PathLight โ ื ืจ ืืจืืื ืืืจื",
gh:"https://github.com/AnLoMinus/PathLight",
site:"",
tags:["Light","Path","Mussar","Guidance"],
desc:"ืืืืจ ืืกืืืืช ืืืจ: ืืืืื ื, ืืจื, ืืืืฉืื ืืืื ืฉืืืืจ ืืืืื ืืคืขืืื ืืืกืืื ืืจืืจ.",
pal:["#FFE9B3","#FFB35A","#0B0B12"]
},
{
id:"LightRise",
title:"LightRise (LR) โ ืื ืืื: ืืืจ ืืชืขืืจืจ",
gh:"https://github.com/AnLoMinus/LightRise",
site:"https://anlominus.github.io/LightRise/",
tags:["Hanukkah","Music","Light","SparKing"],
desc:"ืคืจืืืงื ืื ืืื ืืกืื ืื SparKing: 8 ื ืจืืช โข 8 ืฉืืืืช ืืืจ (ืืจืืงืื/ืจืขืืื/ืื ืจืืื) ืืืคืืืช ืืื ืืืื ืชืืจ ืื ืฉืื.",
pal:["#FFE9B3","#FF6A2A","#B61D0F"]
},
{
id:"LightFlow",
title:"LightFlow โ ืืจืืืช ืืืจ",
gh:"https://github.com/AnLoMinus/LightFlow",
site:"",
tags:["Light","Flow","Spirit","Practice"],
desc:"ืชื ืืขืช ืืืจ ืืขืฉืืช: ืืจืืื, ืขืงืืืืช, ืฉืืื ืืขืฉืืื ืืชืืจ ืืืื ืฉืืจืื ืืช ืืืขืจืืช.",
pal:["#FFE9B3","#F7C86A","#0B0B12"]
},
{
id:"FireSoul",
title:"FireSoul (FS) โ ืืฉ ืื ืฉืื",
gh:"https://github.com/AnLoMinus/FireSoul",
site:"",
tags:["Fire","Soul","Power","Rise"],
desc:"ืืืืจ ืืฆืชื ืคื ืืืืช: ืืืืฅ, ืืื ืืืื ื, ืืชืืืจืืช ืืืฆืืจืช ืืจืืื ื ืงื ืืขืฉืืื.",
pal:["#FFE9B3","#FF6A2A","#B61D0F"]
},
// ๐ค Purity / Kindness
{
id:"PurityFlow",
title:"PurityFlow (PF) โ ืืื ืืืืืืจ ืืกืืืขืื ืืืื",
gh:"https://github.com/AnLoMinus/PurityFlow",
site:"",
tags:["Purity","Middot","Habits","Clean"],
desc:"ืืจืืื ืฉื ืืืจื: ืืจืืืื ื ืงืืื, ืชืืงืื ืคื ืืื, ืืฉืคื ืคืฉืืื ืฉื ืืชืงืืืืช ืืืืืืืืช.",
pal:["#EAF7FF","#FFE9B3","#B8872C"]
},
{
id:"UltraKind",
title:"UltraKind โ ืืืืืจื ืืกื",
gh:"https://github.com/AnLoMinus/UltraKind",
site:"",
tags:["Kindness","Chesed","Middot","Community"],
desc:"ืืจืื ืืืื ืืืกื ืืืืืจ: ื ืชืื ื ืืืื, ืจืืืช ืขื ืืืืืืช, ืืคืจืืืงืืื ืฉื ืืืจ ืืงืืืื.",
pal:["#FFE9B3","#F7C86A","#1A1022"]
},
{
id:"TreeSoul",
title:"TreeSoul โ ืขืฅ ืืืื: ืืฉืืื ืืื",
gh:"https://github.com/AnLoMinus/TreeSoul",
site:"",
tags:["Tree","Soul","Mussar","Growth"],
desc:"ืืคืช ืืชืคืชืืืช ืคื ืืืืช: ืืฉืืื ื ืคืฉ, ืชืืงืื ืืืืืช, ืืืืืื ืขืงืืืช ืขื ืฉืืจืฉืื ืืขื ืคืื.",
pal:["#FFE9B3","#B8872C","#0B160E"]
},
// ๐ช Geulah / Identity
{
id:"MashiaStep",
title:"MashiaStep โ ืขืงืืชื ืืืฉืืื (ืชืืื ืืจืืื)",
gh:"https://github.com/AnLoMinus/MashiaStep",
site:"",
tags:["Geulah","Mashiach","Awakening","Roadmap"],
desc:"ืชืืื ืืกืืืจ ืืืื ืช ืืชืงืืคื, ืฆืขืืื, ืืืืืง, ืืืกืืื ืคืขืืื ืฉืืืืจ ืืืื ื ืืืฆืืืืช.",
pal:["#FFE9B3","#FFB35A","#0B0B12"]
},
{
id:"Moshe",
title:"Moshe โ ืืืึพืืกืืก ืฉื ืื ืืื ืืืืจื",
gh:"https://github.com/AnLoMinus/Moshe",
site:"",
tags:["Leadership","Soul","Mission","Torah"],
desc:"ืืจืื ืืชืืื ืืฉืืืืืช, ืื ืืื, ืืืืืืจ ืฉืืจืฉื ืฉื ืืืจ โ ืืืคืื ืืืืืฉืื ืืืกืืืืช ืืขืฉืืืช.",
pal:["#FFE9B3","#F7C86A","#0A1022"]
},
{
id:"Jewish",
title:"Jewish โ SoulArchive (SA)",
gh:"https://github.com/AnLoMinus/Jewish",
site:"",
tags:["Identity","Archive","Jewish","Soul"],
desc:"ืืจืืืื ื ืฉืื ืืืืื: ืืกืืืืช ืืืืช, ืืืืจืื, ืชืืื ืืจืืื ืืฉืจืฉืืืช ืืืจื ืืกืืืจืช.",
pal:["#FFE9B3","#B8872C","#0B0B12"]
},
// ๐งฐ Tools / Bars
{
id:"LangBar",
title:"LangBar โ ืกืจืื ืฉืคืืช (ืืืคืกื)",
gh:"https://github.com/AnLoMinus/LangBar",
site:"",
tags:["Tool","Print","Languages","Reference"],
desc:"ืกืจืื ืืืืคืก 30 ืกืดื ืืืืืื ืืืืืืื ืฉื ืืืคืืืชืื ืืฉืคืืช โ ืืื ืืืืืื/ืืงืฆืืขื ืืขืืืื ืจืึพืืฉืื ืืช.",
pal:["#EAF7FF","#FFE9B3","#B8872C"]
},
{
id:"NikudMap",
title:"NikudMap โ ืกืจืื ื ืืงืื ืฉืื",
gh:"https://github.com/AnLoMinus/NikudMap",
site:"",
tags:["Tool","Hebrew","Nikud","Reference"],
desc:"ืืืคืื ื ืืงืื ืืจืืจ (ืกืจืื/ืจืคืจื ืก): ืขืืจ ืืืืจ ืืืืืง ืืงืจืืื, ืืชืืื ืืืืืื.",
pal:["#EAF7FF","#FFE9B3","#B8872C"]
},
{
id:"UniBar",
title:"UniBar โ ืกืจืืื ืขืืจ ืืื ืืืจืกืืืื",
gh:"https://github.com/AnLoMinus/UniBar",
site:"",
tags:["Tool","Reference","Print","Universal"],
desc:"ืืืืืช ืกืจืืืื/ืขืืจืึพืฉืืืื: ืชืื ืืืช ืฉืืืืฉืืืช ืืกืืจ, ืจืคืจื ืก ืืืืืง ืืขืืืื.",
pal:["#EAF7FF","#FFE9B3","#B8872C"]
},
// ๐ฌ Gratitude / Prayer
{
id:"ThankSaved",
title:"ThankSaved โ ืืืจืชื ืชืืื ืื ืืฉืขืชื",
gh:"https://github.com/AnLoMinus/ThankSaved",
site:"",
tags:["Gratitude","Healing","Practice","Joy"],
desc:"ืกืคืจืื ืชืืื ืืืืืืื: ืืจื ืฉื ืืืจ, ืืฉืืขื, ืืืืืืง ืืจื ืืืจืช ืืืื.",
pal:["#FFE9B3","#F7C86A","#0B0B12"]
},
{
id:"PrayerFlow",
title:"Prayer-Flow โ ืืจืืืช ืชืคืืื",
gh:"https://github.com/AnLoMinus/Prayer-Flow",
site:"",
tags:["Prayer","Siddur","Flow","Daily"],
desc:"ืืกืืื ืชืคืืื ืืืจื: ืกืืจืื, ืงืืขืื, ืืืืืขื ืืืืืช ืฉืืืืจืช ืืืืื ืืื.",
pal:["#FFE9B3","#B8872C","#0B0B12"]
},
// ๐ฅ Holy Rap / Culture
{
id:"HollyRap",
title:"HollyRap โ ืืืื ืจืืค ืฉื ืงืืืฉื",
gh:"https://github.com/AnLoMinus/HollyRap",
site:"https://anlominus.github.io/HollyRap/",
tags:["Rap","Culture","Holy","Lyrics","SparKing"],
desc:"ืืืืจ ืืืคืืืช ืืืืึพืจืืค ืืืื ืืขืฆืื ื ืงื: ืืืืช ืืืฉืื, ืขืจืืื, ืืชืืื ืจืืื ื ืืกืืืื ืืืง.",
pal:["#FFE9B3","#FF6A2A","#141018"]
},
// ๐ Holistic / Mind
{
id:"HolisView",
title:"HolisView (HV) โ ืืฉืงืคืืช ืืืืืกืืืืช",
gh:"https://github.com/AnLoMinus/HolisView",
site:"https://anlominus.github.io/HolisView/",
tags:["Holistic","Mind","Design","Tech","Systems"],
desc:"ืฉืขืจ ืืจืืื ืืืฉืงืคืืช ืืืืืกืืืืช: ืชืืืขื, ืืื ืืืืืื, ืขืืฆืื ืืฉืืื ืืืขืจืืชืืืช.",
pal:["#EAF7FF","#A7F0E2","#6A6CFF"]
},
// โ๏ธ End-of-days / War of Light
{
id:"GoMag",
title:"GoMag โ ืืื ืืืืื: War of the End & Birth of Light",
gh:"https://github.com/AnLoMinus/GoMag",
site:"",
tags:["GoMag","War","Light","Prophecy","Strategy"],
desc:"ืืกืืจืช ืจืขืืื ืืช ืฉื ืืืฉื/ืืืจ ืืืืื ืืืืืชึพืชืืืขื: ืชืื ืื, ืืืืืง ืืขืงืจืื ืืช ืคืขืืื.",
pal:["#FFE9B3","#FFB35A","#B61D0F"]
},
// (ื ืฉืืจืื โ ืืคืื/ืฉืขืจืื)
{
id:"PrimEden",
title:"PrimEden โ ืืืืจืื ืืจืืฉืืช",
gh:"https://github.com/AnLoMinus/PrimEden",
site:"",
tags:["Origins","Purpose","Mindset","Torah"],
desc:"ืืืจื ืืืกืืืืช: ืชืืืืช, ืืชืืื ื ืืื ื, ืืกืืจ ืคื ืืื ืฉืืฆืืื ื ืชืื ืืจืืจ.",
pal:["#FFE9B3","#B8872C","#0B0B12"]
},
{
id:"ShaareiShemia",
title:"Shaarei-Shemia โ ืฉืขืจื ืฉืืืขื",
gh:"https://github.com/AnLoMinus/Shaarei-Shemia",
site:"",
tags:["Hearing","Mussar","Soul","Gates"],
desc:"ืฉืขืจืื ืฉื ืฉืืืขื ืคื ืืืืช: ืืืืง, ืจืืืื, ืืืคืืืช ืงืืืื ืืืืืขืืช ืืขืฉืืื.",
pal:["#FFE9B3","#F7C86A","#0A1022"]
}
];
const $ = (s)=>document.querySelector(s);
const LS_KEY = "HV_FAVS_V1";
const LS_TAG = "HV_TAG_V1";
let favs = new Set(JSON.parse(localStorage.getItem(LS_KEY) || "[]"));
let activeTag = localStorage.getItem(LS_TAG) || "All";
function saveFavs(){
localStorage.setItem(LS_KEY, JSON.stringify([...favs]));
}
function saveTag(){
localStorage.setItem(LS_TAG, activeTag);
}
function allTags(){
const set = new Set(["All"]);
repos.forEach(r => r.tags.forEach(t => set.add(t)));
return [...set];
}
function chipLabel(tag){
const icons = {
"All":"โจ",
"Torah":"๐",
"Learning":"๐",
"Light":"๐ฏ๏ธ",
"Hanukkah":"๐",
"Prayer":"๐",
"Gratitude":"๐ค",
"Tool":"๐งฐ",
"Rap":"๐ฅ",
"Holistic":"๐ง ",
"GoMag":"โ๏ธ",
"Kabbalah":"๐",
"Mussar":"๐งญ",
"Systems":"๐งฉ",
"Geulah":"๐ช"
};
return `${icons[tag] || "๐ท๏ธ"} ${tag}`;
}
function renderChips(){
const wrap = $("#chips");
const tags = allTags();
wrap.innerHTML = "";
tags.forEach(tag=>{
const b = document.createElement("button");
b.className = "chip" + (tag === activeTag ? " is-on" : "");
b.type = "button";
b.textContent = chipLabel(tag);
b.onclick = ()=>{
activeTag = tag;
saveTag();
renderChips();
render();
};
wrap.appendChild(b);
});
}
function matchesQuery(repo, q){
if(!q) return true;
const hay = [
repo.id, repo.title, repo.desc,
(repo.tags||[]).join(" "),
repo.gh, repo.site
].join(" ").toLowerCase();
return hay.includes(q.toLowerCase());
}
function bySort(list, mode){
const copy = [...list];
if(mode === "az"){
copy.sort((a,b)=>a.title.localeCompare(b.title));
} else if(mode === "za"){
copy.sort((a,b)=>b.title.localeCompare(a.title));
} else if(mode === "tag"){
copy.sort((a,b)=>(a.tags[0]||"").localeCompare(b.tags[0]||""));
} else { // fav
copy.sort((a,b)=>{
const af = favs.has(a.id) ? 1 : 0;
const bf = favs.has(b.id) ? 1 : 0;
if(bf !== af) return bf - af;
return a.title.localeCompare(b.title);
});
}
return copy;
}
function card(repo){
const el = document.createElement("article");
el.className = "card";
el.style.setProperty("--a", repo.pal[0]);
el.style.setProperty("--b", repo.pal[1]);
el.style.setProperty("--c", repo.pal[2]);
const isFav = favs.has(repo.id);
el.innerHTML = `
<div class="card__in">
<div class="card__top">
<div>
<h3 class="card__name">${repo.title}</h3>
</div>
<div class="badges">
<span class="badge badge--pal">๐จ</span>
<span class="badge">${isFav ? "โญ Fav" : "โ"}</span>
</div>
</div>
<p class="card__desc">${repo.desc}</p>
<div class="card__tags">
${repo.tags.slice(0,5).map(t=>`<span class="tg">${t}</span>`).join("")}
</div>
<div class="card__actions">
<a class="btn btn--main" href="https://github.com/%3Cspan%20class="pl-s1">${repo.gh}" target="_blank" rel="noopener">๐ GitHub</a>
${repo.site ? `<a class="btn" href="https://github.com/%3Cspan%20class="pl-s1">${repo.site}" target="_blank" rel="noopener">๐ Site</a>` : ``}
<button class="fav ${isFav ? "is-on":""}" type="button" data-id="${repo.id}">
${isFav ? "โญ ืฉืืืจ" : "โ ืฉืืืจ"}
</button>
</div>
</div>
`;
el.querySelector(".fav").onclick = (e)=>{
const id = e.currentTarget.getAttribute("data-id");
if(favs.has(id)) favs.delete(id); else favs.add(id);
saveFavs();
render();
};
return el;
}
function render(){
const q = $("#q").value.trim();
const sortMode = $("#sort").value;
const onlyFav = $("#onlyFav").checked;
let list = repos.filter(r => matchesQuery(r,q));
if(activeTag !== "All") list = list.filter(r => r.tags.includes(activeTag));
if(onlyFav) list = list.filter(r => favs.has(r.id));
list = bySort(list, sortMode);
const grid = $("#grid");
grid.innerHTML = "";
list.forEach(r => grid.appendChild(card(r)));
const stamp = `๐ Repos: ${repos.length} โข Showing: ${list.length} โข Favorites: ${favs.size}`;
$("#meta").textContent = stamp;
}
function wire(){
$("#q").addEventListener("input", render);
$("#sort").addEventListener("change", render);
$("#onlyFav").addEventListener("change", render);
$("#reset").onclick = ()=>{
$("#q").value = "";
$("#onlyFav").checked = false;
$("#sort").value = "fav";
activeTag = "All";
saveTag();
renderChips();
render();
};
}
renderChips();
wire();
render();- ๐ Torah / Learning: DatOS, TorahClarity, TorahMatrix, TenLight, TalmudX, Koelet (Anlominus)
- ๐ฏ๏ธ Light / Path / Hanukkah: PathLight, LightFlow, LightRise (GitHub)
- ๐ค Purity / Kindness / Growth: PurityFlow, UltraKind, TreeSoul (GitHub)
- โ๏ธ GoMag / War of Light: GoMag (GitHub)
- ๐งฐ Tools / Reference: LangBar, NikudMap, UniBar (GitHub)
- ๐ Prayer / Gratitude: Prayer-Flow, ThankSaved (GitHub)
- ๐ฅ Holy Culture (Rap): HollyRap (GitHub)
- ๐ง Holistic / Systems: HolisView (Anlominus)
- โ ืืืืกืืฃ ืืคืชืืจ: โืคืชื ืืื ืืคื ืชืืืชโ (ืืกื ืืืฉ/Modal)
- โ ืืืืกืืฃ ืกืคืืจืช ืืจืืืกืืืช ืืื ืชืืืช ืขื ืืฆืณืืคืื
- โ ืืืืกืืฃ ืงืืืฆืืช Grid ืืคื ืืืชืจืช ืชืืืช (Sectioned View)
- ๐ ืืืขืื: 14.12.2025
- ๐ ืขืืจื: ืืณ ืืืช ืชืฉืคืดื
- โฐ ืฉืขื ื ืืืืืช: 02:58 (Asia/Jerusalem)
- ๐ GitHub Profile: https://github.com/AnLoMinus
- ๐ฅ DatOS: https://github.com/AnLoMinus/DatOS โข https://anlominus.github.io/DatOS/ (Anlominus)
- โจ TorahClarity: https://github.com/AnLoMinus/TorahClarity โข https://anlominus.github.io/TorahClarity/ (Anlominus)
- ๐ง HolisView: https://github.com/AnLoMinus/HolisView โข https://anlominus.github.io/HolisView/ (Anlominus)
- โ๏ธ GoMag: https://github.com/AnLoMinus/GoMag (GitHub)
- ๐ LightRise: https://github.com/AnLoMinus/LightRise โข https://anlominus.github.io/LightRise/ (Anlominus)
- ๐ฅ HollyRap: https://github.com/AnLoMinus/HollyRap โข https://anlominus.github.io/HollyRap/ (Anlominus)
HV ืขื ืืืกื โ ืื ืืื ืืชืื ืืืฉื, ืืจืืืก ืืืจื ืืจืืืก โ ืืืื ื ืืื ืืฉืื, ืืื ืง ืงืืืฉ ื ื ืขื โ ืืืขืืฃ ืื ืืชื ืชืง, AnLoMinus ืืืืืง โ ืืืืืจ ืคื ืืชืคืฆื.
7 ืืืืืช: ๐ฅ ืืืืจื โข ๐ค ืืกื โข ๐งญ ืชืคืืจืช โข ๐ ื ืฆื โข ๐ ืืื โข ๐ ืืกืื โข ๐ ืืืืืช
โื ึตืจ ืึฐืจึทืึฐืึดื ืึฐืึธืจึถืึธ ืึฐืืึนืจ ืึดื ึฐืชึดืืึธืชึดืโ (ืชืืืืื ืงืืดื, ืงืดื) (GitHub)
ืจืืฆื ืฉืืืกืืฃ ืื ๐งฟ ืืคืชืืจ โืืืฆืื ืืืขืืคืืโ ืืงืืืฅ JSON + ืืืืื ืืืจื ืืื ืฉืชืืื ืืืขืืืจ ืืืขืืคืื ืืื ืืืฉืืจืื?