A modern, terminal-themed portfolio website built with Next.js and TailwindCSS. The site features a responsive design inspired by oh-my-zsh with the powerlevel10k theme, combining terminal aesthetics with clean typography and smooth interactions.
- Terminal-inspired design with modern web aesthetics
- Responsive layout adapting to all screen sizes
- Dynamic content sections for projects and blog posts
- Dark mode by default
- AWS S3 static hosting with CloudFront CDN
- Automated deployments via GitHub Actions
- Next.js 14
- TypeScript
- TailwindCSS
- Lucide Icons
- AWS (S3, CloudFront, Route53)
- GitHub Actions
Clone the repository:
git clone https://github.com/yourusername/portfolio.git
cd portfolioInstall dependencies:
npm install
# or
yarn installStart the development server:
npm run dev
# or
yarn devThe site will be available at http://localhost:3000
npm run build
# or
yarn buildThe project uses GitHub Actions to automatically deploy to AWS S3. To set up deployment:
- Create an S3 bucket named
stephenjacobs.io - Configure the bucket for static website hosting
- Set up CloudFront distribution
- Configure Route53 records
- Add required GitHub secrets:
- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
- CLOUDFRONT_DISTRIBUTION_ID
Pushing to the main branch will trigger automatic deployment.
stephen-jacobs-website/
├── .github/
│ └── workflows/
│ └── deploy.yml
├── src/
│ ├── app/
│ │ ├── globals.css
│ │ ├── layout.tsx
│ │ └── page.tsx
│ ├── components/
│ │ ├── Header.tsx
│ │ └── HeroSection/
│ │ ├── index.tsx
│ │ ├── ProjectCard.tsx
│ │ ├── BlogPost.tsx
│ │ ├── SkillTag.tsx
│ │ └── SocialLink.tsx
│ ├── data/
│ │ ├── projects.ts
│ │ ├── posts.ts
│ │ └── skills.ts
│ └── types/
│ └── index.ts
└── [configuration files]
The project uses a custom Tailwind configuration with:
- Custom color schemes
- Fira Code font integration
- Custom utilities for terminal-like styling
Create a .env.local file with:
NEXT_PUBLIC_SITE_URL=https://stephenjacobs.ioContent is managed through TypeScript files in the src/data directory:
projects.ts: Featured projectsposts.ts: Blog postsskills.ts: Technical skills
The color scheme and theme settings can be modified in tailwind.config.js. The default theme uses a dark color palette with cyan accents.
The site layout is component-based. Main components can be found in src/components/ and can be modified independently.
Update the content files in src/data/ to change the displayed information. The TypeScript types ensure content structure remains consistent.