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 portfolio
Install dependencies:
npm install
# or
yarn install
Start the development server:
npm run dev
# or
yarn dev
The site will be available at http://localhost:3000
npm run build
# or
yarn build
The 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.io
Content 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.