MohFarawati f7355b5356 feat(portfolio): image-led project gallery with branded placeholders
Redesign the portfolio list/category grid into a premium, image-first gallery
(Phase 3), applying the warm-premium tokens.

- Add components/site/portfolio-cover.tsx: renders the stored cover image
  (next/image, object-cover, hover zoom) or a restrained branded placeholder
  (monogram + category) when none is set. Placeholders are temporary — the
  owner will swap in real artwork.
- Rewrite portfolio-project-grid: responsive 1/2/3-col gallery, featured
  projects span two columns with a larger cover, cards use the type scale
  (text-h2/h3/caption), eyebrow category labels, line-clamped summaries, soft
  elevation and hover lift. Directly fixes the "portfolio shows no images"
  gap on the list and category pages.

Verified: eslint clean, no new type errors, tailwind generates the utilities.
2026-07-14 22:13:26 +02:00
2026-07-14 20:10:38 +02:00
2026-03-11 17:46:35 +01:00
2026-07-14 20:10:38 +02:00
2026-03-13 15:50:37 +01:00
2026-07-14 20:10:38 +02:00
2026-03-13 15:50:37 +01:00

This is a Next.js project bootstrapped with create-next-app.

Getting Started

First, run the development server:

npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev

Open http://localhost:3014 with your browser to see the result.

You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.

This project uses next/font/local to load local font assets from app/fonts without relying on external font providers.

Learn More

To learn more about Next.js, take a look at the following resources:

You can check out the Next.js GitHub repository - your feedback and contributions are welcome!

Deploy on Vercel

The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.

Check out our Next.js deployment documentation for more details.

Infrastructure Basics

  1. Copy environment variables:
cp .env.example .env
  1. Start containers:
make start
make port
  1. Initialize database:
make db-init
  1. Run quality checks:
npm run lint
npm run build
  1. Health check:
make health
S
Description
No description provided
Readme
2.1 MiB
Languages
TypeScript 94.4%
JavaScript 2.9%
CSS 2.1%
Makefile 0.4%
Dockerfile 0.1%