2026-06-03 09:32:27 +00:00
---
title: Contributing
2026-06-03 10:29:22 +00:00
icon: lucide/heart-handshake
2026-06-03 09:32:27 +00:00
---
# Contributing to Tree of Ascension Docs
Welcome! This guide will get you from zero to making your first edit — even if you've never used git before.
> **🔒 Registration is currently closed.** New contributor accounts are not available at this moment. If you'd like to get involved, solve the puzzle below to reveal the contact email and request access.
---
## 🔐 Request access
< div class = "captcha-game" style = "background:linear-gradient(135deg,#f0f7f2,#e5f0e8);border-radius:16px;padding:1.5rem 1.8rem;margin:1.2rem 0 1.8rem;text-align:center;border:1px solid #c8dcd0 ;" >
< p style = "margin:0 0 1rem;color:#3d6b52;font-weight:650;font-size:1.05rem;" > 🌱 Click each leaf in order to reveal the contact email:< / p >
< div id = "leaf-container" style = "display:flex;gap:0.8rem;justify-content:center;align-items:center;flex-wrap:wrap;" > < / div >
< p id = "captcha-hint" style = "margin:0.9rem 0 0;font-size:0.85rem;color:#6b8b7a;" > Click them from smallest to largest 🌱 → 🌳< / p >
< div id = "captcha-result" style = "display:none;margin-top:1rem;padding:0.8rem 1rem;background:white;border-radius:10px;font-size:1.05rem;border:1px dashed #92ad9e ;" ></ div >
< / div >
< script >
(function(){
if(window._leafCaptchaDone)return;window._leafCaptchaDone=true;
var leafTypes=[{e:'🌱'},{e:'🌿'},{e:'🪴'},{e:'🌳'}];
// shuffle
for(var i=leafTypes.length-1;i>0;i--){var j=Math.floor(Math.random()*(i+1));var t=leafTypes[i];leafTypes[i]=leafTypes[j];leafTypes[j]=t;}
var container=document.getElementById('leaf-container');
var correct=[]; // will hold positions of 🌱,🌿,🪴,🌳 in shuffled visual order
leafTypes.forEach(function(l,pos){
if(l.e==='🌱')correct[0]=pos;
if(l.e==='🌿')correct[1]=pos;
if(l.e==='🪴')correct[2]=pos;
if(l.e==='🌳')correct[3]=pos;
var s=document.createElement('span');
s.textContent=l.e;
s.id='leaf-'+pos;
s.style.cssText='cursor:pointer;display:inline-flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:50%;background:#4a8262;color:white;font-size:1.4rem;transition:all 0.3s;user-select:none;';
s.onclick=function(){captchaClick(pos);};
container.appendChild(s);
});
var order=[],step=0;
function resetAll(){
order=[];step=0;
for(var i=0;i< 4 ; i + + ) { var p = document.getElementById('leaf-'+i);if(p)p.style.background='#4a8262';}
}
window.captchaClick=function(i){
if(order.indexOf(i)!==-1)return;
order.push(i);
var p=document.getElementById('leaf-'+i);if(p)p.style.background='#b9a5d7';
if(correct[step]===i){step++;
if(step===4){
var r=document.getElementById('captcha-result');
r.innerHTML='📧 < a href = \"mailto:tree.ad@use.startmail.com \"> tree.ad@use.startmail.com</ a > ';
r.style.display='block';
var h=document.getElementById('captcha-hint');
h.textContent='✨ You found it! Send an email to request access.';
}
}else{
resetAll();
document.getElementById('captcha-hint').textContent='Not quite — try again! Click smallest to largest 🌱 → 🌿 → 🪴 → 🌳';
}
};
})();
< / script >
Once you have access, read on below.
---
## 🛠 How it works
2026-06-03 10:29:22 +00:00
| What | Details |
| ---------------- | -------------------------------------------------------------------------------------------- |
| **Site host** | [Forgejo ](https://forgejo.org ) — a friendly, self-hosted git platform |
| **Repo** | [bali.krystl.org/aja/up ](https://bali.krystl.org/aja/up ) |
| **Built with** | [Zensical ](https://zensical.org ) — turns Markdown files into a beautiful docs site |
2026-06-03 09:32:27 +00:00
| **Local editor** | [Tolaria ](https://tolaria.dev ) — a simple desktop app for editing Markdown with git built in |
---
## ✏️ Making your first edit
Follow these steps. If you get stuck, the answer is usually just a few clicks away.
### Step 1 — Open the repo in Forgejo
Go to ** [bali.krystl.org/aja/up ](https://bali.krystl.org/aja/up )** and sign in with your account.
### Step 2 — Create your branch
Every edit lives on its own branch. This keeps the main site safe while you work.
- Click the **branch dropdown** (near the top of the page, it probably says `main` or `master` )
- Type a short name for your branch — like `add-meditation-guide` or `fix-typo-daily-sadhana`
- Click ** "Create branch"**
You're now on your own copy of the site. Any changes you make stay on this branch until you're ready to share them.
### Step 3 — Edit a file
- Browse to the file you want to edit (all content lives in the `docs/` folder)
- Click the **pencil icon** (✏️) in the toolbar above the file
- Make your changes using Markdown (see our [Markdown quick reference ](markdown.md ))
- Scroll down and write a short commit message — something like `Add breathing exercise section`
- Click ** "Commit changes"**
### Step 4 — Open a Pull Request
When your changes are ready:
- Go back to the repo homepage
2026-06-03 10:29:22 +00:00
- You'll see a banner: _"You pushed to your branch — want to open a pull request?"_
2026-06-03 09:32:27 +00:00
- Click ** "Compare & pull request"**
- Add a title and a short description of what you changed
- Click ** "Create pull request"**
A maintainer will review your changes and merge them into the main site. That's it! 🎉
---
## 💻 Editing locally (optional)
If you prefer to work on your own computer:
### You'll need
- **[git](https://git-scm.com/downloads)** — the version control tool
- **[Tolaria](https://tolaria.dev)** — a friendly Markdown editor with git support
### Steps
```bash
# 1. Clone the repo
git clone https://bali.krystl.org/aja/up.git
cd up
# 2. Create your branch
git checkout -b my-edit
# 3. Open the folder in Tolaria and start editing
# 4. When done, commit and push
git add .
git commit -m "Describe your changes"
git push -u origin my-edit
```
Then follow Step 4 above ("Open a Pull Request") to open your pull request on Forgejo.
---
## 🌱 Plant Your Own
Want to run your own version of this site? You can copy it and publish it under your own domain.
### Copy the repo
**Option A — With git (recommended):**
```bash
git clone https://bali.krystl.org/aja/up.git my-own-site
cd my-own-site
```
**Option B — Download as ZIP:**
1. Go to [bali.krystl.org/aja/up ](https://bali.krystl.org/aja/up )
2. Find the ** "Download"** or ** "⋯"** menu near the top of the file list
3. Choose ** "Download ZIP"**
4. Unzip it on your computer
### Set up Zensical
This site uses [Zensical ](https://zensical.org ) to build from Markdown. Install it and edit the config:
```bash
# Install Zensical (Python 3.12+ required)
pip install zensical
# Or with uv (recommended):
uv add --dev zensical
```
### Make it yours
Open `zensical.toml` and change:
```toml
site_name = "Your Site Name"
site_description = "What your site is about"
site_url = "https://your-domain.com"
site_author = "You"
repo_url = "https://your-forgejo-instance/you/your-repo"
```
Replace `docs/assets/images/tree-ad-logo.svg` with your own logo, then build:
```bash
zensical build --config-file zensical.toml
```
Your site appears in the `site/` folder — upload it to any static host (Netlify, Cloudflare Pages, a VPS, or keep it on Forgejo Pages).
### Use your own domain
1. Build the site and upload the `site/` folder to your hosting provider
2. Point your domain's DNS to your host (your provider will have instructions)
3. Update `site_url` in `zensical.toml` to match
That's it — you now have your own Zensical-powered knowledge garden.
---
2026-06-03 10:29:22 +00:00
Questions? Found a bug? ** [Open an issue ](https://bali.krystl.org/aja/up/issues )** on the repo.