Quick Start
You want IntentText working in 5 minutes. Here's how.
Install
npm install @dotit/core
Or use the CLI globally:
npm install -g @dotit/core
Write your first .it file
Create hello.it:
title: Project Kickoff
summary: Planning meeting notes for Atlas project
section: Decisions
text: Launch date confirmed for June 15
text: Budget approved at USD 180,000 | weight: bold
section: Tasks
task: Finalize vendor contracts | owner: Sarah | due: 2026-04-15
task: Set up staging environment | owner: Dev Team | due: 2026-04-20
task: Draft press release | owner: Marketing | due: 2026-05-01
section: Next Steps
deadline: Vendor selection complete | date: 2026-04-10 | consequence: Delays launch
Parse it
npx -p @dotit/core dotit hello.it
You get structured JSON — every block typed, every property extracted.
Render to HTML
npx -p @dotit/core dotit hello.it --html
Clean, styled HTML. Add a theme:
npx -p @dotit/core dotit hello.it --html --theme corporate
Query it
Find all tasks owned by Sarah:
npx -p @dotit/core dotit hello.it --query "type=task owner=Sarah"
Find all deadlines:
npx -p @dotit/core dotit hello.it --query "type=deadline"
Write it in Arabic, if you like
The canonical keywords have registered Arabic aliases — same semantics, same queries, and the keywords round-trip as written (an Arabic document stays Arabic). Create quotation.it:
عنوان: عرض سعر — تأثيث المكتب الرئيسي
ملخص: شركة الإتقان للتجارة — صالح حتى 2026-07-15
بيانات: | dir: rtl | theme: corporate
قسم: البنود
أعمدة: الوصف | الكمية | الإجمالي
صف: كرسي مكتب تنفيذي | 12 | 10,200 QAR
مؤشر: الإجمالي المستحق | value: 10,200 QAR
مهمة: اعتماد العرض | owner: أحمد | due: 2026-06-20
The same query finds the task whichever language it was written in:
npx -p @dotit/core dotit quotation.it --query "type=task due<2026-07-01"
Use in code
import { parseIntentText, renderHTML } from "@dotit/core";
const source = `
title: Quick Example
text: This is structured text.
task: Review document | owner: Ahmed | due: 2026-04-01
`;
const doc = parseIntentText(source);
const html = renderHTML(doc);
// Query blocks
const tasks = doc.blocks.filter((b) => b.type === "task");
console.log(tasks[0].properties.owner); // "Ahmed"
What's next
You've parsed, rendered, and queried. Now understand the model: