A modern, responsive portfolio website built with Next.js 15, TypeScript, and Tailwind CSS. This project showcases software engineering services, projects, and products with a clean, professional design.
- Next.js 15 App Router - Latest Next.js with server components
- TypeScript - Full type safety throughout the codebase
- Tailwind CSS - Utility-first CSS framework
- JSON-driven content - Easy content management through JSON files
- Responsive design - Works on mobile, tablet, and desktop
- SEO optimized - Proper meta tags and Open Graph support
- Accessible - Semantic HTML and ARIA labels
cipher-text-portfolio/
├── app/ # Next.js App Router pages
│ ├── layout.tsx # Root layout with header/footer
│ ├── page.tsx # Home page
│ ├── work/ # Projects section
│ │ ├── page.tsx # Projects grid
│ │ └── [slug]/page.tsx # Project detail
│ ├── services/ # Services section
│ │ ├── page.tsx # Services grid
│ │ └── [service]/page.tsx # Service detail
│ ├── products/page.tsx # Products page
│ ├── technology/page.tsx # Technology stack page
│ ├── about/page.tsx # About page
│ └── contact/page.tsx # Contact page with form
├── components/ # Reusable components
│ ├── Header.tsx # Navigation header
│ ├── Footer.tsx # Site footer
│ ├── ProjectCard.tsx # Project card component
│ ├── ServiceCard.tsx # Service card component
│ ├── FeatureCard.tsx # Generic feature card
│ ├── ContactForm.tsx # Contact form component
│ └── TechStack.tsx # Tech stack display
├── content/ # JSON content files
│ ├── site.json # Site configuration
│ ├── projects.json # Project data
│ ├── services.json # Service offerings
│ ├── products.json # Product listings
│ ├── tech.json # Technology stack
│ ├── about.json # About page content
│ └── contact.json # Contact page content
├── lib/ # Utility functions
│ └── content.ts # JSON loaders and types
└── public/ # Static assets
└── images/ # Project images
- Node.js 18.17 or later
- npm, yarn, or pnpm
- Clone the repository:
git clone <repository-url>
cd cipher-text-portfolio- Install dependencies:
npm install- Start the development server:
npm run dev- Open http://localhost:3000 in your browser.
All content is managed through JSON files in the content/ directory. This makes it easy to update without touching the code.
Edit content/projects.json:
{
"slug": "my-project",
"title": "My New Project",
"category": "Web Platform",
"description": "A brief description of the project",
"featured": true,
"thumbnail": "/images/my-project-thumb.jpg",
"problem": "The problem this project solves",
"solution": "How we solved it",
"features": [
"Feature 1",
"Feature 2"
],
"tech": ["Next.js", "PostgreSQL"],
"status": "Live",
"link": "https://example.com"
}Edit content/services.json:
{
"slug": "my-service",
"title": "My Service",
"icon": "code",
"description": "Service description",
"problem": "The problem it addresses",
"solution": "How we approach it",
"capabilities": ["Capability 1", "Capability 2"],
"tech": ["Tech 1", "Tech 2"],
"projects": ["related-project-slug"]
}Available icons: code, heart, database, layout, server
Edit content/site.json to change:
- Company name and tagline
- Navigation items
- Contact information
- CTA button text
- Add your images to the
public/images/directory - Reference them in JSON with paths like
/images/my-image.jpg - Images will be automatically optimized by Next.js
For now, the project uses placeholder divs for images. To add real images:
- Add image files to
public/images/ - Update the image paths in the JSON files
- The
ProjectCardand other components can be updated to usenext/imagefor optimization
The design uses Tailwind's slate color palette with blue accents. To change:
- Update color classes in components (e.g.,
bg-blue-600tobg-indigo-600) - Or extend the theme in
tailwind.config.ts
The project uses Inter font via next/font/google. To change:
- Update the import in
app/layout.tsx - Modify the CSS variable in
tailwind.config.ts
The design follows these spacing conventions:
- Sections:
py-20topy-32 - Between elements:
space-y-8tospace-y-16 - Container:
max-w-7xl mx-auto px-6
- Push your code to GitHub
- Import the project in Vercel
- Deploy with default settings
Build the production bundle:
npm run buildStart the production server:
npm startThe out/ directory contains the static export if configured.
npm run dev- Start development servernpm run build- Build for productionnpm start- Start production servernpm run lint- Run ESLint
- Framework: Next.js 15
- Language: TypeScript
- Styling: Tailwind CSS
- Font: Inter (Google Fonts)
- Deployment: Vercel (recommended)
This project is private and not licensed for public use.