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 with automatic prompt generation from type signatures and docstrings.
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() -> any {
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 is a superset of Python and TypeScript/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 is a Python superset.
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 → Your First Full-Stack AI 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