|
|
|
|
# 1. Clone the repository
git clone https://github.com/otsuki-dev/nova.jl.git
cd nova.jl
# 2. Install dependencies
julia --project=. -e 'using Pkg; Pkg.instantiate()'
# 3. Start development server
julia nova dev
# 4. Open browser at http://localhost:2518| Command | Description | Example |
|---|---|---|
julia nova dev |
Start development server with hot reload | julia nova dev --port 3000 |
julia nova build |
Build application for production | julia nova build --aot |
julia nova compile |
Compile framework to optimized sysimage (AOT) | julia nova compile |
julia nova start |
Start production server (no hot reload) | julia nova start --host 0.0.0.0 |
julia nova help |
Show help and available commands | julia nova help |
See full CLI reference: QUICK_REFERENCE.md
File-based routing: pages/hello.jl → /hello
# pages/hello.jl
function handler(req)
return """
<html>
<body>
<h1>Hello from Nova.jl!</h1>
<a href="/">Back to home</a>
</body>
</html>
"""
end# pages/api/users.jl
using HTTP, JSON
function handler(req)
users = [
Dict("id" => 1, "name" => "Alice"),
Dict("id" => 2, "name" => "Bob")
]
return HTTP.Response(
200,
["Content-Type" => "application/json"],
JSON.json(Dict("users" => users))
)
end# 1. Build for production
julia nova build
# 2. Test locally
cd build && julia start.jl
# 3. Deploy to server
scp -r build/ user@server:/opt/myapp/
ssh user@server "cd /opt/myapp/build && julia start.jl"🚢 Full deployment guide: DEPLOY.md
nova.jl/
├── src/ Framework Core (8 modules)
│ ├── Nova.jl Main module
│ ├── Server/ HTTP server & routing
│ ├── Rendering/ HTML, styles & assets
│ ├── DevTools/ Hot reload system
│ └── Utils/ Helpers & utilities
│
├── 📄 pages/ Your application routes
│ ├── index.jl / route
│ └── api/ API endpoints
│
├── public/ Static files (images, etc.)
├── test/ Test suite (18 tests)
├── examples/ Example applications
└── nova CLI tool
Architecture details: ARCHITECTURE.md
|
Hot reload in development |
File-based routing |
Production builds |
julia test/runtests.jlAll core modules are tested: Server, Routing, Rendering, Hot Reload, Utils
We welcome contributions! Here's how:
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing) - Add tests for your changes
- Ensure tests pass (
julia test/runtests.jl) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing) - Open a Pull Request
See CONTRIBUTING.md for detailed guidelines.
Nova.jl is released under the MIT License.
If you find Nova.jl useful, please consider:
- ⭐ Starring the repository
- 🐛 Reporting bugs via GitHub Issues
- 💡 Suggesting features
- 📖 Improving documentation
- 🤝 Contributing code
Built with ⚡ and ❤️ using Julia