Skip to content

๐Ÿ•ฏ๏ธ ืœื™ื ืงื™ื™ื” ืงื“ื•ืฉื” ืœืžืื’ืจื™ื ืฉืœืš โ€” HolyVault (HV) ๐Ÿ”ฅ

Notifications You must be signed in to change notification settings

AnLoMinus/HolyVault

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

4 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ•ฏ๏ธ ืœื™ื ืงื™ื™ื” ืงื“ื•ืฉื” ืœืžืื’ืจื™ื ืฉืœืš โ€” HolyVault (HV) ๐Ÿ”ฅ

HolyVault (HV) = Holy + Vault (ืžื•ืขื“ืคื™ื ืงื“ื•ืฉื™ื ื‘ืžื‘ื ื” ื›ืจื˜ื™ืกื™ื•ืช, ืกื™ื ื•ื ื™ื, ื•ื—ื™ืคื•ืฉ)


โœจ ืžื” ื‘ื ื™ืชื™ ืœืš (ืœื”ื“ื‘ืงื” ื™ืฉื™ืจื•ืช ื‘-CodePen)

  • ๐Ÿ—‚๏ธ ื›ืจื˜ื™ืกื™ื™ื” ืœื›ืœ ืžืื’ืจ (ื›ื•ืœืœ GitHub + ืืชืจ ืื ืงื™ื™ื)
  • ๐Ÿท๏ธ ืชื’ื™ื•ืช ื•ืกื™ื ื•ื ื™ื (Chip Filters)
  • ๐Ÿ”Ž ื—ื™ืคื•ืฉ ืžื”ื™ืจ
  • โญ ืžื•ืขื“ืคื™ื ืงื“ื•ืฉื™ื (ื ืฉืžืจ ื‘-localStorage)
  • ๐ŸŽจ ืคืœื˜ืช ืฆื‘ืขื™ื ืœื›ืœ ืžืื’ืจ (ื—ื•ืฉืš/ืื•ืจ-ื–ื”ื‘/ืืฉ, ื‘ืกื’ื ื•ืŸ TorahClarity + GoMag)
  • ๐ŸŒ“ ืืกืชื˜ื™ืงื”: Dark + Gold + Fire Glow

๐Ÿงฉ ื”ืงื•ื“ (CodePen) โ€” ื”ื“ื‘ืง ืœืคื™ ื˜ืื‘ื™ื

โœ… HTML

<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>

๐ŸŽจ CSS

: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}

โš™๏ธ JS

// 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)

๐Ÿ… ืงืจื“ื™ื˜ื™ื + ืœื™ื ืงื™ื (ืžืื’ืจื™ื) ๐Ÿ”—


๐ŸŽค 4 ืฉื•ืจื•ืช ืคื–ืžื•ืŸ ืจืืค (ื—ืจื™ื–ื” ืขืœ ื”ื•ื•ื™ื“ื’ืณื˜) ๐ŸฅŠ๐Ÿ”ฅ

HV ืขืœ ื”ืžืกืš โ€” ื–ื” ื–ื”ื‘ ื‘ืชื•ืš ื—ื•ืฉืš, ื›ืจื˜ื™ืก ืื—ืจื™ ื›ืจื˜ื™ืก โ€” ื•ื”ืœื‘ ื ื”ื™ื” ืžืฉื—ืš, ืœื™ื ืง ืงื“ื•ืฉ ื ื ืขืœ โ€” ืžื•ืขื“ืฃ ืœื ืžืชื ืชืง, AnLoMinus ืžื“ืœื™ืง โ€” ื•ื”ืื•ืจ ืคื” ืžืชืคืฆื—.


๐Ÿง  ืžืกืคืจ ื”ืžื™ื“ื•ืช (ืœืคื™ ื”ืจื•ื— ืฉืœ ื”ื›ืœื™)

7 ืžื™ื“ื•ืช: ๐Ÿ”ฅ ื’ื‘ื•ืจื” โ€ข ๐Ÿค ื—ืกื“ โ€ข ๐Ÿงญ ืชืคืืจืช โ€ข ๐Ÿ† ื ืฆื— โ€ข ๐Ÿ™ ื”ื•ื“ โ€ข ๐Ÿ”— ื™ืกื•ื“ โ€ข ๐Ÿ‘‘ ืžืœื›ื•ืช


๐Ÿ“– ืžืฉืคื˜ ืžืŸ ื”ืžืงื•ืจื•ืช (ืžื•ืชืื ืœื›ืœื™ โ€œืื•ืจ/ืžืกื™ืœื”/ืžื•ืขื“ืคื™ืโ€)

โ€œื ึตืจ ืœึฐืจึทื’ึฐืœึดื™ ื“ึฐื‘ึธืจึถืšึธ ื•ึฐืื•ึนืจ ืœึดื ึฐืชึดื™ื‘ึธืชึดื™โ€ (ืชื”ื™ืœื™ื ืงื™ืดื˜, ืงืดื”) (GitHub)


ืจื•ืฆื” ืฉืื•ืกื™ืฃ ื’ื ๐Ÿงฟ ื›ืคืชื•ืจ โ€œื™ื™ืฆื•ื ืžื•ืขื“ืคื™ืโ€ ืœืงื•ื‘ืฅ JSON + ื™ื™ื‘ื•ื ื—ื–ืจื” ื›ื“ื™ ืฉืชื•ื›ืœ ืœื”ืขื‘ื™ืจ ืžื•ืขื“ืคื™ื ื‘ื™ืŸ ืžื›ืฉื™ืจื™ื?

About

๐Ÿ•ฏ๏ธ ืœื™ื ืงื™ื™ื” ืงื“ื•ืฉื” ืœืžืื’ืจื™ื ืฉืœืš โ€” HolyVault (HV) ๐Ÿ”ฅ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published