Hi there, I'm deciding the technology to use in my project.
I need to build software that has:
- Main View (access to a user account, News, General Info, Business hours, software, and parts section).
- Account Preferences.
- Web Shop for Parts (Support, Download Sections, Ticket System).
The most critical functionality is a WebSocket that connects between a car that sends real-time data through serial communication, and a server performs diagnosis on the car and sends the results back to the user.
You can use NestJs with microservice architecture.where you can also use socket.io for web socket. you can use MongoDB (For real-time data) & MySQL for customer management.if you don't want to implement websocket.you can use firebase.it gives realtime database & firestore.which can handle millions of connections and scale it up.
Thank you, I thought the same as you. NestJS makes it easy for you the use of best practices, clean architecture, and design patterns for your applications.
Agreed. I haven't used Python for web socket stuff, but in a similar case, I tried using Server-Sent Events, and I thought the experience there was not very good. There was one library that you could use for such cases but it was overkill because it forced you to use Redis. You could get by with Nest.js for sure. Some people prefer to use PostgreSQL if you want higher performance, but unless you're dealing with thousands of customers all the time, doesn't really matter that much. If you're feeling more adventurous, there's talk of a new database called SurrealDB which supports both SQL and NoSQL schemas and has a direct REST API.
I would also go with NestJS. I would say Java is unnecessarily complicated and limited. And Python is not typed. TypeScript is powerful and typed and goes well with NestJS, especially using RxJS.
Django does not enforce backend-frontend separation, which probably was a good thing back in the days, but not anymore. But on the other hand enforces the project structure to you, which I don't like.
The work around would be to use Django Rest Framework, but even then, I don't think Python is the best tool for web sockets/real-time stuff.