No project description provided
Project description
Jac Client
Build full-stack web applications with Jac - one language for frontend and backend.
Jac Client enables you to write React-like components, manage state, and build interactive UIs all in Jac. No need for separate frontend frameworks, HTTP clients, or complex build configurations.
✨ Features
- Single Language: Write frontend and backend in Jac
- No HTTP Client: Use
jacSpawn()instead of fetch/axios - React Hooks: Use standard React
useStateanduseEffecthooks - Component-Based: Build reusable UI components with JSX
- Graph Database: Built-in graph data model eliminates need for SQL/NoSQL
- Type Safety: Type checking across frontend and backend
- Vite-Powered: Optimized production bundles with Vite
🚀 Quick Start
Installation
pip install jac-client
Create a New App
jac create_jac_app my-app
cd my-app
jac serve app.jac
Visit http://localhost:8000/page/app to see your app!
📚 Documentation
For detailed guides and tutorials, see the docs folder:
- Getting Started Guide - Complete beginner's guide
- Routing - Multi-page applications with declarative routing (
<Router>,<Routes>,<Route>) - Lifecycle Hooks - Using React hooks (
useState,useEffect) - Advanced State - Managing complex state with React hooks
- Imports - Importing third-party libraries (React, Ant Design, Lodash), Jac files, and JavaScript modules
💡 Example
Simple Counter with React Hooks
cl import from react { useState, useEffect }
cl {
def Counter() -> any {
let [count, setCount] = useState(0);
useEffect(lambda -> None {
console.log("Count changed:", count);
}, [count]);
return <div>
<h1>Count: {count}</h1>
<button onClick={lambda e: any -> None {
setCount(count + 1);
}}>
Increment
</button>
</div>;
}
def app() -> any {
return Counter();
}
}
Full-Stack Todo App
cl import from react { useState, useEffect }
cl import from '@jac-client/utils' { jacSpawn }
# Backend: Jac nodes and walkers
node Todo {
has text: str;
has done: bool = False;
}
walker create_todo {
has text: str;
can create with `root entry {
new_todo = here ++> Todo(text=self.text);
report new_todo;
}
}
walker read_todos {
can read with `root entry {
visit [-->(`?Todo)];
}
}
# Frontend: React component
cl {
def app() -> any {
let [todos, setTodos] = useState([]);
useEffect(lambda -> None {
async def loadTodos() -> None {
result = await jacSpawn("read_todos", "", {});
setTodos(result.reports);
}
loadTodos();
}, []);
return <div>
<h1>My Todos</h1>
{todos.map(lambda todo: any -> any {
return <div key={todo._jac_id}>{todo.text}</div>;
})}
</div>;
}
}
🔧 Requirements
- Python: 3.12+
- Node.js: For npm and Vite
- Jac Language:
jaclang(installed automatically)
🛠️ How It Works
Jac Client is a plugin that:
- Compiles your
.jacclient code to JavaScript - Bundles dependencies with Vite for optimal performance
- Provides a runtime for reactive state and components
- Integrates seamlessly with Jac's backend graph operations
📖 Learn More
- Full Documentation: See docs/ for comprehensive guides
- Examples: Check
jac_client/examples/for working examples - Issues: Report bugs on GitHub Issues
📄 License
MIT License - see LICENSE file.
Happy coding with Jac! 🎉
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jac_client-0.2.0.tar.gz.
File metadata
- Download URL: jac_client-0.2.0.tar.gz
- Upload date:
- Size: 156.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.2.1 CPython/3.12.12 Linux/6.11.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a5c2887416f70defdf6385ce9b4d3774290c53d489a65b5a97fa7466edf6d3b5
|
|
| MD5 |
28c025fedad48d37f3c2a9b8aa802943
|
|
| BLAKE2b-256 |
072dac23f4108fcd1e1a93f65ff34a5a07a6c88d5ec0ad5fab151b7ebb00c55a
|
File details
Details for the file jac_client-0.2.0-py3-none-any.whl.
File metadata
- Download URL: jac_client-0.2.0-py3-none-any.whl
- Upload date:
- Size: 191.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.2.1 CPython/3.12.12 Linux/6.11.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a3210d343700c2e39f206bdba83858f86992aa0c6c11ea0e45f4cd9cfaf16e4b
|
|
| MD5 |
7041b99e9099e6105f00638479890058
|
|
| BLAKE2b-256 |
fccc89d1b3d85eae804633945fc8114274c34efa7378a1dbafce813e0f8ff30c
|