This commit is contained in:
pluja 2024-02-10 13:47:25 +01:00
parent 7e259b7cb4
commit 1d0c1315d8
15 changed files with 813 additions and 425 deletions

View File

@ -1,284 +0,0 @@
<style>
section {
margin-left: 1rem;
margin-right: 1rem;
font-family: sans-serif;
font-size: 1rem;
}
section p {
margin-bottom: 1rem;
font-family: sans-serif;
font-size: 1rem;
}
section a {
color: rgb(163 230 53);
text-decoration: underline;
text-underline-offset: 0.2rem;
}
p {
font-size: 0.9rem;
}
h1,
h2,
h3,
h4 {
margin-top: 1rem;
margin-bottom: 0.3rem;
font-weight: bold;
color: rgb(163 230 53);
}
h1 {
font-size: 3rem;
}
h2 {
font-size: 1.2rem;
}
h3 {
margin-top: 1.1em;
font-size: 1rem;
}
h3::before {
content: '~ ';
}
ul {
margin-top: 0.3rem;
margin-bottom: 0.5rem;
padding-left: 1rem;
list-style: square;
}
li {
margin-bottom: 0.15rem;
}
li a {
text-decoration: none;
}
section blockquote {
margin-top: 0.5rem;
margin-bottom: 0.5rem;
padding-left: 1rem;
border-left: 0.3rem solid rgb(163 230 53);
color: rgb(142, 146, 150);
}
code {
background: #2b2828;
border: 1px solid #494242;
border-left: 3px solid #89f333;
color: #d3cccc;
font-family: monospace;
max-width: 100%;
overflow: scorll;
padding: 1em 1em;
display: block;
word-wrap: break-word;
max-width: 90vw;
margin-top: 1em;
}
hr {
margin-top: 1.5rem;
margin-bottom: 1.5rem;
}
</style>
<article class="mt-8 md:p-4 md:max-w-5xl">
<div class="flex flex-col items-center justify-center">
<div class="p-2 px-4 m-2 rounded-xl bg-gray-500/10">
<h2 class="font-bold text-lime-400">why kycnot.me?</h2>
<p>Cryptocurrencies were created to revolutionize the way we pay for goods and services, aiming to eliminate
reliance on centralized entities such as banks and governments that control our economy.</p>
<p>Exchanges that enforce KYC (Know Your Customer) and AML (Anti-Money Laundering) rules operate similarly
to
traditional banks. Users are required to provide identification, such as a photo of their ID, to use
these
exchanges. Moreover, most of these exchanges are centralized, meaning that users do not own their keys.
In
short, this implies that the cryptocurrencies belong to the exchange and not the user. These
requirements
contradict the decentralized nature of cryptocurrencies.</p>
<p>With KYCNOT.ME, I hope to provide people with trustworthy alternatives for buying, exchanging, trading,
and
using cryptocurrencies without having to disclose their identity. This preserves the essence of
cryptocurrencies, which is decentralized and self-governed.</p>
</div>
<div class="w-full my-4 border border-t border-white/20"></div>
<div class="p-2 px-4 m-2 rounded-xl bg-gray-500/10">
<h2 class="font-bold text-lime-400">what's KYC?</h2>
<div class="space-y-2">
<p><strong>KYC</strong> stands for <strong>"Know Your Customer"</strong>, a process designed to
protect financial institutions against fraud, corruption, money laundering and terrorist financing.
Or at
least this is what they want you to believe.</p>
<p>The truth is that KYC is a threat to our freedom. KYC is a direct attack on our privacy and puts us
in
disadvantage against the governments. True criminals don't care about KYC policies. True criminals
know
perfectly how to avoid such policies. In fact, they normally use the FIAT system and don't even need
to
use cryptocurrencies. Banks are the biggest money launders, the <a
href="https://www.reuters.com/business/hsbc-fined-85-mln-anti-money-laundering-failings-2021-12-17/">HSBC
scandal</a>, <a
href="https://www.reuters.com/article/us-nordea-bnk-moneylaundering-idUSKCN1QL11S">Nordea</a> or
<a
href="https://www.reuters.com/article/us-europe-moneylaundering-swedbank/swedbank-hit-with-record-386-million-fine-over-baltic-money-laundering-breaches-idUSKBN2163LU">Swedbank</a>
are just some examples.</p>
<p>KYC only affects small individuals like you and me. It is an annoying procedure that obligates us to
hand our
personal information to a third party in order to buy, use or unlock our funds. We should start
boycotting
such companies. We should start using decentralized exchanges and decentralized wallets. We should
start
using cryptocurrencies as they were intended to be used.</p>
</div>
<h3 id="other-acronyms-of-interest">other acronyms of interest</h3>
<ul>
<li><strong>AML</strong>: Anti-Money Laundering</li>
<li><strong>CFT</strong>: Combating the Financing of Terrorism</li>
<li><strong>SoF</strong>: Source of Funds</li>
<li><strong>ToS</strong>: Terms of Service</li>
</ul>
</div>
<div class="w-full my-4 border border-t border-white/20"></div>
<div class="p-2 px-4 m-2 rounded-xl bg-gray-500/10">
<h2 id="why-only-bitcoin-and-monero-">why only Bitcoin and Monero?</h2>
<p><strong>Bitcoin</strong>: it is the most well-known cryptocurrency. It's widespread and has the biggest
market capitalization of all cryptocurrencies.</p>
<p><strong>Monero</strong>: if digital cash was to exist, it should be like Monero. Fungible, private by
design,
fast and pretty low fees. Also, one of the oldest cryptocurrencies around.</p>
<p>No other currencies will be added. Most sites listed here also accept other cryptocurrencies, such as
Ethereum or Litecoin.</p>
</div>
<div class="w-full my-4 border border-t border-white/20"></div>
<div class="p-2 px-4 m-2 rounded-xl bg-gray-500/10">
<h2 id="listings">listings</h2>
<h3 id="request">request</h3>
<p>You can request a new listing by visiting the <a href="/request/service">Request</a> page.</p>
<h3 id="attributes">what is an attribute?</h3>
<p>An attribute is a feature that a service has. An attribute can be either good, a warning, bad or
informational. Attributes are not limited, the list of attributes will grow if needed, you can see a
full list of the attributes available on the Attributes page.</p>
<p>You can click on any point to see a detailed description of what it means. The point page also shows all
the listings that have that point. This is also a useful way to find listings that have a specific
feature.</p>
<h3 id="search">search</h3>
<p>Filtering services in kycnot.me is very easy. In the main page, you will see 3 possible filters:</p>
<ul>
<li><b>Type filter</b>: Lets you choose between seeing all the listings (default), only exchanges, or
only services.</li>
<li><b>Search bar</b>: The search bar is the most powerful filter. You can use it to perform a full-text
search on the listings. The search will look for the text you enter in the name, description,
keywords and category. The search is not case-sensitive.</li>
<li><b>Currency filter</b>: Lets you choose between seeing all the listings (default), only listings
that accept a certain currency. If you choose more than one option, it will show all the listings
that accept all of the selected currencies.</li>
</ul>
<h3 id="scoring">scoring</h3>
<p>Each listing has a score that is calculated based on the attributes that it has. The score does not
reflect how good an exchange is overall, but it seeks to give a score in relation to its KYC practices.
An exchange could have an awful UI/UX, but if it is very NO-KYC friendly, it will still get a high
score.</p>
<h3 id="order">order</h3>
<p>The listings are sorted in a decreasing order by score. For listings that share the same score (tie), the
order is random every time within that score range.</p>
</div>
<div class="w-full my-4 border border-t border-white/20"></div>
<div class="p-2 px-4 m-2 rounded-xl bg-gray-500/10">
<h2 id="tos">terms of service auto-reviews</h2>
<p>KYCnot.me offers an automated tool that reviews the Terms of Service (ToS) for various services. This
tool utilizes AI models to analyze the ToS text, extracting key points and presenting them in simple,
plain English. The aim is to make understanding the ToS for any service easier and more straightforward.
</p>
<p>For this, I am using OpenAI's GPT4-turbo model, which proved to be the most reliable and provides the
best results.</p>
<p><b>Important note:</b> This automated tool is not perfect, it may detect false positives, or non-relevant
lines. But, overall, it returns reliable and good results.</p>
</div>
<div class="w-full my-4 border border-t border-white/20"></div>
<div class="p-2 px-4 m-2 rounded-xl bg-gray-500/10">
<h2 id="levels">kyc Levels</h2>
<p>
KYCnot.me has a KYC level system. These levels allow you to quickly identify the kind of KYC practices a
service may have. There are 4 levels going from 0 to 3. The higher the level, the more invasive the KYC
practices are. <b>You can click on the level on the service page to see a detailed description of what
it means.</b>
</p>
</div>
<div class="w-full my-4 border border-t border-white/20"></div>
<div class="p-2 px-4 m-2 rounded-xl bg-gray-500/10">
<h2 id="verification">verification</h2>
<p>You will see that some services show a double blue tick. This means that the service has been tested
personally by me.</p>
<p>To check the service, I make a trade on the site, or test the service manually. With this, I can verify
that the service does not perform KYC practices on regular basis, and that it is not a scam, at least at
the time of the verification.</p>
<p>These checks are done randomly and without prior notice to the service. For this reason, and as the list
is in constant growth, not all services have been verified yet and it takes me some time to verify them.
</p>
<p>A verified service does not mean that the service is safe to use blindly, it just means that at the time
of the verification, the service was not performing KYC practices on regular basis, and that it was not
a scam. It is still recommended to do your own research before using any service.</p>
</div>
<div class="w-full my-4 border border-t border-white/20"></div>
<div class="p-2 px-4 m-2 rounded-xl bg-gray-500/10">
<h2 id="comments">(nostr) comments</h2>
<p>Each service has a dedicated comments article. The comments are suppored by <a
href="https://usenostr.org">Nostr</a>, a decentralized structured data sharing protocol used to
build social networks.</p>
<p><a href="https://usenostr.org" target="_blank">> Visit this page for a simple and quick introduction to
Nostr.</a></p>
<p>To comment on a service's page, you just need a Nostr private key and a secure <a
href="https://github.com/aljazceru/awesome-nostr#nip-07-browser-extensions" target="_blank">nostr
siging extension (nip-07)</a> for logging in. I recommend using <a href="https://getalby.com/"
target="_blank">Alby</a> or <a href="https://github.com/fiatjaf/nos2x" target="_blank">nos2x</a></p>
</div>
</div>
</article>

View File

@ -0,0 +1,645 @@
<style>
article {
margin-left: 1rem;
margin-right: 1rem;
font-size: 1rem;
}
#main {
font-family: sans-serif;
}
article p {
margin-bottom: 1rem;
font-size: 1rem;
}
p {
margin-top: 1rem;
}
article a {
color: rgb(163 230 53);
text-decoration: underline;
text-underline-offset: 0.2rem;
}
article p {
font-size: 0.9rem;
}
h1,
h2,
h3,
h4 {
margin-top: 1rem;
margin-bottom: 0.3rem;
font-weight: bold;
color: rgb(163 230 53);
}
h1 {
font-size: 3rem;
}
h2 {
font-size: 1.2rem;
}
h3 {
margin-top: 1.1em;
font-size: 1rem;
}
h3::before {
content: "~ ";
}
ul {
margin-top: 0.3rem;
margin-bottom: 0.5rem;
padding-left: 1rem;
list-style: square;
}
li {
margin-bottom: 0.15rem;
}
li a {
text-decoration: none;
}
article blockquote {
margin-top: 0.5rem;
margin-bottom: 0.5rem;
padding-left: 1rem;
border-left: 0.3rem solid rgb(163 230 53);
color: rgb(142, 146, 150);
}
code {
background: #2b282872;
border: 1px solid #494242;
border-radius: 0.2rem;
font-weight: bold;
border-left: 3px solid #89f333;
color: #d3cccc;
font-family: monospace;
max-width: 100%;
overflow: scorll;
padding: 1em 1em;
display: block;
word-wrap: break-word;
max-width: 90vw;
margin-top: 1em;
}
hr {
margin-top: 1.5rem;
margin-bottom: 1.5rem;
}
</style>
<div id="main" class="flex flex-col items-center justify-center my-8">
<div class="w-full max-w-4xl p-4">
<div class="space-x-1 text-xs font-bold text-center lowercase text-lime-500">
<a href="#why">Why</a>
·
<a href="#what">What</a>
·
<a href="#btcxmr">Only Bitcoin and Monero?</a>
·
<a href="#listings">About listings</a>
·
<a href="#tos">ToS reviews</a>
·
<a href="#support">Support</a>
·
<a href="#contact">contact</a>
·
<a href="#comments">comments</a>
·
<a href="#transparency">transparency</a>
·
<a href="#privacy">privacy</a>
·
<a href="#disclaimer">disclaimer</a>
</div>
</div>
<article class="md:p-4 md:max-w-5xl">
<div class="px-4 py-2 m-2 rounded-xl bg-gray-500/10">
<h2 id="why" class="font-bold text-lime-400">why kycnot.me?</h2>
<p>
Cryptocurrencies were created to revolutionize the way we pay for goods
and services, aiming to eliminate reliance on centralized entities such
as banks and governments that control our economy.
</p>
<p>
Exchanges that enforce KYC (Know Your Customer) and AML (Anti-Money
Laundering) rules operate similarly to traditional banks. Users are
required to provide identification, such as a photo of their ID, to use
these exchanges. Moreover, most of these exchanges are centralized,
meaning that users do not own their keys. In short, this implies that
the cryptocurrencies belong to the exchange and not the user. These
requirements contradict the decentralized nature of cryptocurrencies.
</p>
<p>
With KYCNOT.ME, I hope to provide people with trustworthy alternatives
for buying, exchanging, trading, and using cryptocurrencies without
having to disclose their identity. This preserves the essence of
cryptocurrencies, which is decentralized and self-governed.
</p>
</div>
<div class="w-full my-4 border border-t border-white/20"></div>
<div class="px-4 py-2 m-2 rounded-xl bg-gray-500/10">
<h2 id="what" class="font-bold text-lime-400">what's KYC?</h2>
<div class="space-y-2">
<p>
<strong>KYC</strong> stands for <strong>"Know Your Customer"</strong>,
a process designed to protect financial institutions against fraud,
corruption, money laundering and terrorist financing. Or at least this
is what they want you to believe.
</p>
<p>
The truth is that KYC is a threat to our freedom. KYC is a direct
attack on our privacy and puts us in disadvantage against the
governments. True criminals don't care about KYC policies. True
criminals know perfectly how to avoid such policies. In fact, they
normally use the FIAT system and don't even need to use
cryptocurrencies. Banks are the biggest money launders, the
<a rel="noreferrer"
href="https://www.reuters.com/business/hsbc-fined-85-mln-anti-money-laundering-failings-2021-12-17/">HSBC
scandal</a>,
<a rel="noreferrer"
href="https://www.reuters.com/article/us-nordea-bnk-moneylaundering-idUSKCN1QL11S">Nordea</a>
or
<a rel="noreferrer"
href="https://www.reuters.com/article/us-europe-moneylaundering-swedbank/swedbank-hit-with-record-386-million-fine-over-baltic-money-laundering-breaches-idUSKBN2163LU">Swedbank</a>
are just some examples.
</p>
<p>
KYC only affects small individuals like you and me. It is an annoying
procedure that obligates us to hand our personal information to a
third party in order to buy, use or unlock our funds. We should start
boycotting such companies. We should start using decentralized
exchanges and decentralized wallets. We should start using
cryptocurrencies as they were intended to be used.
</p>
</div>
<h3 id="other-acronyms-of-interest">other acronyms of interest</h3>
<ul>
<li><strong>AML</strong>: Anti-Money Laundering</li>
<li><strong>CFT</strong>: Combating the Financing of Terrorism</li>
<li><strong>SoF</strong>: Source of Funds</li>
<li><strong>ToS</strong>: Terms of Service</li>
</ul>
</div>
<div class="w-full my-4 border border-t border-white/20"></div>
<div class="px-4 py-2 m-2 rounded-xl bg-gray-500/10">
<h2 id="btcxmr">why only Bitcoin and Monero?</h2>
<p>
<strong>Bitcoin</strong>: it is the most well-known cryptocurrency. It's
widespread and has the biggest market capitalization of all
cryptocurrencies.
</p>
<p>
<strong>Monero</strong>: if digital cash was to exist, it should be like
Monero. Fungible, private by design, fast and pretty low fees. Also, one
of the oldest cryptocurrencies around.
</p>
<p>
No other currencies will be added. Most sites listed here also accept
other cryptocurrencies, such as Ethereum or Litecoin.
</p>
</div>
<div class="w-full my-4 border border-t border-white/20"></div>
<div class="px-4 py-2 m-2 rounded-xl bg-gray-500/10">
<h2 id="listings">listings</h2>
<h3 id="request">request</h3>
<p>
You can request a new listing by visiting the
<a href="/request/service">Request</a> page.
</p>
<h3 id="listing-process">listing process</h3>
<p>
The listing process is usually slow. I first need to review the service, read online reviews, gather
evidence and history of good reviews / opinions, test it myself (i don't always do this), read the terms
of service, privacy policy, etc...
</p>
<p>I do this on my own free time, so I'm slow at it. If you feel like a <a href="/pending">pending
service</a> deserves to be listed, you can <a href="#contact">contact me</a> and I will try to speed
up the review process.</p>
<h3 id="attributes">what is an attribute?</h3>
<p>
An attribute is a feature that a service has. An attribute can be either
good, a warning, bad or informational. Attributes are not limited, the
list of attributes will grow if needed, you can see a full list of the
attributes available on the Attributes page.
</p>
<p>
You can click on any point to see a detailed description of what it
means. The point page also shows all the listings that have that point.
This is also a useful way to find listings that have a specific feature.
</p>
<h3 id="search">search</h3>
<p>
Filtering services in kycnot.me is very easy. In the main page, you will
see 3 possible filters:
</p>
<ul>
<li>
<b>Type filter</b>: Lets you choose between seeing all the listings
(default), only exchanges, or only services.
</li>
<li>
<b>Search bar</b>: The search bar is the most powerful filter. You can
use it to perform a full-text search on the listings. The search will
look for the text you enter in the name, description, keywords and
category. The search is not case-sensitive.
</li>
<li>
<b>Currency filter</b>: Lets you choose between seeing all the
listings (default), only listings that accept a certain currency. If
you choose more than one option, it will show all the listings that
accept all of the selected currencies.
</li>
</ul>
<h3 id="levels">kyc Levels</h3>
<p>
KYCnot.me has a KYC level system. These levels allow you to quickly
identify the kind of KYC practices a service may have. There are 4
levels going from 0 to 3. The higher the level, the more invasive the
KYC practices are.
<b>You can click on the level on the service page to see a detailed
description of what it means.</b>
</p>
<h3 id="scoring">scoring</h3>
<p>
Each listing has a score that is calculated based on the attributes that
it has. The score does not reflect how good an exchange is overall, but
it seeks to give a score in relation to its KYC practices. An exchange
could have an awful UI/UX, but if it is very NO-KYC friendly, it will
still get a high score.
</p>
<h3 id="order">order</h3>
<p>
The listings are sorted in a decreasing order by score. For listings
that share the same score (tie), the order is random every time within
that score range.
</p>
<h3 id="pending">pending</h3>
<p>
You can find the list of services that have been requested and are pending for approval here: <a
href="/pending">/pending</a>
</p>
<h3 id="verification">verification</h3>
<p class="mt-2">
You will see that some services show a blue badge with a tick. This
means that the service has been tested personally by me.
</p>
<p class="mt-2">
To check the service, I make a trade on the site, or test the service
manually. With this, I can verify that the service does not perform KYC
practices on regular basis, and that it is not a scam, at least at the
time of the verification.
</p>
<p class="mt-2">
These checks are done randomly and without prior notice to the service.
For this reason, and as the list is in constant growth, not all services
have been verified yet and it takes me some time to verify them.
</p>
<p class="mt-2">
A verified service does not mean that the service is safe to use
blindly, it just means that at the time of the verification, the service
was not performing KYC practices on regular basis, and that it was not a
scam. It is still recommended to do your own research before using any
service.
</p>
</div>
<div class="w-full my-4 border border-t border-white/20"></div>
<div class="px-4 py-2 m-2 rounded-xl bg-gray-500/10">
<h2 id="tos">terms of service auto-reviews</h2>
<p>
KYCnot.me has an automated tool that reviews the Terms of Service (ToS)
for various services. This tool utilizes AI to analyze the ToS text,
extracting key points and presenting them in simple, plain English. The
aim is to make understanding the ToS for any service easier and more
straightforward.
</p>
<p>
For this, I am using OpenAI's GPT4-turbo model, which proved to be the
most reliable and provides the best results.
</p>
<p>
<b>Important note:</b> This automated tool is not perfect, it may detect
false positives, or non-relevant lines. But, overall, it returns
reliable and good results.
</p>
</div>
<div class="w-full my-4 border border-t border-white/20"></div>
<div class="px-4 py-2 m-2 rounded-xl bg-gray-500/10">
<h2 id="support">support this project</h2>
<p>
If you like this project, or
<a target="_blank" href="https://pluja.dev">any of my other projects</a>, you can make donations using
the following methods:
</p>
<ul class="py-3 space-y-6 list-none">
<li>
<span class="flex items-center space-x-2">
<svg xmlns="http://www.w3.org/2000/svg" class="w-5 h-5 monero-filled" width="24" height="24"
viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none"
stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path
d="M15 11.414v4.586a1 1 0 0 0 1 1l4.66 .001a10 10 0 0 1 -17.32 0l4.66 -.001l.117 -.007a1 1 0 0 0 .883 -.993v-4.585l2.293 2.292l.094 .083a1 1 0 0 0 1.32 -.083l2.293 -2.293zm2 -8.074a10 10 0 0 1 4.54 11.66h-4.54v-6c0 -.89 -1.077 -1.337 -1.707 -.707l-3.293 3.292l-3.293 -3.292l-.084 -.076c-.637 -.514 -1.623 -.07 -1.623 .783v6h-4.54a9.991 9.991 0 0 1 -.46 -3l.005 -.324a10 10 0 0 1 14.995 -8.336z"
stroke-width="0" fill="currentColor" />
</svg>
<span class="font-bold uppercase">Monero</span>
</span>
<p class="text-xs text-white/50">
> If your wallet supports <a rel="noreferrer" target="_blank"
href="https://openalias.org/">OpenAlias</a>, you
can use
<span class="font-bold">kycnot.me</span> in the address field.
</p>
<code>{{.Xmr}}</code>
<details class="my-2 rounded-lg cursor-pointer">
<summary class="flex items-center space-x-1 text-sm font-bold">
<svg xmlns="http://www.w3.org/2000/svg" class="w-5 h-5 icon icon-tabler icon-tabler-qrcode"
width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"
fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path
d="M4 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z" />
<path d="M7 17l0 .01" />
<path
d="M14 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z" />
<path d="M7 7l0 .01" />
<path
d="M4 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z" />
<path d="M17 7l0 .01" />
<path d="M14 14l3 0" />
<path d="M20 14l0 .01" />
<path d="M14 14l0 3" />
<path d="M14 20l3 0" />
<path d="M17 17l3 0" />
<path d="M20 17l0 3" />
</svg>
<span>
Click for QR Code
</span>
</summary>
<img class="my-4"
src="https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=monero:{{.Xmr}}"
alt="Monero address QR code" />
</details>
</li>
<li>
<span class="flex items-center space-x-2">
<svg xmlns="http://www.w3.org/2000/svg" class="w-5 h-5 bitcoin-filled" width="24" height="24"
viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none"
stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path
d="M17 3.34a10 10 0 1 1 -15 8.66l.005 -.324a10 10 0 0 1 14.995 -8.336zm-4 2.66a1 1 0 0 0 -1 1h-1a1 1 0 0 0 -2 0a1 1 0 1 0 0 2v6a1 1 0 0 0 0 2c0 1.333 2 1.333 2 0h1a1 1 0 0 0 2 0v-.15c1.167 -.394 2 -1.527 2 -2.85l-.005 -.175a3.063 3.063 0 0 0 -.734 -1.827c.46 -.532 .739 -1.233 .739 -1.998c0 -1.323 -.833 -2.456 -2 -2.85v-.15a1 1 0 0 0 -1 -1zm.09 7c.492 0 .91 .437 .91 1s-.418 1 -.91 1h-2.09v-2h2.09zm0 -4c.492 0 .91 .437 .91 1c0 .522 -.36 .937 -.806 .993l-.104 .007h-2.09v-2h2.09z"
stroke-width="0" fill="currentColor" />
</svg>
<span class="font-bold uppercase">Bitcoin</span>
</span>
<code>{{.Btc}}</code>
<details class="my-2 rounded-lg cursor-pointer">
<summary class="flex items-center space-x-1 text-sm font-bold">
<svg xmlns="http://www.w3.org/2000/svg" class="w-5 h-5 icon icon-tabler icon-tabler-qrcode"
width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"
fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path
d="M4 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z" />
<path d="M7 17l0 .01" />
<path
d="M14 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z" />
<path d="M7 7l0 .01" />
<path
d="M4 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z" />
<path d="M17 7l0 .01" />
<path d="M14 14l3 0" />
<path d="M20 14l0 .01" />
<path d="M14 14l0 3" />
<path d="M14 20l3 0" />
<path d="M17 17l3 0" />
<path d="M20 17l0 3" />
</svg>
<span>
Click for QR Code
</span>
</summary>
<img class="my-4"
src="https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=bitcoin:{{.Btc}}"
alt="Bitcoin Address QR Code" />
</details>
</li>
<li>
<span class="flex items-center space-x-2">
<svg xmlns="http://www.w3.org/2000/svg" class="w-5 h-5 tabler-bolt" width="24" height="24"
viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none"
stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M13 3l0 7l6 0l-8 11l0 -7l-6 0l8 -11" />
</svg>
<a target="_blank" rel="noreferrer" href="{{.Lnn}}">Lightning Network</a>
</span>
</li>
</ul>
<p class="px-4 text-sm text-white/60">
Note: I fund this project entirely on my own, as an independent
individual without sponsors or alternative revenue streams, I rely
solely on <b>donations</b> and <b>referrals</b> (if you choose to use
them). I am committed to maintaining the project's independence and
integrity, thus I do not accept bribes or sponsorships. Please note that
donations should not be made with the expectation of receiving personal
benefits for your service/product. If you did, I'll be happy to return
the donation to you.
</p>
</div>
<div class="w-full my-4 border border-t border-white/20"></div>
<div class="px-4 py-2 m-2 rounded-xl bg-gray-500/10">
<h2 id="contact">contact</h2>
<p>
Due to misuse and the inability to manage them effectively, I have
removed all instant messaging / email contact methods, since I was
leaving many inquiries unanswered. Please feel free to reach out to me
on any of the following social media platforms for any questions or
concerns.
</p>
<p>
For more private communications, simply request via these platforms, and
I will provide you with an email address or an alternative instant
messaging option.
</p>
<ul>
<li>
<a target="_blank" rel="noreferrer" href="https://fosstodon.org/@kycnotme">🦣 Mastodon</a>
</li>
<li>
<a target="_blank" rel="noreferrer"
href="https://njump.me/npub188x98j0r7l2fszeph6j7hj99h8xl07n989pskk5zd69d2fcksetq5mgcqf">🪶
Nostr</a>
</li>
<li>
<a target="_blank" rel="noreferrer" href="https://lemmy.world/u/pluja">🐭 Lemmy</a>
</li>
</ul>
</div>
<div class="w-full my-4 border border-t border-white/20"></div>
<div class="px-4 py-2 m-2 rounded-xl bg-gray-500/10">
<h2 id="comments">(nostr) comments</h2>
<p>
Each service has a dedicated comments article. The comments are suppored
by <a href="https://usenostr.org">Nostr</a>, a decentralized structured
data sharing protocol used to build social networks.
</p>
<p>
<a href="https://usenostr.org" target="_blank">> Visit this page for a simple and quick introduction to
Nostr.</a>
</p>
<p>
To comment on a service's page, you just need a Nostr private key and a
secure
<a rel="noreferrer" href="https://github.com/aljazceru/awesome-nostr#nip-07-browser-extensions"
target="_blank">nostr
siging extension (nip-07)</a>
for logging in. I recommend using
<a href="https://getalby.com/" target="_blank">Alby</a> or
<a href="https://github.com/fiatjaf/nos2x" target="_blank">nos2x</a>
</p>
</div>
<div class="w-full my-4 border border-t border-white/20"></div>
<div class="px-4 py-2 m-2 rounded-xl bg-gray-500/10">
<h2 id="transparency">transparency</h2>
<p>
In order to increase trust from visitors, KYCNOT.me strives to be as
transparent as possible. Here are some of the ways in which I try to
achieve this:
</p>
<ul>
<li>
<a href="https://github.com/pluja/kycnotme">Open Source Code</a> - A
commit history, and full disclosure of the scoring algorithm is
provided.
</li>
<li>
Public comment section on each page, available on
<a target="_blank" href="https://usenostr.org">Nostr</a>.
</li>
<li>Endpoint to download the full database</li>
<li>
Open scoring algorithmg. All services go under the same algorithm,
meaning that the score is not subjective.
</li>
</ul>
</div>
<div class="w-full my-4 border border-t border-white/20"></div>
<div class="px-4 py-2 m-2 rounded-xl bg-gray-500/10">
<h2 id="privacy">privacy</h2>
<p>
KYCNOT.me does not have trackers and never will. It does not make any
third party connections from the frontend. No user data of any kind is
collected. A "no-referrer" policy is enforced, so no site will know that
you came from kycnot.me.
</p>
<h3 id="javascript">javascript</h3>
<p>
KYCNOT.me does not use Javascript. Everything is rendered server-side.
This means that you can use KYCNOT.me with Javascript disabled.
</p>
<p>Only things that <b>require</b> JavaScript to be enabled are:</p>
<ul>
<li>
<b>Requests</b>: The Proof-Of-Work captcha, that I coded myself, needs
JavaScript for the verfication. The code is public, and you can read
it yourself on the repo.
</li>
<li>
<b>Comments</b>: The comment section on each of the services, needs
JavaScript since it needs to fetch and post to Nostr. The code that
makes this interaction is also fully open source and can be reviewed
in the repo as well.
</li>
</ul>
</div>
<div class="w-full my-4 border border-t border-white/20"></div>
<div class="px-4 py-2 m-2 rounded-xl bg-gray-500/10">
<h2 id="disclaimer">disclaimer</h2>
<p>
This website does not provide any not financial advice. Always do your
own research before using any service. This site is for informational
purposes only. I'm not responsible for any loss of funds or any other
damage that may occur by using any of the services listed here. Use at
your own risk.
</p>
</div>
</article>
</div>

View File

@ -1,47 +0,0 @@
<section class="pt-14">
<div class="flex flex-col items-center justify-center space-x-4">
<!--<h1 class="text-2xl font-bold capitalize-first">{{.Attribute.Title}}</h1>-->
<!-- Description -->
<div class="p-4 m-4
{{if eq "info" .Attribute.Rating}} border rounded-lg border-blue-600/40 bg-blue-600/20 {{end}}
{{if eq "good" .Attribute.Rating}} border rounded-lg border-green-600/40 bg-green-600/20 {{end}}
{{if eq "warn" .Attribute.Rating}} border rounded-lg border-yellow-600/40 bg-yellow-600/20 {{end}}
{{if eq "bad" .Attribute.Rating}} border rounded-lg border-red-600/40 bg-red-600/20 {{end}}
">
<h3 class="mb-3 text-lg font-bold uppercase border-b md:text-xl border-b-white/20">
{{if eq "info" .Attribute.Rating}}
🔵
{{end}}
{{if eq "good" .Attribute.Rating}}
{{end}}
{{if eq "warn" .Attribute.Rating}}
⚠️
{{end}}
{{if eq "bad" .Attribute.Rating}}
🛑
{{end}}
{{.Attribute.Title}}
</h3>
<p class="max-w-lg">
{{if ne .Attribute.Description ""}}
{{.Attribute.Description | safe}}
{{else}}
{{.Attribute.Name}} does not have a description.
{{end}}
</p>
</div>
</div>
</section>
<!-- Services list -->
<section class="flex flex-col items-center justify-center px-1 mx-2 mt-6">
<h2 class="text-lg font-bold uppercase">{{.Attribute.Title}} services:</h2>
<div class="grid max-w-6xl grid-cols-1 gap-3 mt-2 md:grid-cols-2 lg:grid-cols-3">
{{range .Services}}
{{partial "partials/service_card" .}}
{{end}}
</div>
</section>

View File

@ -0,0 +1,46 @@
<section class="pt-14">
<div class="flex flex-col items-center justify-center space-x-4">
<!--<h1 class="text-2xl font-bold capitalize-first">{{.Attribute.Title}}</h1>-->
<!-- Description -->
<div class="p-4 m-4
{{if eq " info" .Attribute.Rating}} border rounded-lg border-blue-600/40 bg-blue-600/20 {{end}}
{{if eq "good" .Attribute.Rating}} border rounded-lg border-green-600/40 bg-green-600/20 {{end}} {{if
eq "warn" .Attribute.Rating}} border rounded-lg border-yellow-600/40 bg-yellow-600/20 {{end}} {{if eq "bad"
.Attribute.Rating}} border rounded-lg border-red-600/40 bg-red-600/20 {{end}} ">
<h3 class=" mb-3 text-lg font-bold uppercase border-b md:text-xl border-b-white/20">
{{if eq "info" .Attribute.Rating}}
🔵
{{end}}
{{if eq "good" .Attribute.Rating}}
{{end}}
{{if eq "warn" .Attribute.Rating}}
⚠️
{{end}}
{{if eq "bad" .Attribute.Rating}}
🛑
{{end}}
{{.Attribute.Title}}
</h3>
<p class="max-w-lg">
{{if ne .Attribute.Description ""}}
{{.Attribute.Description | safe}}
{{else}}
{{.Attribute.Name}} does not have a description.
{{end}}
</p>
</div>
</div>
</section>
<!-- Services list -->
<section class="flex flex-col items-center justify-center px-1 mx-2 mt-6">
<h2 class="text-lg font-bold uppercase text-center">Services with this point:</h2>
<div class="grid max-w-6xl grid-cols-1 gap-3 mt-2 md:grid-cols-2 lg:grid-cols-3 mx-auto">
{{range .Services}}
{{partial "partials/service_card" .}}
{{end}}
</div>
</section>

View File

@ -1,81 +1,83 @@
<a target="_blank" href="{{.Announcement.Link}}"
class="flex items-center justify-center max-w-sm p-2 mx-auto space-x-2 border rounded-lg bg-black/30 border-lime-900">
<svg xmlns="http://www.w3.org/2000/svg" class="w-5 h-5 text-lime-600" viewBox="0 0 24 24" stroke-width="1.5"
stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<circle cx="12" cy="12" r="9" />
<line x1="12" y1="8" x2="12.01" y2="8" />
<polyline points="11 12 12 12 12 16 13 16" />
</svg>
<div class="flex flex-col items-center justify-center text-center">
<span class="font-bold">{{.Announcement.Title}}</span>
<span class="text-xs lowercase">{{.Announcement.Body}}</span>
</div>
</a>
<main class="py-4 text-lime-500">
<div class="px-4 pt-2">
<div class="mb-2 text-center bg-transparent md:grid">
<p class="font-mono text-sm font-bold uppercase md:text-base">{{.RandomPitch}}</p>
<p class="font-mono text-sm font-bold uppercase md:text-base">{{.RandomPitch}}</p>
</div>
</div>
<!-- End Filters -->
<form action="/">
<input type="hidden" name="t" id="t" value="{{.Filters.Type}}"/>
<input type="hidden" name="t" id="t" value="{{.Filters.Type}}" />
<div class="flex items-center justify-center mt-4">
<input class="text-xs bg-transparent border rounded-lg border-lime-500/60 text-lime-500 placeholder-white/30" placeholder="Search anything..." value="{{.Filters.Query}}" type="text" name="q" id="q">
<input
class="text-xs bg-transparent border rounded-lg border-lime-500/60 text-lime-500 placeholder-white/30"
placeholder="Search anything..." value="{{.Filters.Query}}" type="text" name="q" id="q">
</div>
<div class="flex items-center justify-center pt-2.5 space-x-2">
<span class="flex flex-col items-center justify-center">
<label class="text-xs uppercase" for="btc">btc</label>
<input
class="bg-transparent rounded-full outline-none appearance-none focus:ring-0 border-lime-500/60 text-lime-500"
type="checkbox"
{{if eq "on" .Filters.Btc}}checked{{end}}
name="btc"
id="btc"
>
class="bg-transparent rounded-full outline-none appearance-none focus:ring-0 border-lime-500/60 text-lime-500"
type="checkbox" {{if eq "on" .Filters.Btc}}checked{{end}} name="btc" id="btc">
</span>
<span class="flex flex-col items-center justify-center">
<label class="text-xs uppercase" for="xmr">xmr</label>
<input
class="bg-transparent rounded-full outline-none appearance-none focus:ring-0 border-lime-500/60 text-lime-500"
type="checkbox"
{{if eq "on" .Filters.Xmr}}checked{{end}}
name="xmr"
id="xmr"
>
<input
class="bg-transparent rounded-full outline-none appearance-none focus:ring-0 border-lime-500/60 text-lime-500"
type="checkbox" {{if eq "on" .Filters.Xmr}}checked{{end}} name="xmr" id="xmr">
</span>
<span class="flex flex-col items-center justify-center">
<label class="text-xs uppercase" for="ln">ln</label>
<input
class="bg-transparent rounded-full outline-none appearance-none focus:ring-0 border-lime-500/60 text-lime-500"
type="checkbox"
{{if eq "on" .Filters.Ln}}checked{{end}}
name="ln"
id="ln"
>
<input
class="bg-transparent rounded-full outline-none appearance-none focus:ring-0 border-lime-500/60 text-lime-500"
type="checkbox" {{if eq "on" .Filters.Ln}}checked{{end}} name="ln" id="ln">
</span>
<span class="flex flex-col items-center justify-center">
<label class="text-xs uppercase" for="fiat">fiat</label>
<input
class="bg-transparent rounded-full outline-none appearance-none focus:ring-0 border-lime-500/60 text-lime-500"
type="checkbox"
{{if eq "on" .Filters.Fiat}}checked{{end}}
name="fiat"
id="fiat"
>
<input
class="bg-transparent rounded-full outline-none appearance-none focus:ring-0 border-lime-500/60 text-lime-500"
type="checkbox" {{if eq "on" .Filters.Fiat}}checked{{end}} name="fiat" id="fiat">
</span>
<span class="flex flex-col items-center justify-center">
<label class="text-xs uppercase" for="cash">cash</label>
<input
class="bg-transparent rounded-full outline-none appearance-none focus:ring-0 border-lime-500/60 text-lime-500"
type="checkbox"
{{if eq "on" .Filters.Cash}}checked{{end}}
name="cash"
id="cash"
>
<input
class="bg-transparent rounded-full outline-none appearance-none focus:ring-0 border-lime-500/60 text-lime-500"
type="checkbox" {{if eq "on" .Filters.Cash}}checked{{end}} name="cash" id="cash">
</span>
<button class="p-1 text-xs font-bold uppercase border rounded-lg bg-none border-lime-500/60" type="submit">filter</button>
<button class="p-1 text-xs font-bold uppercase border rounded-lg bg-none border-lime-500/60"
type="submit">filter</button>
</div>
</form>
<div class="mt-3 text-center text-gray-500">
<a href="/">
<span class="p-1 {{if eq "" .Filters.Type}}border-b border-lime-500/60 text-lime-500{{end}} text-xs">All</span>
<span
class="p-1 {{if eq "" .Filters.Type}}border-b border-lime-500/60 text-lime-500{{end}} text-xs">All</span>
</a>
<a href="/?t=exchange">
<span class="p-1 {{if eq "exchange" .Filters.Type}}border-b border-lime-500/60 text-lime-500{{end}} text-xs">Exchanges</span>
<span class="p-1 {{if eq " exchange" .Filters.Type}}border-b border-lime-500/60 text-lime-500{{end}}
text-xs">Exchanges</span>
</a>
<a href="/?t=service">
<span class="p-1 {{if eq "service" .Filters.Type}}border-b border-lime-500/60 text-lime-500{{end}} text-xs">Services</span>
<span class="p-1 {{if eq " service" .Filters.Type}}border-b border-lime-500/60 text-lime-500{{end}}
text-xs">Services</span>
</a>
</div>
<!-- Filters -->
@ -85,7 +87,7 @@
<section class="flex items-center justify-center px-3 pb-12 mt-4">
<div class="grid max-w-6xl grid-cols-1 gap-3 md:grid-cols-3 lg:grid-cols-3">
{{range .Services}}
{{partial "partials/service_card" .}}
{{partial "partials/service_card" .}}
{{end}}
</div>
</section>

View File

@ -1,49 +0,0 @@
{{/* service_card.html */}}
<a href="/service/{{.Name}}" class="w-full max-w-md">
<div class="flex flex-col justify-between p-4 transition duration-500 bg-gray-700 border border-transparent rounded-lg shadow-lg backdrop-blur-md bg-opacity-30 hover:border-lime-600/70">
<div>
<div class="flex items-center">
<img src="/api/v1/picture/{{.ID}}" alt="{{.Name}} logo" class="w-12 h-12 mr-4 rounded-full bg-white/10">
<div class="flex flex-col items-center justify-center">
<div class="text-xl font-bold text-white">
<div class="flex items-center justify-between">
<span class="flex items-center justify-center capitalize">
{{if .Verified}}
<svg xmlns="http://www.w3.org/2000/svg" class="w-5 h-5 mr-1 text-blue-400/80 discount-check-filled" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M12.01 2.011a3.2 3.2 0 0 1 2.113 .797l.154 .145l.698 .698a1.2 1.2 0 0 0 .71 .341l.135 .008h1a3.2 3.2 0 0 1 3.195 3.018l.005 .182v1c0 .27 .092 .533 .258 .743l.09 .1l.697 .698a3.2 3.2 0 0 1 .147 4.382l-.145 .154l-.698 .698a1.2 1.2 0 0 0 -.341 .71l-.008 .135v1a3.2 3.2 0 0 1 -3.018 3.195l-.182 .005h-1a1.2 1.2 0 0 0 -.743 .258l-.1 .09l-.698 .697a3.2 3.2 0 0 1 -4.382 .147l-.154 -.145l-.698 -.698a1.2 1.2 0 0 0 -.71 -.341l-.135 -.008h-1a3.2 3.2 0 0 1 -3.195 -3.018l-.005 -.182v-1a1.2 1.2 0 0 0 -.258 -.743l-.09 -.1l-.697 -.698a3.2 3.2 0 0 1 -.147 -4.382l.145 -.154l.698 -.698a1.2 1.2 0 0 0 .341 -.71l.008 -.135v-1l.005 -.182a3.2 3.2 0 0 1 3.013 -3.013l.182 -.005h1a1.2 1.2 0 0 0 .743 -.258l.1 -.09l.698 -.697a3.2 3.2 0 0 1 2.269 -.944zm3.697 7.282a1 1 0 0 0 -1.414 0l-3.293 3.292l-1.293 -1.292l-.094 -.083a1 1 0 0 0 -1.32 1.497l2 2l.094 .083a1 1 0 0 0 1.32 -.083l4 -4l.083 -.094a1 1 0 0 0 -.083 -1.32z" stroke-width="0" fill="currentColor"></path>
</svg>
{{end}}
{{.Name}}
</span>
{{if isNew .Created}}
<span class="px-2 py-1 text-xs font-bold uppercase border rounded border-white/30 bg-white/20 text-white/70">
✨ NEW
</span>
{{end}}
<span class="px-2 py-1 text-xs font-bold uppercase border rounded bg-lime-900 border-lime-800 text-white/70">
{{.Score}}
</span>
</div>
<span class="block pr-1 mt-2 text-xs font-normal text-white/60 text-opacity-60">{{shortText .Description | safe}}</span>
</div>
</div>
</div>
</div>
<div class="mt-4">
<div class="flex items-center justify-center text-xs">
{{if eq .Type "exchange"}}
<span class="px-2 py-1 mr-1 text-xs font-bold uppercase border rounded text-white/70 bg-zinc-900 border-zinc-700">
{{.Type}}
</span>
{{else}}
<span class="px-2 py-1 mr-1 text-xs font-bold uppercase border rounded text-white/70 bg-zinc-900 border-zinc-700">
{{.Category}}
</span>
{{end}}
{{partial "partials/service_icons" .}}
</div>
</div>
</div>
</a>

View File

@ -0,0 +1,71 @@
{{/* service_card.html */}}
<a href="/service/{{.Name}}" class="w-full max-w-md">
<div
class="flex flex-col justify-between p-4 transition duration-500 bg-gray-700 border border-transparent rounded-lg shadow-lg backdrop-blur-md bg-opacity-30 hover:border-lime-600/70">
<div>
<div class="flex items-center">
<img src="/api/g/picture/{{.ID}}" alt="{{.Name}} logo" class="w-12 h-12 mr-4 rounded-full bg-white/10">
<div class="flex flex-col items-center justify-center">
<div class="text-xl font-bold text-white">
<div class="flex items-center justify-between">
<span class="flex items-center justify-center capitalize">
{{if .Verified}}
<svg xmlns="http://www.w3.org/2000/svg"
class="w-5 h-5 mr-1 text-blue-400/80 discount-check-filled" width="24" height="24"
viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none"
stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path
d="M12.01 2.011a3.2 3.2 0 0 1 2.113 .797l.154 .145l.698 .698a1.2 1.2 0 0 0 .71 .341l.135 .008h1a3.2 3.2 0 0 1 3.195 3.018l.005 .182v1c0 .27 .092 .533 .258 .743l.09 .1l.697 .698a3.2 3.2 0 0 1 .147 4.382l-.145 .154l-.698 .698a1.2 1.2 0 0 0 -.341 .71l-.008 .135v1a3.2 3.2 0 0 1 -3.018 3.195l-.182 .005h-1a1.2 1.2 0 0 0 -.743 .258l-.1 .09l-.698 .697a3.2 3.2 0 0 1 -4.382 .147l-.154 -.145l-.698 -.698a1.2 1.2 0 0 0 -.71 -.341l-.135 -.008h-1a3.2 3.2 0 0 1 -3.195 -3.018l-.005 -.182v-1a1.2 1.2 0 0 0 -.258 -.743l-.09 -.1l-.697 -.698a3.2 3.2 0 0 1 -.147 -4.382l.145 -.154l.698 -.698a1.2 1.2 0 0 0 .341 -.71l.008 -.135v-1l.005 -.182a3.2 3.2 0 0 1 3.013 -3.013l.182 -.005h1a1.2 1.2 0 0 0 .743 -.258l.1 -.09l.698 -.697a3.2 3.2 0 0 1 2.269 -.944zm3.697 7.282a1 1 0 0 0 -1.414 0l-3.293 3.292l-1.293 -1.292l-.094 -.083a1 1 0 0 0 -1.32 1.497l2 2l.094 .083a1 1 0 0 0 1.32 -.083l4 -4l.083 -.094a1 1 0 0 0 -.083 -1.32z"
stroke-width="0" fill="currentColor"></path>
</svg>
{{end}}
{{.Name}}
</span>
{{if isNew .Created}}
<span
class="px-2 py-1 text-xs font-bold uppercase border rounded border-white/30 bg-white/20 text-white/70">
✨ NEW
</span>
{{end}}
<span class='px-2 py-1 text-xs font-bold uppercase border rounded
{{if ge .Score 9}}
bg-green-900 border-green-800
{{else if gt .Score 7}}
bg-lime-700 border-lime-600
{{else if gt .Score 5}}
bg-yellow-800 border-yellow-700
{{else if eq .Score 5}}
bg-orange-900 border-orange-800
{{else}}
bg-red-900 border-red-800
{{end}}
text-white/70'>
{{.Score}}
</span>
</div>
<span class="block pr-1 mt-2 text-xs font-normal text-white/60 text-opacity-60">{{shortText
.Description | safe}}</span>
</div>
</div>
</div>
</div>
<div class="mt-4">
<div class="flex items-center justify-center text-xs">
{{if eq .Type "exchange"}}
<span
class="px-2 py-1 mr-1 text-xs font-bold uppercase border rounded text-white/70 bg-zinc-900 border-zinc-700">
{{.Type}}
</span>
{{else}}
<span
class="px-2 py-1 mr-1 text-xs font-bold uppercase border rounded text-white/70 bg-zinc-900 border-zinc-700">
{{.Category}}
</span>
{{end}}
{{partial "partials/service_icons" .}}
</div>
</div>
</div>
</a>

View File

@ -6,9 +6,13 @@
<!-- Services list -->
<section class="flex items-center justify-center p-12 px-3 pt-4 m-4">
{{if .Services}}
<div class="grid max-w-6xl grid-cols-1 gap-3 md:grid-cols-3 lg:grid-cols-3">
{{range .Services}}
{{partial "partials/service_card" .}}
{{end}}
</div>
{{else}}
<h2 class="my-8 text-xl font-bold text-center">No pending services.</h2>
{{end}}
</section>

View File

@ -22,7 +22,7 @@
<!-- Service Header -->
<div class="flex items-center justify-center space-x-4">
<img class="rounded-full w-14 h-14 bg-white/25" src="/api/v1/picture/{{.Service.ID}}" alt="">
<img class="rounded-full w-14 h-14 bg-white/25" src="/api/g/picture/{{.Service.ID}}" alt="">
<span class="flex items-center justify-center capitalize">
<span class="text-3xl font-bold">{{.Service.Name}}</span>
{{if .Service.Verified}}