Table of contents
Remember that bootcamp I mention at the beginning of every blog post? Well, in two days, I will complete my software engineering program and officially graduate from Flatiron School!
I have learned so much along the way, but I feel like my capstone project was the greatest learning experience. I had about three weeks to build a full-stack application using JavaScript, React.js, Python, Flask, SQLAlchemy, and an external API. I threw daisyUI in there, as well.
When the project phase started, I felt very overwhelmed. There were many moving parts to keep track of and not a ton of time.
Now that I'm nearing the end, I have some more "sanity savers" to help you prepare to build your first full-stack application.
An Idea
"Everything begins with an idea." - Earl Nightingale
Honestly, this was one of the trickiest parts of the whole project. There are hundreds of project ideas out there, but ultimately, you are the one who has to decide. I would recommend choosing something that you care about. I ran into many, many challenges while building this project and if I hadn't cared as much about it, these challenges would've been much bigger hits to my motivation.
Start with making a list of things you like (which can also be hard, I get it). My list included: reading, video games, sudoku, organization, Spotify, and dogs. A simple list. For each item on my list, I asked myself, "What is something that could make this interest/hobby more enjoyable?". I ended up combining a few interests to come up with my project idea.
(You can always search for ideas online! I didn't find anything I loved, but some of the ideas inspired me.)
A Plan
"If you don't know where you are going, you might wind up someplace else." - Yogi Berra
My bootcamp required a project proposal before beginning to build, which involved user stories, model diagrams, a component hierarchy, wireframes, and a development timeline. It might seem like a lot, but I would honestly do all of this again for my next project. It doesn't need to be perfect, or even pretty, but all of this preparation was worth it.
Sit down and take some time to flesh out your project. What should users be able to do? What models and relationships do you need? How will your components connect? Do you have a vision or a rough sketch of what your application will look like? When does it need to be finished? What should be completed at different points in time?
I returned to my project proposal many times throughout development to remind me of what was next.
A Folder Structure
"As for me, all I know is that I know nothing." - one of my cohort friends quoting Socrates after day one of project building
Before this project, I had never built anything from scratch. There was always some assignment to fork and clone or a template to use. Turns out, folder structure is extremely important and something you should think about early on. Another one of my friends shared this video with our cohort, which was very helpful.
A well-defined folder structure is important for maintainability, scalability, and code reusability. It keeps your project organized, supports collaboration, and can even streamline debugging. Use your plan to guide your folder structure design.
A Support System
"Google will be your best friend." - one of my bootcamp instructors
You will get stuck at some point. There will be bugs. There will be error messages. There might even be a time when you forget to add ".first( )" to the end of a query and you spend an hour trying to figure out why your computer is telling you that your PATCH request was successful, when you aren't actually receiving the information you want.
While I strongly recommend taking breaks (#pomodorotimer), exercising, and cuddling a dog every once in a while, you also need someone to turn to when you are truly stuck. My support system during this project phase included: cohort friends, bootcamp instructors, past lecture material, code documentation, Stack Overflow, Web Dev Simplified, and just plain old Google.
Blaring music was also shockingly motivational, at times.
Conclusion
Preparing for your first full-stack project is both exciting and challenging. As you get ready to dive in, keep in mind the tips I've covered in this guide.
From coming up with ideas to setting up your workspace, it's all about staying organized and leaning on your support system. Coding is a journey, and each bug you fix and line of code you write is a step forward. Good luck and happy coding!