My experience full stack creating a web app with Node.js
A four-month ago, I decide to create my application, and now I will share my experience for everybody then want to transform your ideas and reality.
The more important to do is choose the language first, because if you change the language, you change everything like technology, IDE, devices… Because this is important you understand first your project, if you identify yourself you can follow these steps.
Why javascript and Node.js?
I decide to choose javascript because is easy and faster development. Before I have experience in big companies working with JAVA and I don´t like, because I lose a lot of time configuring and compiling than programming. Python and Rails are nice, but my idea is to create a project only with one language because this a choose NoodeJS which allows creating everything with Javascript.
If you want to know more about Javascript click is this link
The Amazing Project
When you have a great idea and decide to create your big F***KING project, you need to get a small part to create a prototype and validate your business. Especially if you are independent and don´t have too much money and time.
In my case, I choose don´t put my application in Google Store or Apple Store. Because don´t make sense spent more time compiling, testing and money in this first step. I can test my business plan without this.
My prototype need
- Multi-language
- Multi-platform
- Scalable
- Fast development
- Backend and Frontend works communicating with JSON
Whats is Backend and Frontend?
All web application divide in Backend and Frontend. A backend is a dark place then have every business rules, storage and process happen, and frontend is the beautiful part then the user can see the information.

Architecture
No matter how small is your application, there is a minimum of requirements then must-have in your ecosystem. In my case I need a:
- Host: To put my application on the Internet. I decide AWS Service because if very good service and the first year is free. You have time to test your business and make money to pay when expire the time.
- Backend: ExpressJS is a framework web with Node.js and Javascript.
- Frontend: VueJS to create a structure and OnsenUI to CSS.
- Repository: Gitlab to save your code in a private area for free.
- Continuous Integrator: Keep everything on control to go production.
- Persistence: MongoDB to save my information like users, events, etc. I use an account in MongoDB Atlas that is free too.

I won´t show more details of each technology, but you can get a general idea the how works the ecosystem in a web application.
Before entering in the frontend, whatsis component?
When you enter the wonderful world of Vue.js, you find the word component. Because in Vue everything is components, has a component inside the component.
With components you can divide the project into individual blocks, containing the visual and logical part.
For example, the Login screen is a component, composed of a visual part than the user can see the username, password, and button to log in. And have the logic part than send a message to the backend.
Example component in Vue.js
If you want to learn more about this click here.
Inside frontend
The most web application the user can see is like this, have a login component and go-to application. But normally have different user types in the application, and each type has different components, and permissions, you understand?
For example, a normal user can see notifications and settings to change language, but de admin user can create new languages.
For me works better create areas separated of type users, because it is more easy manager permissions, to see the flow process and give support. Some times you can use the same component and more than one place, but just think than you need double-check in this area and have good technical documentation. Because then come back the code after one month, and change something is better working everything.

Inside backend
Frontend without backend is like a beautiful person without a brain. You need a backend to process the information on the frontend request.
Basically, the backend is a set of addresses, parameters to respond to frontend like this:
For example, when the component login sending a request login to address ´/api/auth/login´, if everything is okay the backend sends a message ´accepted´ like this:

Final considerations
About the next posts, do you want more the technical part? what do you seek to know?
Please, any question comments and thanks for the read!
