Recently I've asked some questions here regarding ReactJS , boilerplates, CSS etc.
I realized my hardest problem when trying to create complete ReactJS apps is organizing and deciding development order. Maybe I lack order as a person, or maybe it is just my ADHD.. How do you guys plan or structure a project when firstly thinking about a complete target or purpose.
As in:
In full stack / modern webapps and in general, how do you keep yourself directed and stick to the plan in order to achieve your target?
This is just how I work on things but it seems to me to be a solid approach. The most general way possible. It's easier to think about it without thinking in specific frameworks or any languages. Just a step by step process of what needs to be done. This is of course steps done for making an app on an app. Like a new app module. Not starting from scratch like making the gulp file and the beginnings of setting up the connection to the database and creating the API boilerplate.
Know and write out what your data structure is for that new web app or what data structures you will be using. Also are you going to change any of these data structures and why.
Using an app like JustInMind to create a template of the idea you have in your head to model off of. This doesn't need to be super fancy you could even just draw something on paper with notes about what actions do what and what happens to the data structure behind the scenes when certain actions are completed. Even model the flow of the user through different components or pages.
Start writing up the controllers with the ideas of the steps in step 2. If you see yourself editing things in the controller to conform to the ideas in step 2 think about fixing things in step 2 and redrawing and maybe even rethinking all together. It is not too soon yet to refactor since we haven't even made a template or any css.
Start creating the child components or controllers and services along with the templates and css. make it all with fake data and nothing connected to the database you are using yet. make sure you can manipulate it the way you want. Make sure you know how your data comes in and what format it is in so you can create a mock data object to play around with.
Once I have all of my front end working with my mock up data I ditch the mock up data and start working on my back end integration with the front end. Since the back end pieces are usually the same and API set up of a CRUD system you can make changes here.
Above is how I usually set up an app but have in some cases needed the back end to do most of the heavy lifting and will in this case move step 5 before step 3 and the step 4 above becomes step 5 and I create a new step. In step 6 I ditch the mock data and just finally wire up the back and front end.
This should be something you do, some people might forget about it or ignore it but it's always a good idea to do tests while developing so you aren't writing one giant broken piece of junk.
I will answer this question in general without taking any framework into account.
Before continuing I would recommend to read my answer to similar question where I describe modern SDLC process. Now I am going to describe mostly a most complicated part of this process - software engineering (making web app) more specifically.
Before start there should be an architecture at least in the mind and all build tools ready. If it is first page or project just started - create all the necessary folders, sub-folders, configure framework if any used. Let say, you use a Bootstrap and SASS, then do 1st step for whole project (all pages you have) to understand the whole architecture and after that setup SASS variables and build your own Bootstrap.
Frontend:
1. Analyzing specific design page
(psd, sketch, wireframe, proto, whatever the best you have)
Now you can actually start writing a code.
2. Semantics, accessibility, HTML, CSS
Global elements/utils (GUI kit) → page → each component
3. SVG or other spite
<defs>4. JavaScript
Your page looks amazing but by clicking on dropdown nothing happens, "Load more" nothing loads, etc. Yes, you guessed right, now you need to make page and components alive.
Page specific scripts → Components → AJAX/Data/State/Models
If you are using tests in JS, you may add some at the end or at the beginning. But it is mostly part of the "QA" step and usually performed by a test engineer.
Backend
Since question was more asked from frontend point of view, I am not going to write another TL;DR in this section. Just make sure everything works fast, is secure, cache used, logs used and same words about the tests.
1. Create new routes, API/AJAX routes, controllers and templates
2. Create new tables, migrations, models, actions, services, update frontend
Backend and frontend are connected now, check everything and fix issues found.