Been enjoying the FCC experience so far!
I guess something that really discourages me is that after going through Advanced Node and Express and almost finished up the Quality Assurance is that when I want to make some projects on my own I feel like I have no idea how to set up the servers? I check previous replits and there is so much stuff prewritten I feel like I was never really instructed how to actually set stuff up myself. I know the answer is “look it up” but I have and still feel lost. Maybe I am missing something? I want to use Replit since I can use it during my free time at work often but making full stack apps seems a little daunting too. Start with front-end? Do I even need Node? Not really sure.
I guess what I am hoping for is if anyone has any good resources on anything like that feel free to share! Sorry my thoughts are a little scattered…
FCC doesn’t really go over this context of things. Mainly because it’s something less common to run into. Namely if you’re working on a project, all of this exists and is managed by some other person than the developer.
Replit by itself abstracts away large portions of the stack. This is a feature of its platform, where it provides you with a bunch of things out of the box to get going quickly, but ultimately limits what you can do, access and control due to this abstraction.
Depending on what you mean by “server” (its a generic term) you could go from setting up the physical hardware in your closet, to setting up specific software (server-software) to do specific things that all combine to a whole of a “stack”.
Going back to replit, replit again does almost all of this for you. It just leaves you an environment to write your back-end and front-end code that it then can run automatically. It also provides other “services” that might be stand-alone in a normal situation, such as a basic database, logging, and hosting itself.
I think the question goes back to what you want to build? If you want to build a static web-site that saves no data, and maybe has some client-side JS for some dynamic elements, then no you don’t need nodejs or any kind of “back-end”. Replit can host/serve your client-side code out of the box:
Now if say you wanted to save some information, or authenticate users, or share data between users, then yes you’d want a server to act as the “middleman” and “security guard” of your data, and access to your database.
I guess having replit do the heavy lifting in the background is nice, but then if I want to start something on my computer with a different IDE I feel I wouldn’t know how to get it up and running. I guess I like understanding every aspect of the process.
By servers, I guess I meant just getting the app up and hosted on a server somewhere.
Right now, my project I really want to get up and running is a personal budgeting app (personalized to me) that I can use anywhere. So I think I would need a database to store my transactions and such, correct? So in that sense I thought I would need to use mongodb/express/node and for front end I would probably use React.
Looking at replit to get this started, I feel like maybe I am doing something wrong? Just a feeling, but not sure if I am on the right track or not. Hence, feeling a little lost.
I’m rambling again, but today’s a new day, so I will do some more research.
I appreciate the response.
There’s plenty of options out there for different levels of abstractions.
You could go from a literal computer in the closet, to something like a Digital Ocean droplet that you can SSH into and install your “server software” to something more abstracted like an Docker based deployment on AWS where you can specify what your run-time environment looks like, but not need to manage the system outside of the container. Or go more abstract to using Firebase, or Vercel, where they can manage the “static” hosting part of the site, but allow you to deploy “cloud functions” to run specific parts of the back-end.
Ultimately the more abstract you go, the less control you have over your underlying runtime. There are always concessions to be made with more abstraction, but ultimately that could or could not be a deal breaker. For example, a Firebase cloud function can only be written in nodejs, and can only run for a period of time and can only be a specific size, and can only run on google’s cloud on google terms, for a given price.
This would be a MERN stack app, and yes you could go with this route. The client-side aspect is probably the clearest, where a React based UI calling your back-end would more or less be the same.
The more interesting aspects is where are you running your nodejs server and mongodb server? Mongodb provides a free tier service via their Atlas product, so you can just have them manage your database for free (abit a very small database).
Hosting/running the server-side code (and possibly serving your client-side) is where a multitude of options exists. Going back over the “abstraction levels” the main concern usually when learning is cost.
Replit is free, but as you know very limited. Digital Ocean is cheap and consistent, but still costs 4$. Firebase and similar options have free tiers, but might require CC setup, or other approaches.
There is of course Heroku, but their free tier is being removed.
If cost isn’t so much a factor then you could run your server on other clouds with any level of power you’d want.
I think the difficulty is that there’s a lot of options. Some better than others depending on what you want to do. However, at this point there aren’t any completely wrong answers. You could build your budget app with almost anything you want.