🚧 In Development — Core features are available for testing

SIcore Framework

AI-Native Lightweight Java Framework

SIcore is a lightweight Java framework designed for AI-powered code generation and SI-industry programmers. No annotations, no config files, no Entity classes. A unified Map-based design spans HTML to DB, delivering simple and consistent code.

From HTML to DB — Everything Flows Through Map

SIcore's three principles—JSON-only, Map-based design, and direct URL mapping—deliver a unified architecture from front-end to back-end and DB.

Browser HTML & JavaScript onepg-base.css onepg-utils.js StorageUtil (scoped storage) JSON POST / GET JSON Java (SIcore) URL → Class (direct mapping) Io (Map) null-safe · type-safe · no key duplication AbstractWebService.doExecute(io) SqlBuilder SqlConst SQL IoRows Database Auth LDAP + JWT (transparent auth) DB column = HTML name attr = Java key (unified naming)

10 Design Principles

Simple, understandable code is ideal for both beginners and AI. Every SIcore design decision stems from this principle.

🔗

Direct URL Mapping

/services/mod/MyService → com.example.app.service.mod.MyService. No routing files, no annotations. The URL is the class name.

📡

JSON-Only Communication

All browser ↔ server communication uses JSON. No form submits or sessions—a clear boundary between front and back ends.

🗺️

Map-Based Design (Io class)

Request, response, and DB operations all use the Io class (Map). No Entity/DTO/Form classes. Null-safe, type-safe, with key-duplication checks.

🖼️

Mockup = Implementation

Add name attributes to static HTML mockups and they become implementation code. No JSP or template engines needed.

📋

Dynamic List Rendering

Define table row templates in HTML, pass JSON array data, and rows render automatically. Add, remove, and paginate with the framework.

🏷️

Custom HTML Attributes

Custom attributes like data-value-format-type and data-check-off-value automatically handle number formatting, date display, and checkbox off-values.

🎨

Single-File CSS Design

~400 lines of CSS in a single file covers 12-column grid, responsive design, and form styles. No Bootstrap-style overrides needed.

🔑

Unified Key Names

DB column name = HTML name attr = Java map key. No camelCase conversion or mapping code, so AI code generation stays unambiguous.

🔒

Transparent JWT Auth

LDAP auth → JWT issuance → token in JS variable → auto-attached to all requests. Zero auth code in business logic. XSS-resistant by design.

🤖

AI-Native Development

Consistent patterns enable GitHub Copilot to generate high-quality code. Token-efficient AI documentation is included.

Drop Entities — Route Everything Through Map

Imagine a system with 50 tables and 30 screens. With SIcore, 50 Entities, 30 Form/DTOs, conversion code, and camelCase conversion are all unnecessary.

The Io class (Map subclass) provides null safety, type safety, key duplication checks, and deep copy—all built in.

  • Type-conversion methods: getString / getBigDecimal / getDateNullable
  • put() errors on duplicate keys; putForce() for intentional overwrite
  • Getting a non-existent key throws an error—typos caught immediately
  • Lists and nested Maps are deep-copied on store and retrieve
Traditional UserEntity UserForm UserDto Entity ⇔ DTO conversion user_id → userId camelCase Many classes · Heavy conversion Maintenance cost → High SIcore Io (Map) Request / Response DB ops — all in one io.getString("user_id") io.getBigDecimal("income_am") Entity / DTO / Form → Not needed Classes: 0 · Conversion: 0 Maintenance cost → Low

DB → Java → HTML — Same Name, All the Way

DB column names, HTML name attributes, and Java map keys are all the same. Eliminates camelCase conversion, mapping code, and mapping bugs entirely.

  • DB design doc becomes specification and code dictionary
  • SELECT result maps directly to screen display
  • AI can reliably generate code including key names
DB (SQL) user_id user_nm income_am birth_dt = = Java (Io) getString("user_id") getString("user_nm") getBigDecimal("income_am") getDateNullable("birth_dt") = HTML name="user_id" name="user_nm" name="income_am" name="birth_dt" Traditional: user_id → userId → UserForm.userId → UserEntity.userId Conversion, mapping code — error-prone SIcore: user_id → user_id → user_id → user_id Zero conversion · Zero bugs

SqlBuilder & SqlConst for Dynamic and Static SQL

Separate SQL XML files, string-ID binding, and learning if-tag syntax—all solved with plain Java.

  • SqlBuilder: addQnotB adds WHERE clauses only for non-blank values
  • SqlConst: static final fixed SQL for batch processing
  • executeOneCache caches prepared statements for performance
  • Bind variables (?) prevent SQL injection
SqlBuilder — Dynamic Search
final SqlBuilder sb = new SqlBuilder(); sb.addQuery(" SELECT user_id, user_nm, email"); sb.addQuery(" FROM t_user WHERE 1=1 "); // Add condition only when value is present (addQnotB) sb.addQnotB(" AND user_id = ? ", io.getString("user_id")); sb.addQnotB(" AND user_nm LIKE '%'||?||'%' ", io.getString("user_nm")); sb.addQuery(" ORDER BY user_id "); IoRows rows = SqlUtil.selectBulk(getDbConn(), sb, 50); io.putList("list", rows.toListMap());

Start with 400 Lines and One File

Instead of Bootstrap (~10k lines) or Tailwind (build required), start small with only what business apps need. No build environment, just one file.

  • 12-column grid + 3-stage responsive (PC / tablet / smartphone)
  • Unified form element and table styles
  • Customize colors globally via :root CSS variables
  • Small enough for AI to read entirely before generating HTML
onepg-base.css — 12-col grid × 3-stage responsive PC col-3 | Name [___] col-3 | Country [__▼] col-6 | Email [___________] Tab Name [___] Country [__▼] Email [__________] off-screen Mobile Name [__________] Country [_____▼] Email [__________] off-screen class="grid-row" / "grid-col-3" / "grid-col-6" — just these classes, fully responsive

Comparison with Existing Frameworks

SIcore's approach is 'start small and grow as needed'—not 'start big and ignore what you don't use'.

Aspect Spring Boot SIcore
Annotations Heavy (@Controller, @Service, etc.) None
Routing Config Defined per annotation URL = class name (zero config)
Entity / DTO Required per table/screen Not needed (Map-based)
Template Engine Thymeleaf / JSP, etc. Not needed (static HTML + JS)
External Libraries Many (Maven dependency management) JDK standard only
CSS Build Not needed (single-file CSS)
AI Code Quality Many patterns, inconsistent quality Consistent patterns, high quality
Beginner Learning Cost High (many concepts and configs) Low (easy to trace execution flow)

dev.to Article Series

10 articles covering SIcore's design philosophy and each feature in detail.

#01

Why I Built an SI-Industry Framework

Why beginner-friendly design aligns with AI-friendly design

#02

Direct URL Mapping

How URLs map directly to class names without routing definitions

#03

JSON-Only Communication

Simple design connecting front and back with JSON only

#04

Mockup = Implementation Code

How adding name attributes to static HTML makes it work

#05

Dynamic List Rendering

Auto-rendering with row templates and JSON arrays

#06

Custom HTML Attributes

Auto format/unformat with data-value-format-type and more

#07

Map-Based Design

No Entity/DTO, null-safe Io class with key duplication checks

#08

Single-File CSS Design

400 lines covering all CSS needed for business apps

#09

Client-Side Data & JWT Auth

Scoped storage, JS variable session, and transparent JWT auth

#10

Java Inline SQL

SqlBuilder/SqlConst for dynamic and static SQL without XML