Skip to content

Rishi Rai

All Projects

Portfolio CMS Platform

active · Software Engineering

An active full-stack portfolio and content management platform in this repository, with public project and article pages plus protected administration for structured content.

Problem

A static portfolio makes detailed project, article, timeline, credential, and profile updates dependent on repeated code edits.

Target users

Rishi as the content owner and visitors reviewing projects, articles, experience, education, skills, credentials, and engineering focus areas.

Why it matters

Structured content supports richer project context and consistent updates without embedding every change in page components.

Main features

  • Public project and article pages
  • Protected administration for portfolio collections
  • Tiptap rich-text article editing
  • Cloudinary-backed image handling
  • SEO metadata and structured public page data
  • Responsive React interface

System architecture

The platform separates a React client from an Express API backed by PostgreSQL, while keeping public reading paths distinct from authenticated administration.

Data flow

Admin edits pass through validated Express routes to PostgreSQL or Cloudinary, and public API and document-rendering paths read the stored content for site pages.

Backend architecture

Express exposes collection APIs over PostgreSQL and applies authentication, validation, trusted-origin checks, rate limits, security headers, caching rules, and image handling.

Frontend architecture

React and React Router provide public and protected admin routes, while Tiptap supports rich article editing.

Deployment approach

Cloudinary provides image storage, while deployment planning keeps API, database, environment configuration, and media delivery boundaries explicit.

Security and privacy

The code protects admin routes with cookie-based sessions, trusted-origin checks, Helmet headers, rate limiting, constrained uploads, and output sanitization paths.

Evaluation strategy

The repository defines lint, build, and Vitest workflows for client and server code, with regression coverage focused on public and admin paths.

Engineering challenges

The platform must keep a growing content schema aligned across database models, APIs, admin forms, public pages, metadata, caching, and server-rendered output.

Trade-offs

A custom CMS gives precise control over portfolio content and presentation but adds migration, validation, security, and maintenance responsibilities.

Impact

The platform centralizes portfolio content, publishing, and administration in a structured full-stack system.

Future improvements

Complete content import tooling, extend regression coverage across public and admin paths, and streamline content preview and publishing workflows.