CNEC Online
Home / Java / CNEC Online
The Cornerstone of the CNEC Ecosystem
As mentioned in my Java Projects introduction, CNEC Online stands as the cornerstone of the entire CNEC ecosystem. It was the very first platform created for the institution back in 2001, and later, in 2011, it underwent a complete migration to Java EE, marking the beginning of a new era of modernization and integration across CNEC’s digital platforms.
Over time, the portal’s public scope has been refined. What once served as a general public website evolved into a specialized platform focused on teachers and school principals. Despite this narrower audience, CNEC Online remains the central hub for authentication and user management across multiple CNEC systems — effectively acting as the backbone that connects all other applications.
A CMS at Its Core
At its heart, CNEC Online is powered by a CMS-based architecture designed for flexibility and content reuse. The structure is built around key content entities such as:
- Folders
- Articles
- Links
- Videos
- Files / Downloads
- etc
Each of these entities shares a consistent set of attributes, including Label, Path, Parent, Description, and Keywords — making it easier to manage relationships, organize information, and enable dynamic content rendering.
Smart Template Configuration
One of the platform’s most powerful features is its configurable template system. Administrators can define which templates should be used to render content depending on the context, path, or content type.
The system primarily works with two rendering contexts (This can be expanded):
- List – used when displaying collections of items, such as a news list or folder contents.
- View – used when rendering the item on its own page.
This flexible design allows the same content model to support multiple layouts and presentation styles, ensuring consistency while maintaining freedom for customization.
My Role
In this project, I worked as a full-stack lead developer with a focus on the back end. I was responsible for designing the core functions and caching strategies, making most of the code reusable across other projects.
For example, the content table has a self-referential, tree-like structure. I wrote a MySQL function to handle both path-to-ID and ID-to-path resolution. Since the number of items in the content table could grow very large, I created a cached path table. It is populated by insert and update triggers in the content table. Because the item path is used as the URL to access the object, this indexed cached path table was essential for fast path translation.
I currently oversee and maintain this project.



