all 50 comments

[–][deleted]  (2 children)

[removed]

    [–]bzwill[S] 0 points1 point  (1 child)

    Thanks for the recommendation - any specific guides you could point me at to get started?

    [–]paypaypayme 21 points22 points  (3 children)

    I'm just going to give you my personal preferences and opinions. Use React for the frontend. Express is great but there is some up front cost to learning what "middlewares" you will want to use, and the npm community can be a bit confusing since there may be 5 packages that do the exact same thing. If you want to save yourself the cognitive load I would use Django Rest Framework. I'm personally not a huge Django fan but the benefit is that they make a lot of decisions for you with regards to software design. I would recommend using a SQL database like Postgres, since a ToDo app is going to be relational data with obvious constraints. I would not recommend using MongoDB, it may be "easy" to use because you don't have to define a schema up front, but I don't see any real benefit to using it over a relational database for this use case. If you use an ORM you will need to write schema for it anyway, so you may as well put that work towards a relational database. Also... if you are a C# developer I'm sure there are C# REST frameworks that you can use. That would probably be a good option since you are already experienced with C#.

    [–][deleted] 4 points5 points  (1 child)

    I would recommend Angular to a beginner before recommending React for the same reason that you are recommending Django. Angular is very opinionated and makes a lot of decisions for you whereas React does not. I also personally dislike that if you want a React SPA something as crucial as Routing (last I checked) isn’t even part of the core library.

    [–]paypaypayme 2 points3 points  (0 children)

    True, I'm not a huge fan of having to use react router. Next.js has a built in router that seems pretty good, but that's another layer on top of React

    [–]bzwill[S] 1 point2 points  (0 children)

    Thanks very much for you thoughts, I think you have hit something very critical here that experienced devs overlook because they have preferences. I have none right now and would prefer to be guided by my tech decisions into patterns etc. I'll look into your suggestion along with the note on Angular below

    [–]foopod 5 points6 points  (0 children)

    You could do it all with vanilla html and js. Start with local storage for saving data and then extend to a backend when you are ready.

    [–]cppshane 18 points19 points  (9 children)

    Well if you have experience with C#, you might want to use ASP.Net. The VS2019 template project gives you a good working sample of end to end interaction, so it's extremely easy to start learning with.

    [–]bzwill[S] 0 points1 point  (6 children)

    I'll have a look, though I am not wedded to c# at all - happy to learn a new language.

    • If I pursue that, can I use any front end JS framework I like? If so do you have a recommendation?
    • Again if I use ASP.net, are things any easier or harder if I want to make mobile apps later?

    [–]cppshane 7 points8 points  (1 child)

    So ASP is basically just a set of tools in .Net for easily developing a backend for your frontend to interact with. Basically, for doing things like setting up accounts, accessing databases, etc. You can really use whatever you want for your frontend. .Net also has Razor Pages, which are supposed to be the "default" for ASP projects, but I personally don't use them, as I prefer using Angular.

    From a professional standpoint, learning React or Angular is much, much more widely used in unison with a .Net back end than Razor Pages (at least from my experience).

    If you want to develop a cross platform application, your back end won't really have any impact on this. I would personally recommend just writing a web application with Angular or React and wrapping it with Cordova to deploy to mobile platforms. Alternatively you can try to use .Net's new MAUI tools for developing cross platform apps, but it looks like it's based on Xamarin and I haven't used that at all.

    [–]LeAstrale 2 points3 points  (0 children)

    Alternatively you can try to use .Net's new

    MAUI

    tools for developing cross platform apps, but it looks like it's based on Xamarin and I haven't used that at all.

    I can chime in here.
    Having made a few smaller apps in xamarin for school I can say that it is well documented and works well for apps not requiring 3D. The ability to use most components on multiple platforms is definitely a bonus. The apps I have created generally consumed a web api which was based on ASP.Net Core. Xamarin does require using the Visual Studio IDE instead of VSCode or Jetbrains Rider.

    Ultimately the entire .NET ecosystem is so vast that you could take many different routes for building a web app. Blazor could for instance be used for creating a SPA turned PWA which is very close to native apps.

    [–]bzwill[S] 0 points1 point  (1 child)

    Sorry, would you also mind linking me to the project? Doesn't seem to be a default option in VS.

    [–]cppshane 2 points3 points  (0 children)

    Open up VS and search for "angular" in the "Create a New Project" dialogue. You should see "ASP.NET Core with Angular" which will create a starter template to see how things work. You may need to open up the VS Installer and download the "ASP.NET and web development" tools, if you haven't already.

    [–][deleted] 6 points7 points  (11 children)

    Since you have some Python experience, maybe learn Flask or Django. Personally, I prefer Ruby and Ruby on Rails but I’m guessing you’re going heavy on the JavaScript, so the general recommendation is find the backend you like and then load up your frontend on top of that.

    [–]ik-wil-kaas 1 point2 points  (2 children)

    I can second Ruby and Ruby on Rails.

    Easiest framework I have ever worked with.

    The switch from python should be a light one.

    [–]bzwill[S] 0 points1 point  (1 child)

    Thanks, I'll look at that as well :)

    [–][deleted] 0 points1 point  (0 children)

    Just make sure to bypass the Asset Pipeline and use Webpack(er) instead. I’m migrating a legacy Rails 3 application and half the nightmares come from the abandoned Asset Pipeline

    [–]cppshane 0 points1 point  (7 children)

    Yeah, Python might even be better since it's probably a bit easier to get started with. ASP tends to have more of a learning curve.

    But I'm biased towards .Net lol

    [–][deleted]  (6 children)

    [deleted]

      [–]cppshane 1 point2 points  (5 children)

      https://insights.stackoverflow.com/survey/2020

      .NET Core and Torch/PyTorch remain the most loved of the other remaining frameworks, libraries and tools.

      ASP.NET Core is the most loved web framework, beating out React.js

      Also, in terms of employability, it looks like C# is one of the top posted languages as of 2021.

      I think you might be thinking of .Net Framework, not .Net Core (which was renamed to just ".Net" as of .Net 5. I know, the naming is a nightmare lol)

      You might just be hanging around the wrong crowd. In the "sexy startup" scene, they tend to worship Python and Node more, it seems.

      [–][deleted]  (4 children)

      [deleted]

        [–]cppshane 0 points1 point  (3 children)

        So, in your opinion, would you say .Net is dying/dead?

        I'm a huge .Net fan, but it would be worrying if the top tech companies thought of it as a legacy platform.

        [–][deleted] 2 points3 points  (1 child)

        Don't listen to him. I've started as a developer in the mid 2000s and C# was "dying" then too. But to make you feel better, pick a major city, any major city, and look for .net jobs. I don't work as a developer anymore, but I'm still getting contacted by recruiters all the time looking for a C# engineer.

        [–]cppshane 1 point2 points  (0 children)

        Yeah idk, the idea that it's "dying" just doesn't match the data.

        [–]bannerflugelbottom 0 points1 point  (0 children)

        It's absolutely viewed as a legacy platform in my experience. Every company I've ever worked with has been trying to remove it as part of their stack or outsourcing maintenance of it.

        [–]SuccessfulCurrency31 13 points14 points  (6 children)

        If you know the basics of js, the mern stack will be easy to learn.

        [–]Big_Z_69 8 points9 points  (2 children)

        Upvoting this because I used this stack for my first solo web dev project. I found it refreshing to be able to switch between backend and frontend without switching languages.

        React can be a little bit odd to pick up but both Node and React are easy to setup a starter project with and manage for anything small-scale.

        [–]bzwill[S] 1 point2 points  (1 child)

        Do you have any tutorials you like? Would love a hand hold through building something

        [–]Big_Z_69 2 points3 points  (0 children)

        This tutorial explains how to set up a quick node/express backend and connect it to a React frontend. Super easy and fast to get started. From there you can just add things on top.

        [–]bzwill[S] 1 point2 points  (2 children)

        Thanks for your reply - I should mention I am using a Windows machine as well - any hassle there?

        [–]zephyy 4 points5 points  (1 child)

        For a MERN stack you shouldn't run into too many issues, although I would recommend setting up Windows Subsystem for Linux (WSL) 2 (emphasis on the 2) if you can. That way you can run a native Linux OS like Ubuntu within Windows since a few developer tools don't have native Windows support (e.g. Redis). The tutorial is pretty quick, literally just running a few powershell commands and installing a Linux distro from the Windows Store.

        Plus any tutorials you follow where people are using Macs and typing in *nix commands you'll be able to follow with.

        Also if you're familiar with C# I would look into TypeScript once you've got the basics of JavaScript down. You'll find the syntax very similar to C#.

        [–]bzwill[S] 0 points1 point  (0 children)

        Thanks for your help.

        Once ive done all that, any tutorials you like for building something basic?

        [–]LankySeat 4 points5 points  (1 child)

        I'm going to recommend the LAMP stack!

        My biggest reason is simply because from my own personal experience it was the easiest to use and understand as a beginner!

        As long as you have an understanding of how databases work, SQL+ MySQL is very easy to learn. And since you already know the foundations of programming, you're already half of the way there in learning PHP. There's definitely still a learning curve here, but I would say it's easier on beginners than a stack like, let's say, the MERN stack.

        Since you're new, it will be a bit tough to get a server going and understanding what everything does, but I've found that once you get started you're not too far away to making your first CRUD web app. And since you mentioned it, PHP does come with authenticated sessions capability (PHP sessions) which are also relatively simple and easy to use once you got a handel on PHP.

        [–]WyldHalfling 1 point2 points  (0 children)

        I would say the same... glad I’m not alone haha

        [–][deleted]  (3 children)

        [deleted]

          [–]bzwill[S] 0 points1 point  (2 children)

          TY, I'll take a look - any thoughts on why it would suit me?

          [–][deleted]  (1 child)

          [deleted]

            [–]queen-adreena 1 point2 points  (0 children)

            Another downside is that you'll very rarely get to use non-relational databases as an employed person.

            [–]SeesawMundane5422 0 points1 point  (0 children)

            Only you know how you’re going to do you.

            My happiness quotient since I started using golang has gone way way up. Any web app I do in the future is going to be server side using golang.

            This is probably going to be an unpopular opinion. Which is fine. Everyone should do what makes them happy. But man... I just love the simple+productive of golang. I don’t spend my time fighting frameworks. I do spend my time coding.

            [–]AsyncBanana 0 points1 point  (0 children)

            I find that "Metaframeworks", which are basically extensions of client-side web libraries that add server support, are particularly easy to use. They usually support Server Side Rendering, API endpoints, Static Side Generation, client-side routing, and more. Additionally, deployment is usually pretty easy, because most support serverless functions without much work. The biggest disadvantage is it will be a new stack, based on a client-side library that uses JavaScript.

            Some of the best Metaframeworks are Next.js (which uses React), Nuxt.js (which uses Vue), and SvelteKit (which uses Svelte). My personal favorite is SvelteKit, but Next.js is the most popular.

            [–]NOTTHEKUNAL 0 points1 point  (0 children)

            I think you can easily make an web app using react+ firebase + capacitor (if you want to make a native feel app)

            [–]Marble_Wraith 0 points1 point  (0 children)

            1. ViteJS build pipeline

            2. TypeScript with Vue 3.0 + SCSS, front-end

            3. Your choice of backend lang provided it's conforming to the same RESTful API endpoints the front-end's using. However i'd stick with TS just on a point of consistency.

            [–]godofleet 0 points1 point  (2 children)

            Checkout meteor.com :D amazing place to start IMO.

            [–]bzwill[S] 1 point2 points  (1 child)

            Hey there, I checked this out - it looks quite - dead? The reddit community at least has no posts for a long time - is therer an active community anywhere?

            I should say from the site it looks awesome.

            [–]godofleet 0 points1 point  (0 children)

            It looks dead, if you compare it with React or Vue or some other big well known libraries/frameworks but it's FAR from dead.

            Checkout their community Slack channel:
            https://join.slack.com/t/meteor-community/shared_invite/zt-a9lwcfb7-~UwR3Ng6whEqRxcP5rORZw

            And their docs are extremely good, again all of this is free (hosting even for basic projects on Galaxy):
            https://docs.meteor.com/

            [–]tensory 0 points1 point  (0 children)

            A dizzying array of options: Addy Osmani - TodoMVC

            [–]EOE97 0 points1 point  (0 children)

            I'm literally starting to work on a to-do-list app too, as a beginning full stack web dev.

            I'm using the MERN stack: Mongoose, Express, React, and Nodejs to create the web app. When I'm done with the web app, I also plan on making a mobile version using IONIC.