Staying DRY While Making a Portfolio Site for All My Projects

I am a beginning designer and programmer working on designing my personal website. I found Sage and love the structure and logic it brings to my WordPress development workflow.

My site will essentially be a way to highlight the various projects I am working on or have completed. Basically a fancy resume, or a portfolio with multiple sections. Since I have multiple interests, I was planning on writing a top level page for each of my main areas of interest. My design would encourage users to browse through these pages and see what I do in each area. I am going to put a lot of effort into writing and designing these pages till they looked perfect, since they will be people’s first impressions of me.

Beneath these top level pages, I will also have pages that document individual projects in more detail and provide resources or in depth-notes. I also host project source files on a GitLab instance.

Then I started thinking. I had been reading in the Sage docs about DRY. But it’s hardly DRY if when I publish the code for a new project (on my GitLab), I have to add a project page on my website and update the top level page for that category of projects (I want my site to show that I’m active). Then if I want people to know about it, I’d have to publish a blog post about the project as well!

So now every project has to be described in four places. Not fun. An idea started to form.

What if I could distil those top level pages I though I’d have to hand write into logical groupings of similar content? The page might have some static content at the top, but each section of content could be pulled from my blog based on the category and tag. Then I could update my site simply by making a post and tagging it properly. The top-level pages would rarely need to be edited.

An example: one category of things I do is web design (why I’m on this forum). The /web page on my site might have some static content about my design philosophy, but then it also should have a list of projects (sites I have designed). This list could be automatically generated by pulling the content from blog posts tagged “web” and in the category “client work” (I use tags for subject matter and category for general post types, though I’m also not sure if that is a logical organization system). If I ever write WordPress plugins, I could add a new section that pulls in the text from posts tagged “web” and in the category “wordpress plugins.” And so on. To eliminate the project pages, I am also thinking about using GitLab’s wiki’s (or just files in the repo) to host my project notes alongside the project files, instead of having them on separate sites.

Doing all this would mean that to share a new project I would only have to 1) publish the code and documentation on my GitLab and 2) write a blog post with the correct category/tags.

While I think this all might work, and it sure sounds like a lot less work in the long run, I’d like others’ opinions. Being that I’m a novice at all of this, I don’t want to try to build something that doesn’t make sense conceptually. Also I’m not sure of the best way to implement this logically in my Sage-based theme. Right now I’m thinking of using custom shortcodes that would pull content from my blog into the top level pages. There will probably be a lot of work to get the posts to pull into the top-level pages and format as nicely as if I had written the entire thing by hand.

I curious if anyone has designed a site like this or has any advice for how to proceed. Any comments would be appreciated.

I’m not sure if I have a completely clear idea of what your top page/categories would look like, yes for sure it’s always a good idea to keep the amount of things you need to edit and update to a minimum.

Just thinking of how you could do what you’ve described as easily as possible with the bulit-in functionality, you could perhaps make use of excerpts of posts in these top pages.

If you want more options per post, I would suggest checking , I can’t build a site without it :smiley:

1 Like

Thanks! I don’t think it’s exactly what I need, but ACF sure looks neat.

I will either use excerpts or the full post content, but that really just depends on how I write those posts.

Trying to find an example of what I want from the top pages. I had one but I lost it…

Here’s one A little more fancy that what I create will probably be, but they have some introductory text at the top and then a grid of some of the project’s they’ve done. I’d like to auto-generate the list of work based on blog posts.

Another example: On their home page, they have some introductory stuff, and then a portfolio section and a section of testimonials. In my site I’d want to automatically generate both those sections (I have no idea how these people are doing it).

The reason I thought this was a little more complicated was that I have multiple interests, and so I’d also want to make (for example) a list of plugin’s I’ve created below the list of client work, and separate pages for other interests. So I’d also have an art page with a section for personal art, a section for client pieces, etc. (except that I’m not an artist, but it’s just an example).

The more I think about this the more it seems to make sense for what I want to achieve. Thanks again for the help, as having to write out my ideas has helped me understand what I meant better. I’d appreciate any other comments, but I’m thinking of moving forward with this plan by breaking up my outlines for the main pages into sections that I can then include from the blog.

Update: Also, I found which adds a shortcode for including one post/page into another. I’ll probably use this as a reference and write my own shortcode functions that grab multiple posts based on certain criteria.

You could create custom post types for each type of Project grouping and then have several loops on your home page that pull in each type of custom post. I think that would keep things pretty sreamlined

This may be helpful for that:

One other thought, most of the people hiring you as a web developer if you looking for freelance aren’t going to be interested in looking at your git labs. Or are you trying to land an in house or agency job?

I would think you could just use a few WP_Query() calls with specific Category parameters. If I were buliding this for a client, I would use ACF to allow them to select which categories show on a page. If it were my own personal site, I would just code it in directly.

Thanks for the ideas everyone!

I’ll probably use category/tag parameters if I decide I want to have the projects also appear on my blog, and custom post types if I don’t.

Likely none of those at the moment. I’d like to get through this project and one site I’m building for a close friend before I decide if I actually want to seek a job in web design. Fortunately I’m in a position where I don’t have to do this for money, though some extra cash could be nice. :smirk: