Internal EEAE System ยท Tomcat/JSP โ†’ Next.js

DiakinisiNew (diakinisi-web)

Modernization of the Greek Atomic Energy Commission (EEAE) radioactive material shipment tracking application โ€” migrating an exploded Tomcat WAR with JSPX pages, servlets, and per-tenant shell scripts to a Next.js full-stack app while keeping Actian Ingres, stored procedures, and audit-grade HISTORY archiving intact.

12 Tenant Roles
10+ Legacy Pages Ported
100% Ingres Retained
0 Tomcat After Cutover

Shipment Tracking for Radioactive Materials

Diakinisi is an internal EEAE system used to register, validate, import, and export radioactive material shipments. The legacy stack ran on Tomcat with JSPX + JSTL SQL tags, three Java servlets, and eleven near-duplicate bash import scripts per tenant. DiakinisiNew reimplements the same domain on Next.js App Router with server-side API routes and a JDBC bridge to the existing eeaedb database.

Client
Greek Atomic Energy Commission (EEAE)
Legacy Stack
Tomcat, JSPX, Java servlets, bash + Ingres CLI
New Stack
Next.js 15+, TypeScript, React, API Route Handlers

What the Platform Delivers

๐Ÿ“Š

Operations Dashboard

Today's and yesterday's shipment grids with the same joins across shipp_ext, shipp_ext_multi, and se@shipp as the legacy main views.

โœ๏ธ

Manual Data Entry

/new form with live validation, lookup modals for destinations, orders, and representatives, and INSERT parity against legacy insert.jspx (dates, FOB decimals, optional fields).

๐Ÿ”

Multi-Tenant Auth

Replaced Tomcat FORM login and 12 container roles with app sessions, middleware-protected routes, and tenant resolution via se@shipp.

๐Ÿ“

Import & Export

Multipart uploads, stored procedure p_www_shipp_ext_buffer, and HISTORY archiving โ€” consolidated from per-tenant shell scripts into parameterized Node services.

โŒจ๏ธ

Power-User UX

Keyboard shortcuts from legacy JS preserved (Enter submit, Esc back, + for lookups, numeric navigation keys).

๐Ÿ›ก๏ธ

Safer Data Access

Parameterized queries throughout new APIs; legacy JSP string concatenation eliminated on the modern path.

Legacy โ†’ Next.js Route Mapping

Legacy (Tomcat) DiakinisiNew (Next.js)
login.jspx/login + POST /api/auth/login
main.jspx/ โ€” today's shipments
yesterday.jspx/yesterday
new.jspx + insert.jspx/new + POST /api/shipments
dest.jspx, order.jspx, repr.jspxLookup modals + /api/lookups/*
ValidationServlet (XML)GET /api/validate/* (JSON)
Export / Import servlets + SCRIPTS/*.shPOST /api/import, /api/export, Node batch runner

Built for Parity and Maintainability

Frontend

  • Next.js App Router
  • React Server Components (read-heavy grids)
  • Client components for forms & uploads
  • Greek locale (el-GR), Europe/Athens timezone

Backend & Data

  • TypeScript API Route Handlers
  • nodejs-jdbc + iijdbc.jar connection pool
  • Actian Ingres (eeaedb, ISO8859-7)
  • Stored procedures unchanged

Delivery Phases

  • Foundation: auth, tenants, Ingres health check
  • Read-only dashboards (UAT vs Tomcat)
  • Manual entry + validation APIs
  • File ops + parallel cutover per tenant

Source Code

Application code lives in the diakinisi-web package inside the DiakinisiNew monorepo layout.

View on GitHub โ†’