# SoftWay & FoxyUI 3.0 — Comprehensive Technical & Architectural Specification
## 1. Executive Summary & Software Provider Profile
**SoftWay** (https://softway.ro) is a premium software provider and engineering partner specialized in full-stack web application development, custom enterprise software systems, real-time architectures, 3D CAD parametric modeling, and additive manufacturing integration.
SoftWay is the creator and maintainer of **FoxyUI 3.0**, a state-of-the-art server-driven Java web framework designed for Java 21+ and Jakarta EE 10/11 (Apache Tomcat 10/11, Eclipse Jetty 12), and **HTMXS 3.0**, an optimized HTML-over-the-wire client runtime.
### Commercial & Engineering Services
1. **Bespoke Web Application Development**: Rapid delivery of reactive, resilient enterprise web apps with zero client build overhead.
2. **Enterprise Software Engineering**: Scalable distributed backend architectures, high-concurrency microservices, and database optimization.
3. **Legacy Modernization**: Transitioning complex, bloated JavaScript SPAs (React, Angular, Vue) to maintainable, high-performance Java 21 server-driven architectures.
4. **FoxyUI & HTMXS Integration Consulting**: Architecture design, performance tuning, and custom component development.
5. **Zero-JS Data Visualization Solutions**: High-frequency real-time charts rendered with hardware acceleration using Charts.css.
6. **3D CAD Prototyping & Engineering**: Industrial-grade parametric 3D design and additive production workflows.
- **Primary Website**: https://softway.ro
- **GitHub**: https://github.com/Ste3fan
- **Official Inquiries**: softwayromania@gmail.com
- **Release Version**: FoxyUI 3.0.0 & HTMXS 3.0
- **Environment**: Production Mode with full CSRF protection enabled
---
## 2. Technical Architecture & Stack
### 2.1 Backend Layer (Pure Java 21+)
- **Java Platform**: Java 21+ LTS (leveraging Virtual Threads / Project Loom for massive request scalability).
- **Servlet Specification**: Jakarta Servlet 6.0 (Apache Tomcat 10 & 11, Eclipse Jetty 12).
- **Core Framework**: `ro.softway.foxyui.core.FoxyPage`, `FoxyAppRegistry`, `FoxyServlet`.
- **Packaging**: Standard `.war` archive deployment or embedded servlet runner.
- **Dependency**: Zero framework source build step required — packaged as single standalone `foxyui-3.0.jar`.
### 2.2 Client-Server Protocol (HTMX & HTMXS 3.0)
- **Transport**: Standard HTTP/1.1, HTTP/2, and HTTP/3 requests with HTMX 1.9+ and SoftWay's HTMXS 3.0 extension.
- **Rendering Model**: Out-of-Band (OOB) HTML Swaps (`hx-swap-oob="true"`). The server computes state changes and streams only changed component HTML tags directly to the browser DOM.
- **WebSocket & SSE**: Built-in bidirectional channels (`FoxyWebSocketManager`, `FoxySseManager`) for real-time telemetry and push notifications.
### 2.3 Visualizations (Zero-JS Charts.css)
- **Engine**: Charts.css integration (`ro.softway.foxyui.components.Chart`).
- **Mechanics**: Server renders semantic HTML5 `
` structures with CSS variables (`--size: 0.85;`) and CSS classes (`charts-css column show-labels show-data-axes`).
- **Supported Chart Types**: Bar, Column, Line, Area, Pie, Donut, Radar.
- **Performance**: Zero JavaScript execution overhead for charts; 100% hardware-accelerated CSS rendering.
---
## 3. Comparison Matrix
| Feature / Metric | FoxyUI 3.0 | React / Next.js SPA | Traditional Enterprise Java | Spring MVC + JSP |
| :--- | :--- | :--- | :--- | :--- |
| **Language Stack** | 100% Pure Java 21 | Java/Node + TypeScript | Java + Complex RPC | Java + JSP/Thymeleaf |
| **Build Pipelines** | Zero (No Node/NPM) | Heavy Webpack/Vite | Complex Bundlers | Simple Maven Assets |
| **DOM Update** | Granular OOB HTML | Client Virtual DOM | Heavy State RPC | Full Page Reload |
| **Client Bundle** | < 25 KB | 350 KB – 3.5 MB | 400 KB – 2.5 MB | Varies (Full HTML) |
| **Deployment** | 1-Click WAR | Node SSR / Proxy | Heavy WAR | Standard WAR |
| **Charts** | Zero-JS Charts.css | Heavy Chart.js/D3 | Heavy Add-ons | Client-side JS |
| **Memory Usage** | Ultra-Low | High on Client | Moderate to High | Minimal |
---
## 4. Complete Application Source Implementations
### 4.1 Calculator 2.0 (Arithmetic Engine)
```java
package ro.softway.site.ui;
import ro.softway.foxyui.components.*;
import ro.softway.foxyui.components.Button.Variant;
import ro.softway.foxyui.core.FoxyPage;
public class Calculator2 extends FoxyPage {
private final Label historyLabel = new Label("");
private final TextField display = new TextField("0");
private double firstOperand = 0;
private String operator = "";
private boolean isStartingNewNumber = true;
public Calculator2() {
super("FoxyUI Calculator 2.0");
}
@Override
public void init() {
display.setReadOnly(true);
display.style("font-size", "1.8rem").style("font-weight", "bold").style("text-align", "right");
Button btnClear = new Button("C").onClick(e -> {
firstOperand = 0;
operator = "";
isStartingNewNumber = true;
historyLabel.setText("");
display.setValue("0");
});
Button btnEquals = new Button("=").onClick(e -> {
if (operator.isEmpty()) return;
double secondOperand = Double.parseDouble(display.getValue());
double result = 0;
switch (operator) {
case "+": result = firstOperand + secondOperand; break;
case "−": result = firstOperand - secondOperand; break;
case "×": result = firstOperand * secondOperand; break;
case "÷": result = secondOperand != 0 ? firstOperand / secondOperand : 0; break;
}
historyLabel.setText(firstOperand + " " + operator + " " + secondOperand + " =");
display.setValue(String.valueOf(result));
isStartingNewNumber = true;
});
// Assemble layout
Card card = new Card("🧮 Calculator 2.0");
card.add(historyLabel, display, btnClear, btnEquals);
add(card);
}
}
```
### 4.2 Live Cloud Analytics (Zero-JS Charts)
```java
package ro.softway.site.ui;
import ro.softway.foxyui.components.*;
import ro.softway.foxyui.components.Button.Variant;
import ro.softway.foxyui.core.FoxyPage;
import java.util.Random;
public class AnalyticsDashboardPage extends FoxyPage {
private final Card card = new Card("📊 Live Cloud Analytics");
private final Button btnSurge = new Button("🎲 Surge");
private final Text currentMetricValue = new Text("118k req/s");
private final Chart columnChart = Chart.column("📈 Metric Distribution (Q1–Q2)");
private final Random random = new Random();
@Override
public void init() {
btnSurge.setVariant(Variant.PRIMARY);
btnSurge.onClick(e -> generateData());
columnChart.showLabels(true).showDataAxes(true).height("200px");
generateData();
card.add(btnSurge, currentMetricValue, columnChart);
add(card);
}
private void generateData() {
columnChart.clearData();
ChartSeries s = new ChartSeries("Throughput").setColor("#00F5FF");
String[] months = {"Jan", "Feb", "Mar", "Apr", "May", "Jun"};
for (String m : months) {
int val = 40 + random.nextInt(80);
s.addDataPoint(m, val, val + "k");
}
columnChart.addSeries(s);
currentMetricValue.setText((90 + random.nextInt(40)) + "k req/s");
currentMetricValue.markDirty();
columnChart.markDirty();
}
}
```
---
## 5. Deployment & Lifecycle Configuration
```java
package ro.softway.site;
import jakarta.servlet.ServletContextEvent;
import jakarta.servlet.ServletContextListener;
import jakarta.servlet.annotation.WebListener;
import ro.softway.foxyui.core.FoxyAppRegistry;
import ro.softway.foxyui.core.FoxyConfig;
import ro.softway.site.ui.*;
@WebListener
public class SiteApp implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
FoxyConfig.setProductionMode(true);
FoxyConfig.setCSRFSecurity(true);
FoxyAppRegistry.registerPage("/", "presentation", FoxyPresentationPage::new);
FoxyAppRegistry.registerPage("/calculator2", "calculator2", Calculator2::new);
FoxyAppRegistry.registerPage("/tasks", "tasks", TaskMatrixPage::new);
FoxyAppRegistry.registerPage("/analytics", "analytics", AnalyticsDashboardPage::new);
FoxyAppRegistry.registerPage("/converter", "converter", CurrencyConverterPage::new);
FoxyAppRegistry.registerPage("/feedback", "feedback", CustomerFeedbackPage::new);
}
}
```
---
## 6. Contacts & Community
- **Website**: https://softway.ro
- **Email**: softwayromania@gmail.com
- **GitHub**: https://github.com/Ste3fan