DEV Community

Cover image for What tools would you choose to create a personal portfolio site if starting from scratch?

What tools would you choose to create a personal portfolio site if starting from scratch?

Ben Halpern on May 04, 2022

No wrong answers here, what tools/stack would you choose and why?

Collapse
 
theaccordance profile image
Joe Mainwaring • Edited

I've been brainstorming a new portfolio solution for myself over the last few days, something atypical when you think of the word portfolio. What I've come up with so far:

  • Leaning towards a one-pager, no thought given on HTML/CSS/JS frameworks yet.
  • Content is a combination of static and dynamic data. Dynamic data would be information from third-party services & insights that would have to be re-calculated every time new data is added.
  • Since some of this dynamic data might be large (ex: stock ticker analysis), worker tasks would be written to fetch this data and compile insights on a schedule, saving the new data to a db or redis for the website to quickly fetch.
  • Open Source source so my work can be reviewed for technical competency
  • Github Actions for CI and CD
  • Continuous delivery trigger on something like a release tag being added to a commit on the main trunk.
  • Likely will live in Digital Ocean or GCP
  • Localized for translation

In terms of dynamic data, some ideas I'm floating:

  • Pull in blog posts from dev.to
  • A "top 10 dividends" report which returns which stocks have the highest dividend yield.
  • Github data like the contribution graph (although today's looks far less impressive to my team lead days)
  • Insights around my cloud spend - What resources I'm using, how many domains have I registered, etc.
  • LinkedIn data
  • Career twitter insights, using current twitter data + prior archives
  • Clips from xbox
  • Health data like steps and workouts, maybe more to add transparency around cancer treatment.

Static Content I'm toying around with:

  • Biography
  • Showcase Highlight - Past Projects
  • A map of where I've traveled
  • Recommendations for Third-Party Services
Collapse
 
riapacheco profile image
Ria Pacheco

Your portfolio sounds super impressive / comprehensive so I feel like the work would just speak for itself with a simple website builder (that wouldn't require your having to maintain it)? Every time I've tried to create a comprehensive CV, coded from scratch, I've regretted it lolol.

Here's my portfolio / cv site that I created with carrd.co: ria.run
:)

Collapse
 
theaccordance profile image
Joe Mainwaring

Hi Ria! Thanks for sharing your portfolio, you may have actually inspired me to look further into carrd and see if maybe I can just publish updates there.

Could I achieve what I'm looking for with something more simple? Absolutely. But the truth is that I don't need a portfolio to market myself either. My interest of late in publishing a portfolio was to use it as an exercise in implementing a background worker process. I've done a lot of SaaS feature work, but I never got around to background processes before I moved on from an individual contributor role.

Beyond wanting to scratch that itch, I'm all for KISS with the rest of the stack.

Thread Thread
 
riapacheco profile image
Ria Pacheco

Oh man, that’s sick. What about it gives you that itch exactly? I’ve gotten a different itch lately —to get back to the tech side from this marketing role. Lol.

Thread Thread
 
theaccordance profile image
Joe Mainwaring • Edited

I'm coming up on 2 years since I moved from an IC role into management and I haven't had many consulting opportunities of late due to covid and cancer.

Now that we're getting beyond the pandemic and my health has stabilized, it's time to shake off the rust and get back to the hustle I had previously, scratching this itch is practice for invoicing someone else for a similar job

Thread Thread
 
riapacheco profile image
Ria Pacheco

I enjoy that you're so chill about being inspiring AF.

Collapse
 
amiamigo profile image
Ami Amigo

I love yours too Ria. Was that a template? It's very beautiful...what tech stack did you use?

Thread Thread
 
riapacheco profile image
Ria Pacheco

Check out carrd.co! I think it's probably the cleanest UI I've ever seen in a site builder. That anti-aliasing is on point! 👌

Collapse
 
garrett profile image
Garrett / G66

Love your microcopy under "Curriculum Vitae"

Collapse
 
andriusmv profile image
Andres Moreno Vasquez

ria.run looks amazing! congrats, I loved the experience (of browsing it).

Collapse
 
nabsul profile image
Nabeel Sulieman • Edited

I run my blog/portfolio (nabeel.dev/nabeel.blog) site on DigitalOcean Kubernetes, with a few other sites. Most of the content is static, but there are some dynamic components that are pulled from a database:

  • Site is built in ASP.NET Core
  • I paid for a simple bootstrap-based HTML theme
  • Main pages are hand-crafted HTML
  • Blog posts are written in Markdown and "compiled" to HTML
  • Dynamic data is fetched by the C# code and returned to some simple JS code in the UI

I started on WordPress, then moved to Hugo for a while. Both are fine options, but I'm really enjoying my current setup. The advantaged that I see are:

  • The ability to use my favorite programming language.
  • Static and dynamic content are both really easy to do.
  • The education that comes with doing things from scratch.
  • It's really easy to experiment and add new features.
  • No more nginx/php-fpm/mysql, or messing with other people's code.

I'm not even sure if my current approach is harder or more time consuming overall. I may be starting at a lower layer than a CMS/SSG, but on the flip side I don't have to spend as much time trying to understand a complex system, its plugins, and dealing with the bugs and limitations that comes with all of that.

Collapse
 
waylonwalker profile image
Waylon Walker

This sounds like fantastic portfolio.

Collapse
 
ben profile image
Ben Halpern

I'll go first with an answer that has worked for me, but is not definitely how I would do it next time:

  • Plain HTML, plain CSS, plain JS. No dependencies, no build tools.

The reason for this approach would not be for the ease of initially building or "active" maintenance, but I generally take this approach when building a website I probably won't return to very often. Plan HTML, CSS, and JS — for a fairly small website — never gets out of date, never expires, never uses a build tool I forget how to use.

When I want to update some small thing about a website like this, the saving grace is that I can just do it without remembering the tool chain or dealing with some kind of dependency hell. Things move quickly, and reducing the tooling burden is a huge win in a lot of contexts.


That being said, despite all of that, the drawbacks are that the code and overall process can suffer. Re-usability is tough, and there are some awesome innovations you can't use with this approach.

So I'm really looking forward to hearing your take on this kind of problem. 😀

Collapse
 
liviufromendtest profile image
Liviu Lupei

That's such a practical approach.

Because if you ever want to contract a freelancer to maintain it or improve it, you'll easily find someone who understands plain HTML, CSS, JS.

I'm never sure if modern build tools are really helping us save time or if we just use them because the companies that built them have huge Marketing budgets.

When I first learned about GatsbyJS, I thought:
"Oh, that's cool, probably built by some developers in their spare time. I guess people are tweeting about it because it's really helping them."

But the reality was:
"Built by a for-profit company that raised over $46M from investors and spending a ton of money on Marketing and Twitter influencers."

Not criticizing them, it's a useful tool. But I can never be sure if the hype is real or faked.

The sad part is that such tools can really overcomplicate the development process, and make it less exciting for young folks to learn web development.

10 years ago, someone learning to code got their AHA moment when they made some JavaScript and CSS run in the browser.

And now, someone learning to code might get frustrated when some npm installation randomly fails and give up. Tutorials for beginners should still start with the basics.

Collapse
 
yan profile image
y-an

20ish years ago I was so happy to write first for loop statement in php and see something prints on html. Your comment brings back that good moment back. Would stay all night excited just to learn what else I can do.

Collapse
 
bigbott profile image
bigbott

so true...

Collapse
 
waylonwalker profile image
Waylon Walker

100, if you are not editing the site very often using a framework makes it so much more work to update every 2 years than its worth.

Collapse
 
simeg profile image
Simon Egersand 🎈

Plan HTML, CSS, and JS — for a fairly small website — never gets out of date, never expires, never uses a build tool I forget how to use.

A previous colleague of mine showed me his personal website and it was just this -- a picture of him, his resume, super basic styling and no JS. He was a very skilled front end engineer so I remember being taken back until he explained why.

I thought about that for a long time and now as I have more experience dealing with npm packages, broken updates, new frameworks etc. I believe it makes a lot of sense.

Assuming you don't enjoy maintaining things like that 😄

Collapse
 
arnebab profile image
Arne Babenhauserheide

My take to avoid the pains of complex tooling is to use autotools. Basically have a Makefile that contains what I need to build. That will keep working. When it’s too hard to represent in a Makefile, it’s too complex to maintain casually.

And staying away from npm, maven, and so forth. It has to keep working without internet access, because anything online can move and that way break my setup.

Collapse
 
phantas0s profile image
Matthieu Cneude

I don't like blog framework, maintaining that is too much of a pain. I had a Ghost blog a long time ago, and each time I needed to update it, something was breaking.

Now I'm using Hugo for a couple of years, and I love it. It's not really a framework (I mean the website itself doesn't depend on it) and it's very extensible. Updating Hugo is super simple too (one binary). It generates the plain HTML so it's super fast.

I believe that static site generator have a big future in front of them, especially for businesses.

Collapse
 
joelbonetr profile image
JoelBonetR 🥇

You can add a Bundler as devDependency (Parcel i.e. which is almost zero config) so you can ship your code minified and optimized into production :)

Collapse
 
pcmagas profile image
Dimitrios Desyllas

Also it is good idea to practice on fudamentals before going into fancy stuff.

Collapse
 
matthewbdaly profile image
Matthew Daly

I rebuilt my site in GatsbyJS last year, with Typescript and Tailwind, and I'd probably stick with that if doing it today.

The reasons I had for choosing it are still valid today - it uses React, which I'm familiar with, it supports MDX, which was a big factor since I was migrating from my own custom static site generator which also used Markdown, and it was easy to use custom URLs. The type safety of Typescript and the relative ease in styling from Tailwind were also a big factor in choosing those.

Collapse
 
joelbonetr profile image
JoelBonetR 🥇

I would suggest to use styled-components instead Tailwind. It's not necessary to explain the reason if you try it for 30min 😁

Collapse
 
matthewbdaly profile image
Matthew Daly

I've already tried them and preferred Tailwind.

Thread Thread
 
joelbonetr profile image
JoelBonetR 🥇 • Edited

Reason?

  • With both you reach non-unused css code.
  • tailwind has big coupling with HTML/JSX whereas Styled Components has almost none.
  • Styled Components allows extension with JS template strings.
Thread Thread
 
matthewbdaly profile image
Matthew Daly
  • Not exactly sure what you mean by "tailwind has big coupling with HTML/JSX whereas Styled Components has almost none", but if you mean the fact that it's embedded in the HTML and JSX, that's a good thing in my opinion. Both are facets of presentation of content, and logically they belong together. And if you need to strip out all the styles and start from scratch, that's trivial to do with a simple regex when using Tailwind
  • It's easy to extend Tailwind if you need to, just by updating one simple Javascript config file. But it's very rare to actually need to - the defined classes are very well chosen and cover almost every situation I need, and are named logically and consistently
  • I can use it in any front end templating system I like - it's useful in Vue components, Laravel Blade templates, or PHP template files, as well as in React
  • The elimination of context switching between CSS and JSX or other templating solutions means I can style something much more quickly than I could with any solution that involves writing CSS more directly. Even if it's done within the same file, it slows me down to switch my mental context between JSX and CSS, but with Tailwind I never have to do that
  • The tooling is solid. I use the Tailwind LSP server in Neovim for completion and it's extremely helpful
  • By limiting things like width, height, margin etc to a limited subset of presets, it makes it much easier to maintain consistency across a project, without making everything same-y like Bootstrap often does. But it's easy to amend the existing presets or add your own ones
  • Even with CSS-in-JS solutions it's possible you may wind up with unused CSS embedded in a component - it's less likely than with separate CSS files, but not impossible. That doesn't happen with Tailwind
  • If there are certain repeated patterns in your styling and you're not using a component library like React, it's easy to extract them using the apply directive
  • It's far, far quicker to get up to speed on a new project because I know what the defaults for Tailwind are and what they do, and from the classes on an element I can get a pretty good idea what it looks like without even seeing it in the browser
Thread Thread
 
joelbonetr profile image
JoelBonetR 🥇 • Edited
  • Learning curve: You need to learn Tailwind Syntax, while you use either standard CSS or SCSS inside styled-components.
  • Following the previous one, tailwind leads you to learn the CSS API the bad way, so you'll struggle when jumping into a project that does not use tailwind. i.e. `font-semibold` is not the same as `font-weight: 600;`
  • Extensibility and dynamism: Styled components declare styling using JS template strings, which mean you can pass props and do things like that:
const Paragraph = styled.p`
  font-weight: bold;
  flex: 0 1 100%;
  text-align: ${(props) => props.align};
`;

<Paragraph align='center'> My centered text </Paragraph>
<Paragraph align='left'> Left text on this one </Paragraph>
<Paragraph align='right'> Right align for the last one </Paragraph>
Enter fullscreen mode Exit fullscreen mode

So you can have props that are common to all paragraph components pre-set while adding parametrization just in what you really need.

It also works with React states so you can have a component that changes it's background-color depending on a state, as example.

  • The everything is a component approach on styled-components enforces re-usability of components and SOLID principles while tailwind does the opposite and promote code repetition (by classnames).
  • Reading templates with Tailwind is a hell, most of the time I need to scroll to the right even having a QuadHD screen to read the entire line or making it break to multiple lines. (I'm not sure about which of those is worse, I simply hate both).

There are more reasons not just those but I think it's enough to catch the idea about why Tailwind is marginally used in the industry at a professional/business level.

There's no single software architect I talked to about that which puts tailwind as first option to use and I agree for many reasons (including maintainability and speed of change things on a solid way).

Maybe if you are a backend dev that don't care much about front for any reason or you are just printing your templates from a server side application (¿is there anyone still doing that in 2022?) tailwind will be a no-brainer on that as it was bootstrap back those days.

Thread Thread
 
matthewbdaly profile image
Matthew Daly

Let's take this one by one...

Learning curve: You need to learn Tailwind Syntax, while you use either standard CSS or SCSS inside styled-components.

No, you don't. It's a relatively small number of class names which are internally consistent, descriptive, and intuitive, and can be easily autocompleted with an appropriate LSP server. If anything it's easier to learn than CSS.

Following the previous one, tailwind leads you to learn the CSS API the bad way, so you'll struggle when jumping into a project that does not use tailwind. i.e. font-semibold is not the same as font-weight: 600;

Which is a complete non-issue as I've been in the industry for over a decade and already know CSS. I'm full stack so CSS isn't my primary focus, but I'm certainly not going to struggle with basic stuff like that.

Extensibility and dynamism: Styled components declare styling using JS template strings, which mean you can pass props and do things like that

But you still need to define them inline of the components, so it's easier for different components to get out of sync. Using a much more limited pool of utility classes means it's easier to avoid the situation where one component has 3px padding, another has 2px padding etc.

The everything is a component approach on styled-components enforces re-usability of components and SOLID principles while tailwind does the opposite and promote code repetition (by classnames)

I don't buy this at all. The class names are simple, logical and consistent, and tell you exactly what they do, which is generally one thing and one thing only. They are not repetitive at all.

If you're repeating the same stuff over and over it suggests to me that something needs to be refactored out into its own component. And if it does get too repetitive in one component, you always have the option of using the apply directive.

Reading templates with Tailwind is a hell, most of the time I need to scroll to the right even having a QuadHD screen to read the entire line or making it break to multiple lines. (I'm not sure about which of those is worse, I simply hate both).

I don't have an issue with this. I use Neovim and it wraps the lines fine for me. I've used VSCode a little in the last few years too and didn't have an issue with it there either.

There are more reasons not just those but I think it's enough to catch the idea about why Tailwind is marginally used in the industry at a professional/business level.

This is not only extremely patronising, but complete and utter nonsense.

I work for a digital agency which is owned by a pretty large global network of digital agencies, and is listed on the FTSE. Hundreds of people work for that agency, and thousands for the network, so we're not talking a tinpot little agency. And we use Tailwind pretty much exclusively on new projects. Furthermore, of the other developers I've worked with in the past at my current or previous employers who I'm still in contact with, probably a majority of them use Tailwind these days, including plenty with a greater focus on front end development than I have. And from the buzz I hear about it on social media, and mention of it in job adverts, it's widely used elsewhere.

There's no single software architect I talked to about that which puts tailwind as first option to use

I find this very hard to believe based on my own experience. I would suspect that the people you asked haven't actually tried Tailwind for long enough to make a remotely informed decision about it, or are one of the people who think it's the same thing as inline CSS.

Maybe if you are a backend dev that don't care much about front for any reason

Again, this is deeply patronising. Of course I care about the front end. Having developed Phonegap apps in the past, while working at a small agency where I didn't have any front end support, I've had to build out a nice, usable interface on many occasions.

or you are just printing your templates from a server side application (¿is there anyone still doing that in 2022?)

Are you kidding me? Like I said, I work for a big digital agency network and that is still the majority of what we do, and will be for the foreseeable future. Things like Next.js are useful, but for a lot of real world stuff server-side rendering with a framework like Laravel makes far more sense.

tailwind will be a no-brainer on that as it was bootstrap back those days.

This is not only extremely patronising, but flat out wrong. Tailwind simply doesn't work like Bootstrap, and none of the things I've used it for have ended up looking same-y. It's a very different beast to Bootstrap and if you know it at all (and it's easy to learn) you can produce a decent UI for basically anything you like without each site looking the same.

My front-end colleagues who work with it far more than I do and push it further than I ever do feel the same way.

Thread Thread
 
joelbonetr profile image
JoelBonetR 🥇

Did you notice that I'm speaking on the overall technology and not about my/your experience?

It's not about my or your personal preference but somthing than can be better or worse depending on the situation or what you want to achieve

Thread Thread
 
matthewbdaly profile image
Matthew Daly

Did you notice that I'm speaking on the overall technology and not about my/your experience?

No, you really obviously weren't. You're clearly now trying to shift the scope of the discussion to make it sounds like I was talking solely about my experience, which I wasn't. I work with a team of other developers and I often have to make decisions when choosing a stack that go against my personal preferences and since I'm a grown-up I have no ego about doing so.

Since you're obviously not arguing in good faith I'll bid you good day and leave it there.

Thread Thread
 
jafuentest profile image
Juan A. Fuentest Torcat

If any of you were actual grown ups you would be arguing vim vs emacs

Thread Thread
 
joelbonetr profile image
JoelBonetR 🥇

😂😂😂😂😂

Collapse
 
pierre profile image
Pierre-Henry Soria ✨

Yep, good one 😁

Collapse
 
karanpratapsingh profile image
Karan Pratap Singh

Next.js with SSG. Performance and good SEO. Built-in blog support as well

I open-sourced mine here

For deployment: vercel or netlify.

Keep it simple!

Collapse
 
gass profile image
Gass

This is very nice! .. I really liked the buy me a coffe icon and the color palette

Collapse
 
karanpratapsingh profile image
Karan Pratap Singh

Thanks 😊

Collapse
 
aryank21 profile image
Aryan Kaushik

I created a dynamic protfolio simple, clean elegant and with a little surprise.
Check this out.
aryankaushik.tech/

It is made with html, css and javascript.

Collapse
 
ben profile image
Ben Halpern

That is a lot of fun, I absolutely love it!

Collapse
 
aryank21 profile image
Aryan Kaushik

thanks @ben

Collapse
 
hantu0 profile image
Tim

I like the way the color changes, based on which of the links you've followed when you visit them.

Collapse
 
gass profile image
Gass

I like the uniqueness of this. Thanks for sharing. I would maybe create a mechanism to activate and de-activate the painting thing.

Collapse
 
aryank21 profile image
Aryan Kaushik

I intensionally didn't added that to make it more unique. I saw your portfolio its super fantastic.

Collapse
 
amiamigo profile image
Ami Amigo

Thanks for wasting my two minutes Aryan! I loved it though

Collapse
 
aryank21 profile image
Aryan Kaushik

Thanks, atleast you checked my portfolio 🙏

Collapse
 
paratron profile image
Christian Engel • Edited

I would not create a personal portfolio site nor did I ever create one.

Don't get me wrong - I have had a personal website since I was a kid. But it was my personal playground where I just tried things that were fun / interesting for myself.

When it came to work reladetd stuff to show off, I found a simple google doc with plain text much more effective. I just write the project name, the timeframe, technologies used and my role in the team.

Thats much easier to read for most companies or recruiters. My code is hosted and can be browsed on github.

But thats just my personal approach.

Collapse
 
marceloandrade profile image
Marcelo Andrade R.

I think to not repeat your self you need some build tool that is minimal, hugo is great for this kind of sites.

Collapse
 
aminnairi profile image
Amin • Edited

Writing a portfolio in pure HTML, CSS and JavaScript would be fun, but this would also mean a lot of time spending repeating a lot of things since HTML, CSS and JavaScript do not scale well.

So it would be more interesting to use a JavaScript framework since a portfolio often means no server. But again, there is a JavaScript fatigue to setup a new project with NPM, Webpack, Vite, React, Angular, Vue, ESLint, Jest, ...

With all that in mind I would go the Elm way because:

  • This is a purely functional language and I prefer the guarantees it brings compared to object-oriented programming
  • The bundler is built-in
  • The linter is built-in
  • The testing library is built-in
  • The router is built-in
  • The dependency manager is built-in
  • The JavaScript framework is built-in (it's a core dependency)
  • The compiler errors are the greatest of all programming languages
  • It is easy to go back to any projects months later (thanks to the compiler)

Cons would be:

  • To learn functional programming
  • To learn a ML syntax
  • To accept learning new ways of doing things

Pros would be:

  • Having fun learning new things in a side project
  • Possibly getting good habits when going back to work
  • Having a portfolio that ships with the least amount of errors
  • You can go back to it 5 months later and add a new feature confidently even though you completely forgotten how you built the dang thing
Collapse
 
jeoxs profile image
José Aponte

A simple Triforce (HTML/CSS/JS) single page website. No frameworks. You might wonder why. Well, let me tell you a story...

In the early days, we used a white paper to show our photo, info, portfolio, education, skills, references and any other relevant information. That is called Curriculum vitae! The famous CV was a simple printed document. Of course, you had to bring your skills certificates.

Now, I've seen a lot of programmers portfolio showing their skills. Some portfolio websites use frameworks, others only use the Triforce. My belief is that we need to build our portfolio in a simple way, but elegant. The site must be fast, lightweight and neat (like the printed document we used to show). We can achieve that using only the triforce. If we use frameworks, we might overload the website with unnecessary libraries. If the browser can load your website under 5 seconds, then you're good to go!

Oh, I forgot to mention VSCode! It's an essential tool for me. Happy Coding!

Collapse
 
m_ahmad profile image
Muhammad Ahmad

I'll use following tools.

  • Next.js (Framework)
  • Chakra UI (React component library)
  • Vercel (Deployment)
  • Namecheap (Domain name)
  • Blog (MDX, Dev.to api)
  • Database (Postgresql)
  • ORM (Prisma)

I have already created my portfolio website with above mentioned tools. I love these tools because they make creating a beautiful portfolio website process very easy.
Here is my portfolio link mahmad.me

Collapse
 
barelyhuman profile image
Reaper

I've done this a few times now,
It was with Vanilla HTML,CSS,JS first,
nextjs next
then I wrote my own SSG and that was used for it
and now it's built on astro.build

If I do start from scratch, I think I'd go with vanilla CSS,JS but would write a mini script to convert markdown to html, cause I just need markdown to be there.

Collapse
 
cicirello profile image
Vincent A. Cicirello

I would mostly stick to what I am currently using which includes:

  • plain HTML
  • plain CSS
  • JS only on my site search page (rest of site is free of JS)
  • hosted on GitHub Pages
  • custom static site generator implemented in Java (why below)
  • GitHub Actions to run said custom site generator on pushes
  • hacked together format for page content, page metadata, etc -- this is the input to the site generator (this is the one thing I'd change if I started over)
  • and a BibTeX .bib file with extra custom fields as source of content of my list of journal articles, conference papers, etc as well as one abstract page for each article. I'm a professor so this is a large part of site.

Why a custom site generator? This is related to last bullet above. I wanted to be able to generate my publication list as well as abstract pages for each publication directly from a BibTeX file. I also wanted structured data markup for this. So since no existing site generators did this, I hacked something together. The code is a mess (in a private repo for that reason). I wrote it quickly and have hacked in new features as I've wanted them. Think duct tape and silly putty holding it all together.

Site is at: cicirello.org/

The publication list page generated by the site generator from a BibTeX file is at:
cicirello.org/publications/ .
And an example of one of the abstract pages also derived from the BibTeX file: cicirello.org/publications/cicirel...

The content for rest of site is maintained in a hacked together format. This is what I'd change if I started over. Not sure what I'd use exactly.

Collapse
 
andrewbaisden profile image
Andrew Baisden

My most recent portfolio was built with this tech stack:

  • React
  • TypeScript
  • Storybook
  • Netlify

No need for anything too complicated because this current portfolio is more of a landing page that links to my other profiles. Single page and lightweight andrewbaisden.com/

Collapse
 
philliprichdale profile image
Phillip Richdale

Tools I'd use:

  • Text Editor (VS Code, Geary, Sublime ...)
  • Image Editor (Gimp)
  • Web- CMS and/or Web Frontend Framework (Bootstrap 5, Bulma, MD Lite, etc.)

Using only a FE framework I also would use Git versioning from day one.

I wouldn't use a toolkit for complex webapps like react or such unless there are solid reasons to do so, like if your backend is already in place and is API-first or something. If you want to use the opportunity to use and learn something new the I'd go for offline static site generation with Gatsby or Hugo or something. But I'd rather avoid that as it's probably overkill for a personal portfolio website. You want to concentrate on other things when building that rather than learning new stuff meant for fringe cases.

Collapse
 
arnebab profile image
Arne Babenhauserheide

I do not need a portfolio page, but I finally got my personal page to be as I want it: Built on Emacs org-mode publish, static site, with vcs-provided newest change on the first page, categories and clean PDF export, some of the pages embedding Javascript to provide purely frontend interactive content, with local tooling in Emacs, so creating new pages needs just a simple command, and autotools for full make distcheck to ensure that it works.

This page is what I use to publish everything I create — from simple comments (integrated with org-capture) over drawings and notes from roleplaying sessions to lecture slides; and all categorized so it stays easy to find.

It does not showcase technologies, but shows that I know what I use and understand how tools interact.

And it is free and copyleft licensed, so others can build on it: hg.sr.ht/~arnebab/draketo

Missing:

  • translations (I don’t have enough time to translate all my writings).
  • microformats.
  • scheduled publishing with automatic posting to federated networks.
Collapse
 
amiamigo profile image
Ami Amigo

Just plain HTML and CSS. In most cases you don't even need JavaScript. Developers really love to over-engineer. Actually you can skip coding and just grab an HTML Template. Or just grab a WordPress Theme. I personally prefer simple things...Vanilla.

Collapse
 
bluejayee profile image
John B

How about using Hugo hosted on Netlify. Easy peezy, with SSL and CDN, commit and deploy straight from git. A bit like static hosting with S3 and Cloudfront but all the deployment handled for you Netfly.

Collapse
 
hunsalz profile image
Markus Hunsalz

In my eyes in such a case a static site generator fits perfectly. Choose your favorite language and you should be able to have a kickstarter site within minutes. Most SSGs provide some templates / starters as well. Moreover most of these SSGs provide rich plugin mechanism for common use cases: e.g. sitemaps, i18n, .htaccess, seo, manifest, PWA, ...

My personal favorite is Gridsome. It's based on Vue.js and has a collection of starter templates and plugins. Besides I'm a huge fan of the GraphQL data layer.

And a while ago I had a same question in mind. Maybe you like my portfolio template :)

Collapse
 
gklijs profile image
Gerard Klijs

I could not really find something that worked for me. Ended up creating vados, a rust ststic site generator with balma classes in the html. Did use it for a site about my bass before. Hope to add a few things this weekend, like canonical url support, so I can create a first version of a portfolio also.

Collapse
 
jmorel88 profile image
Jose Morel

For my personal portfolio site I went with good old fashion HTML, CSS, and Javascript with all the content hardcoded. It was a way to keep things simple and performant. I would probably stick with this setup since there isn’t anything too crazy on my site.

But if I were to build something that needed some more interactivity and pages, I might reach for something like Qwik, or Astro.build. Reason being, I appreciate that they both seem to prioritize HTML over Javascript.

Collapse
 
raghavmisra profile image
Raghav Misra

Nuxt 3 + Typescript, probably deployed on Netlify. My main reason is I love using Vue 3 and Typescript. This way I can build all my pages to static HTML for SEO purposes and also have nice SPA transitions between views. Nuxt 3 is super cool, and I can write endpoints (say for a contact form or using some API) that can be built to Netlify functions. The Nuxt Content library exists as well (although I am unsure whether it does for Nuxt 3 yet) which makes building content from static markdown files really nice. I could combine this with Netlify CMS for a nice WYSIWYG content editor for the site. As far as CSS frameworks go, I'd probably write my own, or maybe modify Bulma to fit my needs. Not the biggest fan of Tailwind personally, but that's a valid option too.

Collapse
 
jesusantguerrero profile image
Jesus Guerrero

astro.build

  • Allows you to brake the sections into reusable components and you can bring any framework you like (react, vue, svelte) or none.

  • 100 score in web vitals out of the box

  • You can use mardown and template to build your on site blog if you like

Example: here is mine jesusantguerrero.com

Tailwind CSS: for styles.

Vercel or Netlify for hosting: They connect with github and deploy with every merge in your main branch

Collapse
 
0x2fa profile image
0x-2FA • Edited

When creating a portfolio site I value a lot linking to personal articles and projects. I don't really value the aesthetic of the site that much, and that's why I wouldn't really use a css framework like Bootstrap, Bulma etc. Instead I would go with something custom made, like I would take the base of one framework and I would just add some classes that I would probably need for that minimum styling that I'm trying to achieve.

So I would use:

  • Jekyll (as my static site generator)
  • PureCss (only the Base and Grid parts)
  • Git and Github
  • Netlify (Vercel works too)

I'm currently learning Svelte so I would replace Jekyll with SvelteKit for learning purposes.

Collapse
 
perkinsjr profile image
James Perkins

Next.js
Tina CMS with MDX file format
Chakra UI
Vercel
Jamcomments for (comments)

Easy stack to get up and running, MDX has powerful features, using Tina CMS for open source, git backed contextual editing experience.

Chakra for easy component creation.

Jam comments is fantastic and small for comments.

Collapse
 
pontakornth profile image
Pontakorn Paesaeng

I currently have portfolio-lite at pontakorn.dev right now.

It's pretty overkill for a simple website. If I create it next time, I would make it simpler. It is repurposed from a blog. I moved to Hashnode now.

I have some requirements for my portfolio

  • Simple and maybe minimal
  • Easy to update
  • Support dark mode
  • Static in term of static site using Next.js or Gatsby
  • Can rebuild or render from API (My Hashnode posts are pulled from API.)

My preferred tool would be Next.js or Nuxt.js. I don't really like Gatsby.js because it is quite more complex.

For styling, I would use CSS Module or Vanilla Extract (CSS Module but TypeScript) or Tailwind. I think I will use Vanilla Extract this time. Tailwind does not fit with React for me.

Collapse
 
alenabraham profile image
Alen Abraham

I built my website on top of HUGO (Static site generator) and hosted on github-pages with domain configured on cloudflare.
HUGO -> Github-pages -> Cloudflare
This would be a good combo.

You could go for Hugo if you are looking for a site which is concentrated on blogging.

Collapse
 
chadwinjdeysel profile image
Chadwin Deysel

Currently my portfolio runs with Gatsby.js, Netlify CMS and Custom Coded SASS. However, if I were to recreate my site I'll rework the frontend to use Tailwind CSS. The more Tailwind has evolved, the more of a fan I've become. As for my CMS, I would ditch Netlify for my blogs and get them from either Dev or Hashnode (Because GraphQL).

Collapse
 
psypher1 profile image
James 'Dante' Midzi

I'd probably use Eleventy. Because it would be static and the only thing that would update would be my posts. Pish markdown to Github and it updates.

Javascript frameworks are alright, but sometimes they're more trouble than they're worth

Matter of fact, let me go do that now

Collapse
 
dionarodrigues profile image
Diona Rodrigues

I would say it depends on what kind of portfolio we are talking about. Is it going to have forms? Is it need some kind of complex integration?

At this time I'm fascinated with Next.js and for me this is the best option now for SSR (or even static sites). BTW I've created this Starter for Next.js applications written in TypeScript to use on my projects.

My portfolio is built on Gatsby.js, another great tool that I also like (but I'm about to convert my site to Next.js). And I also suggest Netlify to deploy the portfolio, since it can easily be integrated to github or bitbucket.

Collapse
 
urielbitton profile image
Uriel Bitton

It depends,

If my portfolio contains nothing fancy. HTML, CSS, JS is probably best for speed and dev.

If it does contain stuff like demos of my apps, or a lot of UI components (which i've done in the past) then probably react!

Collapse
 
gass profile image
Gass • Edited

I'm now building my third personal website. The first gass-git.github.io/minimis/ I built it with jQuery, HTML, CSS. The second one gass.dev which is the current site I'm using I built it using React, HTML, CSS + Laravel for back-end stuff. And now I'm using React again, which is my favorite tech. I use React mainly because I have a lot of fun using it and love the modular/state system for structuring an App. I don't usually use CSS frameworks because I tend to think out site the box in terms of design, so I preffer freedom in this sense. Most of the content displayed in the site will be fetched. Projects from github, answers/stats from Stack Overflow, writings from devto, and other... For back-end I would like to learn something new, maybe firebase. I'm not sure.

Collapse
 
waylonwalker profile image
Waylon Walker

I am partial to markata.dev for something with a bunch of markdown. I am including my blog posts in mine, which is tons of markdown that needs converted to html, and of course things change over time so I want an easy way to make plugins that can tweak all of the posts just a bit. My home page is still vanilla html/css with markata building out all of the markdown content underneath.

Collapse
 
terabytetiger profile image
Tyler V. (he/him)

I'd choose a stack I haven't worked with before.

Part of the fun with my portfolio site is getting to play and learn new things - that's why I have "🧪 Experiment 🧪 | 💥 Fail 💥 | 🧠 Learn 🧠" in my footer 🤓

Collapse
 
joelbonetr profile image
JoelBonetR 🥇

Did my current one with plain HTML + Scss (plus few lines of JS).

It's the most performing you can do. However if you plan to maintain it's content, i would say that adding a dashboard in order to add further things from a template would be fine, in which case I'll choose Next JS as it provides SSG, SSR, and you can code server side (Node JS) and client (React) so the only thing you can need is a DB and any cheap VPS is shipped with MariaDB/MySQL which you can handle using Sequelize ORM easily.

Collapse
 
jonrandy profile image
Jon Randy 🎖️ • Edited

None. Portfolio sites are vanity projects that are mostly a waste of time

Collapse
 
janwagenaar profile image
jan-wagenaar

I went with Gatsby (frontend) + strapi (backend) for mine. Was a plain html site before, but I was missing template abilities for the work and blog pages.

Collapse
 
gass profile image
Gass

cool design

Collapse
 
pandademic profile image
Pandademic

I'd use svelte , as I just started using it and I got to say .... It's easier than everything else.

Collapse
 
warwait profile image
Parker Waiters

As simplicity goes, it's hard to go wrong with Eleventy these days.

Collapse
 
moopet profile image
Ben Sinclair

These days, probably Next and material UI but that's because it's what I've been teaching myself and next week I'll give a different answer.

Collapse
 
thomasbnt profile image
Thomas Bnt ☕

CSS with no frameworks and NuxtJS for the support!

Collapse
 
spock123 profile image
Lars Rye Jeppesen

TailwindCSS, Angular, Firebase hosting, Github actions

Collapse
 
darkwiiplayer profile image
𒎏Wii 🏳️‍⚧️

Lua and Git. Yes, that's really it.

Collapse
 
dubemkizito profile image
Izuorah Dubem kizito

Astra, Vue, Tailwind, Pug

You can't go wrong when you go for speed

Collapse
 
apayrus profile image
Rustam Apay

I made mine with Next.js

Collapse
 
tuwang profile image
TuWang

time to be a python fullstack engineer?

Collapse
 
gulshanaggarwal profile image
Gulshan Aggarwal

Upto now I choosed only Html, Css & Javascript but now the next version will comprise of Nextjs, Material-ui, Express.

Collapse
 
unsungnovelty profile image
Nikhil • Edited

Hugo, HTML, CSS and if necessary JS. Make it live with github/GitLab pages or Netlify.

Collapse
 
frikishaan profile image
Ishaan Sheikh • Edited

I'll go with minimalistic design using Tailwind. And Nuxt.js if need to add a blog. I have learned by doing that using fancy tools doesn't guarantee success it just increase the time of completion.

Collapse
 
ostap profile image
Ostap Brehin

Astro.js and Tailwind CSS

Collapse
 
rajaneeshr profile image
Rajaneesh R

The tools that will help me make my personal portfolio

Collapse
 
bobbyiliev profile image
Bobby Iliev

Most-likely I'll stick to Laravel + Livewire + Apline.js and Tailwind CSS, eg the TALL stack.

Would also use Tails for some hand-crafted Tailwind CSS UI elements.

Collapse
 
soniarpit profile image
Arpit

Only HTML

Collapse
 
memoryinject profile image
Mahesh MS

I built my portfolio website with HTML, Bootstrap and Plan JS. Hosted in Netlify with GitHub.
If I start from scratch, I probably stick to the same stack.

Collapse
 
mnd profile image
MNDSE

I built my very first website using HTML/CSS and some JavaScript. But for my personal portfolio I am planning to use react to apply the concepts I learned.