Need detailed advice on how create a basic website for an NGO that daycares single mother’s children

#1

Hi, thanks for reading.

I friend of mine asked me for help creating a basic website for an NGO that provides daycare for single mother’s children, pretty much the basic functionality to manage an elementary school without accounting, just children track data.

As an experience legacy developer (iSeries/System i) am someone that can be considered a noob in web development but also, very stubborn and challenge junkie, so ended doing some research regarding different approaches for this request.

First stop was checking node.js then spring for java/kotlin and finally rust, who let me to rocket and actix-web; by that moment I just pick rocket with the only goal of start doing anything but doing and learning my way to fulfill the challenge. For my surprise, I couldn’t find any step by step for someone in my position. Honestly, I was looking for something like https://www.udemy.com/spring-framework-5-beginner-to-guru/ but no luck on this, and after checking every youtube video where Rocket or Sergio Benitez was mentioned or googling the end was the same.

So, can you please provide me with a detailed address on:

A resource for noobs web developers using Rocket/active-web?

Do you consider that my approach is wrong? If so, what will be the simplest way to create this website on my own?

Finally, just a take out on all my time invested… you can do good money creating a web development course from scratch with Rocket/active-web like the linked previously.

Thanks in advance, all your advice will be gratefully accepted.

#2

Rocket has a very good “Getting started”, that should bring you very far.
Rocket.rs

#3

Thanks AntonHermann.
That was one of my first stops. It looks like is quite simple and straightforward to follow but it requires previous contact with similar frameworks. I’ll need to start from the basics.

#4

If you have no experience building websites, let alone building web applications, you might want to start with a web framework that covers everything. Most of the Rust web frameworks (like Rocket and actix) are really only designed to write web application backends, assuming you’re already familiar with how the web works, and can take care of the frontend yourself.

I’d recommend something more comprehensive like Ruby on Rails, which has generators that let you get started really quickly.

2 Likes
#5

I actually haven’t done any web development in Rust, but Rocket looks awesome to me based on my experience with other frameworks. It sounds like you need a higher level overview, though.

There are a few major pieces you need to be a successful developer:

  • Frontend development. This is the part that renders the visual elements in the web browser. In modern systems, a ton of the business logic happens in the frontend, but ten years ago, most of it was done in the backend, and the frontend was just a sort of dumb terminal.
  • Backend development. This is traditionally the part that interacts with the database. In older systems, the backend would do most of the rendering and send it to the browser to be displayed. Nowadays it is more common for the backend to only send and receive data, and the bulk of the rendering is done in the frontend.
  • HTTP. This is the protocol that governs communication between the frontend and backend. You don’t have to understand the protocol itself, but you do need to learn how the web world thinks about requests and responses. The web browser makes a request for a specific URL, then a backend service (running rocket, for example) calculates some values and returns a response.
  • The database. You need to store data somewhere! Traditionally, you need to know SQL to do database querying, but there are other types of databases out there, and there are libraries that you can use to interact with the traditional databases.

These are all huge topics, and nowadays it is unusual for one person to do all those roles (called full stack development). Usually people specialize in either backend development, or in frontend development.

If I was starting out today, I would focus entirely on frontend development skills. There are great services like Firebase or Parse that can do ALL your backend work for you, including the database part. If you choose to go this route, you need to learn at least the following:

  • HTML to structure the content of your documents. If you don’t know it already, it’s very easy to get the basics.
  • CSS to format the layouts of the documents. It’s also easy to get the basics, but takes a tremendous amount of talent to make things look amazing!
  • Javascript. Now, this is a huge topic. JS is a full-fledged programming language that you need to use for anything dynamic on the website.
  • The Javascript library needed to interact with firebase or parse if you choose one of those.
  • Probably a javascript library for rendering different pieces of HTML in the client. React is a very popular one these days, but it has a huge learning curve if you’re coming from it cold, and you are probably better off starting with something like jQuery.

The other alternative would be to focus on backend development skills, which seems to be your inclination based on your questions. In that case, you would probably do all your rendering on the server side, and then send a full HTML page back to the browser to render. If you go that route you’d need to learn at least:

  • HTML. HTML is the only thing the browser knows how to display, so you need it at one end of the stack or the other.
  • CSS. Similarly.
  • The programming language you would use to implement the backend service. You’re looking at Rust right now, and you’ve looked at Javascript (with node) before. Jethrogb mentioned Ruby. Other options include PHP and Python (my own recommendation).
  • The web library you would use to implement the backend service. This is somethnig like Rocket or Javascript + node + express or Rails for Ruby or Django for Python. These all behave somewhat similarly, and have varying learning curves. I think Ruby on Rails and Django are most likely to have the introductory style documentation you are looking for.
  • A database library. MySQL and PostgreSQL are traditional, though there are many others. Django and Rails have well documented support these built in, which is probably the reason we’re recommending them. Rocket doesn’t appear to have db access built in, so you need to find and use another library for it.

In a backend-oriented web service, your normal workflow is:

  • User requests a web page
  • Server figures out what code to call using the web page using some kind of routing mechanism.
  • You write the code that the router decided to call based on the user request. This code generally looks for values that were submitted in forms and looks at the current state for the logged in user, and the page the requested.
  • Your code returns some a response that is formatted as HTML.
  • The server sends this response to the browser and the browser statically renders it.

In a frontend-oriented web application, it looks more like this:

  • You write some HTML and javascript that the browser loads.
  • User events (mouse clicks and keystrokes, for example) happen, and the browser calls code you set up in response to those events.
  • At some point, your code needs to interact with a remote service, for example, when the user clicks a “submit” button.
  • Your code calls some client library to send data or a query to firebase/parse/a backend service you wrote
  • The service responds with data in JSON format. Notice that the server is not responding with HTML in this frontend oriented world.
  • Some code that you set up to be called when the response comes in extracts that json and makes changes to the UI in response to it. For example, loading the data into a table the user can see.

I hope that provides an overview and some web search terms to get you going. You’ve asked about what has become a truly huge topic in the last few years. There’s no way to learn it all at once, and there is no obvious “learn this first, then that” to break it down into. So it’s understandable that you’re having a bit of difficulty figuring out where to start!

6 Likes
#6

Thanks jethrogb.

#7

dusty-phillips thanks a lot for your answer… from here my plan is to check MEAN stack (I want to start with something mature so learning resource will be easy to find) then I’ll revisit Rocket.js once that all these concepts.

Once again thanks for taking the time to provide such level of detail.