ChanintornSrisittikumPersonalWebsite

Chanintorn Srisittikum — Personal Website (Local Development)

A modern, static single‑page application (SPA) for a personal portfolio. The site runs entirely on the client (React + Vite + Tailwind). When an API is not available, pages use built‑in static fallbacks so everything remains functional out of the box.

Features

Tech Stack

Project Structure

apps/
  client/
    public/                # Static assets (images, pdf, CNAME, robots)
    src/
      index.css            # Global styles + utility classes
      main.jsx             # App entry (React + Router)
      modules/
        App.jsx            # Layout/shell
        components/        # Reusable UI
        data/fallback.js   # Static projects + case studies
        pages/             # Route pages (Home, Projects, Detail, etc.)

Requirements

Quick Start (local only)

  1. Install dependencies (from the repository root):
pnpm install
  1. Run the client (Vite dev server):
pnpm --filter @chanin/client dev

Open http://localhost:5173

  1. Optional — point the UI to a backend (if you have one):
VITE_API_BASE=https://your-api.example.com/api

If omitted, the UI uses static fallback data and still works normally.

Build & Preview

Build production assets:

pnpm --filter @chanin/client build

Artifacts are written to apps/client/dist.

Preview the built site:

pnpm --filter @chanin/client preview

Editing Content & SEO

Common Scripts

Notes

Full-Stack (server)

This repo contains an Express + Mongoose API in apps/server that powers dynamic features. It is optional in local dev; the UI has static fallbacks.

Deploy on Railway

This repository includes railway.json which defines two services (server, client) and uses Nixpacks.

  1. Connect GitHub → Railway
  1. Add MongoDB and variables (server)
  1. Configure client variables
  1. Build/Start (pre-configured)
  1. Seed data (optional)

Notes