Skip to content

This repository contains the source code for a personal portfolio website designed to showcase projects, skills, and professional experience. The website is built using modern web technologies to ensure a responsive, user-friendly, and visually appealing presentation.

License

Notifications You must be signed in to change notification settings

Haoming9527/Portfolio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

5 Commits
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ Portfolio

A modern, full-stack portfolio website built with Next.js 15, featuring dynamic content management, user authentication, and interactive components.

Portfolio Preview React TypeScript Tailwind CSS

✨ Features

🎨 Modern UI/UX

  • Responsive design with mobile-first approach
  • Dark/light mode support
  • Smooth animations and transitions
  • Gradient text effects and modern styling
  • Interactive hover effects and micro-interactions

πŸ“± Core Pages

  • Home: Introduction, about section, and technology showcase
  • Projects: Dynamic project gallery with Sanity CMS integration
  • Certificates: Professional certifications and achievements display
  • Guestbook: Interactive message board with user authentication

πŸ” Authentication & Security

  • Kinde Auth integration for secure user management
  • XSS protection for user-generated content
  • Input validation and sanitization
  • Secure API routes with proper error handling

πŸ—„οΈ Database & CMS

  • PostgreSQL database with Prisma ORM
  • Sanity CMS for content management
  • Real-time data fetching with caching
  • Optimized database queries

πŸ› οΈ Developer Experience

  • TypeScript for type safety
  • ESLint configuration for code quality
  • Winston logging system
  • Hot reload with Turbopack
  • Comprehensive error handling

πŸš€ Tech Stack

Frontend

  • Framework: Next.js 15 with App Router
  • Language: TypeScript
  • Styling: Tailwind CSS 4.0
  • UI Components: Radix UI primitives
  • Icons: Lucide React
  • Animations: Tailwind CSS Animate

Backend & Database

  • Database: PostgreSQL
  • ORM: Prisma
  • Authentication: Kinde Auth
  • CMS: Sanity
  • API: Next.js API Routes

Development Tools

  • Package Manager: npm
  • Linting: ESLint
  • Logging: Winston with daily rotation
  • Build Tool: Turbopack
  • Security: XSS protection

πŸƒβ€β™‚οΈ Getting Started

Prerequisites

  • Node.js 18+
  • PostgreSQL database
  • Sanity account
  • Kinde Auth account

Installation

  1. Clone the repository

    git clone https://github.com/Haoming9527/portfolio.git
    cd portfolio
  2. Install dependencies

    npm install
  3. Environment Setup Create a .env.local file in the root directory:

    # Database
    DATABASE_URL="postgresql://username:password@localhost:5432/portfolio"
    
    # Kinde Auth
    KINDE_CLIENT_ID=your_kinde_client_id
    KINDE_CLIENT_SECRET=your_kinde_client_secret
    KINDE_ISSUER_URL=https://your-domain.kinde.com
    KINDE_SITE_URL=http://localhost:3000
    KINDE_POST_LOGOUT_REDIRECT_URL=http://localhost:3000
    KINDE_POST_LOGIN_REDIRECT_URL=http://localhost:3000
    
    # Sanity
    NEXT_PUBLIC_SANITY_PROJECT_ID=your_sanity_project_id
    NEXT_PUBLIC_SANITY_DATASET=production
    SANITY_API_TOKEN=your_sanity_api_token
  4. Database Setup

    npx prisma generate
    npx prisma db push
  5. Run the development server

    npm run dev
  6. Open your browser Navigate to http://localhost:3000

πŸ“ Project Structure

portfolio/
β”œβ”€β”€ app/                    # Next.js App Router
β”‚   β”œβ”€β”€ api/               # API routes
β”‚   β”œβ”€β”€ components/        # React components
β”‚   β”œβ”€β”€ lib/              # Utility functions
β”‚   β”œβ”€β”€ projects/         # Projects page
β”‚   β”œβ”€β”€ certificates/     # Certificates page
β”‚   └── guestbook/        # Guestbook page
β”œβ”€β”€ components/           # Shared UI components
β”œβ”€β”€ lib/                 # Generated Prisma client
β”œβ”€β”€ prisma/              # Database schema
β”œβ”€β”€ sanity/              # Sanity CMS configuration
└── public/              # Static assets

🎯 Available Scripts

  • npm run dev - Start development server with Turbopack
  • npm run build - Build for production
  • npm run start - Start production server
  • npm run lint - Run ESLint
  • npx prisma studio - Open Prisma Studio
  • npx prisma generate - Generate Prisma client

πŸ”§ Configuration

Sanity CMS Setup

  1. Create a new Sanity project
  2. Configure schemas for projects and certificates
  3. Add your Sanity credentials to environment variables

Kinde Auth Setup

  1. Create a Kinde account
  2. Set up your application
  3. Configure redirect URLs
  4. Add credentials to environment variables

πŸš€ Deployment

Vercel (Recommended)

  1. Push your code to GitHub
  2. Connect your repository to Vercel
  3. Add environment variables
  4. Deploy!

Other Platforms

The application can be deployed on any platform that supports Next.js:

  • Netlify
  • Railway
  • DigitalOcean App Platform
  • AWS Amplify

πŸ“„ License

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


⭐ Star this repository if you found it helpful! This repository contains the source code for a personal portfolio website designed to showcase projects, skills, and professional experience. The website is built using modern web technologies to ensure a responsive, user-friendly, and visually appealing presentation.

About

This repository contains the source code for a personal portfolio website designed to showcase projects, skills, and professional experience. The website is built using modern web technologies to ensure a responsive, user-friendly, and visually appealing presentation.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published