Freelance Project Checklist

Gina Lee
7 min readJul 23, 2021

I’ve been freelancing web development for roughly 2.5 years now. Building sites big and small, from scratch with code and on website builders such as Shopify and SquareSpace. This is what I’ve learned so far.

1. Figure out if this is a project you would want to work on.

Learn about the project. Do you like the idea of it? Are you going to enjoy building it? Ask yourself these questions. This is important to remain motivated throughout the project and ensure that the best work be done on it. If you’re freelancing for personal achievement (aside from making money…) then it makes sense to work on projects that you’d be proud of in the end!

2. Figure out the project’s needs.

Yay to a cool new project! How exciting 🤩! Now that you know you want to work on it, you’ve got to figure out the scope of the project. Some things like:

  • What pages the site needs (Home, About, etc)
  • What functionality it’s going to have (Is there a user login?)
  • If it requires any admin functionality (CMS?)
  • Any 3rd party integrations? (Mailchimp, Shopify, etc)
  • The client’s desired deadline — this can play a part in what needs to be compromised in order to meet the deadline. Or, maybe the client is willing to push the deadline back in order to have that one feature.

3. Research.

After you understand the scope of the project, you need to do your research on what tools to use. Really do your research. Give it at least a week and find as many examples of the tool’s usage to help with the process. Do some tutorials and build mini example projects to make sure the tool is the right one to use for this project’s case.

Real Life Use Case:

For my latest project, the client wanted a blog CMS. After researching different types of CMS tools (I love going on Reddit to read people’s reviews on various toolings), this led me to Netlify CMS.

Reading about it, people have said that their CMS UI was easy for anyone non-tech-savy to use. And since I have had positive experiences using Netlify to easily deploy sites, I was almost convinced to use it. I then furthered my investigation by finding an example blog CMS app to decide if it was the right tool for this project.

I found one that is built using NextJS (which is what I chose to use to build this project for it’s out-of-the-box routing and static site generation). I forked this project and tweaked the configuration to meet my client’s needs. I played around with the UI as if I were the client. Then, I decided it was the one.

It also concluded that Netlify be the hosting service I use.

After that, I had to figure out if Netlify was really the best host to use. My client was expected to have a large amount of traffic (they have a large user following on Instagram of 150k at time of writing). This means that whatever is hosting the site needs to be able to handle that kind of traffic. And if it can’t, I need to find a different CMS tool.

I got off the phone with a Netlify Representative (THANK YOU REESA!) where she walked me through what would happen if a site were to get a large amount of traffic on a given day. She helped confirm that Netlify would be able to handle it, and gave me information on their High-Performance edge network, which includes a 99.99% uptime SLA, multi-cloud CDN, active DDoS mitigation, more global POPs, faster sites, and more. Read more about it here (not sponsored 😂, just a fan that trusts the company).

4. Sync.

After figuring out the details of the project from the dev perspective, meet with the client again about the tools you decide to use, any payments they may need on their end, and your timeline of when you suspect the project to get done. This is the period where you find compromise with some aspects that may take a longer time to complete, or anything you think would be better if done a different way. After all, they’re coming to you for this project — which means they will respect your opinion, being the expert.

This is also the period where you state your rate. I prefer to give a final amount based on how difficult the project is and how long it’s going to take, but some instances might make more sense to be hourly. Especially if the client wants extra features after the initial proposal, don’t be nice and do it willingly! You should be compensated for your time. Respect yourself and value your time.

MAKE SURE YOU GET PAID HALF BEFORE YOU DO ANYTHING! I have a client that still hasn’t gotten back to me about some edits I made to their site, and since the site hasn’t been “completed” (because they ghosted me) they haven’t paid me for the work I’ve already done for them.

4. Make sure you get the complete design & all assets.

If you don’t wanna go back and redo things, make sure you get everything you need from the client before you begin. This will make planning easier, the process smoother, and ultimately the app will turn out much cleaner.

I have a client that still hasn’t finished with their assets. It’s been 6 months. But since they already paid me half, I’m not too upset about it.

5. Building period!

Before you begin writing any code, plan out what should be done each week. That way, it gives you a broad view of the project, keeps you on schedule, and spreads out the work evenly so you don’t panic at the end with all the things you missed.

Also, make sure when planning to add in a few extra days. If you’re like me, then you could be overly optimistic about how fast you can get things done (aka thinking you could get something done in a shorter timeframe than is actually the case). Besides that, you should be giving yourself some breathing room and breaks!

6. Deploy, get paid, and reflect.

First of all, seep in the fact that you just created something frickin’ awesome. From ground up, you built something that people are going to use. You helped a business with something crucial.

Think about all the things that went right.

In the case of my latest project, I take pride in the fact that I chose the right tools for this project. I chose tools that:

  • Make it easy for an admin to do certain actions (submitting a blog, deleting a user)
  • Saves the client the most money
  • Guaranteed safest route for hosting

Then, think about all the things that went wrong.

In the case of my latest project, I learned:

  • How important it is to give extra time to development and QA — Deadlines had to be pushed twice and features had to be compromised last minute. Thankfully the client was super flexible and understanding. But if we had really planned out the deliverables, things would have definitely been smoother. NOT GONNA LIE I’m too optimistic about my abilities sometimes. Got to be realistic! ALWAYS expect things to break towards the end of development.
  • How important it is to understand the tool you’re about to use — being overly optimistic about your abilities and using a new tool don’t mesh well. Especially if there’s a tight deadline. It just takes away precious time if you’re learning it. Sometimes it isn’t the best move to use that shiny new tool, unless you are well-equipped before you begin building.
  • How important it is to have design ready BEFORE you start development — it added extra stress and time to have to scrap what I had done because the design had changed. But at least now I know!

Keep track of how long it took you to do things. This will help give you a realistic scope for the next project.

Final remarks

Some final bits of advice:

If something can’t get done, always have alternatives to offer your client.

Think about it if you were in their shoes. Do you like being told no?

Be kind, be honest.

This is a collaborative effort. The client has a vision, you have the expertise. You know what can and can’t get done. Be honest with them about it. But more importantly, be honest with yourself. Don’t become a slave to the work. In the end, people appreciate honesty. Come to compromise.

Look at the bright side.

If things exploded in front of your face, take it as a learning experience. Launching a project can be stressful. But the more you fail, the more you learn. And the more you learn, the less you fail. It’s all part of the process :)

Ask them, what deems the project done?

Don’t allow them to tack on things. Have them be specific on what deems a project done. So you can get paid and move onto the next project! (+ you can charge them hourly for that last minute thing if it’s absolutely necessary on their end… not your fault they forgot!)

Check out some projects I’ve built here.

I would love to check out YOUR projects and experiences as a freelance web developer! Please link them in the comments!

✌️

--

--