Skip to content

NuxtMint/selfie

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

3 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ Nuxt Portfolio Template

Sponsored by HostedPocket.com - The easiest way to host PocketBase in the cloud

A modern, responsive portfolio website built with Nuxt 4, PocketBase, and Tailwind CSS. Perfect for developers, designers, and professionals who want to showcase their work with a clean, performant, and SEO-optimized portfolio.

✨ Get other templates at NuxtMint.com

🌟 Features

  • 🎨 Modern Design: Clean, professional layout with dark/light theme support
  • πŸ“± Fully Responsive: Mobile-first design that looks great on all devices
  • ⚑ Performance Optimized: Built with Nuxt 4 for maximum speed and SEO
  • πŸ—„οΈ Dynamic Content: Powered by PocketBase for easy content management
  • πŸŒ™ Theme Toggle: System preference detection with localStorage persistence
  • πŸ”§ Type Safe: Full TypeScript support with proper type definitions

πŸ› οΈ Tech Stack

πŸ“‹ Prerequisites

  • Node.js (v18 or higher)
  • npm
  • PocketBase instance (local or hosted)

πŸš€ Quick Start

1. Clone & Install

# Clone the repository
git clone <this-repo-url>
cd nuxt-portfolio

# Install dependencies
npm install

2. Environment Setup

Create a .env file in the root directory:

# Copy the example environment file
cp .env.example .env

Update the .env file with your PocketBase URL:

# PocketBase Configuration
POCKETBASE_URL=http://localhost:8090
# or your hosted PocketBase URL
# POCKETBASE_URL=https://your-pocketbase-instance.hostedpocket.com

# Demo Mode (optional)
DEMO=false

3. PocketBase Setup

Option A: Local PocketBase

  1. Download PocketBase from pocketbase.io
  2. Start PocketBase:
    ./pocketbase serve
  3. Access Admin Panel: Open http://localhost:8090/_/ and create an admin account

Option B: Hosted PocketBase (Recommended)

  1. Sign up at HostedPocket.com
  2. Create a new instance
  3. Update your .env file with the hosted URL

4. Import Database Schema

  1. Open PocketBase Admin Panel (http://localhost:8090/_/ or your hosted URL)
  2. Go to Settings β†’ Import collections
  3. Upload the database/pocketbase.json file
  4. Click Import to create all collections

5. Seed the Database

We've created an automated seeding script to populate your database with sample data. This is much faster than manually entering data through the admin panel.

Automatic Seeding (Recommended)

  1. Add superuser credentials to your .env file:

    # Superuser credentials for seeding
    SUPERUSER_EMAIL=your-admin@example.com
    SUPERUSER_PASSWORD=your-admin-password
  2. Run the seeding script:

    npm run seed
    # or
    node scripts/seed-database.js
  3. Verify the data (optional):

    npm run verify
    # or
    node scripts/verify-data.js

The seeding script will create:

  • 1 Profile record - Your personal information and contact details
  • 3 Experience records - Sample work history with technologies
  • 2 Education records - Academic background and certifications
  • 3 Skills categories - Frontend, Backend, and Tools & DevOps
  • 4 Project records - Portfolio projects with GitHub/demo links

Manual Seeding (Alternative)

If you prefer to add data manually or customize the sample data:

  1. Open PocketBase Admin Panel (http://localhost:8090/_/ or your hosted URL)
  2. Navigate to Collections and add records to each collection:
    • profile: Personal info, contact details, availability status
    • experience: Work history with job titles, companies, and technologies
    • education: Academic background and certifications
    • skills: Technical skills organized by category
    • projects: Portfolio projects with descriptions and links

Customizing Sample Data

To customize the sample data before seeding:

  1. Edit scripts/seed-database.js
  2. Update the data objects with your information
  3. Run the seeding script with your custom data

6. Start Development

# Start the development server
npm run dev

Visit http://localhost:3000 to see your portfolio!

πŸ—οΈ Project Structure

nuxt-portfolio/
β”œβ”€β”€ app/                          # Nuxt 4 app directory
β”‚   β”œβ”€β”€ components/              # Vue components
β”‚   β”‚   β”œβ”€β”€ demo/               # Demo-specific components
β”‚   β”‚   β”œβ”€β”€ AppHeader.vue       # Site header
β”‚   β”‚   β”œβ”€β”€ AppFooter.vue       # Site footer
β”‚   β”‚   β”œβ”€β”€ HeroSection.vue     # Hero/intro section
β”‚   β”‚   β”œβ”€β”€ ExperienceSection.vue
β”‚   β”‚   β”œβ”€β”€ EducationSection.vue
β”‚   β”‚   β”œβ”€β”€ SkillsSection.vue
β”‚   β”‚   β”œβ”€β”€ ProjectsSection.vue
β”‚   β”‚   └── ContactSection.vue
β”‚   β”œβ”€β”€ composables/            # Vue composables
β”‚   β”‚   β”œβ”€β”€ usePocketBase.ts    # PocketBase integration
β”‚   β”‚   └── useTheme.ts         # Theme management
β”‚   β”œβ”€β”€ pages/                  # Page components
β”‚   β”‚   └── index.vue           # Homepage
β”‚   β”œβ”€β”€ types/                  # TypeScript definitions
β”‚   β”‚   └── index.ts            # Type definitions
β”‚   └── app.vue                 # Root component
β”œβ”€β”€ database/                   # Database configuration
β”‚   └── pocketbase.json         # PocketBase schema export
β”œβ”€β”€ public/                     # Static assets
β”œβ”€β”€ server/                     # Server-side code (if needed)
β”œβ”€β”€ .env.example               # Environment variables template
β”œβ”€β”€ nuxt.config.ts             # Nuxt configuration
└── package.json               # Dependencies

πŸš€ Deployment

Deploy to Cloudflare Pages (Recommended)

Cloudflare Pages offers excellent performance, global CDN, and seamless integration with Nuxt.

  1. Setup Wrangler Configuration:

    # Copy the example wrangler config
    cp wrangler.jsonc.example wrangler.jsonc
  2. Update wrangler.jsonc with your project details:

    {
      "name": "your-portfolio-name",
      "compatibility_date": "2024-03-01",
      "pages_build_output_dir": "./dist",
      "env": {
        "production": {
          "vars": {
            "POCKETBASE_URL": "https://your-pocketbase-url.com/",
            "SUPERUSER_PASSWORD": "your_password",
            "SUPERUSER_EMAIL": "your_email@example.com",
            "DEMO": "false"
          }
        }
      }
    }
  3. Deploy via Wrangler CLI :

    # Install Wrangler CLI
    npm install -g wrangler
    
    # Login to Cloudflare
    wrangler login
    
    # Deploy
    npm run build
    npm run deploy

Other Platforms

This Nuxt application can be deployed to any platform that supports Node.js or static hosting. Check the Nuxt deployment documentation for more options.

🎨 Customization

Styling

  • Colors: Modify Tailwind classes in components
  • Fonts: Update nuxt.config.ts to add custom fonts
  • Layout: Adjust component structure and spacing

Content

  • Sections: Add/remove sections by editing pages/index.vue
  • Components: Customize individual section components
  • Data: Update content through PocketBase admin panel

Features

  • Analytics: Add tracking codes to nuxt.config.ts
  • SEO: Customize meta tags in page components
  • Performance: Optimize images and add lazy loading

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

πŸ“„ License

This project is open source and available under the MIT License.

πŸ™ Acknowledgments


✨ Get more premium Nuxt templates at NuxtMint.com

About

An elegant and modern portfolio that looks like a Resume

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published