Advertisement
If you have a new account but are having problems posting or verifying your account, please email us on hello@boards.ie for help. Thanks :)
Hello all! Please ensure that you are posting a new thread or question in the appropriate forum. The Feedback forum is overwhelmed with questions that are having to be moved elsewhere. If you need help to verify your account contact hello@boards.ie

Stack recommendations

Options
  • 16-01-2017 6:43pm
    #1
    Registered Users Posts: 6,251 ✭✭✭


    So, my friends have an idea for a website and other systems tied into it and are looking to develop it, or an early version at least. I've said I'm interested as a project and also something to keep me busy.

    For background, I'm a professional php developer using cakephp as a framework, javaScript CSS html5 and all the rest. I'm very proficient and I can knock something together quite easily. I'm no designer mind, but I'm good on the back end. I'm also in the middle of my second year in college, studying C#, Micorsoft SQL JavaScript and I belive we're doing angular in the next semester.

    Basically the site will act like a directory for services in the area that you can search, and select from. Users can post feedback and companies can pay to have their services listed. Nothing new there, but its for specific services.

    I personally hate php, I find it clunky and the framework I use can be clunky and slow at times. For a simple website, there can often be a massive amount of overhead.

    People (and indeed some of my lecturers) are advocates of using the MEAN stack, ironically even though it's not taught in the college. I've looked at it briefly, and Mongo isn't a db that I've used before. I'm more of an RDBMS hack.

    If I'm going to do this, I'm happy enough to invest the time in another framework if its worth my while.

    What are peoples thoughts on what will be a good solution,
    Performance would be key really, I want the site to perform like its lightning speed rather than what cake can give sometimes.
    Will I use MEAN, or .NET or what would be a good solution for this?

    I'd appreciate peoples opinions.

    Thanks.


Comments

  • Registered Users Posts: 6,117 ✭✭✭Talisman


    I wouldn't advocate using the MEAN stack for the sake of having new toys to play with while developing the project. The first three elements have had their day in the sun, they're not so cool anymore.

    MongoDB is a document store. It doesn't map relationships between documents. In your project, each company would be stored in a document. The services offered by the company would be detailed in sub-documents. Reviews of the company would also be sub-documents. If your review system gets spammed you will have to map over each company document and iterate through the reviews to identify the spam items to delete. Initially this is a trivial operation but at a certain point it will become a pain point because any updates mean locking the entire document.

    You could store the services and reviews in their own documents and only store a reference to their _id in the company document, however now you are building a traditional relational data model in a document store.

    A relational database is a better fit for your project so stick with it. If you want the awesome sauce of schema-less storage then use PostgreSQL and avail of the JSON types.

    ExpressJS is the most popular server-side MVC framework running on Node.js. It's popularity has lead to it becoming bloated and an unwillingness on the part of the maintainers to evolve the framework. Instead the creators spawned Koa.js, which is smaller, faster and uses modern JavaScript. Personally, I stopped using ExpressJS two years ago as I found myself fighting against the framework to implement business logic. Koa was a welcome update.

    AngularJS is out of date, you'll need to add additional libraries to overcome its shortcomings. You could skip AngularJS and move directly to Angular 2 but in doing so you are adding TypeScript to your development stack. React and Redux would be a better fit for your project.

    Node.js is amazing but writing server-side JavaScript is a different mindset than that on the frontend.

    MEAN is great for prototyping but sooner or later you will realise that as an architecture it has some serious tradeoffs baked in. If you want to explore the realm of Node.js then it's a good place to start because there are so many resources to assist you. However I would map out the architecture that you want to build before choosing the technology stack. For instance if you come to the conclusion that you really only want a suite of APIs that aren't coupled to a frontend then the MEAN stack is not what you want to use. In this case Hapi.js would be a much better fit in the Node.js domain.


  • Registered Users Posts: 403 ✭✭counterpointaud


    Talisman wrote: »
    I wouldn't advocate using the MEAN stack for the sake of having new toys to play with while developing the project. The first three elements have had their day in the sun, they're not so cool anymore.

    MongoDB is a document store. It doesn't map relationships between documents. In your project, each company would be stored in a document. The services offered by the company would be detailed in sub-documents. Reviews of the company would also be sub-documents. If your review system gets spammed you will have to map over each company document and iterate through the reviews to identify the spam items to delete. Initially this is a trivial operation but at a certain point it will become a pain point because any updates mean locking the entire document.

    You could store the services and reviews in their own documents and only store a reference to their _id in the company document, however now you are building a traditional relational data model in a document store.

    A relational database is a better fit for your project so stick with it. If you want the awesome sauce of schema-less storage then use PostgreSQL and avail of the JSON types.

    ExpressJS is the most popular server-side MVC framework running on Node.js. It's popularity has lead to it becoming bloated and an unwillingness on the part of the maintainers to evolve the framework. Instead the creators spawned Koa.js, which is smaller, faster and uses modern JavaScript. Personally, I stopped using ExpressJS two years ago as I found myself fighting against the framework to implement business logic. Koa was a welcome update.

    AngularJS is out of date, you'll need to add additional libraries to overcome its shortcomings. You could skip AngularJS and move directly to Angular 2 but in doing so you are adding TypeScript to your development stack. React and Redux would be a better fit for your project.

    Node.js is amazing but writing server-side JavaScript is a different mindset than that on the frontend.

    MEAN is great for prototyping but sooner or later you will realise that as an architecture it has some serious tradeoffs baked in. If you want to explore the realm of Node.js then it's a good place to start because there are so many resources to assist you. However I would map out the architecture that you want to build before choosing the technology stack. For instance if you come to the conclusion that you really only want a suite of APIs that aren't coupled to a frontend then the MEAN stack is not what you want to use. In this case Hapi.js would be a much better fit in the Node.js domain.

    I agree with all the above, but with the following caveats:

    - Is SEO on all search engines important? In that case maybe server rendering should be preferred over a SPA. Search engines crawl HTML easier than JS.

    - Are emerging markets important? In that case maybe a PWA should be considered. Bulky front-end frameworks not suited to 2G networks.

    If the above doesn't apply, React/Redux/Hapi is great (actually what my current project uses)


  • Registered Users Posts: 6,117 ✭✭✭Talisman


    I agree with all the above, but with the following caveats:

    - Is SEO on all search engines important? In that case maybe server rendering should be preferred over a SPA. Search engines crawl HTML easier than JS.

    - Are emerging markets important? In that case maybe a PWA should be considered. Bulky front-end frameworks not suited to 2G networks.

    If the above doesn't apply, React/Redux/Hapi is great (actually what my current project uses)
    I wasn't going to raise the SEO spectre until the OP had decided on what kind of architecture they wanted to implement.


  • Registered Users Posts: 6,251 ✭✭✭Buford T Justice


    I agree with all the above, but with the following caveats:

    - Is SEO on all search engines important? In that case maybe server rendering should be preferred over a SPA. Search engines crawl HTML easier than JS.

    - Are emerging markets important? In that case maybe a PWA should be considered. Bulky front-end frameworks not suited to 2G networks.

    If the above doesn't apply, React/Redux/Hapi is great (actually what my current project uses)

    It's target is the UK market, and I know sfa about seo, so can you explain SPA & PWA?


  • Registered Users Posts: 6,117 ✭✭✭Talisman


    SPA - Single Page Application
    PWA - Progressive Web App

    Single Page Applications aren't indexed by search engines because the content is loaded dynamically by JavaScript on the client. Server side rendering helps solve the issue.


  • Advertisement
Advertisement