Backend Developer

ICCN Research Ecosystem: Research Platform & CMS

A research platform for ICCN featuring a public portal and a CMS admin panel, built with a strict layered backend architecture supporting both internal CMS users and SSO-authenticated researchers.

6+
Technologies
4
Key Features
ICCN Research Ecosystem: Research Platform & CMS

Understanding the Context

Overview

The Problem

ICCN needed a unified platform where researchers could access and manage research-related content through SSO, while internal admins needed a secure CMS to manage publications, funding data, and site content.

The Purpose

This project aims to build a research ecosystem with a public-facing portal and an admin panel, supporting two distinct user types, CMS admins and SSO researchers. The platform is further supported by an AI pipeline that evaluates submitted research applications and scrapes external sources for up-to-date funding opportunities.

My Contributions

Responsibilities

Designed and built backend APIs using Next.js with a layered architecture

Implemented dual authentication flows: internal JWT for CMS users and Keycloak OAuth2 Authorization Code with PKCE for SSO researchers

Built supporting content APIs for professors, testimonials, FAQs, journals, and institutions, along with an S3-based file upload system

Developed core research application APIs, including CRUD, rate limiting, and team member handling

Implemented CMS overview metrics, and page settings architecture for site-wide configuration

Technologies Used

Tech Stack

📱 Frontend

Next.jsTypeScript

⚙️ Backend

Next.jsTypeScriptPrisma ORMPostgreSQL

🤖 AI/ML

AI Research Evaluation PipelineAutomated Funding Data Scraping (AI Engineer team-owned)

🛠️ Tools

AWS S3KeycloakJWKSPostman

Core Functionality

Features

🔐

Dual Authentication System

Supports two distinct user types. CMS admins via email/password with internal JWTs, and SSO researchers via Keycloak OAuth2 PKCE flow with JWKS token verification.

📚

Research Application Management

Provides full CRUD for research applications with status management, rate limiting, team member handling, and category validation.

🛠️

CMS Admin Panel

Powers a dedicated admin panel for managing professors, journals, funding data, testimonials, and site-wide page settings.

🧠

AI-Powered Research Evaluation & Funding Discovery

Integrates with an AI pipeline, built by a separate AI Engineer team, that automatically evaluates submitted research applications and scrapes external sources to surface up-to-date funding opportunities.

Visual Design

UI Showcase

Interface design and user experience highlights

Research proposal submission page to submit research applications.
1 / 4

Research proposal submission page to submit research applications.

Technical Journey

Challenges

Supporting two fundamentally different user types, within a single authentication system.

Implemented separate JWT issuance paths for each user type, with a unified /api/auth/cms/me endpoint that differentiates SSO researchers (merging data from an external dashboard API) from CMS users.

Handling repetitive page-level settings without duplicating repository logic.

Built a generic PageSettingRepository as a singleton factory using a fixed ID per page, reducing repeated boilerplate across settings modules.

Keeping list-style array fields consistent during updates.

Adopted an atomic replace pattern, deleting old entries and inserting new ones within a single transaction rather than performing partial updates.

Supporting both UUID-based and slug-based lookups on the same detail routes.

Implemented an isUuid() helper to dynamically determine the lookup strategy, allowing a single route to serve both CMS and public use cases.

Results & Achievements

Impact

Measurable outcomes and project success metrics

🏗️

Delivered a multi-phase backend system spanning authentication, core research APIs, and supporting content modules

🔗

Successfully integrated Keycloak SSO alongside a separate internal CMS authentication system

Next Steps

Future Plans

💡

Add automated testing coverage for repository and service layers

💡

Implement caching for frequently accessed public endpoints such as stats and journals

💡

Expand rate limiting to cover additional high-traffic endpoints

💡

Introduce audit logging for CMS admin actions

💡

Optimize overview metrics queries further as data volume grows

Interested in Working Together?Let's Connect

I'm currently open to internship and full-time opportunities in mobile and backend development. If you're building something interesting and think I'd be a good fit, let's talk!

11+
Projects Built
5+
Competitions & Hackathons
3+
Awards & Finalist