James Winfield.

A senior front-end software engineer in London

Heading Image for James Winfield, showing AI generated software engineers in the style of Gustav Klimt

Projects


There’s nothing especially ground-breaking here, but thought I’d display a few of the projects I very occasionally work on at the weekends…some are very unfinished! But at least you can see that I know what to ask ChatGPT.

It’s in order of newly-created first, so also least finished.

londonlist

Bare bones of a project using NextJS, React, Strapi and PostgreSQL - trying to do more b/e stuff! 1% complete at most...don't judge me!

Date started: 01/08/2023

https://github.com/jamesthemullet/londonlisthttps://londonlist.vercel.app

Why did I build it?

I wanted an app that would allow me to create shareable to-do lists for my active London life, and from a technical perspective to use Strapi and postgres.

What did I learn?

Well I've learnt how to use Strapi, how to set it up with dev/prod, and how to read from it. Otherwise, mostly I've done very little on this project so far, but am using CSS Modules which is new to me.

What would I do differently next time?

Ask me in 2025...

20TwentyScore

Bare bones of a new project using NextJS, React, PostGres and Vercel. Like 25% complete tops so don't judge me much.

Date started: 17/06/2023

https://github.com/jamesthemullet/20TwentyScorehttps://20-twenty-score.vercel.app

Why did I build it?

This started because I thought it might be a cool little app, and perhaps something I could publish for people to use.

What did I learn?

My idea is that you could keep scores in a database, so I learnt how to hook up postgres to a NextJS app. Granted I've mostly only done UI, but I do have the auth established, using NextAuth. Also used it as an opportunity to practice writing unit tests, along with React Context which is something I'd used but not set-up previously.

What would I do differently next time?

Well, there's still plenty to do, but I did make my life harder by not thinking in advance about how to keep state across the different components - not entirely sure the context is split most efficiently, but it works!

worldofwinfield-nextjs

World Of Winfield. This is my personal blog, have moved it over to using NextJS, GraphQL, React and Emotion Styled Components. Also has pipeline checks.

Date started: 21/05/2023

https://github.com/jamesthemullet/worldofwinfield-nextjshttps://worldofwinfield-nextjs.vercel.app
worldofwinfield-nextjs

Why did I build it?

I wanted to redesign my personal blog, as it was pretty dull-looking and I'm quite colourful in real life.

What did I learn?

This was the project where I started using Github Actions for my pipeline checks, and also using Husky for pre-commit checks.

What would I do differently next time?

Not sure I would do anything differently, though I think I did rush to try to complete it...I do need to do a little cleaning up.

random-recipe-generator

Random Recipe Generator - a small project that I did with the graduate at work who I was mentoring. Mostly this was just to give her practice on React and Styled Components, but also I took the opportunity to practice TypeScript and use Vite - which is lush - so speedy!

Date started: 21/09/2022

https://github.com/jamesthemullet/random-recipe-generatorhttps://random-recipe-generator-gamma.vercel.app/
random-recipe-generator

Why did I build it?

We were doing a hackathon at work, and I decided my priority was to help a junior engineer upskill on the new tech stack we were moving to.

What did I learn?

Nothing really, I was just helping someone else learn.

What would I do differently next time?

Maybe I should have been more selfish and took the opportunity to learn something myself...like Remix or Svelte for example.

jameswinfield-blog-next-new

James Winfield. I decided to look for a new role a while back, to see if I could improve upon M&S (I didn't). I realised my old portfolio was OLD and ugly, so this is a headless WordPress site, using NextJS, GraphQL and React. Oh and Tailwind for the CSS...not sure I'm a Tailwind convert but good to try these things. Also has pipeline checks.

Date started: 06/09/2022

https://github.com/jamesthemullet/jameswinfield-blog-next-newhttps://www.jameswinfield.co.uk/
jameswinfield-blog-next-new

Why did I build it?

I got a bit annoyed at M&S for some reason I forget now, but realised that my portfolio was the same one as before I was ever an engineer

What did I learn?

I didn't do anything crazy for this, I just took a NextJS template and redesigned it a bit. It was my second NextJS project, the other being a work project that was already set up, so I learnt a bit about how to set up a NextJS project from scratch.

What would I do differently next time?

Not sure I would have done much differently. It was really good practice for the technologies we were moving to at M&S. I realised that I wasn't a Tailwind convert as I was forever having to look up classnames which slowed me down.

djmix2022

DJ Mix Of The Week - my first attempt at a headless WordPress blog from 2021. I have a few blogs and just used to use WordPress and a bit of custom PHP, but really wanted a way to use React, so I could practice for the upcoming new tech stack at M&S. So using Frontity (before I realised about NextJS) was an ideal route. Looks good too, I think?!

Date started: 28/05/2022

https://github.com/jamesthemullet/djmix2022https://www.djmixoftheweek.com/
djmix2022

Why did I build it?

I was looking for a way to rebuild my blog, and also practice my React skills. I read about Frontity and decided this would be a good way to do both.

What did I learn?

I learnt about headless architecture, and how to use React with WordPress. I also learnt about the Frontity framework, and how to use it to build a blog...and the drawbacks of it.

What would I do differently next time?

Well, I would use NextJS as it is easier to use, and actually supported - Frontity is no longer supported by the developers. Plus NextJS has much more functionality and is more flexible. I ended up doing some pretty hacky things to get pages/functionality that require data from all 150+ pages (eg promise.all that runs 16 times on one particular page)...plus some basic things are simply not supported like sitemaps. It looks pretty though...in my opinion.