# 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