Compare commits

..

14 Commits

Author SHA1 Message Date
David E. Perez Negron R. 2e6fdd2b92 delete some test posts 2024-06-28 22:37:43 -06:00
David E. Perez Negron R. 4a8e723253 Update Footer styles 2024-06-28 22:28:13 -06:00
David E. Perez Negron R. 125905222f Setup social networks and some style updates 2024-06-26 23:27:22 -06:00
David E. Perez Negron R. d761e6dc64 cleanup debugg data 2024-06-25 21:23:59 -06:00
David E. Perez Negron R. a7345e90dd don't trust, verify 2024-06-25 19:06:40 -06:00
David E. Perez Negron R. 98698047bb Adding basic landing page, reorganize and specification, get deca buttons to be responsive 2024-06-19 20:43:15 -06:00
David E. Perez Negron R. 67cd96cd33 Adding Logo on dark and light theme, plus favicon update 2024-06-14 14:16:05 -06:00
David E. Perez Negron R. 249cb9d012 Update FAQ page and page layout for the TOC 2024-05-14 21:13:27 -06:00
David E. Perez Negron R. 5b38fdca71 Adding links and partners as post 2024-05-01 19:30:53 -06:00
David E. Perez Negron R. 70db29d578 prepare dev site for testing 2024-05-01 17:15:35 -06:00
David E. Perez Negron R. b238f4c621 Display logo and create img directory 2024-04-10 21:39:25 -06:00
David E. Perez Negron R. 04ba13908b update gitignore: 2024-04-09 21:23:59 -06:00
David E. Perez Negron R. 8005748298 adding missing file 2024-04-09 20:43:28 -06:00
David E. Perez Negron R. 416e00a852 base config 2024-04-09 20:36:54 -06:00
28 changed files with 1876 additions and 0 deletions

5
.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
src/uploads
_vendor
_site
_bin
deno.lock

8
404.md Normal file
View File

@ -0,0 +1,8 @@
---
layout: layouts/base.vto
url: /404.html
---
# Content not found.
Go [home](/).

445
LICENSE.md Normal file
View File

@ -0,0 +1,445 @@
# GNU Free Documentation License
Version 1.3, 3 November 2008
Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation,
Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
## 0. PREAMBLE
The purpose of this License is to make a manual, textbook, or other
functional and useful document "free" in the sense of freedom: to
assure everyone the effective freedom to copy and redistribute it,
with or without modifying it, either commercially or noncommercially.
Secondarily, this License preserves for the author and publisher a way
to get credit for their work, while not being considered responsible
for modifications made by others.
This License is a kind of "copyleft", which means that derivative
works of the document must themselves be free in the same sense. It
complements the GNU General Public License, which is a copyleft
license designed for free software.
We have designed this License in order to use it for manuals for free
software, because free software needs free documentation: a free
program should come with manuals providing the same freedoms that the
software does. But this License is not limited to software manuals; it
can be used for any textual work, regardless of subject matter or
whether it is published as a printed book. We recommend this License
principally for works whose purpose is instruction or reference.
## 1. APPLICABILITY AND DEFINITIONS
This License applies to any manual or other work, in any medium, that
contains a notice placed by the copyright holder saying it can be
distributed under the terms of this License. Such a notice grants a
world-wide, royalty-free license, unlimited in duration, to use that
work under the conditions stated herein. The "Document", below, refers
to any such manual or work. Any member of the public is a licensee,
and is addressed as "you". You accept the license if you copy, modify
or distribute the work in a way requiring permission under copyright
law.
A "Modified Version" of the Document means any work containing the
Document or a portion of it, either copied verbatim, or with
modifications and/or translated into another language.
A "Secondary Section" is a named appendix or a front-matter section of
the Document that deals exclusively with the relationship of the
publishers or authors of the Document to the Document's overall
subject (or to related matters) and contains nothing that could fall
directly within that overall subject. (Thus, if the Document is in
part a textbook of mathematics, a Secondary Section may not explain
any mathematics.) The relationship could be a matter of historical
connection with the subject or with related matters, or of legal,
commercial, philosophical, ethical or political position regarding
them.
The "Invariant Sections" are certain Secondary Sections whose titles
are designated, as being those of Invariant Sections, in the notice
that says that the Document is released under this License. If a
section does not fit the above definition of Secondary then it is not
allowed to be designated as Invariant. The Document may contain zero
Invariant Sections. If the Document does not identify any Invariant
Sections then there are none.
The "Cover Texts" are certain short passages of text that are listed,
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
the Document is released under this License. A Front-Cover Text may be
at most 5 words, and a Back-Cover Text may be at most 25 words.
A "Transparent" copy of the Document means a machine-readable copy,
represented in a format whose specification is available to the
general public, that is suitable for revising the document
straightforwardly with generic text editors or (for images composed of
pixels) generic paint programs or (for drawings) some widely available
drawing editor, and that is suitable for input to text formatters or
for automatic translation to a variety of formats suitable for input
to text formatters. A copy made in an otherwise Transparent file
format whose markup, or absence of markup, has been arranged to thwart
or discourage subsequent modification by readers is not Transparent.
An image format is not Transparent if used for any substantial amount
of text. A copy that is not "Transparent" is called "Opaque".
Examples of suitable formats for Transparent copies include plain
ASCII without markup, Texinfo input format, LaTeX input format, SGML
or XML using a publicly available DTD, and standard-conforming simple
HTML, PostScript or PDF designed for human modification. Examples of
transparent image formats include PNG, XCF and JPG. Opaque formats
include proprietary formats that can be read and edited only by
proprietary word processors, SGML or XML for which the DTD and/or
processing tools are not generally available, and the
machine-generated HTML, PostScript or PDF produced by some word
processors for output purposes only.
The "Title Page" means, for a printed book, the title page itself,
plus such following pages as are needed to hold, legibly, the material
this License requires to appear in the title page. For works in
formats which do not have any title page as such, "Title Page" means
the text near the most prominent appearance of the work's title,
preceding the beginning of the body of the text.
The "publisher" means any person or entity that distributes copies of
the Document to the public.
A section "Entitled XYZ" means a named subunit of the Document whose
title either is precisely XYZ or contains XYZ in parentheses following
text that translates XYZ in another language. (Here XYZ stands for a
specific section name mentioned below, such as "Acknowledgements",
"Dedications", "Endorsements", or "History".) To "Preserve the Title"
of such a section when you modify the Document means that it remains a
section "Entitled XYZ" according to this definition.
The Document may include Warranty Disclaimers next to the notice which
states that this License applies to the Document. These Warranty
Disclaimers are considered to be included by reference in this
License, but only as regards disclaiming warranties: any other
implication that these Warranty Disclaimers may have is void and has
no effect on the meaning of this License.
## 2. VERBATIM COPYING
You may copy and distribute the Document in any medium, either
commercially or noncommercially, provided that this License, the
copyright notices, and the license notice saying this License applies
to the Document are reproduced in all copies, and that you add no
other conditions whatsoever to those of this License. You may not use
technical measures to obstruct or control the reading or further
copying of the copies you make or distribute. However, you may accept
compensation in exchange for copies. If you distribute a large enough
number of copies you must also follow the conditions in section 3.
You may also lend copies, under the same conditions stated above, and
you may publicly display copies.
## 3. COPYING IN QUANTITY
If you publish printed copies (or copies in media that commonly have
printed covers) of the Document, numbering more than 100, and the
Document's license notice requires Cover Texts, you must enclose the
copies in covers that carry, clearly and legibly, all these Cover
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
the back cover. Both covers must also clearly and legibly identify you
as the publisher of these copies. The front cover must present the
full title with all words of the title equally prominent and visible.
You may add other material on the covers in addition. Copying with
changes limited to the covers, as long as they preserve the title of
the Document and satisfy these conditions, can be treated as verbatim
copying in other respects.
If the required texts for either cover are too voluminous to fit
legibly, you should put the first ones listed (as many as fit
reasonably) on the actual cover, and continue the rest onto adjacent
pages.
If you publish or distribute Opaque copies of the Document numbering
more than 100, you must either include a machine-readable Transparent
copy along with each Opaque copy, or state in or with each Opaque copy
a computer-network location from which the general network-using
public has access to download using public-standard network protocols
a complete Transparent copy of the Document, free of added material.
If you use the latter option, you must take reasonably prudent steps,
when you begin distribution of Opaque copies in quantity, to ensure
that this Transparent copy will remain thus accessible at the stated
location until at least one year after the last time you distribute an
Opaque copy (directly or through your agents or retailers) of that
edition to the public.
It is requested, but not required, that you contact the authors of the
Document well before redistributing any large number of copies, to
give them a chance to provide you with an updated version of the
Document.
## 4. MODIFICATIONS
You may copy and distribute a Modified Version of the Document under
the conditions of sections 2 and 3 above, provided that you release
the Modified Version under precisely this License, with the Modified
Version filling the role of the Document, thus licensing distribution
and modification of the Modified Version to whoever possesses a copy
of it. In addition, you must do these things in the Modified Version:
- A. Use in the Title Page (and on the covers, if any) a title
distinct from that of the Document, and from those of previous
versions (which should, if there were any, be listed in the
History section of the Document). You may use the same title as a
previous version if the original publisher of that version
gives permission.
- B. List on the Title Page, as authors, one or more persons or
entities responsible for authorship of the modifications in the
Modified Version, together with at least five of the principal
authors of the Document (all of its principal authors, if it has
fewer than five), unless they release you from this requirement.
- C. State on the Title page the name of the publisher of the
Modified Version, as the publisher.
- D. Preserve all the copyright notices of the Document.
- E. Add an appropriate copyright notice for your modifications
adjacent to the other copyright notices.
- F. Include, immediately after the copyright notices, a license
notice giving the public permission to use the Modified Version
under the terms of this License, in the form shown in the
Addendum below.
- G. Preserve in that license notice the full lists of Invariant
Sections and required Cover Texts given in the Document's
license notice.
- H. Include an unaltered copy of this License.
- I. Preserve the section Entitled "History", Preserve its Title,
and add to it an item stating at least the title, year, new
authors, and publisher of the Modified Version as given on the
Title Page. If there is no section Entitled "History" in the
Document, create one stating the title, year, authors, and
publisher of the Document as given on its Title Page, then add an
item describing the Modified Version as stated in the
previous sentence.
- J. Preserve the network location, if any, given in the Document
for public access to a Transparent copy of the Document, and
likewise the network locations given in the Document for previous
versions it was based on. These may be placed in the "History"
section. You may omit a network location for a work that was
published at least four years before the Document itself, or if
the original publisher of the version it refers to
gives permission.
- K. For any section Entitled "Acknowledgements" or "Dedications",
Preserve the Title of the section, and preserve in the section all
the substance and tone of each of the contributor acknowledgements
and/or dedications given therein.
- L. Preserve all the Invariant Sections of the Document, unaltered
in their text and in their titles. Section numbers or the
equivalent are not considered part of the section titles.
- M. Delete any section Entitled "Endorsements". Such a section may
not be included in the Modified Version.
- N. Do not retitle any existing section to be Entitled
"Endorsements" or to conflict in title with any Invariant Section.
- O. Preserve any Warranty Disclaimers.
If the Modified Version includes new front-matter sections or
appendices that qualify as Secondary Sections and contain no material
copied from the Document, you may at your option designate some or all
of these sections as invariant. To do this, add their titles to the
list of Invariant Sections in the Modified Version's license notice.
These titles must be distinct from any other section titles.
You may add a section Entitled "Endorsements", provided it contains
nothing but endorsements of your Modified Version by various
parties—for example, statements of peer review or that the text has
been approved by an organization as the authoritative definition of a
standard.
You may add a passage of up to five words as a Front-Cover Text, and a
passage of up to 25 words as a Back-Cover Text, to the end of the list
of Cover Texts in the Modified Version. Only one passage of
Front-Cover Text and one of Back-Cover Text may be added by (or
through arrangements made by) any one entity. If the Document already
includes a cover text for the same cover, previously added by you or
by arrangement made by the same entity you are acting on behalf of,
you may not add another; but you may replace the old one, on explicit
permission from the previous publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this License
give permission to use their names for publicity for or to assert or
imply endorsement of any Modified Version.
## 5. COMBINING DOCUMENTS
You may combine the Document with other documents released under this
License, under the terms defined in section 4 above for modified
versions, provided that you include in the combination all of the
Invariant Sections of all of the original documents, unmodified, and
list them all as Invariant Sections of your combined work in its
license notice, and that you preserve all their Warranty Disclaimers.
The combined work need only contain one copy of this License, and
multiple identical Invariant Sections may be replaced with a single
copy. If there are multiple Invariant Sections with the same name but
different contents, make the title of each such section unique by
adding at the end of it, in parentheses, the name of the original
author or publisher of that section if known, or else a unique number.
Make the same adjustment to the section titles in the list of
Invariant Sections in the license notice of the combined work.
In the combination, you must combine any sections Entitled "History"
in the various original documents, forming one section Entitled
"History"; likewise combine any sections Entitled "Acknowledgements",
and any sections Entitled "Dedications". You must delete all sections
Entitled "Endorsements".
## 6. COLLECTIONS OF DOCUMENTS
You may make a collection consisting of the Document and other
documents released under this License, and replace the individual
copies of this License in the various documents with a single copy
that is included in the collection, provided that you follow the rules
of this License for verbatim copying of each of the documents in all
other respects.
You may extract a single document from such a collection, and
distribute it individually under this License, provided you insert a
copy of this License into the extracted document, and follow this
License in all other respects regarding verbatim copying of that
document.
## 7. AGGREGATION WITH INDEPENDENT WORKS
A compilation of the Document or its derivatives with other separate
and independent documents or works, in or on a volume of a storage or
distribution medium, is called an "aggregate" if the copyright
resulting from the compilation is not used to limit the legal rights
of the compilation's users beyond what the individual works permit.
When the Document is included in an aggregate, this License does not
apply to the other works in the aggregate which are not themselves
derivative works of the Document.
If the Cover Text requirement of section 3 is applicable to these
copies of the Document, then if the Document is less than one half of
the entire aggregate, the Document's Cover Texts may be placed on
covers that bracket the Document within the aggregate, or the
electronic equivalent of covers if the Document is in electronic form.
Otherwise they must appear on printed covers that bracket the whole
aggregate.
## 8. TRANSLATION
Translation is considered a kind of modification, so you may
distribute translations of the Document under the terms of section 4.
Replacing Invariant Sections with translations requires special
permission from their copyright holders, but you may include
translations of some or all Invariant Sections in addition to the
original versions of these Invariant Sections. You may include a
translation of this License, and all the license notices in the
Document, and any Warranty Disclaimers, provided that you also include
the original English version of this License and the original versions
of those notices and disclaimers. In case of a disagreement between
the translation and the original version of this License or a notice
or disclaimer, the original version will prevail.
If a section in the Document is Entitled "Acknowledgements",
"Dedications", or "History", the requirement (section 4) to Preserve
its Title (section 1) will typically require changing the actual
title.
## 9. TERMINATION
You may not copy, modify, sublicense, or distribute the Document
except as expressly provided under this License. Any attempt otherwise
to copy, modify, sublicense, or distribute it is void, and will
automatically terminate your rights under this License.
However, if you cease all violation of this License, then your license
from a particular copyright holder is reinstated (a) provisionally,
unless and until the copyright holder explicitly and finally
terminates your license, and (b) permanently, if the copyright holder
fails to notify you of the violation by some reasonable means prior to
60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, receipt of a copy of some or all of the same material does
not give you any rights to use it.
## 10. FUTURE REVISIONS OF THIS LICENSE
The Free Software Foundation may publish new, revised versions of the
GNU Free Documentation License from time to time. Such new versions
will be similar in spirit to the present version, but may differ in
detail to address new problems or concerns. See
<https://www.gnu.org/licenses/>.
Each version of the License is given a distinguishing version number.
If the Document specifies that a particular numbered version of this
License "or any later version" applies to it, you have the option of
following the terms and conditions either of that specified version or
of any later version that has been published (not as a draft) by the
Free Software Foundation. If the Document does not specify a version
number of this License, you may choose any version ever published (not
as a draft) by the Free Software Foundation. If the Document specifies
that a proxy can decide which future versions of this License can be
used, that proxy's public statement of acceptance of a version
permanently authorizes you to choose that version for the Document.
## 11. RELICENSING
"Massive Multiauthor Collaboration Site" (or "MMC Site") means any
World Wide Web server that publishes copyrightable works and also
provides prominent facilities for anybody to edit those works. A
public wiki that anybody can edit is an example of such a server. A
"Massive Multiauthor Collaboration" (or "MMC") contained in the site
means any set of copyrightable works thus published on the MMC site.
"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
license published by Creative Commons Corporation, a not-for-profit
corporation with a principal place of business in San Francisco,
California, as well as future copyleft versions of that license
published by that same organization.
"Incorporate" means to publish or republish a Document, in whole or in
part, as part of another Document.
An MMC is "eligible for relicensing" if it is licensed under this
License, and if all works that were first published under this License
somewhere other than this MMC, and subsequently incorporated in whole
or in part into the MMC, (1) had no cover texts or invariant sections,
and (2) were thus incorporated prior to November 1, 2008.
The operator of an MMC Site may republish an MMC contained in the site
under CC-BY-SA on the same site at any time before August 1, 2009,
provided the MMC is eligible for relicensing.
## ADDENDUM: How to use this License for your documents
To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and
license notices just after the title page:
Copyright (C) 2024 DECENTRALIZED CLIMATE FOUNDATION A.C.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
A copy of the license is included in the section entitled "GNU
Free Documentation License".
If you have Invariant Sections, Front-Cover Texts and Back-Cover
Texts, replace the "with … Texts." line with this:
with the Invariant Sections being LIST THEIR TITLES, with the
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
If you have Invariant Sections without Cover Texts, or some other
combination of the three, merge those two alternatives to suit the
situation.
If your document contains nontrivial examples of program code, we
recommend releasing these examples in parallel under your choice of
free software license, such as the GNU General Public License, to
permit their use in free software.

160
_cms.ts Normal file
View File

@ -0,0 +1,160 @@
import lumeCMS from "lume/cms.ts";
const cms = lumeCMS();
cms.document(
"settings: Global settings for the site",
"src:_data.yml",
[
{
name: "lang",
type: "text",
label: "Language",
},
{
name: "home",
type: "object",
fields: [
{
name: "welcome",
type: "text",
label: "Title",
description: "Welcome message in the homepage",
},
],
},
{
name: "menu_links",
type: "object-list",
fields: [
{
name: "title",
type: "text",
label: "Title",
},
{
name: "url",
type: "text",
label: "URL",
},
],
},
{
name: "extra_head",
type: "code",
description: "Extra content to include in the <head> tag",
},
{
name: "metas",
type: "object",
description: "Meta tags configuration.",
fields: [
"site: text",
"description: text",
"title: text",
"image: text",
"twitter: text",
"lang: text",
"generator: checkbox",
],
},
],
);
cms.collection(
"posts: Blog posts",
"src:posts/*.md",
[
"title: text",
"date: date",
{
name: "draft",
label: "Draft",
type: "checkbox",
description: "If checked, the post will not be published.",
},
{
name: "tags",
type: "list",
label: "Tags",
init(field) {
const { data } = field.cmsContent;
field.options = data.site?.search.values("tags");
},
},
{
name: "comments",
type: "object",
fields: [
{
name: "src",
label: "Link to mastodon post",
type: "url",
},
],
},
{
name: "extra_head",
type: "code",
description: "Extra content to include in the <head> tag",
},
{
name: "content",
type: "markdown",
label: "Content",
},
],
);
cms.collection(
"pages: Additional pages, like about, contact, etc.",
"src:pages/*.md",
[
{
name: "layout",
type: "hidden",
value: "layouts/page.vto",
},
{
name: "title",
type: "text",
label: "Title",
},
{
name: "url",
type: "text",
description: "The public URL of the page (must start with /)",
},
{
name: "menu",
type: "object",
label: "Whether to include in the menu",
fields: [
{
name: "visible",
type: "checkbox",
label: "Show in menu",
},
{
name: "order",
type: "number",
label: "Order",
},
],
},
{
name: "extra_head",
type: "code",
description: "Extra content to include in the <head> tag",
},
{
name: "content",
type: "markdown",
label: "Content",
},
],
);
cms.upload("uploads: Uploaded files", "src:uploads");
export default cms;

15
_config.ts Normal file
View File

@ -0,0 +1,15 @@
import lume from "lume/mod.ts";
import relativeUrls from "lume/plugins/relative_urls.ts";
import blog from "blog/mod.ts";
const site = lume({
location: new URL("https://dev.deca.eco"),
//location: new URL("https://deca.eco"),
});
site.copy("img");
site.use(relativeUrls());
site.use(blog());
export default site;

42
_data.yml Normal file
View File

@ -0,0 +1,42 @@
lang: en
logo_dark: /img/deca-logo-dark.png
logo_light: /img/deca-logo-light.png
home:
welcome: DECA PROTOCOL
icon: favicon.png
menu_links: [
{
text: CCDB,
href: "https://search.deca.eco"
},
{
text: Docs,
href: "https://docs.deca.eco"},
{
text: Devs,
href: "https://git.decentralizedscience.org/DECA"
},
{
text: DAO,
href: "https://snapshot.org/#/decentralizedcarbon.eth"
},
{
text: Forum,
href: "https://forum.deca.eco/"
},
]
extra_head: []
# Metas plugin https://lume.land/plugins/metas/#description
metas:
site: DECA
description: The DECA Protocol site
title: "=title"
image: "=image"
twitter: "@decatokens"
lang: en

133
_includes/css/comments.css Normal file
View File

@ -0,0 +1,133 @@
.comments-section {
margin-top: 5em;
}
.comments-header {
& h2 {
font: var(--font-title);
letter-spacing: var(--font-title-spacing);
margin: 0;
}
& p {
font: var(--font-ui);
color: var(--color-dim);
margin: .5em 0;
}
}
.comments {
display: block;
padding: 2em;
margin-top: 2em;
background: var(--color-highlight);
border-radius: var(--border-radius);
border: solid 1px var(--color-line);
color: var(--color-dim);
font: var(--font-small);
& a {
color: currentColor;
}
& ul {
list-style: none;
margin: 0;
padding: 0;
}
& li + li {
margin-top: 2em;
padding-top: 2em;
border-top: solid 1px var(--color-line);
}
& article {
max-width: 600px;
}
& ul ul {
margin-top: 2em;
padding-top: 2em;
border-top: solid 1px var(--color-line);
@media (min-width: 600px) {
margin-left: 64px;
}
}
.comment-avatar {
width: 50px;
height: 50px;
border-radius: 6px;
float: left;
margin-right: 14px;
box-shadow: 0 0 1px #0009;
}
.comment-user {
text-decoration: none;
display: block;
position: relative;
}
.comment-author {
position: absolute;
left: 35px;
top: 35px;
background: var(--color-highlight);
border-radius: 50%;
width: 20px;
height: 20px;
color: var(--color-primary);
}
.comment-user:hover .comment-username {
text-decoration: underline;
}
.comment-username {
margin-right: .5em;
color: var(--color-text);
}
.comment-useraddress {
font-style: normal;
}
.comment-time {
font-size: small;
}
.comment-address {
color: currentColor;
text-decoration: none;
display: block;
}
.comment-address:hover {
text-decoration: underline;
}
.comment-body {
margin-top: 1em;
margin-left: 64px;
line-height: 1.5;
.invisible {
display: none;
}
.ellipsis::after {
content: "…";
}
.mention {
text-decoration: none;
color: var(--color-text);
&:hover {
text-decoration: underline;
}
}
}
.comment-body p {
margin: 0.5em 0 0;
}
.comment-counts {
display: flex;
column-gap: 1em;
font-size: small;
& svg {
color: var(--color-primary);
}
}
.comment-counts > span {
display: flex;
align-items: center;
column-gap: .3em;
}
}

57
_includes/css/navbar.css Normal file
View File

@ -0,0 +1,57 @@
.navbar {
display: flex;
flex-wrap: wrap;
column-gap: 1rem;
row-gap: 1rem;
justify-content: space-between;
padding: 1rem min(5vw, 5rem);
align-items: center;
}
.navbar-links {
padding: 0;
margin: 0;
list-style: none;
display: flex;
flex-wrap: wrap;
column-gap: 1.5rem;
font: var(--font-ui-bold);
align-items: center;
& [aria-current="page"] {
text-decoration: none;
}
}
.navbar-search {
padding: 0 1em;
margin-left: auto;
display: flex;
align-items: center;
}
.navbar-home {
display: flex;
align-self: center;
align-items: center;
color: var(--color-foreground);
column-gap: 10px;
text-decoration: none;
font: var(--text-body-bold);
letter-spacing: var(--text-title-spacing);
& img {
margin-bottom: 10px;
width:100px;
height:100px;
}
& span {
@media (max-width: 820px) {
display: none;
}
}
}

173
_includes/css/page.css Normal file
View File

@ -0,0 +1,173 @@
.page-header {
margin-bottom: var(--row-gap-small);
& > p:first-child {
margin-top: 0;
}
}
.body-home {
padding: var(--row-gap-xsmall) 0;
max-width: min(100% - 15vw, 45em);
margin: 0 auto;
}
.page-title {
font: var(--font-display);
letter-spacing: var(--font-display-spacing);
margin: 0;
text-wrap: balance;
}
.page-title-landing {
font: var(--font-display);
letter-spacing: var(--font-display-spacing);
text-align: center;
margin: 0;
text-wrap: balance;
}
.page-navigation {
margin-bottom: var(--row-gap-medium);
& ul {
list-style: none;
padding: 0;
margin: 0;
display: flex;
flex-wrap: wrap;
gap: .5em;
}
& h2 { font: var(--font-body-bold);
letter-spacing: var(--font-body-spacing);
margin: .5em 0;
}
}
.page-pagination {
border-top: solid 1px var(--color-line);
margin-top: var(--row-gap-medium);
}
/* Create a section for the index component instead of the base */
.container {
text-align: center;
list-style: none;
padding: 0;
}
.main-button-group {
display: flex;
justify-content: center;
align-items: center;
gap: 20px; /* Space between the main button and the right button */
flex-wrap: wrap; /* Allow wrapping if screen space is limited */
padding: 10px; /* Some padding to avoid touching screen edges */
position: relative;
margin-bottom: 70px;
}
.main-button, .specification-button {
background-color: inherit;
color: inherit;
padding: 15px 30px;
border-radius: 50px;
font-size: 24px;
text-decoration: none;
border-style: double;
position: relative;
transition: all 0.3s ease;
box-shadow: 0 5px 15px var(--color-link-hover, rgba(0, 0, 0, 0.1));
}
.main-button:hover, .main-button:focus,
.specification-button:hover, .specification-button:focus {
color: var(--color-link-hover);
border-style: solid;
transform: translateY(-2px);
box-shadow: 0 8px 20px var(--color-link-hover, rgba(0, 0, 0, 0.4));
}
.hover-buttons {
display: none;
position: absolute;
top: 100%;
left: 50%;
transform: translateX(-50%);
padding-top: 10px;
}
.main-button:hover .hover-buttons,
.main-button:focus .hover-buttons {
display: flex;
}
.specification-button {
margin: 5px 0;
}
.secondary-button {
display: block;
margin: 10px 5px;
padding: 10px 20px;
background-color: inherit;
color: inherit;
border-radius: 20px;
text-decoration: none;
transition: background-color 0.2s ease, transform 0.2s ease;
gap: 20px; /* Space between the main button and the right button */
flex-wrap: wrap; /* Allow wrapping if screen space is limited */
position: relative;
}
.secondary-button:hover, .secondary-button:focus {
border-style: solid;
transform: translateY(-2px);
box-shadow: 0 8px 20px var(--color-link-hover, rgba(0, 0, 0, 0.4));
}
/* Ensure this section gets called from footer.css instead */
.footer {
max-width: var(--max-width);
margin: auto;
text-align: center;
}
.footer-links {
margin: 0;
list-style: none;
padding: 10px 0;
display: flex;
gap: 10px;
justify-content: center;
& svg {
display: block;
width: 50px;
height: 50px;
fill: currentColor;
}
& a {
font: var(--font-display);
display: flex;
align-items: center;
column-gap: 10px;
padding: 10px;
border-radius: 5px;
transition: background-color 0.2s ease,
transform 0.2s ease,
box-shadow 0.5s;
&:hover {
color: var(--color-link-hover);
transform: translateY(-2px);
box-shadow: 0 8px 20px var(--color-link-hover, rgba(0, 0, 0, 0.4));
}
}
}

View File

@ -0,0 +1,29 @@
.postList {
list-style: none;
padding: 0;
& article.post + article.post {
margin-top: var(--row-gap-medium);
}
& li.post + li.post {
margin-top: var(--row-gap-small);
}
& .post-header {
margin-bottom: var(--row-gap-xsmall);
}
& .post-details {
font: var(--font-small);
}
& .post-title {
font: var(--font-title);
letter-spacing: var(--font-title-spacing);
display: block;
& a {
text-decoration: none;
}
}
}

49
_includes/css/post.css Normal file
View File

@ -0,0 +1,49 @@
.post-header {
margin-bottom: var(--row-gap-small);
}
.post-title {
font: var(--font-display);
letter-spacing: var(--font-display-spacing);
margin: 0 0 0.2em;
text-wrap: balance;
}
.post-details {
display: flex;
flex-flow: row wrap;
row-gap: 1em;
column-gap: .5em;
align-items: center;
font: var(--font-small);
color: var(--color-dim);
& p {
margin: 0;
}
& p:nth-child(-n+2)::after {
content: "•";
padding-left: .5em;
align-self: stretch;
}
& p:last-of-type {
margin-right: .5em;
}
& a {
color: inherit;
}
}
.post-tags {
display: flex;
flex-flow: row wrap;
gap: .5em;
align-items: center;
}
.post-link {
display: inline-block;
}

View File

@ -0,0 +1,55 @@
---
layout: layouts/base.vto
bodyClass: body-tag
---
<header class="page-header">
<h1 class="page-title">{{ title }}</h1>
<p>
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="3" cy="13" r="2" fill="currentColor"/><path d="M14 13C14 6.925 9.075 2 3 2M9 13a6 6 0 0 0-6-6" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg> RSS:
<a href="/feed.xml">Atom</a>, <a href="/feed.json">JSON</a>
</p>
{{ if pagination.page === 1 }}
<div class="search" id="search"></div>
{{ /if }}
</header>
{{ if pagination.page === 1 }}
{{ set pageTags = search.pages("type=tag", "tag") }}
{{ if pageTags.length }}
<nav class="page-navigation">
<h2>{{ i18n.search.tags }}:</h2>
<ul class="page-navigation-tags">
{{ for page of pageTags }}
<li><a href="{{ page.url }}" class="badge">{{ page.tag }}</a></li>
{{ /for }}
</ul>
</nav>
{{ /if }}
{{ /if }}
{{ include "templates/post-list.vto" { postslist: results } }}
{{ if pagination.totalPages !== 1 }}
<nav class="page-pagination pagination">
<ul>
{{- if pagination.previous }}
<li class="pagination-prev">
<a href="{{ pagination.previous }}" rel="prev">{{ i18n.nav.previous }}</a>
</li>
{{ /if }}
<li class="pagination-page">
{{ i18n.nav.page }} {{ pagination.page }}
</li>
{{- if pagination.next }}
<li class="pagination-next">
<a href="{{ pagination.next }}" rel="next">{{ i18n.nav.next }}</a>
</li>
{{ /if }}
</ul>
</nav>
{{ /if }}

View File

@ -0,0 +1,10 @@
---
layout: layouts/base.vto
bodyClass: body-tag
---
<header class="page-header">
<p><a href="/archive/">{{ i18n.nav.back }}</a></p>
<h1 class="page-title">{{ title }}</h1>
</header>
{{ include "templates/post-list.vto" { postslist: search.pages(search_query) } }}

View File

@ -0,0 +1,78 @@
<!doctype html>
<html lang="{{ it.lang }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ it.title || metas.title }} - {{ metas.site }}</title>
<!-- Color Scheme Meta Tags -->
<meta name="supported-color-schemes" content="light dark">
<meta name="theme-color" content="hsl(220, 20%, 100%)" media="(prefers-color-scheme: light)">
<meta name="theme-color" content="hsl(220, 20%, 10%)" media="(prefers-color-scheme: dark)">
<!-- External Stylesheets and Scripts -->
<link rel="stylesheet" href="/styles.css">
<link rel="alternate" href="/feed.xml" type="application/atom+xml" title="{{ metas.site }}">
<link rel="alternate" href="/feed.json" type="application/json" title="{{ metas.site }}">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon.png">
<link rel="canonical" href="{{ url |> url(true) }}">
<script src="/js/main.js" type="module"></script>
{{ it.extra_head?.join("\n") }}
</head>
<body>
<nav class="navbar">
<a href="/" class="navbar-home">
<img id="theme-logo" alt="{{ metas.site }}">
</a>
<ul class="navbar-links">
{{- for link of it.menu_links }}
<li>
<a href="{{ link.href }}" target="_blank">
{{ link.text }}
</a>
</li>
{{ /for }}
{{- for entry of search.pages("menu.visible=true", "menu.order") }}
<li>
<a href="{{ entry.url }}"{{ if entry.url == url }} aria-current="page"{{ /if }}>
{{ entry.menu.title || entry.title }}
</a>
</li>
{{ /for }}
<li>
<script>
const lightLogo = "/img/deca-logo-light.png";
const darkLogo = "/img/deca-logo-dark.png";
// Set initial theme and logo
let theme = localStorage.getItem("theme") || (window.matchMedia("(prefers-color-scheme: dark)").matches
? "dark"
: "light");
document.documentElement.dataset.theme = theme;
document.getElementById("theme-logo").src = theme === "dark" ? darkLogo : lightLogo;
function changeTheme() {
theme = theme === "dark" ? "light" : "dark";
localStorage.setItem("theme", theme);
document.documentElement.dataset.theme = theme;
document.getElementById("theme-logo").src = theme === "dark" ? darkLogo : lightLogo;
}
</script>
<button class="button" onclick="changeTheme()">
<span class="icon">◐</span>
</button>
</li>
</ul>
</nav>
<main class="{{ it.bodyClass }}">
{{ content }}
</main>
<!-- Current page: {{ url }} -->
{{ include "templates/footer.vto" }}
</body>
</html>

View File

@ -0,0 +1,38 @@
---
layout: layouts/base.vto
bodyClass: body-tag
---
<article class="post" data-pagefind-body>
<header class="post-header">
<h1 class="post-title">{{ it.title }}</h1>
{{ it.subtitle |> md }}
</header>
{{ if toc.length }}
<nav class="toc">
<h1>Table of contents</h2>
<ol>
{{ for item of toc }}
<li>
<a href="#{{ item.slug }}">{{ item.text }}</a>
{{ if item.children.length }}
<ul>
{{ for child of item.children }}
<li>
<a href="#{{ child.slug }}">{{ child.text }}</a>
</li>
{{ /for }}
</ul>
{{ /if }}
</li>
{{ /for }}
</ol>
</nav>
{{ /if }}
<div class="post-body">
{{ content }}
</div>
</article>

View File

@ -0,0 +1,87 @@
---
layout: layouts/base.vto
bodyClass: body-post
---
<article class="post" data-pagefind-body data-title="{{ title }}" data-pagefind-index-attrs="data-title">
<header class="post-header">
<h1 class="post-title">{{ title }}</h1>
{{ include "templates/post-details.vto" }}
</header>
{{ if toc.length }}
<nav class="toc">
<h2>Table of contents</h2>
<ol>
{{ for item of toc }}
<li>
<a href="#{{ item.slug }}">{{ item.text }}</a>
{{ if item.children.length }}
<ul>
{{ for child of item.children }}
<li>
<a href="#{{ child.slug }}">{{ child.text }}</a>
</li>
{{ /for }}
</ul>
{{ /if }}
</li>
{{ /for }}
</ol>
</nav>
{{ /if }}
<div class="post-body body">
{{ content }}
</div>
{{ if it.footnotes.length }}
<aside role="note" class="footnotes">
<dl>
{{ for note of footnotes }}
<div id={{ note.id }} class="footnote">
<dt><a href="#{{ note.refId }}">{{ note.label }}</a></dt>
<dd>{{ note.content }}</dd>
</div>
{{ /for }}
</dl>
</aside>
{{ /if }}
{{ if it.comments?.src }}
<aside class="comments-section">
<header class="comments-header">
<h2>{{ i18n.comments.title }}</h2>
<p>{{ i18n.comments.description.replace(":src:", it.comments.src) }}</p>
</header>
<mastodon-comments src="{{ it.comments.src }}" cache="{{ it.comments.cache ?? 60 }}" class="comments">
{{ i18n.comments.empty }}
</mastodon-comments>
{{ /if }}
</aside>
</article>
<nav class="page-pagination pagination">
<ul>
{{- set previousPost = search.previousPage(url, "type=post") }}
{{- if previousPost }}
<li class="pagination-prev">
<a href="{{ previousPost.url }}" rel="prev">
<span>{{ i18n.nav.previous_post }}</span>
<strong>{{ previousPost.title }}</strong>
</a>
</li>
{{ /if }}
{{- set nextPost = search.nextPage(url, "type=post") }}
{{- if nextPost }}
<li class="pagination-next">
<a href="{{ nextPost.url }}" rel="next">
<span>{{ i18n.nav.next_post }}</span>
<strong>{{ nextPost.title }}</strong>
</a>
</li>
{{ /if }}
</ul>
</nav>

View File

@ -0,0 +1,35 @@
<footer class="footer">
<ul class="footer-links">
<li>
<a href="https://t.me/deca_currency" target="_blank">
<svg height="512px" version="1.1" viewBox="0 0 512 512" width="512px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g id="comp_x5F_335-telegram"><g><path d=" M477.805,102.98l-67.327,317.516c-5.08,22.41-18.326,27.984-37.15,17.431l-102.585-75.596l-49.497,47.607 c-5.477,5.478-10.06,10.061-20.617,10.061l7.37-104.479l190.129-171.805c8.268-7.37-1.792-11.454-12.848-4.083L150.233,287.633 l-101.19-31.672c-22.011-6.873-22.408-22.012,4.581-32.568L449.419,70.911C467.744,64.039,483.779,74.993,477.805,102.98z"/></g></g><g id="Layer_1"/></svg>
</a>
</li>
<li>
<a href="https://x.com/@decatokens" target="_blank">
<svg role="img" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" width="24px" height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve"><path d="M14.095479,10.316482L22.286354,1h-1.940718l-7.115352,8.087682L7.551414,1H1l8.589488,12.231093L1,23h1.940717 l7.509372-8.542861L16.448587,23H23L14.095479,10.316482z M11.436522,13.338465l-0.871624-1.218704l-6.924311-9.68815h2.981339 l5.58978,7.82155l0.867949,1.218704l7.26506,10.166271h-2.981339L11.436522,13.338465z"/></svg>
</a>
</li>
<li>
<a href="https://matrix.to/#/#DECA:matrix.org" target="_blank">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 520 520" style="enable-background:new 0 0 520 520;" xml:space="preserve">
<path d="M13.7,11.9v496.2h35.7V520H0V0h49.4v11.9H13.7z"/>
<path d="M166.3,169.2v25.1h0.7c6.7-9.6,14.8-17,24.2-22.2c9.4-5.3,20.3-7.9,32.5-7.9c11.7,0,22.4,2.3,32.1,6.8 c9.7,4.5,17,12.6,22.1,24c5.5-8.1,13-15.3,22.4-21.5c9.4-6.2,20.6-9.3,33.5-9.3c9.8,0,18.9,1.2,27.3,3.6c8.4,2.4,15.5,6.2,21.5,11.5 c6,5.3,10.6,12.1,14,20.6c3.3,8.5,5,18.7,5,30.7v124.1h-50.9V249.6c0-6.2-0.2-12.1-0.7-17.6c-0.5-5.5-1.8-10.3-3.9-14.3 c-2.2-4.1-5.3-7.3-9.5-9.7c-4.2-2.4-9.9-3.6-17-3.6c-7.2,0-13,1.4-17.4,4.1c-4.4,2.8-7.9,6.3-10.4,10.8c-2.5,4.4-4.2,9.4-5,15.1 c-0.8,5.6-1.3,11.3-1.3,17v103.3h-50.9v-104c0-5.5-0.1-10.9-0.4-16.3c-0.2-5.4-1.3-10.3-3.1-14.9c-1.8-4.5-4.8-8.2-9-10.9 c-4.2-2.7-10.3-4.1-18.5-4.1c-2.4,0-5.6,0.5-9.5,1.6c-3.9,1.1-7.8,3.1-11.5,6.1c-3.7,3-6.9,7.3-9.5,12.9c-2.6,5.6-3.9,13-3.9,22.1 v107.6h-50.9V169.2H166.3z"/>
<path d="M506.3,508.1V11.9h-35.7V0H520v520h-49.4v-11.9H506.3z"/>
</svg>
</a>
</li>
<li>
<a href="https://git.decentralizedscience.org/deca" target="_blank">
<svg role="img" fill="currentColor" viewBox="0 0 24 24" class="h-6 w-6" aria-hidden="true"><path fill-rule="evenodd" d="M4.209 4.603c-.247 0-.525.02-.84.088-.333.07-1.28.283-2.054 1.027C-.403 7.25.035 9.685.089 10.052c.065.446.263 1.687 1.21 2.768 1.749 2.141 5.513 2.092 5.513 2.092s.462 1.103 1.168 2.119c.955 1.263 1.936 2.248 2.89 2.367 2.406 0 7.212-.004 7.212-.004s.458.004 1.08-.394c.535-.324 1.013-.893 1.013-.893s.492-.527 1.18-1.73c.21-.37.385-.729.538-1.068 0 0 2.107-4.471 2.107-8.823-.042-1.318-.367-1.55-.443-1.627-.156-.156-.366-.153-.366-.153s-4.475.252-6.792.306c-.508.011-1.012.023-1.512.027v4.474l-.634-.301c0-1.39-.004-4.17-.004-4.17-1.107.016-3.405-.084-3.405-.084s-5.399-.27-5.987-.324c-.187-.011-.401-.032-.648-.032zm.354 1.832h.111s.271 2.269.6 3.597C5.549 11.147 6.22 13 6.22 13s-.996-.119-1.641-.348c-.99-.324-1.409-.714-1.409-.714s-.73-.511-1.096-1.52C1.444 8.73 2.021 7.7 2.021 7.7s.32-.859 1.47-1.145c.395-.106.863-.12 1.072-.12zm8.33 2.554c.26.003.509.127.509.127l.868.422-.529 1.075a.686.686 0 0 0-.614.359.685.685 0 0 0 .072.756l-.939 1.924a.69.69 0 0 0-.66.527.687.687 0 0 0 .347.763.686.686 0 0 0 .867-.206.688.688 0 0 0-.069-.882l.916-1.874a.667.667 0 0 0 .237-.02.657.657 0 0 0 .271-.137 8.826 8.826 0 0 1 1.016.512.761.761 0 0 1 .286.282c.073.21-.073.569-.073.569-.087.29-.702 1.55-.702 1.55a.692.692 0 0 0-.676.477.681.681 0 1 0 1.157-.252c.073-.141.141-.282.214-.431.19-.397.515-1.16.515-1.16.035-.066.218-.394.103-.814-.095-.435-.48-.638-.48-.638-.467-.301-1.116-.58-1.116-.58s0-.156-.042-.27a.688.688 0 0 0-.148-.241l.516-1.062 2.89 1.401s.48.218.583.619c.073.282-.019.534-.069.657-.24.587-2.1 4.317-2.1 4.317s-.232.554-.748.588a1.065 1.065 0 0 1-.393-.045l-.202-.08-4.31-2.1s-.417-.218-.49-.596c-.083-.31.104-.691.104-.691l2.073-4.272s.183-.37.466-.497a.855.855 0 0 1 .35-.077z" clip-rule="evenodd"></path></svg>
</a>
</li>
<li>
<a href="https://www.youtube.com/channel/UC-HId3XrWUFuJcyK8DL8ZEQ" target="_blank">
<svg role="img" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#000"><path d="M12.04 3.5c.59 0 7.54.02 9.34.5a3.02 3.02 0 0 1 2.12 2.15C24 8.05 24 12 24 12v.04c0 .43-.03 4.03-.5 5.8A3.02 3.02 0 0 1 21.38 20c-1.76.48-8.45.5-9.3.51h-.17c-.85 0-7.54-.03-9.29-.5A3.02 3.02 0 0 1 .5 17.84c-.42-1.61-.49-4.7-.5-5.6v-.5c.01-.9.08-3.99.5-5.6a3.02 3.02 0 0 1 2.12-2.14c1.8-.49 8.75-.51 9.34-.51zM9.54 8.4v7.18L15.82 12 9.54 8.41z"/></svg>
</a>
</li>
</ul>
</footer>

View File

@ -0,0 +1,28 @@
<div class="post-details">
{{ if author }}
{{ set page = search.page(`type=author author="author"`) }}
{{ if page }}
<p>{{ i18n.post.by}} <a data-pagefind-filter="author" href="{{ page.url }}">{{ author }}</a></p>
{{ else }}
<p>{{ i18n.post.by}} {{ author }}</p>
{{ /if }}
{{ /if }}
<p>
<time datetime="{{ date |> date('DATETIME') }}">
{{ date |> date('HUMAN_DATE') }}
</time>
</p>
<p>{{ it.readingInfo.minutes }} {{ i18n.post.reading_time}}</p>
<div class="post-tags">
{{ for tag of tags }}
{{ set page = search.page(`type=tag tag="${tag}"`) }}
{{ if page }}
<a data-pagefind-filter="filter" class="badge" href="{{ page.url }}">{{ tag }}</a>
{{ /if }}
{{ /for }}
</div>
</div>

View File

@ -0,0 +1,18 @@
<ul class="postList">
{{ for post of postslist }}
<li class="post">
<h2 class="post-title">
<a href="{{ post.url }}" {{ if post.url == url }} aria-current="page"{{ /if }}>
{{ post.title || post.url }}
</a>
</h2>
{{ include "templates/post-details.vto" {
date: post.date,
tags: post.tags,
author: post.author,
readingInfo: post.readingInfo
} }}
</li>
{{ /for }}
</ul>

17
deno.json Normal file
View File

@ -0,0 +1,17 @@
{
"imports": {
"lume/": "https://deno.land/x/lume@v2.1.2/",
"blog/": "https://deno.land/x/lume_theme_simple_blog@v0.15.1/"
},
"tasks": {
"lume": "echo \"import 'lume/cli.ts'\" | DENO_DIR=_vendor deno run -A -",
"build": "deno task lume",
"serve": "deno task lume -s",
"cms": "deno task lume cms"
},
"compilerOptions": {
"types": [
"lume/types.ts"
]
}
}

BIN
img/deca-logo-dark.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 247 KiB

BIN
img/deca-logo-light.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 KiB

BIN
img/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

29
index.vto Normal file
View File

@ -0,0 +1,29 @@
---
layout: layouts/base.vto
bodyClass: body-home
title: Home
---
<header class="page-header">
<h1 class="page-title-landing">{{ home.welcome }}</h1>
</header>
<section class="container">
<div class="main-button-group">
<a href="https://docs.google.com/presentation/d/1H4V5X0X-9jnulwmmQBKk7PiStqKoPh_t_h7F0R3kLw0/edit?usp=sharing" target="_blank" class="specification-button">Specification</a>
<div class="main-button">
Get Deca
<div class="hover-buttons">
<a href="https://app.uniswap.org/swap?inputCurrency=ETH&outputCurrency=0x3556a5005d5411603e0115efd9b875fdfb3ad7e9&chain=mainnet" target="_blank" class="secondary-button">Mainnet</a>
<a href="https://app.uniswap.org/swap?inputCurrency=ETH&outputCurrency=0x02f1cb850799d651d56775dae04f66362eb8e4b2&chain=arbitrum" target="_blank" class="secondary-button">Arbitrum</a>
</div>
</div>
</div>
<br>
<a href="./faq/#don't-trust%2C-verify!">VERIFY YOUR DECA TOKENS</a>
<br>
<br>
<a href="https://certificate.quantstamp.com/full/deca-d-ecentralized-c-arbon-tokens-itde-initial-token-distribution-event.pdf">DECA SECURITY AUDIT</a>
</section>
<br>

48
pages/blog.vto Normal file
View File

@ -0,0 +1,48 @@
---
layout: layouts/base.vto
bodyClass: body-home
title: Blog
url: /blog/
menu:
visible: true
order: 2
---
<header class="page-header">
<h1 class="page-title">{{ home.welcome }}</h1>
<div class="search" id="search"></div>
</header>
<section class="postList">
{{ for post of search.pages("type=post", "date=desc", 3) }}
<article class="post">
<header class="post-header">
<h2 class="post-title">
<a href="{{ post.url }}" {{ if post.url == url }} aria-current="page"{{ /if }}>
{{ post.title || post.url }}
</a>
</h2>
{{ include "templates/post-details.vto" {
date: post.date,
tags: post.tags,
author: post.author,
readingInfo: post.readingInfo
} }}
</header>
<div class="post-excerpt body">
{{ post.excerpt |> md }}
</div>
<a href="{{ post.url }}" class="post-link">
{{ i18n.nav.continue_reading }}
</a>
</article>
{{ /for }}
</section>
<hr>
<p>{{ i18n.nav.archive }}</p>

258
pages/faq.md Normal file
View File

@ -0,0 +1,258 @@
---
layout: layouts/page.vto
title: FAQs
url: /faq/
menu:
visible: true
order: 3
---
## What is DECA Token?
DECA Token is a token backed up by <a href="https://search.deca.eco" target="_blank" >decentralized carbon credits</a>.
The goal is to create governance for the open collective DAO and develop the
DECA protocol as a public good that supports projects with social and
environmental impact and avoids that CO2 gets into the atmosphere in order to
fulfill the Paris Agreement goals.
### How to get the DECA Token?
Currently DECA Token has two liquidity pools at uniswap Ethereum and Arbitrum
Networks
* <a href="https://app.uniswap.org/swap?inputCurrency=ETH&outputCurrency=0x3556a5005d5411603e0115efd9b875fdfb3ad7e9&chain=mainnet" target="_blank"> Uniswap on the Ethereum Network</a>
* <a href="https://app.uniswap.org/swap?inputCurrency=ETH&outputCurrency=0x02f1cb850799d651d56775dae04f66362eb8e4b2&chain=arbitrum" target="_blank"> Uniswap Arbitrum L2 Network</a>
It is up to the comunity to provide liquidity and bridge into other Ethereum
Layers or Dexes. If you did please contact us to verify and update this section.
> Disclossure Agreement:
> You should be aware of your own country cryptocurrency regulations and it is
your own responsability to comply with the laws of your country.
### Don't trust, VERIFY!
**IMPORTANT:** Always verify the address of the DECA Smart contract. Here is a
list of DECA contracts in multiple Networks:
| Network | Contract |
|----------|--------------------------------------------------------------------------------------------------------------------------------------------------|
| Ethereum | <a href="https://etherscan.io/token/0x3556a5005d5411603e0115efd9b875fdfb3ad7e9" target="_blank"> 0x3556a5005d5411603e0115efd9b875fdfb3ad7e9</a>|
| Arbitrum | <a href="https://arbiscan.io/token/0x02f1CB850799D651d56775dAe04F66362eb8e4B2" target="_blank"> 0x02f1CB850799D651d56775dAe04F66362eb8e4B2</a>|
| Linea | <a href="https://lineascan.build/token/0x380d8b3fbdd15ad5ff4bc5fb5393fcd10dc2a68b?a=0x3D038bA1e06e1d600E3e68F0dbD7b28828786C25" target="_blank">0x380D8b3FbDD15Ad5ff4Bc5Fb5393FCd10dc2A68b</a> |
| ZKEVM | <a href="https://zkevm.polygonscan.com/token/0x34f4e513517f7aea7d6ef797b30ed56af8000344?a=0xDDd93CEC5843f471Eb2b8B2886b2Be32555B5209" target="_blank">0x34f4E513517f7aEA7D6Ef797b30Ed56AF8000344</a> |
| ZKSync | Unknown |
> Notice: There might be some fake smart contracts trying to look like the DECA
> smart contract or fake DECA tokens.
### Can I mine DECA Token?
DECA Token cannot be mined or minted. It is based on the ERC20 created by an
ICO that previously backed up the DECA Token minting with Decentralized Carbon
Credits, DECA Token has a limited supply, and its security has been audited.
DECA Governance token will be able to be minted/mined in the future, and there
will be the possibility to migrate DECA Token to the DECA Protocol as DECA
Governance tokens if requested.
## What is the difference between the DECA Token and the DECA Governance Token?
Currently, the DECA Token works with the ERC20 standard and is used in the
<a href="https://snapshot.org/#/decentralizedcarbon.eth" target="_blank">snapshot DAO</a>
for governance purposes. It also includes a record of the decentralized carbon
credits database (A.K.A decentralized backlog) which holds a record of the
previous migrated carbon credits to back up the emissions on the DECA Token.
The DECA Governance Token will be an updated version of the DECA token with
added Governance feautures and tokenomics model with <a href="https://medium.com/@MarBlueBucket.AI/what-does-ultrasound-money-mean-aa6f1eb1da4" target="_blank">ultrasound money like properties</a>
. The goal is to create a model that controls the DECA Governance Token
minting as reward to the participants of the [DECA Minting/Mining Use Case]()
Process, which also mints a secondary token (Carbon Token) as backup by the
same mechanism. This secondary token represents the decentralized carbon credits
or a reduction proof of 1 ton CO2 offset 1:1 equivalence following some ISO standards
and technical DAO Approval.
## More about the carbon token
The carbon token is the representation of 1 tco2 offset, either backup by
previously decentralized carbon credits in the early phase, or by a verified
technical DAO Committee that approves that it was created following the ISO 14064
standard as compliance.
## What is the DECA Protocol?
Since the model is very abstract, it serves many use cases. Also, the base proto
col design intends to be modular and upgradeable if the DAO Decides to make
changes, and thus, we consider this a base protocol that can support green
energy and carbon offset decentralized solutions.
## What are the DECA Offset Certificates?
The carbon token will have inflationary and burnable properties, and in the
event of being burned, there will be burning proof added to the DECA Offset
Certificates (Soulbound tokens with offset tracing features capabilities)
> Think of it as a proof of carbon offset in a certificate
The DECA Offset Certificates are [Non-Transferable NFTs](https://vitalik.eth.limo/general/2022/01/26/soulbound.html)
## What are carbon credits?
Basically, they are digital assets that are equivalent to one metric ton
(1000kg/2205 lbs) of CO2 equivalent. The different kinds of certificates (CER,
ERU, AAU, RMU, etc.), the virtual currency of the carbon market, are called
carbon credits or carbon offsets. In the literature, two definitions of carbon
credits are common.
A carbon credit is a tradable instrument that represents either:
- A permit which gives the holder the right to emit one ton of carbon dioxide or
equivalent greenhouse gas (tCO2e) into the atmosphere, or
- A certificate from a project that represents the removal or avoidance of one
tCO2e from the atmosphere.
## What is the Paris Agreement?
The Paris Agreement set out to improve upon and replace the Kyoto Protocol, an
earlier international treaty designed to curb the release of greenhouse gases.
It entered into force on November 4, 2016, and has been signed by 197 countries
and ratified by 187 as of November 2019.
Paris Agreement, in full Paris Agreement Under the United Nations Framework
The Convention on Climate Change, also called the Paris Climate Agreement, or
COP21, is an international treaty, named for the city of Paris, France. It was
adopted in December 2015 and aimed to reduce the emissions of gases that
contribute to global warming.
## What are the carbon markets?
Carbon markets arise with the intention of obtaining the necessary emission
reductions (targets) at the lowest cost: whoever can carry out the reduction
actions at a not very high cost performs them. Whoever costs more, buys and
helps finance, in this way, the projects of the former: this is how the
efficiency of the system is achieved.
With this in mind, the European emissions trading market emerged in 2005. The
objective was to meet the objectives established by the Kyoto protocol and for
the European industry to contribute in the most optimal way. Each issuing
facility had a reduction target to meet and could meet it either by making
technological changes that would reduce its own emissions or, if that option
was complicated and expensive, by purchasing emission rights.
## Why should I trust DECA?
DECA seeks to create a fair and transparent way for parties to easily
participate in a decentralized, low-carbon economy. With DECA, individuals are
part of the carbon credit process and can vote on the way they get generated,
used, and allocated. This means that DECA community members can use the
platform to enhance the scientific rigor of their local jurisdiction or to seek
validation of carbon credit from one jurisdiction to another. The DECA Protocol
seeks to redress the wrongs of carbon emissions by adhering to the principles of
the protocol and by opening the process of the Paris Agreement to a worldwide
audience.
DECA smart contract was audited by Quantstamp, a trusted leader in blockchain
security, and delivers end-to-end blockchain solutions for the worlds largest
enterprises. The entire project is completely open-source and can be accessed by
everyone.
* 100% FOSS software
* A community-based project
* DAO decision-making
* **Don't trust; verify!**
## How does the GAS thing work on an EVM-based blockchain?
DECA Token and DECA Protocol operate on the Ethereum blockchain and Layer 2
blockchains, which uses a technology called the Ethereum Virtual Machine to
execute Smart Contracts.
As with any blockchain, you need to pay a fee to make a transaction. In
Ethereum, the name of this fee is gas, and it is required to run processes or
make transactions. These transaction fees are covered in Ethereum (yes, you
must have some ether in the wallet). There are two parameters you need to set
in the gas amount or fee to make it work properly: one is GAS AMOUNT or UNITS
the other is the gas price.
- The GAS UNITS are the minimum required to process the transaction.
- The GAS PRICE is an amount related to how fast the transaction will be
processed.
The GAS UNITS are recommended to have 100 000 for two main reasons: in test
need, we need more, it is easy to remember, and you get back the units the
transaction did not use as change (IMPORTANT: if you use less than 65 000, You
might lose your transaction and the fee/gas).
The GAS PRICE depends on how much congestion is in the network, we used to say
30 GWEI is an average good amount but for some reasons, this may vary a lot, so
the best way is always to verify the congestion and check how fast you want your
transaction to be done by the site [eth gas station](https://www.ethgasstation.info/)
which will give you some recommendations on how much GWEI you should use
depending on how fast you want your transaction.
## When DECA cancels carbon credits, why doesn't the token lose value?
DECA creates value through the cancellation of carbon credits in two ways:
* It supports projects with social and environmental aspects and prevents CO2
from entering the atmosphere. Each carbon credit is unique, and the purchase
price of the carbon credit is frozen in the blockchain and represented in the
secondary carbon token.
You can compare it with contracting a service; the value of the service isn't calculated during the project's development but only in its execution afterward.
## What happens if DECA doesn't reach or surpasses the soft cap?
DECA has an ambitious goal to save the environment: The project team wants to
raise 10 Million USD. If DECA doesn´t reach the softcap, the business plan will
be adjusted but not stop the development of The DECA Platform.
If DECA surpasses the soft cap, the carbon credit percentage will be increased
in order to support more environmental and social projects.
Furthermore, the DECA Protocol Development will include a new tokenomics model
to incentivize its community and carbon market participants with their
reduction of carbon footprints and carbon credits integration into the protocol
to further the DECA Governance Token.
## Who is behind DECA?
### Currently
The DECA DAO will follow up on the development as an open collective group
to develop the DECA Protocol as a common good and fully free software project.
We still get support from other organizations and previous project developers.
### 2022-2024
The Decentralized Climate Foundation, which is a non-profit organization, is
currently leading the DECA Project and other green energy and footprint
offset projects.
### 2019-2022
DECA token and Deca Search where originaly developed by two Canadian companies:
Neetsec International Inc (NSI) & Innovative Hydrogen Solutions (IHS);
Innovative Hydrogen Solutions is a company founded in 2004 and based
in Aurora, Ontario; Innovative Hydrogen Solutions develops and commercializes
new hydrogen-based energy and power technologies that improve internal
combustion engine performance.
NSI is an open-source, cybersecurity, and blockchain solutions company founded
in 2019 in Aurora, Ontario.
DECA Ecosystem is a project filled with visionaries, experts, and believers
unified by the possibility that there is a better tomorrow.
## How to support DECA
- Help Solve Development Issues at git.
- Provide Liquidity and/or donate to the DAO Vault.
- Join our community groups and ask us.

5
posts/_data.yml Normal file
View File

@ -0,0 +1,5 @@
type: post
layout: layouts/post.vto
metas:
title: "=title"

54
posts/partners.md Normal file
View File

@ -0,0 +1,54 @@
---
title: Partners
date: '2024-04-29'
author: p1r0
tags:
- PARTNERS
---
Our partners and the main project developers who start on the DECA Project.
Thanks for the support!
<!--more-->
## Decentralized Climate foundation.
> Governance and legal assistance
The Decentralized Climate Foundation (DCF) is a non-profit organization based
in Mexico City which supports decentralization of environmental and social
projects. We believe open governance of projects through decentralization will
provide transparency and trust.
[visit website](https://decentralizedclimate.org)
## Decentralized Science
> Research and decentralized tech.
The Decentralized Science Project is an open collective group which develops free and
decentralized technologies with a non profit perspective. The goal is to
give an open consensus and science debate. By dedicating itself to the development of public goods and promoting an open,
egalitarian platform for scientific exploration and education, Decentralized
Science is reshaping how scientific inquiry and innovation are pursued, making
it more inclusive, transparent, and focused on genuine discovery and
advancement.
[visit website](https://decentralizedscience.org)
## Innovative Hydrogen Solutions Inc.
> Project Funding
Innovative Hydrogen Solutions Inc. is a team of professionals supported by
expert scientists dedicated to the development of hydrogen technologies.
[visit website](https://innovativehydrogen.com/)
## Neetsec International Inc.
> Original Developers
NSI is looking to be a step ahead in the field of security systems and modern
cryptography to provide solutions against threats into the digital world.
[visit website](https://neetsec.com/)