Skip to main content

Command Palette

Search for a command to run...

Ideation and Research

Creating a portfolio ( finally )

Updated
5 min read
Ideation and Research
R

I am a high school junior and web developer. I started learning web dev at the age of 15-ish I guess [?] ( I have goldfish memory). I love working with react JS, tailwind and firebase

I have been procrastinating about creating a portfolio for months now. I keep telling myself that I will create one when I have enough projects to put up but I think at this point that does not matter. I can always work on the projects but it is important to have a portfolio to showcase my work.

This is the first part of my ‘Creating my portfolio’ series and in this part I will be going through the design that I want to implement, my dilemmas around the design and the tools I will be using. I also humbly request everyone who is reading to drop down their suggestions, if you feel like I can tweak or improve certain things in the design and the overall approach please let me know.

With that outta the way, let’s talk about the design

Design

For the layout and use-interface I headed over to dribble for some inspiration and initially I wanted to create a very artsy and colorful website. I really like the GumRoad website and wanted something of that sort. Now before anything else, I would like to mention that I do not enjoy creating figma prototypes, I do understand that they provide guidelines and a solid base for you to work on but I end up working on the prototypes for days on end and that really slows me down.I do want to stick to the conventions and include three main sections:

→ About Me

→ Projects

→ Blogs

Anyways, As I scrolled through dribble I found a bunch of amazing designs and had ideas as to how I could modify them but then I came across; this particular design. I also saw it's implementation here and immediately fell in love.

Now I know it is literally the opposite of what I was aiming for, in the beginning but I really really reallllyyy liked the simplicity of this design. I loved how clean yet elegant it looked with just the right amount of content, I knew I wanted something like this but this design was a bit too monochromatic for my liking. I thought of multiple ways I could modify the design and customize it. Here are some of the modifications I have decided to implement.

The background

Lately I have been seeing a really cool gradient effect on websites. I am not sure how to explain it so I will be adding pictures but think of a glowing source of light and imagine looking at it through a glass. This effect can be described as a muffled kind of gradient. I tried to find out what this effect was actually called and I think it is called aurora gradient, sometimes I just think it is a blur gradient so if any of you guys know what it is actually called, do let me know. here are some references:

odessy dao.png The website can be viewed here

tailwindcss.png The website can be viewed here

The Color Palette

Even though the design uses only a single color since I am adding a gradient I will use three colors apart from black. I might change the tones a bit according to whatever feels right as I start the development process but more or less these are the colors I will be using:

portfolio.png

Additional Components

I will also be adding some additional components such as a ‘Contact Me’ Input field. To make it pop out and capture the users attention I will use the same gradient for the button which I will use for the background, and a sticky navigation bar for smaller screens. I may also change the way the individual cards look for the projects and blogs section.

Layout

Let’s talk a little about the layout now.

I already like the layout of the design and do want to keep most of it. For larger screen sizes such as desktops and laptops, I want to keep the layout as it is but I will be changing a few things for smaller screen sizes.

Large Screens

For large screens the main idea is to divide the page into two main section. One holds the general information about the developer and the other one will act as container to show details of the projects and blogs as per the client’s request.

DESKTOP.png

Small Screens

In the reference design, the layout for smaller screens is way too simple. I will be creating a sticky navigation bar that sits right below the initial description section so that when the user scrolls, the nav bar sticks to the top ( not rocket science). Instead of showing the projects and the blogs right after each other, I will allow the user to request each of them through the anchor tags

mobile phones.png

ph.png

The TOOLS I WILL BE USING

This is where I am stuck and need help. The design and it’s implementation do not posses any complex functionality. As for now I have planned to use: React JS with Next JS and tailwindcss. BB

I am not sure if this is the right approach because I can also implement all the features using something light weight such as Alpine JS. I do however feel that the speed that Next JS provides is kind of essential for a portfolio website.

Please guide me in the right direction

A little note

Creating a portfolio is something so many people struggle with, mostly because they feel like they are not ready yet. If you are a developer and have been procrastinating, feel free to join me and document your journey as you create your portfolio. You can write blog posts or twitter threads etc to document your progress. If you do decide on joining be sure to tag/mention me so I can take a look at you creations and get inspiration. I am sure there are tons of people out there who would love to see the entire process and this way you will have an incentive too!

D

Love the Ideation process

J

I just read this! (Also, I haven't wrote my own post about porfolio as I said i would...)

I am using Next. Let me share my rationale if it helps. I want to have the site statically generated. So it loads really fast. Thats the main priority for me. But I also want it to be dynamic, so it looks and feels as pro as possible (because its goal is to convince potential clients.)

Next does it by default. In contrast to plain React, which will render on the client side. Which is slow to load. And bad for SEO.

Client routing is almost trivial to do in Next, in contrast to using Create React App with React router. Overall, I will always go for Next first if I need to use React :D

Also, as far as I understand Remix is also a good option, but it is more oriented to server-side rendering (which I don't I need). It seems it has a lot of nice features that Next still doesn't. But I will probably wont use those. (I don't know enough to make a fair comparison though)

Another option i think would be Gatsby, which is SSG only. But with Next I can do SSG and SSR per page if I ever need it :D (Also, I have almost no experience with Gatsby).

I'm just too comfortable with Next. It is also extremely easy to deploy to Vercel (and well within the free tier). The only investment I needed to do is pay like $2 USD a year for my domain, and my time.

The reason I am not using plain html/css instead is because I want to add react-based interaction with framer motion. And Next is really nice for having static pages hydrated with dynamic javascript. Specifically, I want static-page transitions, which I know can be done with framer motion. I have no idea if they can be done any other way. But those don't seem trivial to achieve. I just want those in my portfolio 😅

Also if I ever need to add extra features like authentication, i can consume third party services very easily either on the client, or server side, or at build time. As far as I understand, Next.js is really really good for this last thing. (I haven't really tried though)

I'm also using Tailwind because I won't use anything else hahaah 🤷‍♂️

Hopefully my thinking process helps! I may be wrong or missing something though 😅

On the other hand, I think you did a much better job at the design than me XD

N
Nik F P4y ago

Just a thought since you are interested in building this in React: Have you taken a good look at Remix? Their team is making awesome things, and your use case would fit their model quite well. Again, just a thought, and honestly you probably can't lose with either Remix or Next, but it's good to have alternatives.

1
R
Roshaan4y ago

I did think of using remix initially, Mmmm now I am tempted to try it. Have you used it? if yes, how was the experience?

N
Nik F P4y ago

Roshaan I went through the "Getting Started" section and then played around a bit. To me, it felt a bit more like writing a traditional React app created with CRA. It had been a while since I had written react code like that so I found it refreshing. You might just work through that same "getting started" when you have some spare time and see how you like it. Seems like consensus around the internet is that Remix allows you to move faster on simple sites.

For large production apps though, it looks like NextJS is still ahead. The Vercel team is great and is supporting Next very well, and that ecosystem is expanding rapidly, and having the Vercel platform as a first class deploy target simplifies a lot of things.

Again, I don't think there is a "wrong" way to go. Just different flavors.

M

Great article again, Rooshan.

What kind of portfolio you are building?

R
Roshaan4y ago

Thank you! I am building a portfolio to showcase the web development projects I have done so far

3
M

Cool. I am pretty curiousof the results, Roshaan.

If it would be only coding portfolio in that case I would have suggested a Github profile page. 😊

1
R
Roshaan4y ago

Miki Szeles I will be using it display my blogs as well. I am also gonna be working on my Github profile!

2
M

For Github I recommend reading my article: https://mszeles.com/how-to-create-a-legendary-github-profile