Thank you for helping build a credible, neutral reference for how blockchains actually work. This guide covers how to contribute chain profiles, concept pages, and fixes — and, just as importantly, the editorial standards we hold every contribution to.
L1 Library is an encyclopedia, not a marketing site. The thing that makes it worth reading — and worth linking to — is that every page is factual, structured, sourced, and free of hype. Please read the rules below before you start; PRs that ignore them will be sent back for revision.
- Fork the repo
- Create a branch:
git checkout -b add/chain-solana(see Branch Naming) - Copy the template at
templates/chain-profile-template.mdxintosite/src/content/chains/<slug>.mdxand fill it in - Run the build locally (
cd site && npm install && npm run build) — it must pass - Open a pull request (you cannot push to
maindirectly; see Pull Request Process)
add/chain-{slug}— New chain profileadd/concept-{slug}— New concept pagefix/{description}— Correction or bug fiximprove/{description}— Design, performance, or UX improvementdocs/{description}— Documentation changes
These apply to all content. They are the point of the project.
- Neutral and encyclopedic. Write like a reference entry, not an advocate. No hype words ("revolutionary," "game-changer," "the best"), no emoji, no exclamation marks.
- No price or investment content. No price predictions, price history, market commentary, "should you buy," or token-as-investment framing. Market-cap rank is allowed as a neutral stat; dollar prices are not.
- No taking sides. When comparing chains, describe trade-offs factually. Don't declare a winner. A profile should read the same whether or not you hold the token.
- Cite primary sources. Link to whitepapers, protocol specifications, and official documentation. Prefer primary sources over news articles or price sites.
- Every claim is verifiable. If you can't source it, don't state it. Flag genuinely uncertain or contested facts as such.
- Distinguish shipped from proposed. Be explicit about what is live on mainnet versus in testnet, audit, or governance. Date-stamp anything volatile.
- Three depth levels. The "How It Works" section must be written at three levels — Beginner (plain language, no jargon), Intermediate (technical but accessible), and Builder (implementation detail). A non-technical reader should follow the Beginner level completely.
- Add a freshness note. Volatile figures (market-cap rank, validator counts, supply, upgrade status) change. End each profile with a short freshness note and a "Last updated" line, and set
lastUpdatedin frontmatter. - Match the existing bar. Use the published profiles (Bitcoin, Ethereum, Solana, Cardano, Avalanche, Zcash, Polkadot, Cosmos, Algorand) as your reference for depth, structure, and tone.
Content is MDX, which is Markdown plus JSX. Two characters will break the build if misused:
- Never write a bare
<before a number or space. MDX reads<as the start of a JSX tag, so<1 secfails the build. Writeunder 1 secor~1 secinstead. - Curly braces
{ }are JSX. Only use them for section markers like{/* Section 4 */}. Don't put stray{or}in prose. - Internal links must resolve. Use
/chains/<slug>and/concepts/<slug>only for pages that exist. For a chain or concept that isn't on the site yet, use plain bold text (e.g.,**Monero**), not a link. - Run the build before opening a PR.
cd site && npm run build. A single malformed MDX file fails the entire build.
Chain profiles live in site/src/content/chains/. Each is an MDX file with the 11 sections below. The slug is the chain's common name, lowercase and hyphenated (ethereum.mdx, bitcoin-cash.mdx).
The schema is defined in site/src/content/config.ts — match it exactly. Use the exact enum values shown (they are lowercase).
---
name: "Solana" # canonical name, not the ticker
ticker: "SOL"
tagline: "One neutral sentence. No hype."
letter: "S" # single character, for the A–Z directory
launched: "March 16, 2020" # string, human-readable
consensus: "Proof of History + Tower BFT (Proof of Stake)"
language: "Rust, C" # optional
tps: "~1,000–4,000" # optional
blockTime: "~400 ms" # optional
marketCapRank: "7" # optional, string
nativeToken: "SOL"
supply: "~600M+ circulating; no hard cap" # optional
website: "https://solana.com" # required, must be a valid URL
explorer: "https://explorer.solana.com" # optional, valid URL
category: "layer-1" # layer-1 | layer-2 | sidechain | rollup | appchain
consensusType: "pos" # pow | pos | dpos | poa | dag | other
evmCompatible: false # boolean
compareTo: ["ethereum", "avalanche"] # slugs used in the Comparison table
relatedChains: ["bitcoin", "ethereum"] # slugs used in Related Chains
lastUpdated: 2026-06-13 # date, unquoted YYYY-MM-DD
status: "draft" # always "draft" on submission; a maintainer publishes
---Use the exact section order and headings (the template has them scaffolded):
- Overview — Three short paragraphs: what it is, its core design idea, and where it stands today.
- Key Stats — Rendered automatically from frontmatter. Leave the
{/* Section 2 */}marker; don't write a table here. - How It Works — Beginner / Intermediate / Builder (all three required).
- Consensus Mechanism — How blocks are produced and finalized, with key parameters; link to the relevant concept page.
- Use Cases — What people actually do with it.
- Ecosystem — Wallets, infrastructure, notable apps/chains, organizations.
- History & Timeline — Dated milestones.
- Comparison — A table against two relevant peers.
- Related Chains — Short, linked descriptions of neighbors.
- Learning Resources — Whitepaper, docs, and cross-links to concept pages.
- Sources & Citations — Numbered list, then the freshness note and "Last updated" line.
Concept pages live in site/src/content/concepts/. Each has 7 sections. Match the schema in site/src/content/config.ts.
---
title: "Proof of Work"
definition: "One-sentence definition that appears in the pull-quote block."
category: "consensus" # consensus | cryptography | economics | governance |
# scaling | security | smart-contracts | data-structures | networking
usedBy: ["bitcoin"] # chain slugs
relatedConcepts: ["proof-of-stake", "mining-economics"]
alternativeTo: "proof-of-stake" # optional
lastUpdated: 2026-06-13
status: "draft"
---- Definition — The pull-quote; one sentence a non-technical reader understands.
- Why It Matters — Why anyone should care.
- How It Works — Beginner / Intermediate / Builder.
- Examples — Real chains or protocols that use it.
- Tradeoffs — Advantages and disadvantages, fairly stated.
- Related Concepts — Cross-link to at least 2–3 other concept pages.
- Sources — Citations and the "Last updated" line.
Use proof-of-work.mdx as your reference.
Accuracy is the product. If you find an incorrect or outdated claim or a broken link:
- Open an issue using the Correction / bug template, with a source showing the correct information, or
- Submit a PR with the fix and the source in the description.
For changes to the Astro site (components, CSS, layouts, pages):
- Follow the design system in
site/src/styles/global.css; use the existing tokens and the black-and-white palette. - Typography: IBM Plex Mono for headings/labels, Inter for body.
- Keep it zero-JS by default (Astro philosophy); test at desktop and mobile widths.
main is protected — direct pushes are rejected. All changes go through a pull request.
- Push your branch and open a PR (the PR template includes a checklist — complete it).
- Title: clear and descriptive ("Add Solana chain profile," not "Update").
- Description: what changed and why; link any related issue; list your sources.
- Status: new content ships as
status: "draft". A maintainer reviews for accuracy, neutrality, and structure, then flips it to"published". - Build: confirm
npm run buildpasses locally before requesting review.
PRs are reviewed for accuracy, consistency with these editorial rules, and technical correctness. We aim to review within a few days.
By contributing content (MDX files), you agree to license it under CC-BY-SA 4.0. Code contributions are licensed under MIT.
Open an issue or start a discussion. We're building this together — thank you for keeping it accurate and neutral.