Public client website for PTR/PowerDeed.
The site renders company content from the backend API: homepage sections, services, projects, testimonials, contact details, articles, and about-page content. It also supports the newer asset-link format produced by the command center and backend media-management flow.
- Next.js
- React
- TypeScript
- Tailwind CSS
- Axios
- Font Awesome
Install dependencies:
npm installRun the development server:
npm run devRun lint:
npm run lintBuild:
npm run buildNote: production builds use next/font Google Fonts. If the machine cannot
reach fonts.googleapis.com, the build can fail before application code is
compiled.
The API client expects:
NEXT_PUBLIC_API_BASE_URLExample:
NEXT_PUBLIC_API_BASE_URL=http://localhost:5500The Axios client appends /api/v1.
The backend/command center store project and service media in the gallery
field as asset-link tuples:
type AssetLink = [
assetId: string,
fileName: string,
fileUrl: string,
assetType: "image" | "video" | "document" | "diagram",
];Use the shared helpers in:
app/utils/asset-images.tsThose helpers resolve:
["asset-123", "before.jpg", "https://storage.googleapis.com/..."]into a renderable image URL.
Remote Google Cloud Storage images are allowed in:
next.config.tsapp/home
Homepage rendering and homepage API integration.
app/projects
Public project listing, top projects, and project detail panel.
app/services
Public service listing.
app/contact
Contact content and reach-us form.
app/utils/asset-images.ts
Helpers for gallery asset-link tuples and featured image links.
lib/api
Axios instance, API request helper, and execution wrapper.- Treat project/service
galleryas the media array. - Use
getAssetImageSrcfor gallery and featured image rendering.