mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-05-25 18:34:24 +00:00
197 lines
7.6 KiB
HTML
197 lines
7.6 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>Simplex Chat</title>
|
|
<link rel="icon" type="image/png" sizes="96x96" href="/img/favicon.ico" />
|
|
<link href="/css/tailwind.css" rel="stylesheet" />
|
|
<link rel="stylesheet" href="/css/blogs.css" />
|
|
<link rel="stylesheet" href="/css/blog.css" />
|
|
<script async defer src="https://buttons.github.io/buttons.js"></script>
|
|
</head>
|
|
|
|
<body class="sm:bg-gray-100">
|
|
<header>
|
|
<nav class="container">
|
|
<div class="flex items-center gap-[16px] h-full">
|
|
<a href="/">
|
|
<img alt="simplex logo" class="logo" src="/img/simplex.svg" />
|
|
</a>
|
|
|
|
<div class="hidden lg:flex gap-[16px]">
|
|
<a class="tracking-[1px] rounded text-[1.4rem] font-medium white-paper-nav-btn"
|
|
href="https://github.com/simplex-chat/simplexmq/blob/stable/protocol/overview-tjr.md"
|
|
target="_blank">Whitepaper</a>
|
|
<a class="tracking-[1px] rounded text-[1.4rem] font-medium comparison-nav-btn"
|
|
href="/#comparison">Comparison</a>
|
|
<a class="tracking-[1px] rounded text-[1.4rem] font-medium blog-nav-btn" href="/blog">Blog</a>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="flex gap-4">
|
|
<div class="nav__buttons">
|
|
<div class="github">
|
|
<a class="github-button" href="https://github.com/simplex-chat/simplex-chat" data-size="large"
|
|
data-show-count="true" aria-label="Star simplex-chat on GitHub">Star</a>
|
|
</div>
|
|
|
|
<div class="donate d-none-576">
|
|
<a href="https://opencollective.com/simplex-chat" target="_blank">
|
|
<span class="button">Donate</span></a>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="toggle self-stretch">
|
|
<label class="toggle-btn"><span></span></i></label>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
|
|
<div class="w-full fixed top-[60px] z-[99] bg-[#fbd561] mobile-nav">
|
|
<a class="flex-1 flex justify-center text-[1.2rem] tracking-[1px] font-medium text-base px-3 py-4 border-x-0 border-y-0 border-t-[1px] border-solid border-yellow-200 white-paper-nav-btn"
|
|
href="https://github.com/simplex-chat/simplexmq/blob/stable/protocol/overview-tjr.md">Whitepaper</a>
|
|
<a class="flex-1 flex justify-center text-[1.2rem] tracking-[1px] font-medium text-base px-3 py-4 border-x-0 border-y-0 border-t-[1px] border-solid border-yellow-200 comparison-nav-btn"
|
|
href="/#comparison">Comparison</a>
|
|
<a class="flex-1 flex justify-center text-[1.2rem] tracking-[1px] font-medium text-base px-3 py-4 border-x-0 border-y-0 border-t-[1px] border-solid border-yellow-200 blog-nav-btn"
|
|
href="/blog">Blog</a>
|
|
</div>
|
|
</header>
|
|
|
|
<script>
|
|
const toggleBtn = document.querySelector(".toggle-btn")
|
|
|
|
toggleBtn.addEventListener("click", () => {
|
|
if (toggleBtn.classList.contains("active-toggle-btn")) {
|
|
console.log("unchecked")
|
|
document.querySelector(".mobile-nav").classList.remove("mobile-nav-active")
|
|
toggleBtn.classList.remove("active-toggle-btn")
|
|
} else {
|
|
console.log("checked")
|
|
document.querySelector(".mobile-nav").classList.add("mobile-nav-active")
|
|
toggleBtn.classList.add("active-toggle-btn")
|
|
}
|
|
})
|
|
</script>
|
|
|
|
<style>
|
|
header {
|
|
overflow: hidden;
|
|
}
|
|
|
|
/* ====== NAV TOGGLE BUTTON ====== */
|
|
.toggle {
|
|
display: none;
|
|
}
|
|
|
|
.toggle-btn {
|
|
height: 100%;
|
|
cursor: pointer;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.toggle-btn span {
|
|
width: 20px;
|
|
height: 2px;
|
|
background-color: #062d56;
|
|
position: relative;
|
|
}
|
|
|
|
.toggle-btn span::after,
|
|
.toggle-btn span::before {
|
|
content: "";
|
|
width: 100%;
|
|
height: 100%;
|
|
background-color: #062d56;
|
|
position: absolute;
|
|
left: 0;
|
|
}
|
|
|
|
span::before {
|
|
top: -8px;
|
|
}
|
|
|
|
span::after {
|
|
top: 8px;
|
|
}
|
|
|
|
/* ====== Styles Applied AFTER the CLICK of TOGGLE BUTTON ====== */
|
|
.active-toggle-btn span {
|
|
background-color: transparent;
|
|
}
|
|
|
|
.active-toggle-btn span::before {
|
|
top: 0;
|
|
transform: rotate(45deg);
|
|
background-color: #062d56;
|
|
}
|
|
|
|
.active-toggle-btn span::after {
|
|
top: 0;
|
|
transform: rotate(-45deg);
|
|
background-color: #062d56;
|
|
}
|
|
|
|
.mobile-nav {
|
|
display: none;
|
|
transform: translateX(-100%);
|
|
transition: transform 0.5s ease-out;
|
|
}
|
|
|
|
.mobile-nav-active {
|
|
display: block;
|
|
transform: translateX(0%);
|
|
transition: transform 0.5s cubic-bezier(0.02, 0.48, 0.59, 1.48);
|
|
}
|
|
|
|
@media (max-width: 1024px) {
|
|
.toggle {
|
|
display: inline-block;
|
|
}
|
|
}
|
|
</style>
|
|
|
|
<section class="container">
|
|
<div class="bg-white py-6 sm:py-12 sm:px-8 md:px-16 lg:px-20"><h1 id="simplex-chat" tabindex="-1">Simplex chat</h1>
|
|
<p><strong>Published:</strong> Oct 22, 2020</p>
|
|
<p><a href="https://simplex.chat">https://simplex.chat</a></p>
|
|
<p>I'd really appreciate your feedback, criticism and suggestions on the open-source idea I was slowly working on since early 2020. I recently made the demo server for the low-level message queue protocol ("simplex messaging protocol") and the website to try to explain the chat idea that would use this protocol.</p>
|
|
<p>Haskell protocol implementation: <a href="https://github.com/simplex-chat/simplexmq">https://github.com/simplex-chat/simplexmq</a></p>
|
|
<p>In short, the protocol defines a minimalist set of commands and server responses (just 7 commands and 5 responses sent over TCP) to operate encrypted message queues with in-memory persistence - the implementation uses STM.</p>
|
|
<p>If anything, it was definitely helping to get to know Haskell types etc. much deeper than before :)</p>
|
|
<p>Any criticism would be great - thank you in advance!</p>
|
|
<p>Originally published at <a href="https://www.reddit.com/r/haskell/comments/jg6uh4/simplex_chat/">https://www.reddit.com/r/haskell/comments/jg6uh4/simplex_chat/</a></p>
|
|
</div>
|
|
</section>
|
|
<footer>
|
|
<div class="container">
|
|
<img alt="simplex logo" class="logo d-none-992" src="/img/simplex.svg" />
|
|
<p class="copyright">
|
|
© 2020-22 SimpleX | Open-Source Project <span class="d-none-576">|</span>
|
|
<a class="d-none-576" href="https://github.com/simplex-chat" target="_blank"><img
|
|
src="/img/icons/github.svg" /></a>
|
|
<a class="d-none-576" href="https://www.reddit.com/r/SimpleXChat/" target="_blank"><img
|
|
src="/img/icons/reddit.svg" /></a>
|
|
<a class="d-none-576" href="https://twitter.com/simplexchat" target="_blank"><img
|
|
src="/img/icons/twitter.svg" /></a>
|
|
<a class="d-none-576" href="https://www.linkedin.com/company/simplex-chat/" target="_blank"><img
|
|
src="/img/icons/linkedin.svg" /></a>
|
|
<a class="d-none-576" href="mailto:chat@simplex.chat" target="_blank"><img src="/img/icons/email.svg" /></a>
|
|
</p>
|
|
<div class="github d-none-992">
|
|
<a class="github-button" href="https://github.com/simplex-chat/protocol" data-size="large"
|
|
data-show-count="true" aria-label="Star simplex-chat on GitHub">Star</a>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
|
|
|
|
<script src="/js/article.js"></script>
|
|
</body>
|
|
|
|
</html>
|