Skip to content

wiseiodev/portfolio

Repository files navigation

Dan Wise's Portfolio

Welcome to my personal portfolio repository! This project showcases my skills, projects, and professional experience as an Architect, Senior Engineering Manager, and Full-Stack Developer.

🚀 Live Demo

View the live portfolio

🛠 Built With

  • Next.js - React framework for production
  • React - JavaScript library for building user interfaces
  • TypeScript - Typed superset of JavaScript
  • Tailwind CSS - Utility-first CSS framework
  • shadcn/ui - Re-usable components built with Radix UI and Tailwind CSS
  • AWS - Cloud hosting and serverless functions

🏗 Project Structure

  • app/ - Next.js app directory containing page components and routing
  • components/ - Reusable React components
  • db/ - Database schema and connection
  • lib/ - Utility functions and custom hooks
  • models/ - This is where domain logic for accessing database models should reside
  • public/ - Static assets
  • styles/ - Global styles and Tailwind CSS configuration

🚀 Getting Started

Prerequisites

  • Node.js (v18 or later)
  • npm or yarn

Installation

  1. Clone the repository

    git clone [email protected]:wiseiodev/portfolio.git
    
  2. Navigate to the project directory

    cd portfolio
    
  3. Install dependencies

    npm install
    # or
    yarn install
    
  4. Start the development server

    npm run dev
    # or
    yarn dev
    
  5. Open http://localhost:3000 in your browser to view the portfolio

📄 Pages

  • Home: Landing page with an overview of skills and projects
  • About: Detailed information about professional background and expertise
  • Projects: Showcase of key projects and achievements
  • Skills: Comprehensive list of technical skills and proficiencies
  • Resume: Downloadable resume and detailed professional history
  • Contact: Form to get in touch

🔌 Backend Connection

This portfolio uses AWS services for backend functionality. There are two ways to set up the backend connection:

1. IAM Access

If you're deploying on AWS, you can use IAM roles to securely authenticate and connect to AWS services without exposing your AWS credentials.

  1. Set up an IAM role with the necessary permissions for your application.
  2. Attach the IAM role to the EC2 instance or ECS task running your application.
  3. Ensure your application is configured to use the IAM role for authentication.

🗄️ Database Integration

This portfolio uses Drizzle ORM and Neon DB for database management.

Setting Up the Database

  1. Ensure you have the necessary environment variables set up in your .env file:
POSTGRES_URL=your-postgres-url
  1. The database schema is defined using Drizzle ORM in the db/schema directory. For example, the technologies schema and projects schema.

  2. To generate and run migrations, use the following commands:

npm run db:generate
npm run db:migrate
  1. To seed the database with initial data, use:
npm run db:seed

This will add technology and categories, as well as my initial projects, which you can erase or use as a sample to guide you.

Database Configuration

The database configuration is defined in drizzle.config.ts:

import '@/db/env-config';

import { defineConfig } from 'drizzle-kit';

export default defineConfig({
  dialect: 'postgresql',
  schema: './db/schema',
  out: './db/migrations',
  dbCredentials: {
    url: process.env.POSTGRES_URL || 'no-db-url-found'
  }
});

🎨 Customization

To customize the portfolio for your own use:

  1. Update the content in each page component (app/*/page.tsx)
  2. Modify the components/responsive-header.tsx to update the navigation menu
  3. Replace images in the public/ and assets/ directory with your own
  4. Update colors and styles in tailwind.config.ts and styles/globals.css

📦 Deployment

This portfolio is set up for easy deployment on AWS using SST v3:

Getting Started: NextJS w/ SST

npm run build
# or
yarn build

🤝 Contributing

While this is a personal portfolio, suggestions and feedback are welcome! Feel free to open an issue or submit a pull request.

📝 License

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

📞 Contact

Dan Wise - [email protected]

LinkedIn: My LinkedIn Profile

Project Link: https://github.com/wiseiodev/portfolio