I’m a business informatics student and I’m currently working on my master’s thesis. In my thesis I have to work out a concept for a platform which will help users to plan a project. The basic idea is that multiple users write down “how might we…”-questions to answer the projects problem. All users will write down these questions via a website and vote for one of these to find the ideal one to start the further design process - which will not be part of my work. The main part of the platform should be the implementation of logical algorithms to automatically erase questions that are identical in their meaning.
Now my problem is that I have never programmed a whole platform with website, server backend and database. I know how to program a website and I have basic knowledge of java, but I don’t know which technologies would work together the best?
I thought maybe a Linux server with a java program doing all the work and the website just as a client would be a good way!? But some other students suggested to integrate a Framework like Google Firebase and that I should use JSPs, hibernate and so on…
When I search the web I always find other suggestions on how to do it better and I’m seriously confused at this point.
Can someone help me with my Problem and maybe suggest a better concept, my lack of experience makes it hard to connect all the pieces to one working system?
This reply is probably too late. But you can use a lot of things. Java works, but you’d probably be better off with something a little simpler and with more straightforward tutorials. Firebase isn’t a framework, it’s a Backend as a Service. It would mostly take over the need for a backend and a database. Java Spring would be a framework for the backend.
Linux is the OS for the server. If you want cheap hosting, you’ll use Linux. That’s just a given. Windows servers are much more expensive and generally not widely used outside of heavy enterprise companies.
An easy path to take would be Express.js and PostgreSQL. You can find lots of tutorials online that will guide you through how to build a site using those and how to setup a server.
The main part of the platform should be the implementation of logical algorithms to automatically erase questions that are identical in their meaning.
This statement makes me think of this comic:
You’ll need to learn a lot of stuff to get a basic application setup and it might take you a few weeks (or maybe months) before you can get something running. But that requirement will be the hard part.
It’s indeed not too late because I’m still planning the architecture of the platform. I got 2 months to get everything ready for testing, which means long nights hacking everything together, although how you said it’s gonna be a lot of work.
The thing is I’m trying to find the most minimalistic application with the least effort for me.
The whole project is just about to proof the concept of the core method. The security, performance, scalability and so on is totally irrelevant. It should be usable and work properly.
My problem is that I am not able to picture the interfaces I need. I thought about using Node.js like you mentioned but I think that java has more predefined libraries that could help me with my filtering like a plagiarism checker or algorithms to cross-check word combinations? and well I know java.
Now I found two possible solutions for my problem. First would be jhipster, a code generator which would implement a lot of the stuff I can’t figure out like the data connection and the authentication, so every user gets their own interface. But the generated code is huge and hard to understand.
The second way I see would be Client side:
Single-page web application with JavaScript + AngularJS
Server side:
Java + Spring
REST architecture style for the communication.
MySQL database with a framework like PostgreSQL or Hibernate
In the nutshell, I want to send strings from multiple user from my JavaScript to my java backend (maybe) at the same time. I want the java to store this string in the Database and let java work his magic on filtering the data in the Database. Then later the strings should be send back to the individual users.
Are my thoughts completely off line? Am I too naïve for web programming that I don’t see the bigger problems? The basic Architecture is my biggest problem right now.
JHipster is an option, but you’re still going to have to learn a lot. Node.js will probably introduce less concepts. You’re still going to have to learn how to work with Node.js and JS. JHipster is built off Yeoman. Yeoman generators can usually be insanely complex. I haven’t messed with JHipster since it was first released, so I can’t comment on it.
2 months isn’t a long time. None of the pieces are hard on their own. It’s just a lot of pieces. You should probably skip learning a fat client (Angular) and just build server rendered pages.
Either way. Full Node or Java. You should start ASAP if you have only 2 months left.