Skip to content

BartoszJarocki/cv

Repository files navigation

cv

Minimalist CV

Deploy with Vercel Next.js TypeScript Tailwind CSS pnpm Docker License: MIT

A clean and modern web app that renders a minimalist CV/Resume with a print-friendly layout.

✨ Features

  • πŸ“ Single Config File - Update all your resume data in one place
  • 🎨 Minimalist Design - Clean, professional layout focused on content
  • πŸ“± Responsive - Looks great on all devices, from mobile to desktop
  • πŸ–¨οΈ Print Optimized - Specially designed print styles for physical copies
  • ⌨️ Keyboard Navigation - Press Cmd/Ctrl + K to quickly navigate through sections
  • πŸš€ Fast Performance - Built with Next.js 14 and optimized for Core Web Vitals
  • πŸ”„ Auto Layout - Sections automatically adjust based on your content
  • πŸ“Š GraphQL API - Access your resume data programmatically at /graphql
  • 🎯 SEO Friendly - Optimized metadata for better search visibility
  • 🐳 Docker Support - Easy containerized deployment

πŸ› οΈ Tech Stack

πŸš€ Getting Started

Prerequisites

  • Node.js 18+
  • pnpm 8+

Installation

  1. Clone the repository

    git clone https://github.com/BartoszJarocki/cv.git
    cd cv
  2. Install dependencies

    pnpm install
  3. Start the development server

    pnpm dev
  4. Open http://localhost:3000 in your browser

  5. Customize your CV

    Edit the src/data/resume-data.tsx file to add your personal information, work experience, education, and skills.

Available Scripts

pnpm dev          # Start development server
pnpm build        # Build for production
pnpm start        # Start production server
pnpm lint         # Run ESLint

πŸ“ Project Structure

src/
β”œβ”€β”€ app/              # Next.js App Router
β”‚   β”œβ”€β”€ layout.tsx    # Root layout with metadata
β”‚   └── page.tsx      # Main resume page
β”œβ”€β”€ components/       # React components
β”‚   β”œβ”€β”€ ui/          # shadcn/ui components
β”‚   └── icons/       # Icon components
β”œβ”€β”€ data/            # Resume data configuration
β”‚   └── resume-data.tsx
β”œβ”€β”€ images/          # Static assets
β”‚   └── logos/       # Company logos
└── apollo/          # GraphQL server setup
    β”œβ”€β”€ resolvers.ts
    └── type-defs.ts

🎨 Customization

Resume Data

All resume content is stored in a single configuration file:

// src/data/resume-data.tsx
export const RESUME_DATA = {
  name: "Your Name",
  initials: "YN",
  location: "Your City, Country",
  about: "Brief description",
  summary: "Professional summary",
  // ... more fields
}

Styling

The app uses Tailwind CSS for styling. You can customize:

  • Colors in tailwind.config.js
  • Global styles in src/app/globals.css
  • Print styles are defined separately for optimal printing

🐳 Docker Deployment

Using Docker Compose

# Build the container
docker compose build

# Run the container
docker compose up -d

# Stop the container
docker compose down

Using Docker directly

# Build the image
docker build -t cv-app .

# Run the container
docker run -p 3000:3000 cv-app

πŸ”§ Configuration

Environment Variables

No environment variables are required for basic usage. The app works out of the box!

Print Settings

The app is optimized for printing. For best results:

  • Use Chrome/Chromium for printing
  • Enable "Background graphics" in print settings
  • Set margins to "Default"

🀝 Contributing

Contributions are welcome! Feel free to:

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • shadcn/ui for the beautiful UI components
  • Vercel for hosting and deployment
  • All contributors who have helped improve this project

Made with ❀️ by Bartosz Jarocki

About

Print-friendly, minimalist CV page

Topics

Resources

License

Stars

Watchers

Forks

Contributors 13