Loading repository data…
Loading repository data…
jmarellanes / repository
✨ Minimal Single-Page Portfolio Template: A production-ready portfolio template featuring smooth animations, responsive design, and modern tech stack. Built with Next.js, React, TypeScript, and Tailwind CSS. Includes sections for hero, projects, testimonials, FAQs, and more. Easy to customize and deploy.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
A modern, minimal single-page portfolio template showcasing your work and skills. Built with Next.js, React, and Tailwind CSS with smooth animations.
This project is a lightweight, fully responsive single-page portfolio template designed to showcase your work, skills, and achievements. It features a clean, minimal design with smooth animations and modern UI patterns. Whether you're a developer, designer, or creative professional, this template provides an elegant foundation for your personal brand.
Built with the latest versions of Next.js and React, with TypeScript for type safety and Tailwind CSS for styling, this template is production-ready and optimized for performance.
Before you begin, ensure you have the following installed:
git clone https://github.com/jmarellanes/single-page-portfolio-site.git
cd minimal-single-page-portfolio
pnpm install
Or with your preferred package manager:
npm install
# or
yarn install
# or
bun install
Start the development server:
pnpm dev
Open http://localhost:3000 in your browser to see the portfolio.
The app will automatically reload when you make changes to files. Start editing src/app/page.tsx to customize your portfolio content and see updates in real time.
Create an optimized production build:
pnpm build
After building, start the production server:
pnpm start
src/
├── app/
│ ├── page.tsx # Main portfolio page
│ ├── layout.tsx # Root layout component
│ └── globals.css # Global styles
├── components/
│ ├── Button.tsx # Reusable button component
│ └── Testimonial.tsx # Testimonial card component
├── sections/
│ ├── Header.tsx # Header/Navigation section
│ ├── Hero.tsx # Hero/Introduction section
│ ├── Intro.tsx # About/Intro section
│ ├── Projects.tsx # Projects showcase section
│ ├── Testimonials.tsx # Client testimonials section
│ ├── FAQs.tsx # Frequently asked questions
│ └── Footer.tsx # Footer section
├── hooks/
│ └── useTextRevealAnimation.ts # Custom text reveal animation hook
├── assets/
│ ├── icons/ # SVG icons
│ └── images/ # Images and graphics
public/ # Static assets
Configuration Files:
├── next.config.mjs # Next.js configuration
├── tailwind.config.ts # Tailwind CSS configuration
├── tsconfig.json # TypeScript configuration
├── postcss.config.mjs # PostCSS configuration
└── package.json # Project dependencies
| Script | Command | Description |
|---|---|---|
dev | pnpm dev | Start development server |
build | pnpm build | Build optimized production bundle |
start | pnpm start | Start production server |
lint | pnpm lint | Run ESLint to check code quality |
Customize colors, fonts, spacing, and other design tokens in tailwind.config.ts to match your brand identity.
Modify TypeScript settings in tsconfig.json. The project is pre-configured with strict type checking for better code quality.
Configure Next.js behavior in next.config.mjs (e.g., image optimization, rewrite rules, environment variables).
motion libraryuseTextRevealAnimation hook for custom text reveal effectsCreate a .env.local file in the root directory for environment-specific variables:
# .env.local
NEXT_PUBLIC_SITE_URL=https://yourportfolio.com
NEXT_PUBLIC_EMAIL=your.email@example.com
The easiest way to deploy is using Vercel, created by the Next.js team:
Your portfolio will be live with automatic deployments on every push to your main branch.
# Configure build settings
Build command: pnpm build
Publish directory: .next
Connect your GitHub repo to Netlify and follow the setup wizard.
FROM node:18-alpine AS base
WORKDIR /app
FROM base AS deps
COPY package.json pnpm-lock.yaml ./
RUN npm install -g pnpm && pnpm install --frozen-lockfile
FROM base AS builder
COPY package.json pnpm-lock.yaml ./
RUN npm install -g pnpm && pnpm install --frozen-lockfile
COPY . .
RUN pnpm build
FROM base AS runtime
RUN npm install -g pnpm
COPY --from=deps /app/node_modules ./node_modules
COPY --from=builder /app/.next ./.next
COPY --from=builder /app/public ./public
COPY --from=builder /app/package.json ./package.json
EXPOSE 3000
CMD ["pnpm", "start"]
next export (static export) for static hostingHeader.tsx, Hero.tsx, etc.)tailwind.config.tssrc/assets/images/src/app/layout.tsx for SEOnpm run buildContributions are welcome! Please follow these steps:
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)This project is licensed under the MIT License. See LICENSE for details.
For issues, questions, or suggestions, please open an issue on the repository.
Made with ❤️ by the Frontend Tribe