personal-site
My personal website - built with React, React-Router, React-Snap for Static-Export, and GitHub Pages.
Top Related Projects
⚡️ A minimal portfolio template for Developers
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
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
-
Clone the repository:
git clone https://github.com/mldangelo/personal-site.git cd personal-site
-
Install dependencies:
npm install
-
Customize the content by editing the JSON files in the
src/data
directory. -
Start the development server:
npm start
-
Build for production:
npm run build
-
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>
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.
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 designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
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
- Built with modern JavaScript, using tools and frameworks like create-react-app, React-Router, and SCSS.
- Automated workflows via GitHub Actions.
- And more!
ð 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
-
Clone the repository:
git clone git://github.com/mldangelo/personal-site.git cd personal-site
-
(Optional) Ensure you're on Node v16 or higher:
nvm install node --version
-
Install dependencies:
npm install
-
Start the application:
npm start
By default, the application should be available at http://localhost:3000/.
ð¢ Deploying
Deploying to GitHub Pages
- Update the environment variables and Git remote URL in
.github/workflows/github-pages.yml
. - Adjust the
homepage
value inpackage.json
based on your hosting preferences. - 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
- Initial template from Future Imperfect by @ajlkn for HTML5 UP.
- Special thanks to @typpo for tirelessly answering all of my node.js and react questions.
- Kudos to @notrueblood[1] and @sjhsieh[2] for their constructive feedback.
Top Related Projects
⚡️ A minimal portfolio template for Developers
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
The personal website/portfolio template by Hashir Shoaib. Built using React and Bootstrap.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot