How to design a node/express/mariaDB/react app that is planned to get pretty big?

How to design a node/express/mariaDB/react app that is planned to get pretty big?
0.0 0

#1

Hay my fellow campers!

I have some big problem right now and would really love your help!

At first to my situation. Currently I started a developer job that you could call a junior dev job for american standards. And that’s all fine for me since I don’t have any formal education until now.
So recently I was tasked with the project to plan the move away from FileMaker for the main product of the company. This product is already a few years old and got a lot of stuff in it so it’s not really done within a few weeks.
While I really love the trusted in my skills I and willing to do this project, I really struggle right now. But the problem is, we have no (senior) developer that I can go to and ask for advice. I know it’s a risky state for me but I think I can manage that.

I have more or less all possibilities for choosing the technology stack and this is one of the first problems for me.

so far I have decided on the following:

  • node in version 6.x (because of LTS version)
  • express
  • mariaDB (it makes sense to use a relational DB since we have a lot of relations in the data)
  • sequelizejs as ORM (Nobody likes writing plain SQL all the time :slight_smile: )
  • mocha + chai for testing
  • ES 2015 for backend code without babel

So the first pain point for me is choosing the right frontend lib. Currently I tend to react or vue since they seem to be solid choices that won’t vanish of night. Angular 2 seems not a good choice because of the high learning curve if read about.

And than there is the other pain point which is related to the first. I don’t really know how to structure a large scale project like this. I’m pretty sure this project will reach more than 200k Lines of Code in few months after starting it. So I don’t want to mess it up already after the start.

I really would love some advice or help. Or if someone would like, helping me with mentoring me in some way. Like helping me making such hard design decisions. I don’t need someone holding my hand, just someone I can turn to for a good advice or opinion on advanced topics.

I already tried to get help on reddit and some discord channels but as you can see, without much luck :smiley:

and for the lazy people:
tl;dr
Need help with designing a large scale node/express app and choosing the right frontend. Maybe someone mentoring me for a few weeks / months

So far happy coding everyone!


#2

You know I work on tons of applications. And (bad) lazy people are always wrong.

Bad lazy people = "Won’t do it, look for something simple"
Good Lazy People = “Shit, too lazy to fill 3 on excel, I will work a macro that take a month for a work that needs only 3 minutes”

I worked with a lot of “Ten years projects” , and guess what, they all have technical debt. When you have 2 years issue to resolve (“What I’m fucking doing here …”).

So think carefully about your architecture. Because :

  • In ten year, you will maintain it and you will regret it
  • Your team will trash you because you’ve chosen poorly your stack
  • Learning Angular 2 take you only three days for a pro and one weeks for a junior, Angular 2 is easier to learn than react
  • The cost of maintenance is heavier than the cost of rebuilding or building correctly in long-rum
  • Stop making excuse, you’re a developer, no one expect a junior to be perfect. But at least he should try

I will use react if it’s a content type application like shopping, chat, social network. But for complex application like accountant, management, analyse, I will take angular 2. it’s up to you, you’ve learnt React on FCC, I can understand but be careful with your choice. I’ve seen to much to choose my stack poorly now.


#3

Well I’m not lazy, and it’s not like I try to not learn Angular, but it got a lot bad press and I need a View, that is very fexabil since different costumers want different behavior and such things. And I got the impression that would be easier with something else than Angular.
But correct me if I am wrong!


#4

Funny joke…wait…say this is a joke! Everyone who knows MySQL or MariaDB etc. should know SQL and “nobody likes …” is not a reason for an important decisiion.
What you want is not the question, it depends on the project and all factors what you need or not.

Of course we can’t say you, what you should use and all what you need to be successfull, this is far from the reality.
The last years, projects grew up.and projects with a few lines of code are gone. That is why agile software development become very popular.

So i recommand you, learn about agile methods, agile processes and then Use specifications, module development, milestones, mock ups, storyboards, diagrams, … just to give you some keyowrds

I think you start 5 steps in front of the real start. Make clear (for you and other people involved) what you want to develop.
What is it for? Who will use the app? Which functions you need, which requirements the customer (and the developer) needs? situations for the user? Other situations? … …
In summery…At first think about the project. Most developers make the mistake to be too fast.
A short and not detailed planning is a bad planning and that means automatically …much more time and money for the development.

And to come back again to your question…if you do what i said with the storyboads, thoughts, diagrams, much more detailed planning,…you will become more an idea what you really need. If you have no idea what you need (and excuses like nobody likes… :slight_smile: ) are signs that you have not really an idea of your project itself.

This is not a thing of experience, but a thing of preparation.
Of course you will make mistakes and learn where you made wrong decisions but this belongs to all developers. Nearly every project has its challenge and you could never be prepared for all challenges they come but with a good and detailed planning you can avoid to make more mistakes as necessary.

If you have done the well detailed planning you can think about the DB, langs and so on :slight_smile:


#5

Reading about things like this gets me fuming. I hope you’re planning to demand a raise about 6 months into this project, because you’re obviously being treated like a senior dev.

There are pros and cons to every front end library. You’ve given two very good reasons to use either of these. Can you go wrong with either?

If your company were as concerned about this as you are, they would have hired someone with more experience. You’ll do the best you can, and that’s either enough or it’s not, but either way that’s management’s fault.

No one is going to want to do this. Helping out students with a personal project is one thing, but imagine coming home from working all day and having to “mentor” another person on their company’s mis-managed project. I find it highly unethical to externalize the company’s costs (professional experience) onto volunteers, too.

Your boss trusts you to do this, which either means you’re capable (and underpaid - never forget that) or your boss is an idiot. Either way, if you’re not feeling up to this task your boss should at least hire a consultant to get these questions answered.


#6

Yeah that’s not really the reason for choosing it. More things like making my life much easier with a lot of basic things like updating, saving and such stuff already build in, easy switch between DBs, speeding up the development and such stuff.

I take your advise and talk to my boss to expand the planning phase. I guess it would also be in his interest.
Maybe while planning building a throw away prototype for getting some real world experience with the existing data and applications.

Well yeah, I totally understand that nobody wants to do this. It was a little call for help since I got really stressed out yesterday with this.
I think I should step back and talk with my boss that we take a little more time for planning and maybe some experiments for testing some of the technologies.

That makes actually sense. Never thought about it this way. I guess I tend to overthink and plan thinks and making me much more stress and thoughts about it as I may need to…


#7

In fact angular 2 can do all of that.

The bad press come :

  • That people that have learned Angular 1, need to relearn everything from scratch I guess
  • It’s not as fast a React
  • There no documentation, it’s a bad documentation
  • It takes 1-2 years to come to the version 1
  • The version 1.0 of Angular 2 has just been released recently
  • Typescript is needed to learn Angular 2 (that’s bigger drawback for javascript developer).

For have tried Angular 2, I should have mentioned that you need a Udemy course to learn it (i was surprised to see the difference, especially when my portfolio was almost finished ><). Since the official documentation sucks. I got it for 10 euros thanks to black friday ><.

But well, you should try Angular 2. It’s very nice framework. But you have also alternative like Aurelia Framework.


#8

He’s just beginning ><.

Funny joke…wait…say this is a joke! Everyone who knows MySQL or MariaDB etc. should know SQL and “nobody likes …” is not a reason for an important decisiion.
What you want is not the question, it depends on the project and all factors what you need or not.

You know SQL and what. In UK few people use sql anymore, they all use ORM. ORM is not bad idea especially you work with centralized cache like Redis, Ncache, Memecache, … Because everybody is not dba or can pay a dba to optimize the cache system of the database. If your stack and application structure is well done, you can change it letter.

The right tool for the right project. Do agile alone is futile. Have you ever work as a consultant. Because the client needs to participate on the project. If he can’t have access to the client. Agile is just garbage. Sometimes Agile is not the solution, the old way work too.

Like you said here [quote=“PJ-Coding, post:4, topic:60760”]
I think you start 5 steps in front of the real start. Make clear (for you and other people involved) what you want to develop.
What is it for? Who will use the app? Which functions you need, which requirements the customer (and the developer) needs? situations for the user? Other situations? … …
In summery…At first think about the project. Most developers make the mistake to be too fast.
A short and not detailed planning is a bad planning and that means automatically …much more time and money for the development.
[/quote]

You analyze, you specify, you choose your tools and you get a feedback and you go with it.
And I believe that if he has a good company, they will verify his work (I hope so). Agile is good, but please don’t do it because it’s hype. The right tool for the right task.