Next Steps#
Choose a learning path based on your goals and background.
Learning Paths#
I want to build AI-powered applications#
Path: AI Integration
- byLLM Quickstart - Basic LLM integration
- Structured Outputs - Type-safe AI responses
- Agentic AI - Tool calling and ReAct patterns
Key concept: The by llm() syntax lets you delegate function bodies to AI models. The compiler generates prompts from function names, parameter names, and type signatures. Use sem for additional semantic context.
def summarize(text: str) -> str by llm();
sem summarize = "Summarize the article in 2-3 sentences.";
I want to build full-stack web apps#
Path: Full-Stack Development
- Project Setup - Create a Jac web project
- React-Style Components - Build UI with JSX
- State & Effects - Reactive state management
- Backend Integration - Connect frontend to walkers
- Authentication - Add user login
- Routing - Multi-page apps
Key concept: Write frontend and backend in one file. The cl { } block marks client-side code.
# Backend
walker get_data {
can fetch with Root entry {
report {"message": "Hello from backend"};
}
}
# Frontend
cl {
def:pub app() -> JsxElement {
data = root spawn get_data();
return <div>{data}</div>;
}
}
I want to learn the Jac language deeply#
Path: Core Language
- Jac Basics - Syntax and fundamentals
- Object-Spatial Programming - Nodes, edges, walkers
- Testing - Write and run tests
Key concept: Jac supersets Python and JavaScript, adding graphs as first-class citizens and walkers for graph traversal.
node Person { has name: str; }
edge Knows { has since: int; }
walker find_friends {
can search with Person entry {
friends = [here ->:Knows:->];
report friends;
}
}
I want to deploy to production#
Path: Production Deployment
- Local API Server - Run as HTTP server
- Deploy to Kubernetes - Scale with jac-scale
Key concept: One command transforms your Jac code into a production API with auto-provisioned infrastructure.
By Background#
Coming from Python#
You'll feel at home. Jac supersets Python.
What's different:
- Braces
{ }instead of indentation - Semicolons
;required - Type annotations encouraged
- New keywords:
node,edge,walker,has,can
Start here: Jac Basics
Coming from JavaScript/TypeScript#
Jac's frontend syntax will look familiar (JSX-style).
What's familiar:
- Braces and semicolons
- JSX for components
- React-like patterns (useState, useEffect)
What's different:
- Python-based syntax for logic
- No
const/let- just variable assignment - Type annotations use
:not TypeScript syntax
Start here: Full-Stack Setup
Coming from Other Languages#
Key concepts to learn:
- Python ecosystem - Jac uses Python libraries
- Graph thinking - Model data as nodes and edges
- Walker pattern - Computation that moves through data
Start here: Hello World → Build Your First App
Reference Documentation#
When you need details:
| Resource | Use For |
|---|---|
| Language Reference | Complete syntax and semantics |
| CLI Reference | All jac commands |
| Configuration | jac.toml settings |
| byLLM Reference | AI integration details |
| jac-client Reference | Frontend framework |
| jac-scale Reference | Production deployment |
Examples Gallery#
Learn by studying complete applications:
| Example | Description | Difficulty |
|---|---|---|
| LittleX | Twitter clone in 200 lines | Intermediate |
| EmailBuddy | AI email assistant | Intermediate |
| RAG Chatbot | Document Q&A with MCP | Advanced |
| RPG Generator | AI-generated game levels | Advanced |
Get Help#
- Discord: Join our community for real-time help
- JacGPT: jac-gpt.jaseci.org - AI assistant for Jac questions
- GitHub Issues: Report bugs
- Playground: Try Jac in browser