Closed nashirj closed 1 year ago
Here is a problem though, from my understanding we MUST use EN part of MERN stack... so like, it doesn't look like we have much of the choice on backend?
I think it's just recommended. The prof said we can use Python for the backend of the second project
I think it's just recommended. The prof said we can use Python for the backend of the second project
Personally, I would rather go with Rust lol... I hate python for the luck of types, for the same reason I hate javascript
but EN could be better because Uber/Google/Ebay and other big companies use that
For Mobile options, I'm for cross-platform. From what I read, if you don't develop games or something that could actually utilize the "nativeness" part of the platfrom you develop for, cross-platform is the way. It will help us to actually being able to deploy our app on ANY mobile platform be it Android/iOS which would increase the number of potential users (hypothetically)
Also, no one in their right mind would use Java for Android. All new apps are written in Kotlin, Java is only used for maintaining old apps and that's basically it. Kotlin is like a better Java, plus google is developing JetPack Compose for Kotlin specifically which only proves the point that they are trying to get away from Java 🤣
Never used Flutter, heard that Dart is not a bad language though. C# is VERY nice language.... TRULLY OOP language. You can do a lot of OOP things in C# without being too verbose. Heard that React is technically a go to when it comes to cross platform though.
Also, I think Angular is nice for web app, and I actually like the fact that you can include Types in TypeScript but like... The person who will be responsible for web-app development will have to be good at time management and google because they will have to google a lot.
Tentative decisions on some stacks: Frontend: Vue.js (we can use Material for styling stuff) Mobile: Flutter Backend: Rocket, Flask only if we end up doing ML/CV stuff
Here is a sample app that uses vue and rocket
Tentative decisions on some stacks: Frontend: Vue.js (we can use Material for styling stuff) Mobile: Flutter Backend: Rocket, Flask only if we end up doing ML/CV stuff
it's not "can" when it comes to Material... it's "must". Unless you want to spend endless time on doing css and stuff...
There are other options, such as bootstrap, which is why I said can - we will definitely use some CSS framework
Wouldn't material be better though? We can use material for both web app and mobile app which will give us UI consistency.
I could be misunderstanding it with Material design btw
So.. Since we are going to use Clarifi API we are switching from Rocket to Flask or Django, right?
nvm they support Rust
Yeah we are also not 100% going to use Clarifai, just a possible idea
I guess we can solidify that for the backend we will use Rocket (Rust). I mean, I spent like 2-3 days trying to understand the syntax and different parts of Rocket/Rust, so there is no way I'm switching to anything else 😄
I'm marking this as resolved, seems like we have our tech stack locked down.
Just so that it's on the record, the professor said we need to use Node + Express, so we'll be using those instead of Rust + Rocket
We need a tech stack that has a web and mobile component. We can use the same shared backend for both the mobile and web apps.
Web front-end framework options:
We can optionally use TypeScript instead of vanilla JS, which will help catch some classes of errors before runtime; I believe we have to use TypeScript if we decide to use Angular. Also, even though we're making a mobile app, we should make our website mobile-friendly. I personally hate having to download an app in order to interact with a website on my phone. Can test using Jest and Jest image snapshot
Front-end style helpers
Back-end options
I think a good option would be to stick to the MEAN/MERN stack and if we have an idea that can leverage ML/CV stuff, we can make a second Python API that is only exposed to the Node backend.
Mobile options
Since (I think) I'm the only one on the team (so far) that has a Mac, we should probably not do native iOS. I prefer cross-platform, but am open to doing an Android native app if everyone else wants to do that.
Misc
The professor suggests (not sure if it's a requirement) that we use Nginx for our web server and MongoDB for the database. We can prob just use those :)
We should unit test code for each of mobile, frontend, and backend using the respective tools for whatever stack we go with. It would be really cool if use GitHub actions to set up automatic build/test. We should also set up linting as a GitHub action for whatever languages we go with.
We can optionally use Redis for caching if we are limited by DB performance, but this might not help us if we have the DB on the same server as the application. Just mentioning since it could be an opportunity to learn an extra tool/get brownie points.
Once we decide on stacks, I'll make new issues splitting out required setup tasks (e.g. setting up GitHub actions, etc.).