Welcome! This docs is for beginners, no coding needed after initial setup.
Litov concept: Setup code once at the beginning, then all content editing is done via TinaCMS (like WordPress). You don't need to open code again.
You only need this ONCE for initial setup:
node -v in terminalAfter setup, you don't need code anymore. Just use /admin to edit.
This is where 99% of beginners fail. Please read carefully.
When you extract the zip, you will see a file named .env.example in the root folder.
You MUST rename it from .env.example to .env
.env.envIf you don't rename, build will fail with error Missing clientId, token on Cloudflare.
We have 2 modes:
MODE A: Local Mode (For Selling / Without Tina Cloud)
This is the default mode. You use this if you just want to run locally or deploy without CMS online editing.
Your .env content:
TINA_PUBLIC_IS_LOCAL=true
That's it. Content is edited via files or local CMS at http://localhost:8080/admin and saved to your computer.
MODE B: Cloud Mode (With Tina Cloud - For Client Who Wants to Edit Online)
Use this if you want your client to be able to edit content from yourdomain.com/admin without touching code.
Steps:
Register at https://app.tina.io (free)
Create New Project > Connect your GitHub repo litov
After connect, you will get:
ea451189-976f-41e0-bb49-f2b5378d8d73530c671f37cde4518d3328be1edb09fe42c69e9eEdit your .env file to be:
TINA_CLIENT_ID=your_client_id_here
TINA_TOKEN=your_token_here
Example real:
TINA_CLIENT_ID=ea451189-976f-41e0-bb49-f2b5378d8d73
TINA_TOKEN=530c671f37cde4518d3328be1edb09fe42c69e9e
After you rename .env.example to .env:
Open terminal in project folder:
# Install dependencies (only first time)
npm install
# Run website
npm run dev
Open:
Now you can edit logo, title, homepage content via CMS.
Litov uses Eleventy 4.0 Alpha which requires Node.js 22.15.0 or higher.
How to set Node version correctly:
For Local:
Make sure you installed Node 22.15.0. Check with node -v.
For Cloudflare Pages:
By default Cloudflare uses Node 22.12.0 which will fail with error Build Awesome requires Node >=22.15.
You must force Cloudflare to use 22.15.0:
Option 1: Create file .nvmrc in root project, content:
22.15.0
Option 2: In Cloudflare dashboard > Settings > Variables > Add:
Name: NODE_VERSION
Value: 22.15.0
We recommend using .nvmrc file - we already included it for you.
If your hosting does not support 22.15 yet (some Netlify old build), downgrade Eleventy:
npm install @11ty/eleventy@3.1.6
And set engines in package.json to >=20.0.0.
Push your project to GitHub
Cloudflare Dashboard > Pages > Create Project > Connect GitHub
Select your repo litov
Build Settings:
npm run build . If you use Tina Cloud Mode: npx tinacms build && npm run build_siteEnvironment Variables: This is the most important!
If Local Mode, add:
TINA_PUBLIC_IS_LOCAL=true
NODE_VERSION=22.15.0
If Cloud Mode, add:
TINA_CLIENT_ID=your_id
TINA_TOKEN=your_token
NODE_VERSION=22.15.0
Click Deploy
After deploy, set custom domain: Pages > Custom domains
Your admin will be at yourdomain.com/admin
npm run build (or npx tinacms build && npm run build for cloud mode)_sitenpm run build (or with tinacms build for cloud)_siteAfter deployment, you NEVER need to open code again.
yourdomain.com/adminmetadataHomeBlogServicesPages_data/
metadata.json -> Logo, site title, footer, social links
page/
home.yaml -> Homepage content (slider, intro, projects, clients)
content/
blog/ -> Blog posts (.md files)
services/ -> Services
page/ -> About, Contact etc
public/
img/ -> All images
You can edit via CMS or edit those files directly.
Error: Missing clientId, token
Fix: You didn't rename .env.example to .env. Or you didn't add ENV in Cloudflare Variables. Check section 3.
Error: project not found 404
Fix: Your TINA_CLIENT_ID is wrong or truncated. Check full ID from app.tina.io. Also check if project was deleted.
Error: requires Node >=22.15
Fix: Add NODE_VERSION=22.15.0 in Cloudflare Variables and create .nvmrc file with 22.15.0.
Error: EBADENGINE Unsupported engine
Fix: Update Node.js locally to 22.15.0. For Cloudflare, use NODE_VERSION variable.
.env.example to .env, npm install, npm run dev, push to GitHub, deploy to Cloudflare with correct ENV and NODE_VERSION./admin to edit content. No code needed.That's the JAMstack way - Fast, Secure, Simple.
HOW TO UPDATE FROM v1.9 to v2.0:
1. BACKUP from OLD project: _data/ + content/ + public/img/
2. Extract NEW version
3. Paste backup folders into NEW version (Replace)
4. Rename .env.example to .env
5. npm install && npm run dev
6. Push to GitHub
Don't copy node_modules, _site, tina/__generated__
HOW TO UPDATE LITOV v1.9 to v2.0 AWESOME (Safe Method - No Content Lost)
IMPORTANT: Backup your content first. Only 3 folders contain your content.
Step 1: Backup Your Content (2 minutes)
From your OLD project, copy these 3 folders to your Desktop / safe place:
1. _data/ -> Contains your logo, site title, footer, homepage content
2. content/ -> Contains all your blog posts, services, pages
3. public/img/ -> Contains all your images
That's it. Only those 3. Don't backup node_modules or _site.
Step 2: Download New Version
litov-new/Step 3: Move Your Content to New Version
Now copy your 3 backed-up folders into the NEW project and REPLACE the existing ones:
Copy:
Desktop/backup/_data/ -> to -> litov-new/_data/ (Replace)
Desktop/backup/content/ -> to -> litov-new/content/ (Replace)
Desktop/backup/public/img/ -> to -> litov-new/public/img/ (Replace / Merge)
For public/img/ : Use Merge, don't replace, so you keep both old and new images.
Step 4: Setup ENV (MOST IMPORTANT)
In the NEW folder, you will see .env.example
Rename it to .env
TINA_PUBLIC_IS_LOCAL=true
TINA_CLIENT_ID=your_id_from_app.tina.io
TINA_TOKEN=your_token_from_app.tina.io
Step 5: Install & Test
# Make sure Node is 22.15.0+
node -v
# Install
npm install
# Run
npm run dev
Open:
If everything looks good, you're done.
Step 6: Push to GitHub (Deploy Update)
git add .
git commit -m "update to awesome v2.0"
git push
Cloudflare / Vercel will auto deploy. Make sure you have ENV set in Cloudflare dashboard:
NODE_VERSION=22.15.0
TINA_CLIENT_ID=... (if cloud mode)
TINA_TOKEN=... (if cloud mode)
What NOT to copy:
node_modules/ - always fresh install_site/ - it's build outputtina/__generated__/ - auto generatedpackage.json - use new one for v2.0Quick Checklist:
Done. Your content is safe, but you get new fast engine.
Need help? Contact Us