Convert Figma logo to code with AI

mldangelo logopersonal-site

My personal website - built with React, React-Router, React-Snap for Static-Export, and GitHub Pages.

1,293
862
1,293
1

Top Related Projects

⚡️ A minimal portfolio template for Developers

7,538

Fourth iteration of my personal website built with Gatsby

Code that'll help you kickstart a personal website that showcases your work as a software developer.

:zap: Dynamically generated stats for your github readmes

1,325

The personal website/portfolio template by Hashir Shoaib. Built using React and Bootstrap.

Quick Overview

mldangelo/personal-site is a modern, responsive, and customizable personal website template built with React. It's designed for developers, researchers, and professionals to showcase their work, skills, and experiences in an elegant and interactive manner.

Pros

  • Highly customizable with easy-to-edit JSON files for content management
  • Built with modern technologies like React, Node.js, and Express
  • Includes features like dark mode, analytics integration, and PDF generation
  • Well-documented and actively maintained

Cons

  • Requires some knowledge of React and JavaScript for advanced customization
  • May be overkill for those seeking a simple, static personal website
  • Limited built-in design variations, requiring manual CSS adjustments for significant visual changes

Getting Started

  1. Clone the repository:

    git clone https://github.com/mldangelo/personal-site.git
    cd personal-site
    
  2. Install dependencies:

    npm install
    
  3. Customize the content by editing the JSON files in the src/data directory.

  4. Start the development server:

    npm start
    
  5. Build for production:

    npm run build
    
  6. Deploy to GitHub Pages:

    npm run deploy
    

For more detailed instructions and customization options, refer to the project's README.md file.

Competitor Comparisons

⚡️ A minimal portfolio template for Developers

Pros of simplefolio

  • Simpler and more lightweight, making it easier for beginners to customize
  • Includes a dark mode feature out of the box
  • Provides a smoother scrolling experience with built-in animations

Cons of simplefolio

  • Less comprehensive and feature-rich compared to personal-site
  • Limited to a single-page design, which may not suit complex portfolios
  • Fewer sections and content types available by default

Code Comparison

personal-site uses React and includes more complex components:

const Main = () => (
  <BrowserRouter basename={BASE_PATH}>
    <Switch>
      <Route exact path="/" component={Index} />
      <Route path="/about" component={About} />
      <Route path="/projects" component={Projects} />
      <Route path="/stats" component={Stats} />
      <Route path="/contact" component={Contact} />
      <Route component={NotFound} status={404} />
    </Switch>
  </BrowserRouter>
);

simplefolio uses vanilla JavaScript and HTML for a simpler structure:

<section id="about">
  <div class="container">
    <h2 class="section-title">About me</h2>
    <div class="row about-wrapper">
      <div class="col-md-6 col-sm-12">
        <div class="about-wrapper__image">
          <img class="img-fluid rounded shadow-lg" height="auto" width="300px" src="./assets/profile.jpg" alt="Profile Image" />
        </div>
      </div>
      <div class="col-md-6 col-sm-12">
        <div class="about-wrapper__info">
          <p class="about-wrapper__info-text">...</p>
        </div>
      </div>
    </div>
  </div>
</section>
7,538

Fourth iteration of my personal website built with Gatsby

Pros of v4

  • More modern and visually appealing design
  • Better mobile responsiveness and overall user experience
  • Extensive use of animations and transitions for a polished look

Cons of v4

  • Less customizable without deep code changes
  • Potentially slower load times due to heavier use of JavaScript and animations
  • May require more maintenance to keep dependencies up-to-date

Code Comparison

v4 uses styled-components for CSS-in-JS:

const StyledHeader = styled.header`
  display: flex;
  justify-content: space-between;
  align-items: center;
  position: fixed;
  top: 0;
  z-index: 11;
  padding: 0px 50px;
  width: 100%;
  height: var(--nav-height);
  background-color: var(--navy);
  transition: var(--transition);
  filter: none !important;
  pointer-events: auto !important;
  user-select: auto !important;
`;

personal-site uses traditional CSS modules:

.header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  z-index: 10;
  padding: 0 20px;
  background-color: #fff;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

Both approaches have their merits, with v4's method offering more dynamic styling capabilities, while personal-site's approach may be simpler and more familiar to some developers.

Code that'll help you kickstart a personal website that showcases your work as a software developer.

Pros of personal-website

  • Simpler setup and configuration, ideal for beginners
  • Built-in GitHub Pages integration for easy deployment
  • Includes a blog feature out of the box

Cons of personal-website

  • Less customizable and flexible compared to personal-site
  • Fewer pre-built sections and components
  • Limited styling options without extensive modifications

Code Comparison

personal-website:

<main id="content" class="main-content" role="main">
  {{ content }}
  {% include footer.html %}
</main>

personal-site:

const Main = () => (
  <main className="container">
    <Helmet titleTemplate="%s | Michael D'Angelo" defaultTitle="Michael D'Angelo" />
    <div className="main-container">
      <Routes>
        <Route path="/" element={<Index />} />
        {/* Other routes */}
      </Routes>
    </div>
  </main>
);

personal-website uses a simpler Jekyll-based structure with HTML templates, while personal-site employs a more complex React-based architecture with JSX components. The personal-site approach offers greater flexibility and dynamic content capabilities, but requires more advanced development skills.

:zap: Dynamically generated stats for your github readmes

Pros of github-readme-stats

  • Lightweight and focused on generating GitHub stats for README files
  • Easy to implement with a single line of markdown
  • Customizable themes and layout options

Cons of github-readme-stats

  • Limited to GitHub statistics and doesn't provide a full personal website solution
  • Requires external hosting for the generated images
  • Less control over the overall design and content structure

Code Comparison

github-readme-stats:

[![Anurag's GitHub stats](https://github-readme-stats.vercel.app/api?username=anuraghazra)](https://github.com/anuraghazra/github-readme-stats)

personal-site:

import React from 'react';
import { Link } from 'react-router-dom';
import Main from '../layouts/Main';

const Index = () => (
  <Main>
    <article className="post" id="index">
      <header>
        <div className="title">
          <h2><Link to="/">About this site</Link></h2>
          <p>A beautiful, responsive, react app written with modern Javascript.</p>
        </div>
      </header>
      {/* ... */}
    </article>
  </Main>
);

export default Index;

The code comparison shows that github-readme-stats is implemented with a single line of markdown, while personal-site requires more complex React components and routing for a full website structure.

1,325

The personal website/portfolio template by Hashir Shoaib. Built using React and Bootstrap.

Pros of home

  • Simpler and more lightweight, making it easier to customize and maintain
  • Uses React Hooks for state management, providing a more modern approach
  • Includes a dark mode feature out of the box

Cons of home

  • Less comprehensive and feature-rich compared to personal-site
  • Limited built-in sections, requiring more custom development for additional content
  • Lacks integrated blog functionality

Code Comparison

personal-site uses a more structured approach with separate components:

<Layout>
  <Helmet titleTemplate="%s | Michael D'Angelo" defaultTitle="Michael D'Angelo" />
  <Header />
  <Main />
</Layout>

home uses a single-page structure with conditional rendering:

<>
  <Navigation />
  {home && <Home />}
  {about && <About />}
  {projects && <Projects />}
</>

Both projects use React, but personal-site incorporates more advanced features and a more complex structure, while home offers a simpler, more customizable starting point for a personal website.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Personal Website

Welcome to my personal website! This is an MIT licensed React-based Jamstack application. It offers a simple interface, easy modifications, static export capabilities, and free automatic deployments via GitHub Pages.

🚀 Features

🛠 Adapting this Project

Want to create your own personal website based on this project? You can set it up in as little as 30 minutes! Follow the setup instructions below and check out the detailed guide and checklist on adapting this project to your needs. If you encounter any challenges, don't hesitate to contact me through an issue or email at help@mldangelo.com.

🤝 Contributing

Your contributions are warmly welcomed! If you wish to contribute, please review the design goals, roadmap, and contributing guidelines. For any bugs or suggestions, you can reach out via email, submit a pull request (I'd be happy to get you a coffee as a thank-you!), or open an issue.

🔧 Dependencies

Ensure you have node >= v16. Optionally, use nvm to manage node versions.

🚀 Setup and Running

  1. Clone the repository:

    git clone git://github.com/mldangelo/personal-site.git
    cd personal-site
    
  2. (Optional) Ensure you're on Node v16 or higher:

    nvm install
    node --version
    
  3. Install dependencies:

    npm install
    
  4. Start the application:

    npm start
    

By default, the application should be available at http://localhost:3000/.

🚢 Deploying

Deploying to GitHub Pages

  1. Update the environment variables and Git remote URL in .github/workflows/github-pages.yml.
  2. Adjust the homepage value in package.json based on your hosting preferences.
  3. Planning on using a custom domain? Update public/CNAME. Otherwise, remove it.

After making a commit to main, simply push your changes, and the deployment will be handled automatically.

Static Export

For a static export without deploying to GitHub Pages:

  • Remove or disable .github/workflows/github-pages.yml.

  • Execute:

    npm run predeploy
    

This will generate a static version in personal-site/build/ which you can host or deploy to a CDN.

🙌 Acknowledgements