NovaLang brings Spring Boot-inspired patterns, auto-configuration, and clean architecture to a new programming language designed for rapid enterprise development.
// 🚀 NovaLang Spring Boot Style
print "Starting NovaLang Application...";
// Auto-configuration like Spring Boot
function auto_configure_database() {
let db_name = "novalang_app";
print "🏗️ Auto-creating database: " + db_name;
return true;
}
// @Entity
function User(id, name, email) {
return "User:" + str(id) + ":" + name + ":" + email;
}
// @Repository - Spring Data style
function UserRepository_save(name, email) {
print "💾 Saving user: " + name;
return true;
}
// @Service - Business logic
function UserService_createUser(name, email) {
return UserRepository_save(name, email);
}
// @RestController - REST API
function UserController_createUser(name, email) {
let result = UserService_createUser(name, email);
print "✅ HTTP 201 CREATED";
return 201;
}
// Application startup
let db_configured = auto_configure_database();
let user_created = UserController_createUser("John", "john@dev.com");
print "🎉 NovaLang Application Ready!";
Built for developers who love Spring Boot but want something more modern and flexible
Just like Spring Boot - automatic database creation, component scanning, and dependency injection out of the box.
Clean separation with Entity/Repository/Service/Controller patterns. Each component in its own file.
MySQL auto-configuration, table creation from entities, and Spring Data-style repositories.
Get from idea to running application in minutes with sensible defaults and minimal configuration.
Clean, readable syntax inspired by the best of JavaScript, Python, and Java.
Built-in patterns for REST APIs, business logic, data access, and scalable architecture.
Experience the power of Spring Boot patterns in a modern programming language
// 📦 Product Entity - Product.nova
// @Entity
// @Table(name = "products")
function Product(id, name, price, category) {
print "📦 Entity: Product";
return "Product:" + str(id) + ":" + name + ":" + str(price) + ":" + category;
}
// Validation rules
function Product_validate(name, price, category) {
if (len(name) < 2) {
print "❌ Product name too short";
return false;
}
if (price <= 0) {
print "❌ Price must be positive";
return false;
}
print "✅ Product validation passed";
return true;
}
// 💾 Product Repository - ProductRepository.nova
// @Repository
function ProductRepository_save(name, price, category) {
print "💾 Saving product: " + name;
let sql = "INSERT INTO products (name, price, category) VALUES (?, ?, ?)";
print "📝 SQL: " + sql;
print "✅ Product saved with auto-generated ID";
return true;
}
function ProductRepository_findAll() {
print "📋 Finding all products";
let sql = "SELECT * FROM products";
print "📝 SQL: " + sql;
return 5; // Number of products found
}
function ProductRepository_findByCategory(category) {
print "🔍 Finding products by category: " + category;
let sql = "SELECT * FROM products WHERE category = ?";
print "📝 SQL: " + sql;
return 2; // Number of products found
}
// ⚙️ Product Service - ProductService.nova
// @Service
function ProductService_createProduct(name, price, category) {
print "🔄 ProductService.createProduct()";
// Business validation
if (!Product_validate(name, price, category)) {
return false;
}
// Default category if empty
if (len(category) == 0) {
category = "General";
print "📝 Setting default category: General";
}
// Check for duplicates
print "🔍 Checking for duplicate products...";
// Save through repository
return ProductRepository_save(name, price, category);
}
function ProductService_getProductsByCategory(category) {
print "🔍 Getting products by category: " + category;
return ProductRepository_findByCategory(category);
}
// 🌐 Product Controller - ProductController.nova
// @RestController
// @RequestMapping("/api/products")
function ProductController_createProduct(name, price, category) {
print "🌐 POST /api/products";
print "📥 Request: {name: '" + name + "', price: " + str(price) + "}";
let result = ProductService_createProduct(name, price, category);
if (result) {
print "✅ HTTP 201 CREATED - Product created successfully";
return 201;
} else {
print "❌ HTTP 400 BAD REQUEST - Validation failed";
return 400;
}
}
function ProductController_getProductsByCategory(category) {
print "🌐 GET /api/products/category/" + category;
let count = ProductService_getProductsByCategory(category);
print "✅ HTTP 200 OK - " + str(count) + " products found";
return 200;
}
Be among the first to experience the future of enterprise development. Get early access, shape the language, and be part of our growing community.
Get up and running with NovaLang in minutes
Download NovaLang interpreter and set up your development environment
git clone https://github.com/martinmaboya/novalang.git
cd novalang
python main.py your_app.nova
Create a simple "Hello World" application with Spring Boot patterns
// hello.nova
print "Hello, NovaLang!";
function greet(name) {
return "Welcome to NovaLang, " + name + "!";
}
let message = greet("Developer");
print message;
Build a full Spring Boot-style application with entities and REST APIs
// Run the package-based application
python main.py src/main/novalang/Application.nova
// Or use VS Code tasks
Ctrl+Shift+P → "Tasks: Run Task"
→ "Run Package-Based Application"