add Oban Web dashboard at /admin/oban
All checks were successful
deploy / deploy (push) Successful in 3m36s
All checks were successful
deploy / deploy (push) Successful in 3m36s
Bump oban to 2.19+, add oban_web for real-time job monitoring. Mounted behind admin auth with sidebar link under "Jobs". Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
1d02a1bcd2
commit
dd4aa9ffaa
@ -2,6 +2,30 @@
|
||||
|
||||
@layer admin {
|
||||
|
||||
.hero-arrow-down-tray {
|
||||
--hero-arrow-down-tray: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20fill="none"%20viewBox="0%200%2024%2024"%20stroke-width="1.5"%20stroke="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20stroke-linecap="round"%20stroke-linejoin="round"%20d="M3%2016.5v2.25A2.25%202.25%200%200%200%205.25%2021h13.5A2.25%202.25%200%200%200%2021%2018.75V16.5M16.5%2012%2012%2016.5m0%200L7.5%2012m4.5%204.5V3"/></svg>');
|
||||
-webkit-mask: var(--hero-arrow-down-tray);
|
||||
mask: var(--hero-arrow-down-tray);
|
||||
mask-repeat: no-repeat;
|
||||
background-color: currentColor;
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
}
|
||||
|
||||
.hero-arrow-left {
|
||||
--hero-arrow-left: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20fill="none"%20viewBox="0%200%2024%2024"%20stroke-width="1.5"%20stroke="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20stroke-linecap="round"%20stroke-linejoin="round"%20d="M10.5%2019.5%203%2012m0%200%207.5-7.5M3%2012h18"/></svg>');
|
||||
-webkit-mask: var(--hero-arrow-left);
|
||||
mask: var(--hero-arrow-left);
|
||||
mask-repeat: no-repeat;
|
||||
background-color: currentColor;
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
}
|
||||
|
||||
.hero-arrow-left-mini {
|
||||
--hero-arrow-left-mini: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20viewBox="0%200%2020%2020"%20fill="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20fill-rule="evenodd"%20d="M17%2010a.75.75%200%200%201-.75.75H5.612l4.158%203.96a.75.75%200%201%201-1.04%201.08l-5.5-5.25a.75.75%200%200%201%200-1.08l5.5-5.25a.75.75%200%201%201%201.04%201.08L5.612%209.25H16.25A.75.75%200%200%201%2017%2010Z"%20clip-rule="evenodd"/></svg>');
|
||||
-webkit-mask: var(--hero-arrow-left-mini);
|
||||
@ -74,6 +98,18 @@
|
||||
height: 1.25rem;
|
||||
}
|
||||
|
||||
.hero-arrow-up-tray {
|
||||
--hero-arrow-up-tray: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20fill="none"%20viewBox="0%200%2024%2024"%20stroke-width="1.5"%20stroke="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20stroke-linecap="round"%20stroke-linejoin="round"%20d="M3%2016.5v2.25A2.25%202.25%200%200%200%205.25%2021h13.5A2.25%202.25%200%200%200%2021%2018.75V16.5m-13.5-9L12%203m0%200%204.5%204.5M12%203v13.5"/></svg>');
|
||||
-webkit-mask: var(--hero-arrow-up-tray);
|
||||
mask: var(--hero-arrow-up-tray);
|
||||
mask-repeat: no-repeat;
|
||||
background-color: currentColor;
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
}
|
||||
|
||||
.hero-arrow-uturn-left {
|
||||
--hero-arrow-uturn-left: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20fill="none"%20viewBox="0%200%2024%2024"%20stroke-width="1.5"%20stroke="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20stroke-linecap="round"%20stroke-linejoin="round"%20d="M9%2015%203%209m0%200%206-6M3%209h12a6%206%200%200%201%200%2012h-3"/></svg>');
|
||||
-webkit-mask: var(--hero-arrow-uturn-left);
|
||||
@ -110,6 +146,18 @@
|
||||
height: 1.5rem;
|
||||
}
|
||||
|
||||
.hero-arrows-up-down {
|
||||
--hero-arrows-up-down: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20fill="none"%20viewBox="0%200%2024%2024"%20stroke-width="1.5"%20stroke="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20stroke-linecap="round"%20stroke-linejoin="round"%20d="M3%207.5%207.5%203m0%200L12%207.5M7.5%203v13.5m13.5%200L16.5%2021m0%200L12%2016.5m4.5%204.5V7.5"/></svg>');
|
||||
-webkit-mask: var(--hero-arrows-up-down);
|
||||
mask: var(--hero-arrows-up-down);
|
||||
mask-repeat: no-repeat;
|
||||
background-color: currentColor;
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
}
|
||||
|
||||
.hero-banknotes {
|
||||
--hero-banknotes: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20fill="none"%20viewBox="0%200%2024%2024"%20stroke-width="1.5"%20stroke="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20stroke-linecap="round"%20stroke-linejoin="round"%20d="M2.25%2018.75a60.07%2060.07%200%200%201%2015.797%202.101c.727.198%201.453-.342%201.453-1.096V18.75M3.75%204.5v.75A.75.75%200%200%201%203%206h-.75m0%200v-.375c0-.621.504-1.125%201.125-1.125H20.25M2.25%206v9m18-10.5v.75c0%20.414.336.75.75.75h.75m-1.5-1.5h.375c.621%200%201.125.504%201.125%201.125v9.75c0%20.621-.504%201.125-1.125%201.125h-.375m1.5-1.5H21a.75.75%200%200%200-.75.75v.75m0%200H3.75m0%200h-.375a1.125%201.125%200%200%201-1.125-1.125V15m1.5%201.5v-.75A.75.75%200%200%200%203%2015h-.75M15%2010.5a3%203%200%201%201-6%200%203%203%200%200%201%206%200Zm3%200h.008v.008H18V10.5Zm-12%200h.008v.008H6V10.5Z"/></svg>');
|
||||
-webkit-mask: var(--hero-banknotes);
|
||||
@ -134,6 +182,18 @@
|
||||
height: 1.5rem;
|
||||
}
|
||||
|
||||
.hero-bell {
|
||||
--hero-bell: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20fill="none"%20viewBox="0%200%2024%2024"%20stroke-width="1.5"%20stroke="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20stroke-linecap="round"%20stroke-linejoin="round"%20d="M14.857%2017.082a23.848%2023.848%200%200%200%205.454-1.31A8.967%208.967%200%200%201%2018%209.75V9A6%206%200%200%200%206%209v.75a8.967%208.967%200%200%201-2.312%206.022c1.733.64%203.56%201.085%205.455%201.31m5.714%200a24.255%2024.255%200%200%201-5.714%200m5.714%200a3%203%200%201%201-5.714%200"/></svg>');
|
||||
-webkit-mask: var(--hero-bell);
|
||||
mask: var(--hero-bell);
|
||||
mask-repeat: no-repeat;
|
||||
background-color: currentColor;
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
}
|
||||
|
||||
.hero-bug-ant {
|
||||
--hero-bug-ant: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20fill="none"%20viewBox="0%200%2024%2024"%20stroke-width="1.5"%20stroke="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20stroke-linecap="round"%20stroke-linejoin="round"%20d="M12%2012.75c1.148%200%202.278.08%203.383.237%201.037.146%201.866.966%201.866%202.013%200%203.728-2.35%206.75-5.25%206.75S6.75%2018.728%206.75%2015c0-1.046.83-1.867%201.866-2.013A24.204%2024.204%200%200%201%2012%2012.75Zm0%200c2.883%200%205.647.508%208.207%201.44a23.91%2023.91%200%200%201-1.152%206.06M12%2012.75c-2.883%200-5.647.508-8.208%201.44.125%202.104.52%204.136%201.153%206.06M12%2012.75a2.25%202.25%200%200%200%202.248-2.354M12%2012.75a2.25%202.25%200%200%201-2.248-2.354M12%208.25c.995%200%201.971-.08%202.922-.236.403-.066.74-.358.795-.762a3.778%203.778%200%200%200-.399-2.25M12%208.25c-.995%200-1.97-.08-2.922-.236-.402-.066-.74-.358-.795-.762a3.734%203.734%200%200%201%20.4-2.253M12%208.25a2.25%202.25%200%200%200-2.248%202.146M12%208.25a2.25%202.25%200%200%201%202.248%202.146M8.683%205a6.032%206.032%200%200%201-1.155-1.002c.07-.63.27-1.222.574-1.747m.581%202.749A3.75%203.75%200%200%201%2015.318%205m0%200c.427-.283.815-.62%201.155-.999a4.471%204.471%200%200%200-.575-1.752M4.921%206a24.048%2024.048%200%200%200-.392%203.314c1.668.546%203.416.914%205.223%201.082M19.08%206c.205%201.08.337%202.187.392%203.314a23.882%2023.882%200%200%201-5.223%201.082"/></svg>');
|
||||
-webkit-mask: var(--hero-bug-ant);
|
||||
@ -230,6 +290,18 @@
|
||||
height: 1.25rem;
|
||||
}
|
||||
|
||||
.hero-chevron-down {
|
||||
--hero-chevron-down: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20fill="none"%20viewBox="0%200%2024%2024"%20stroke-width="1.5"%20stroke="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20stroke-linecap="round"%20stroke-linejoin="round"%20d="m19.5%208.25-7.5%207.5-7.5-7.5"/></svg>');
|
||||
-webkit-mask: var(--hero-chevron-down);
|
||||
mask: var(--hero-chevron-down);
|
||||
mask-repeat: no-repeat;
|
||||
background-color: currentColor;
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
}
|
||||
|
||||
.hero-chevron-down-mini {
|
||||
--hero-chevron-down-mini: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20viewBox="0%200%2020%2020"%20fill="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20fill-rule="evenodd"%20d="M5.22%208.22a.75.75%200%200%201%201.06%200L10%2011.94l3.72-3.72a.75.75%200%201%201%201.06%201.06l-4.25%204.25a.75.75%200%200%201-1.06%200L5.22%209.28a.75.75%200%200%201%200-1.06Z"%20clip-rule="evenodd"/></svg>');
|
||||
-webkit-mask: var(--hero-chevron-down-mini);
|
||||
@ -242,6 +314,18 @@
|
||||
height: 1.25rem;
|
||||
}
|
||||
|
||||
.hero-chevron-left {
|
||||
--hero-chevron-left: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20fill="none"%20viewBox="0%200%2024%2024"%20stroke-width="1.5"%20stroke="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20stroke-linecap="round"%20stroke-linejoin="round"%20d="M15.75%2019.5%208.25%2012l7.5-7.5"/></svg>');
|
||||
-webkit-mask: var(--hero-chevron-left);
|
||||
mask: var(--hero-chevron-left);
|
||||
mask-repeat: no-repeat;
|
||||
background-color: currentColor;
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
}
|
||||
|
||||
.hero-chevron-right {
|
||||
--hero-chevron-right: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20fill="none"%20viewBox="0%200%2024%2024"%20stroke-width="1.5"%20stroke="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20stroke-linecap="round"%20stroke-linejoin="round"%20d="m8.25%204.5%207.5%207.5-7.5%207.5"/></svg>');
|
||||
-webkit-mask: var(--hero-chevron-right);
|
||||
@ -266,6 +350,18 @@
|
||||
height: 1.25rem;
|
||||
}
|
||||
|
||||
.hero-chevron-up {
|
||||
--hero-chevron-up: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20fill="none"%20viewBox="0%200%2024%2024"%20stroke-width="1.5"%20stroke="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20stroke-linecap="round"%20stroke-linejoin="round"%20d="m4.5%2015.75%207.5-7.5%207.5%207.5"/></svg>');
|
||||
-webkit-mask: var(--hero-chevron-up);
|
||||
mask: var(--hero-chevron-up);
|
||||
mask-repeat: no-repeat;
|
||||
background-color: currentColor;
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
}
|
||||
|
||||
.hero-chevron-up-mini {
|
||||
--hero-chevron-up-mini: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20viewBox="0%200%2020%2020"%20fill="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20fill-rule="evenodd"%20d="M9.47%206.47a.75.75%200%200%201%201.06%200l4.25%204.25a.75.75%200%201%201-1.06%201.06L10%208.06l-3.72%203.72a.75.75%200%200%201-1.06-1.06l4.25-4.25Z"%20clip-rule="evenodd"/></svg>');
|
||||
-webkit-mask: var(--hero-chevron-up-mini);
|
||||
@ -326,6 +422,18 @@
|
||||
height: 1.25rem;
|
||||
}
|
||||
|
||||
.hero-code-bracket {
|
||||
--hero-code-bracket: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20fill="none"%20viewBox="0%200%2024%2024"%20stroke-width="1.5"%20stroke="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20stroke-linecap="round"%20stroke-linejoin="round"%20d="M17.25%206.75%2022.5%2012l-5.25%205.25m-10.5%200L1.5%2012l5.25-5.25m7.5-3-4.5%2016.5"/></svg>');
|
||||
-webkit-mask: var(--hero-code-bracket);
|
||||
mask: var(--hero-code-bracket);
|
||||
mask-repeat: no-repeat;
|
||||
background-color: currentColor;
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
}
|
||||
|
||||
.hero-cog-6-tooth {
|
||||
--hero-cog-6-tooth: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20fill="none"%20viewBox="0%200%2024%2024"%20stroke-width="1.5"%20stroke="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20stroke-linecap="round"%20stroke-linejoin="round"%20d="M9.594%203.94c.09-.542.56-.94%201.11-.94h2.593c.55%200%201.02.398%201.11.94l.213%201.281c.063.374.313.686.645.87.074.04.147.083.22.127.325.196.72.257%201.075.124l1.217-.456a1.125%201.125%200%200%201%201.37.49l1.296%202.247a1.125%201.125%200%200%201-.26%201.431l-1.003.827c-.293.241-.438.613-.43.992a7.723%207.723%200%200%201%200%20.255c-.008.378.137.75.43.991l1.004.827c.424.35.534.955.26%201.43l-1.298%202.247a1.125%201.125%200%200%201-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47%206.47%200%200%201-.22.128c-.331.183-.581.495-.644.869l-.213%201.281c-.09.543-.56.94-1.11.94h-2.594c-.55%200-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52%206.52%200%200%201-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125%201.125%200%200%201-1.369-.49l-1.297-2.247a1.125%201.125%200%200%201%20.26-1.431l1.004-.827c.292-.24.437-.613.43-.991a6.932%206.932%200%200%201%200-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125%201.125%200%200%201-.26-1.43l1.297-2.247a1.125%201.125%200%200%201%201.37-.491l1.216.456c.356.133.751.072%201.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z"/>%20%20<path%20stroke-linecap="round"%20stroke-linejoin="round"%20d="M15%2012a3%203%200%201%201-6%200%203%203%200%200%201%206%200Z"/></svg>');
|
||||
-webkit-mask: var(--hero-cog-6-tooth);
|
||||
@ -374,6 +482,18 @@
|
||||
height: 1.5rem;
|
||||
}
|
||||
|
||||
.hero-cursor-arrow-rays {
|
||||
--hero-cursor-arrow-rays: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20fill="none"%20viewBox="0%200%2024%2024"%20stroke-width="1.5"%20stroke="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20stroke-linecap="round"%20stroke-linejoin="round"%20d="M15.042%2021.672%2013.684%2016.6m0%200-2.51%202.225.569-9.47%205.227%207.917-3.286-.672ZM12%202.25V4.5m5.834.166-1.591%201.591M20.25%2010.5H18M7.757%2014.743l-1.59%201.59M6%2010.5H3.75m4.007-4.243-1.59-1.59"/></svg>');
|
||||
-webkit-mask: var(--hero-cursor-arrow-rays);
|
||||
mask: var(--hero-cursor-arrow-rays);
|
||||
mask-repeat: no-repeat;
|
||||
background-color: currentColor;
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
}
|
||||
|
||||
.hero-document {
|
||||
--hero-document: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20fill="none"%20viewBox="0%200%2024%2024"%20stroke-width="1.5"%20stroke="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20stroke-linecap="round"%20stroke-linejoin="round"%20d="M19.5%2014.25v-2.625a3.375%203.375%200%200%200-3.375-3.375h-1.5A1.125%201.125%200%200%201%2013.5%207.125v-1.5a3.375%203.375%200%200%200-3.375-3.375H8.25m2.25%200H5.625c-.621%200-1.125.504-1.125%201.125v17.25c0%20.621.504%201.125%201.125%201.125h12.75c.621%200%201.125-.504%201.125-1.125V11.25a9%209%200%200%200-9-9Z"/></svg>');
|
||||
-webkit-mask: var(--hero-document);
|
||||
@ -386,6 +506,18 @@
|
||||
height: 1.5rem;
|
||||
}
|
||||
|
||||
.hero-document-duplicate {
|
||||
--hero-document-duplicate: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20fill="none"%20viewBox="0%200%2024%2024"%20stroke-width="1.5"%20stroke="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20stroke-linecap="round"%20stroke-linejoin="round"%20d="M15.75%2017.25v3.375c0%20.621-.504%201.125-1.125%201.125h-9.75a1.125%201.125%200%200%201-1.125-1.125V7.875c0-.621.504-1.125%201.125-1.125H6.75a9.06%209.06%200%200%201%201.5.124m7.5%2010.376h3.375c.621%200%201.125-.504%201.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06%209.06%200%200%200-1.5-.124H9.375c-.621%200-1.125.504-1.125%201.125v3.5m7.5%2010.375H9.375a1.125%201.125%200%200%201-1.125-1.125v-9.25m12%206.625v-1.875a3.375%203.375%200%200%200-3.375-3.375h-1.5a1.125%201.125%200%200%201-1.125-1.125v-1.5a3.375%203.375%200%200%200-3.375-3.375H9.75"/></svg>');
|
||||
-webkit-mask: var(--hero-document-duplicate);
|
||||
mask: var(--hero-document-duplicate);
|
||||
mask-repeat: no-repeat;
|
||||
background-color: currentColor;
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
}
|
||||
|
||||
.hero-document-duplicate-mini {
|
||||
--hero-document-duplicate-mini: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20viewBox="0%200%2020%2020"%20fill="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20d="M7%203.5A1.5%201.5%200%200%201%208.5%202h3.879a1.5%201.5%200%200%201%201.06.44l3.122%203.12A1.5%201.5%200%200%201%2017%206.622V12.5a1.5%201.5%200%200%201-1.5%201.5h-1v-3.379a3%203%200%200%200-.879-2.121L10.5%205.379A3%203%200%200%200%208.379%204.5H7v-1Z"/>%20%20<path%20d="M4.5%206A1.5%201.5%200%200%200%203%207.5v9A1.5%201.5%200%200%200%204.5%2018h7a1.5%201.5%200%200%200%201.5-1.5v-5.879a1.5%201.5%200%200%200-.44-1.06L9.44%206.439A1.5%201.5%200%200%200%208.378%206H4.5Z"/></svg>');
|
||||
-webkit-mask: var(--hero-document-duplicate-mini);
|
||||
@ -398,6 +530,18 @@
|
||||
height: 1.25rem;
|
||||
}
|
||||
|
||||
.hero-document-plus {
|
||||
--hero-document-plus: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20fill="none"%20viewBox="0%200%2024%2024"%20stroke-width="1.5"%20stroke="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20stroke-linecap="round"%20stroke-linejoin="round"%20d="M19.5%2014.25v-2.625a3.375%203.375%200%200%200-3.375-3.375h-1.5A1.125%201.125%200%200%201%2013.5%207.125v-1.5a3.375%203.375%200%200%200-3.375-3.375H8.25m3.75%209v6m3-3H9m1.5-12H5.625c-.621%200-1.125.504-1.125%201.125v17.25c0%20.621.504%201.125%201.125%201.125h12.75c.621%200%201.125-.504%201.125-1.125V11.25a9%209%200%200%200-9-9Z"/></svg>');
|
||||
-webkit-mask: var(--hero-document-plus);
|
||||
mask: var(--hero-document-plus);
|
||||
mask-repeat: no-repeat;
|
||||
background-color: currentColor;
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
}
|
||||
|
||||
.hero-document-text {
|
||||
--hero-document-text: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20fill="none"%20viewBox="0%200%2024%2024"%20stroke-width="1.5"%20stroke="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20stroke-linecap="round"%20stroke-linejoin="round"%20d="M19.5%2014.25v-2.625a3.375%203.375%200%200%200-3.375-3.375h-1.5A1.125%201.125%200%200%201%2013.5%207.125v-1.5a3.375%203.375%200%200%200-3.375-3.375H8.25m0%2012.75h7.5m-7.5%203H12M10.5%202.25H5.625c-.621%200-1.125.504-1.125%201.125v17.25c0%20.621.504%201.125%201.125%201.125h12.75c.621%200%201.125-.504%201.125-1.125V11.25a9%209%200%200%200-9-9Z"/></svg>');
|
||||
-webkit-mask: var(--hero-document-text);
|
||||
@ -554,6 +698,18 @@
|
||||
height: 1.5rem;
|
||||
}
|
||||
|
||||
.hero-information-circle-mini {
|
||||
--hero-information-circle-mini: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20viewBox="0%200%2020%2020"%20fill="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20fill-rule="evenodd"%20d="M18%2010a8%208%200%201%201-16%200%208%208%200%200%201%2016%200Zm-7-4a1%201%200%201%201-2%200%201%201%200%200%201%202%200ZM9%209a.75.75%200%200%200%200%201.5h.253a.25.25%200%200%201%20.244.304l-.459%202.066A1.75%201.75%200%200%200%2010.747%2015H11a.75.75%200%200%200%200-1.5h-.253a.25.25%200%200%201-.244-.304l.459-2.066A1.75%201.75%200%200%200%209.253%209H9Z"%20clip-rule="evenodd"/></svg>');
|
||||
-webkit-mask: var(--hero-information-circle-mini);
|
||||
mask: var(--hero-information-circle-mini);
|
||||
mask-repeat: no-repeat;
|
||||
background-color: currentColor;
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
width: 1.25rem;
|
||||
height: 1.25rem;
|
||||
}
|
||||
|
||||
.hero-link {
|
||||
--hero-link: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20fill="none"%20viewBox="0%200%2024%2024"%20stroke-width="1.5"%20stroke="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20stroke-linecap="round"%20stroke-linejoin="round"%20d="M13.19%208.688a4.5%204.5%200%200%201%201.242%207.244l-4.5%204.5a4.5%204.5%200%200%201-6.364-6.364l1.757-1.757m13.35-.622%201.757-1.757a4.5%204.5%200%200%200-6.364-6.364l-4.5%204.5a4.5%204.5%200%200%200%201.242%207.244"/></svg>');
|
||||
-webkit-mask: var(--hero-link);
|
||||
@ -590,6 +746,18 @@
|
||||
height: 1.5rem;
|
||||
}
|
||||
|
||||
.hero-magnifying-glass-mini {
|
||||
--hero-magnifying-glass-mini: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20viewBox="0%200%2020%2020"%20fill="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20fill-rule="evenodd"%20d="M9%203.5a5.5%205.5%200%201%200%200%2011%205.5%205.5%200%200%200%200-11ZM2%209a7%207%200%201%201%2012.452%204.391l3.328%203.329a.75.75%200%201%201-1.06%201.06l-3.329-3.328A7%207%200%200%201%202%209Z"%20clip-rule="evenodd"/></svg>');
|
||||
-webkit-mask: var(--hero-magnifying-glass-mini);
|
||||
mask: var(--hero-magnifying-glass-mini);
|
||||
mask-repeat: no-repeat;
|
||||
background-color: currentColor;
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
width: 1.25rem;
|
||||
height: 1.25rem;
|
||||
}
|
||||
|
||||
.hero-megaphone {
|
||||
--hero-megaphone: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20fill="none"%20viewBox="0%200%2024%2024"%20stroke-width="1.5"%20stroke="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20stroke-linecap="round"%20stroke-linejoin="round"%20d="M10.34%2015.84c-.688-.06-1.386-.09-2.09-.09H7.5a4.5%204.5%200%201%201%200-9h.75c.704%200%201.402-.03%202.09-.09m0%209.18c.253.962.584%201.892.985%202.783.247.55.06%201.21-.463%201.511l-.657.38c-.551.318-1.26.117-1.527-.461a20.845%2020.845%200%200%201-1.44-4.282m3.102.069a18.03%2018.03%200%200%201-.59-4.59c0-1.586.205-3.124.59-4.59m0%209.18a23.848%2023.848%200%200%201%208.835%202.535M10.34%206.66a23.847%2023.847%200%200%200%208.835-2.535m0%200A23.74%2023.74%200%200%200%2018.795%203m.38%201.125a23.91%2023.91%200%200%201%201.014%205.395m-1.014%208.855c-.118.38-.245.754-.38%201.125m.38-1.125a23.91%2023.91%200%200%200%201.014-5.395m0-3.46c.495.413.811%201.035.811%201.73%200%20.695-.316%201.317-.811%201.73m0-3.46a24.347%2024.347%200%200%201%200%203.46"/></svg>');
|
||||
-webkit-mask: var(--hero-megaphone);
|
||||
@ -602,6 +770,18 @@
|
||||
height: 1.5rem;
|
||||
}
|
||||
|
||||
.hero-minus {
|
||||
--hero-minus: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20fill="none"%20viewBox="0%200%2024%2024"%20stroke-width="1.5"%20stroke="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20stroke-linecap="round"%20stroke-linejoin="round"%20d="M5%2012h14"/></svg>');
|
||||
-webkit-mask: var(--hero-minus);
|
||||
mask: var(--hero-minus);
|
||||
mask-repeat: no-repeat;
|
||||
background-color: currentColor;
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
}
|
||||
|
||||
.hero-minus-circle-mini {
|
||||
--hero-minus-circle-mini: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20viewBox="0%200%2020%2020"%20fill="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20fill-rule="evenodd"%20d="M10%2018a8%208%200%201%200%200-16%208%208%200%200%200%200%2016ZM6.75%209.25a.75.75%200%200%200%200%201.5h6.5a.75.75%200%200%200%200-1.5h-6.5Z"%20clip-rule="evenodd"/></svg>');
|
||||
-webkit-mask: var(--hero-minus-circle-mini);
|
||||
@ -686,6 +866,18 @@
|
||||
height: 1.25rem;
|
||||
}
|
||||
|
||||
.hero-pencil-square {
|
||||
--hero-pencil-square: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20fill="none"%20viewBox="0%200%2024%2024"%20stroke-width="1.5"%20stroke="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20stroke-linecap="round"%20stroke-linejoin="round"%20d="m16.862%204.487%201.687-1.688a1.875%201.875%200%201%201%202.652%202.652L10.582%2016.07a4.5%204.5%200%200%201-1.897%201.13L6%2018l.8-2.685a4.5%204.5%200%200%201%201.13-1.897l8.932-8.931Zm0%200L19.5%207.125M18%2014v4.75A2.25%202.25%200%200%201%2015.75%2021H5.25A2.25%202.25%200%200%201%203%2018.75V8.25A2.25%202.25%200%200%201%205.25%206H10"/></svg>');
|
||||
-webkit-mask: var(--hero-pencil-square);
|
||||
mask: var(--hero-pencil-square);
|
||||
mask-repeat: no-repeat;
|
||||
background-color: currentColor;
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
}
|
||||
|
||||
.hero-photo {
|
||||
--hero-photo: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20fill="none"%20viewBox="0%200%2024%2024"%20stroke-width="1.5"%20stroke="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20stroke-linecap="round"%20stroke-linejoin="round"%20d="m2.25%2015.75%205.159-5.159a2.25%202.25%200%200%201%203.182%200l5.159%205.159m-1.5-1.5%201.409-1.409a2.25%202.25%200%200%201%203.182%200l2.909%202.909m-18%203.75h16.5a1.5%201.5%200%200%200%201.5-1.5V6a1.5%201.5%200%200%200-1.5-1.5H3.75A1.5%201.5%200%200%200%202.25%206v12a1.5%201.5%200%200%200%201.5%201.5Zm10.5-11.25h.008v.008h-.008V8.25Zm.375%200a.375.375%200%201%201-.75%200%20.375.375%200%200%201%20.75%200Z"/></svg>');
|
||||
-webkit-mask: var(--hero-photo);
|
||||
@ -698,6 +890,18 @@
|
||||
height: 1.5rem;
|
||||
}
|
||||
|
||||
.hero-play {
|
||||
--hero-play: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20fill="none"%20viewBox="0%200%2024%2024"%20stroke-width="1.5"%20stroke="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20stroke-linecap="round"%20stroke-linejoin="round"%20d="M5.25%205.653c0-.856.917-1.398%201.667-.986l11.54%206.347a1.125%201.125%200%200%201%200%201.972l-11.54%206.347a1.125%201.125%200%200%201-1.667-.986V5.653Z"/></svg>');
|
||||
-webkit-mask: var(--hero-play);
|
||||
mask: var(--hero-play);
|
||||
mask-repeat: no-repeat;
|
||||
background-color: currentColor;
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
}
|
||||
|
||||
.hero-plus {
|
||||
--hero-plus: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20fill="none"%20viewBox="0%200%2024%2024"%20stroke-width="1.5"%20stroke="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20stroke-linecap="round"%20stroke-linejoin="round"%20d="M12%204.5v15m7.5-7.5h-15"/></svg>');
|
||||
-webkit-mask: var(--hero-plus);
|
||||
@ -746,6 +950,18 @@
|
||||
height: 1.25rem;
|
||||
}
|
||||
|
||||
.hero-queue-list {
|
||||
--hero-queue-list: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20fill="none"%20viewBox="0%200%2024%2024"%20stroke-width="1.5"%20stroke="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20stroke-linecap="round"%20stroke-linejoin="round"%20d="M3.75%2012h16.5m-16.5%203.75h16.5M3.75%2019.5h16.5M5.625%204.5h12.75a1.875%201.875%200%200%201%200%203.75H5.625a1.875%201.875%200%200%201%200-3.75Z"/></svg>');
|
||||
-webkit-mask: var(--hero-queue-list);
|
||||
mask: var(--hero-queue-list);
|
||||
mask-repeat: no-repeat;
|
||||
background-color: currentColor;
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
}
|
||||
|
||||
.hero-rocket-launch-mini {
|
||||
--hero-rocket-launch-mini: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20viewBox="0%200%2020%2020"%20fill="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20fill-rule="evenodd"%20d="M4.606%2012.97a.75.75%200%200%201-.134%201.051%202.494%202.494%200%200%200-.93%202.437%202.494%202.494%200%200%200%202.437-.93.75.75%200%201%201%201.186.918%203.995%203.995%200%200%201-4.482%201.332.75.75%200%200%201-.461-.461%203.994%203.994%200%200%201%201.332-4.482.75.75%200%200%201%201.052.134Z"%20clip-rule="evenodd"/>%20%20<path%20fill-rule="evenodd"%20d="M5.752%2012A13.07%2013.07%200%200%200%208%2014.248v4.002c0%20.414.336.75.75.75a5%205%200%200%200%204.797-6.414%2012.984%2012.984%200%200%200%205.45-10.848.75.75%200%200%200-.735-.735%2012.984%2012.984%200%200%200-10.849%205.45A5%205%200%200%200%201%2011.25c.001.414.337.75.751.75h4.002ZM13%209a2%202%200%201%200%200-4%202%202%200%200%200%200%204Z"%20clip-rule="evenodd"/></svg>');
|
||||
-webkit-mask: var(--hero-rocket-launch-mini);
|
||||
@ -878,6 +1094,18 @@
|
||||
height: 1.5rem;
|
||||
}
|
||||
|
||||
.hero-trash {
|
||||
--hero-trash: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20fill="none"%20viewBox="0%200%2024%2024"%20stroke-width="1.5"%20stroke="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20stroke-linecap="round"%20stroke-linejoin="round"%20d="m14.74%209-.346%209m-4.788%200L9.26%209m9.968-3.21c.342.052.682.107%201.022.166m-1.022-.165L18.16%2019.673a2.25%202.25%200%200%201-2.244%202.077H8.084a2.25%202.25%200%200%201-2.244-2.077L4.772%205.79m14.456%200a48.108%2048.108%200%200%200-3.478-.397m-12%20.562c.34-.059.68-.114%201.022-.165m0%200a48.11%2048.11%200%200%201%203.478-.397m7.5%200v-.916c0-1.18-.91-2.164-2.09-2.201a51.964%2051.964%200%200%200-3.32%200c-1.18.037-2.09%201.022-2.09%202.201v.916m7.5%200a48.667%2048.667%200%200%200-7.5%200"/></svg>');
|
||||
-webkit-mask: var(--hero-trash);
|
||||
mask: var(--hero-trash);
|
||||
mask-repeat: no-repeat;
|
||||
background-color: currentColor;
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
}
|
||||
|
||||
.hero-trash-mini {
|
||||
--hero-trash-mini: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20viewBox="0%200%2020%2020"%20fill="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20fill-rule="evenodd"%20d="M8.75%201A2.75%202.75%200%200%200%206%203.75v.443c-.795.077-1.584.176-2.365.298a.75.75%200%201%200%20.23%201.482l.149-.022.841%2010.518A2.75%202.75%200%200%200%207.596%2019h4.807a2.75%202.75%200%200%200%202.742-2.53l.841-10.52.149.023a.75.75%200%200%200%20.23-1.482A41.03%2041.03%200%200%200%2014%204.193V3.75A2.75%202.75%200%200%200%2011.25%201h-2.5ZM10%204c.84%200%201.673.025%202.5.075V3.75c0-.69-.56-1.25-1.25-1.25h-2.5c-.69%200-1.25.56-1.25%201.25v.325C8.327%204.025%209.16%204%2010%204ZM8.58%207.72a.75.75%200%200%200-1.5.06l.3%207.5a.75.75%200%201%200%201.5-.06l-.3-7.5Zm4.34.06a.75.75%200%201%200-1.5-.06l-.3%207.5a.75.75%200%201%200%201.5.06l.3-7.5Z"%20clip-rule="evenodd"/></svg>');
|
||||
-webkit-mask: var(--hero-trash-mini);
|
||||
@ -974,4 +1202,16 @@
|
||||
height: 1.5rem;
|
||||
}
|
||||
|
||||
.hero-x-mark-mini {
|
||||
--hero-x-mark-mini: url('data:image/svg+xml;utf8,<svg%20xmlns="http://www.w3.org/2000/svg"%20viewBox="0%200%2020%2020"%20fill="currentColor"%20aria-hidden="true"%20data-slot="icon">%20%20<path%20d="M6.28%205.22a.75.75%200%200%200-1.06%201.06L8.94%2010l-3.72%203.72a.75.75%200%201%200%201.06%201.06L10%2011.06l3.72%203.72a.75.75%200%201%200%201.06-1.06L11.06%2010l3.72-3.72a.75.75%200%200%200-1.06-1.06L10%208.94%206.28%205.22Z"/></svg>');
|
||||
-webkit-mask: var(--hero-x-mark-mini);
|
||||
mask: var(--hero-x-mark-mini);
|
||||
mask-repeat: no-repeat;
|
||||
background-color: currentColor;
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
width: 1.25rem;
|
||||
height: 1.25rem;
|
||||
}
|
||||
|
||||
} /* @layer admin */
|
||||
|
||||
@ -208,6 +208,11 @@
|
||||
<.icon name="hero-bug-ant" class="size-5" /> Errors
|
||||
</.link>
|
||||
</li>
|
||||
<li>
|
||||
<.link href={~p"/admin/oban"}>
|
||||
<.icon name="hero-queue-list" class="size-5" /> Jobs
|
||||
</.link>
|
||||
</li>
|
||||
<li>
|
||||
<.link href={~p"/users/log-out"} method="delete">
|
||||
<.icon name="hero-arrow-right-start-on-rectangle" class="size-5" /> Log out
|
||||
|
||||
9
lib/berrypod_web/oban_resolver.ex
Normal file
9
lib/berrypod_web/oban_resolver.ex
Normal file
@ -0,0 +1,9 @@
|
||||
defmodule BerrypodWeb.ObanResolver do
|
||||
@behaviour Oban.Web.Resolver
|
||||
|
||||
@impl true
|
||||
def resolve_user(conn), do: conn.assigns[:current_scope]
|
||||
|
||||
@impl true
|
||||
def resolve_access(_user), do: :all
|
||||
end
|
||||
@ -4,6 +4,7 @@ defmodule BerrypodWeb.Router do
|
||||
import BerrypodWeb.UserAuth
|
||||
import Phoenix.LiveDashboard.Router
|
||||
import ErrorTracker.Web.Router
|
||||
import Oban.Web.Router
|
||||
|
||||
pipeline :browser do
|
||||
plug :accepts, ["html"]
|
||||
@ -123,12 +124,13 @@ defmodule BerrypodWeb.Router do
|
||||
end
|
||||
end
|
||||
|
||||
# LiveDashboard and ErrorTracker behind admin auth (available in all environments)
|
||||
# LiveDashboard, ErrorTracker, and Oban Web behind admin auth
|
||||
scope "/admin" do
|
||||
pipe_through [:browser, :require_authenticated_user]
|
||||
|
||||
live_dashboard "/dashboard", metrics: BerrypodWeb.Telemetry
|
||||
error_tracker_dashboard("/errors")
|
||||
oban_dashboard("/oban", resolver: BerrypodWeb.ObanResolver)
|
||||
end
|
||||
|
||||
# Admin pages with sidebar layout
|
||||
|
||||
3
mix.exs
3
mix.exs
@ -72,7 +72,8 @@ defmodule Berrypod.MixProject do
|
||||
{:bandit, "~> 1.5"},
|
||||
{:tidewave, "~> 0.5", only: :dev},
|
||||
{:image, "~> 0.54"},
|
||||
{:oban, "~> 2.18"},
|
||||
{:oban, "~> 2.19"},
|
||||
{:oban_web, "~> 2.11"},
|
||||
{:ex_money, "~> 5.0"},
|
||||
{:ex_money_sql, "~> 1.0"},
|
||||
{:stripity_stripe, "~> 3.2"},
|
||||
|
||||
2
mix.lock
2
mix.lock
@ -50,6 +50,8 @@
|
||||
"nimble_parsec": {:hex, :nimble_parsec, "1.4.2", "8efba0122db06df95bfaa78f791344a89352ba04baedd3849593bfce4d0dc1c6", [:mix], [], "hexpm", "4b21398942dda052b403bbe1da991ccd03a053668d147d53fb8c4e0efe09c973"},
|
||||
"nimble_pool": {:hex, :nimble_pool, "1.1.0", "bf9c29fbdcba3564a8b800d1eeb5a3c58f36e1e11d7b7fb2e084a643f645f06b", [:mix], [], "hexpm", "af2e4e6b34197db81f7aad230c1118eac993acc0dae6bc83bac0126d4ae0813a"},
|
||||
"oban": {:hex, :oban, "2.20.2", "f23313d83b578305cafa825a036cad84e7e2d61549ecbece3a2e6526d347cc3b", [:mix], [{:ecto_sql, "~> 3.10", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:ecto_sqlite3, "~> 0.9", [hex: :ecto_sqlite3, repo: "hexpm", optional: true]}, {:igniter, "~> 0.5", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: true]}, {:myxql, "~> 0.7", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.20", [hex: :postgrex, repo: "hexpm", optional: true]}, {:telemetry, "~> 1.3", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "523365ef0217781c061d15f496e3200a5f1b43e08b1a27c34799ef8bfe95815f"},
|
||||
"oban_met": {:hex, :oban_met, "1.0.6", "2a5500aff496b7ac4b830b0b03b08e920625a051bb6890981fbb53b15f1cbdc0", [:mix], [{:oban, "~> 2.19", [hex: :oban, repo: "hexpm", optional: false]}], "hexpm", "15ea3303de76225878a8e6c25a9d62bd1e2e9dd1c46ac8487d873b9f99e8dcee"},
|
||||
"oban_web": {:hex, :oban_web, "2.11.8", "be6521b5b1eb6d4182f40f5acc948ea65d243451b94c26f06a7329575748f695", [:mix], [{:jason, "~> 1.2", [hex: :jason, repo: "hexpm", optional: false]}, {:oban, "~> 2.19", [hex: :oban, repo: "hexpm", optional: false]}, {:oban_met, "~> 1.0", [hex: :oban_met, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.7", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 1.0", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}], "hexpm", "d0c04a836d929ef037e96be142285238275aabbafe62543bbdcc3f541d29ec30"},
|
||||
"parse_trans": {:hex, :parse_trans, "3.4.1", "6e6aa8167cb44cc8f39441d05193be6e6f4e7c2946cb2759f015f8c56b76e5ff", [:rebar3], [], "hexpm", "620a406ce75dada827b82e453c19cf06776be266f5a67cff34e1ef2cbb60e49a"},
|
||||
"phoenix": {:hex, :phoenix, "1.8.3", "49ac5e485083cb1495a905e47eb554277bdd9c65ccb4fc5100306b350151aa95", [:mix], [{:bandit, "~> 1.0", [hex: :bandit, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.7", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.5.3", [hex: :websock_adapter, repo: "hexpm", optional: false]}], "hexpm", "36169f95cc2e155b78be93d9590acc3f462f1e5438db06e6248613f27c80caec"},
|
||||
"phoenix_ecto": {:hex, :phoenix_ecto, "4.7.0", "75c4b9dfb3efdc42aec2bd5f8bccd978aca0651dbcbc7a3f362ea5d9d43153c6", [:mix], [{:ecto, "~> 3.5", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.1", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.16 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}], "hexpm", "1d75011e4254cb4ddf823e81823a9629559a1be93b4321a6a5f11a5306fbf4cc"},
|
||||
|
||||
Loading…
Reference in New Issue
Block a user