π Version 0.1.0 Released: Initial objectives achieved! All core features implemented, tested, and production-ready. See CHANGELOG.md for details.
|
|
|
|
# 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: src/pages/hello.jl β /hello
# src/pages/hello.jl
function handler(req)
return """
<html>
<body>
<h1>Hello from Nova.jl!</h1>
<a href="/">Back to home</a>
</body>
</html>
"""
end# src/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 supports both a modern src/ structure (recommended) and a legacy root-level structure.
my-app/
βββ src/
β βββ pages/ Application routes
β β βββ index.jl / route
β β βββ api/ API endpoints
β βββ components/ Reusable UI components
β βββ styles/ Global styles (SCSS/CSS)
β
βββ public/ Static files (images, etc.)
βββ Project.toml Dependencies
βββ dev.jl Development entry point
my-app/
βββ pages/ Application routes
βββ components/ UI components
βββ styles/ Global styles
βββ public/ Static files
βββ ...
Nova automatically detects which structure you are using.
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
β
βββ test/ Test suite (18 tests)
βββ examples/ Example applications
βββ nova CLI tool
Architecture details: ARCHITECTURE.md
Nova.jl has reached its first major release milestone with all initial objectives achieved:
| Feature | Status | Details |
|---|---|---|
| File-based Routing | β Complete | Automatic route mapping from pages/ directory |
| Hot Reload | β Complete | Instant feedback with julia nova dev |
| Error Handling | β Complete | Semantic HTTP errors with beautiful pages (404, 400, 500) |
| Input Validation | β Complete | Schema-based validation with custom validators |
| Static Assets | β Complete | Automatic favicon detection and serving |
| CI/CD Pipeline | β Complete | GitHub Actions testing on Julia 1.10, 1.11, 1.12 |
| Docker Support | β Complete | Production-ready Docker + nginx setup |
| Benchmarking | β Complete | Performance tracking framework |
| Test Coverage | β Complete | 36+ tests with 100% pass rate |
| Documentation | β Complete | Comprehensive guides and API docs |
Nova.jl is production-ready with all core functionality implemented and thoroughly tested. The framework is suitable for building:
- Fast API servers
- Full-stack web applications
- Static site generators
- Real-time applications (with extensions)
|
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
Website β’ Documentation β’ Examples β’ Changelog