A pro tip for using Google Analytics is to set up custom segments to better understand the behavior of specific groups of visitors on your website. This can help you to identify patterns and trends in user behavior, and make data-driven decisions about how to improve your website and marketing efforts. You can create segments based on various criteria, such as demographics, location, and device type. This feature will give you a more granular view of your website traffic and allow you to optimize your site for different groups of users.
Tried to use for my mobile app: 1- user role sucks, you have a max of 3 roles users 2- cannot create a user by passing only email, username and passowrd is required 3- cannot interate with users schema 4- plugins page sucks 5- internalizations is not clear, date time is not translated 6- it's not responsive
DIRECTUS is on another level guys, you should try it. Github stars aren't.
Hello, it's, good to finally find a community. I am looking for the best route. I just finished studying HTML and I am looking for the best route. I just finished HTML training and I succeeded! so, I want to progress. I have two accredited courses that I have on the shelf ready for learning and don't know which path to take. should I jump right into Python or do I even need to study it first? My other class is CSS 3, should I take that first? Or should I study something else first and come back to it later? Eventually, I would eventually like to be a full-stack developer if I don't run out of time. I am 52 years old. I learned advanced basics when I was 12 but that was a long time ago. And what else do I need to study? I know nothing about anything except basic HTML and looking for a path.
Our primary work is in coding IoT devices and working with ESP32 framework. While VS Code is geared well to support Esperssif framework (and PlatformIO), we find that JetBrains toolset and the IDE environment it provides is not only robust and well thought out but the tools provided in the IDE make life so much easier
If you select microsoft go with c#, ASP-net-core, entity-framework, API.
if you select Linux go with node or java or PHP, react, next, springbooth, Lalavel, API.
note: Microsoft can also use all Linux development tools! And Linux can also use C#
Hi, so I have been contracted by a peer to create a website using React with Java as the backend for server-side applications. I have the project listed on GitHub, and you can find it by searching for my username. The question I have is what is the fastest way to correctly learn all the necessary technologies needed to host the website? I'm also learning Neovim because I used Visual Studio Code for a bit and hated it, so if anyone has advice relating to Neovim that would also be appreciated. Thanks for providing some advice, I have little idea of where I need to go and some direction would be well appreciated. Cheers! Jls
There are sssssooooo many good options for deploying a web service to production, there is really no space here (or probably anywhere outside a dedicated year-long course) to learn all the necessary technologies for even a part of this huge space. So instead - lets start with the easiest one (IMHO, others may disagree): AWS Fargate.
AWS Fargate is a simple container runtime - there are others, but Fargate excels in that it is very simple to create and manage (you basically let AWS manage it for you) and you don't need to worry about servers and control nodes and proxies and other things other container runtimes (such as Kubernetes) will have you worry about. On the other hand, it does not skimp on performance and if you ever want to go Kubernetes (which is all the hotness these days) - there is a clear and simple "upgrade" path.
How do you get there? First learn what a "container" is - the concept was popularized by the Docker product and it is pretty much an industry standard (there are other container formats, but the Cloud Native Foundation's format is basically the Docker format) - a container allows you to bundle an application in an lightweight operating system image and run it as an application. A container runtime can then take a container and run it, scaling it up as needed, without you needing to manage deployment scripts, process management and stuff like that.
To deploy your Java web service on AWS Fargate you need to do the following:
Package your Java web service in a JAR file. Maven is the common tool to do that, though gradle is also very popular. There are other build tools for Java but you probably want to choose one of these two and learn it. Gradle is somewhat simpler to start with but it gets complicated pretty fast (it is basically a scripting language for building with a lot of "magic" - which often implies a stiff learning curve). Maven looks more daunting at first - with all that messy XML to read and write - but its internal complexity peeks really fast and then adding new functionality is basically just using (or creating) new plugins with the same simple configuration language.
Create a container image from your JAR file that can run it as a container: You obviously need to learn Docker and how to write Dockerfile scripts - this is pretty easy and straightforward, then look for examples how to run your specific application in a container - depending on which Java framework you're using. My weapon of choice is Vert.x and here's the documentation for that on Docker: https://vertx.io/docs/4.3.7/vertx-docker/. If you are using Maven then you can use a plugin to automate building the container image for you - but you should still learn how to do it yourself to understand what's going on. I use com.spotify:dockerfile-maven-plugin (it is very simple and stable but also have stopped development) or you can use io.fabric8:docker-maven-plugin which is newer and more capable but also more complex. You may be able to use these with Gradle as well - I don't have any experience with that.
Create an AWS account and learn about setting AWS Fargate and AWS Application Load Balancer (you should use an AWS load balancer to expose your Fargate service to the public internet - the alternative is at best much more complicated and at worst unreliable). AWS has a lot of good documentation on the subject. You can start by setting everything up in the AWS console, but you should really learn how to do it with the AWS CLI tool and also recommended to use an automated provisioning tool such as AWS CloudFormation or Terraform. The advantage of using Terraform is that it is not AWS specific and if you ever want to move to a different provider, you can take Terraform with you, OTOH it is more complex to learn and operate.
Set up a continuous integration (CI) pipeline to automatically build and deploy your service. There are many good options, but you should probably stick with what your source control service provides: Github Actions, Gitlab CI, Bitbucket Pipelines, Azure DevOps or maybe even AWS CodePipeline (if you already use AWS you might want to go full in). AWS also has a full git repository hosting (AWS CodeCommit) and integrated CI/CD (AWS CodeStar) so you can keep all your eggs in one basket - they do make it very simple and easy to maintain and control, but the standard caveats about eggs and baskets apply.
Deploy your service and then monitor it - this is a completely different huge ecosystem that you'd need to know about when you actually need to maintain a "real" production service. I use StatusCake (for external status monitoring), AWS CloudWatch (internal status monitoring and alerts) and OpsGenie (on-call management, alerting and escalation).
As for hosting the front-end, the choice would be Vercel. Super straight-forward non-nonsense deployment. As for Java, I'd package it in a Docker container, and deploy it this way.
There are multiple options for deploying Docker containers: Azure, GCP, and AWS will have them, and there's very little to no difference between them. From some tests I have seen, Azure and AWS are faster than GCP.
For those who like having control of their servers and need to validate many ideas quickly, the smallest overhead way I've found to get a service up and running that requires an exposed API, a backing filesystem, and a GPU is to write a Flask route to your core logic and then run it using gunicorn with some number of workers. As gunicorn uses green threads, it's extremely easy to scale up if needed, and for services where the traffic patterns are sparse but critical, it's great to have "multiprocess" Python and get past the GIL.
I'm hoping to get some much-needed tech-stack advice. I have been in UX/UI design for ~11 years now. No hands-on programming until very recently, I learned the basics of Python/CSS 3/HTML5/Django/Flask.
I am looking to work in early-stage startups, helping to build tech/software design. Where I would essentially need to wear multiple hats.
The tricky part for me has been understanding which technology I should focus on learning.
I don't really care at all about where the jobs are. I care more about these priorities (in order):
- Feature-rich / Robust capabilities / Scaling / future-proofing / Security (Is it good tech)
- Ease of build. (Being a UX/UI guy, I love a good GUI to build with.)
- Library resources. Would love to skip the easy stuff whenever possible.
- Strong Dev community.
- Ability to convert Prototypes to usable code. Figma?
- Cross-platform capabilities.
- Monolithic nature. Would love to avoid learning a million different tools.
Basically, I am looking to be enough of a do-it-all type developer, that gets the MVP tech stack far enough along with the company to get funding and get the dedicated resources we would need for whatever the technology is...
Any advice is appreciated! Thanks! - Brian
For styling, I would recommend to learn at least the basics of CSS before you move on to a framework like Bootstrap or Tailwind. You mention you already have so that's good. I would definitely invest time in understanding Grid and Flexbox, as well as writing media queries for responsiveness if you haven't so. When you're confident writing your own CSS, I could definitely recommend Tailwind as framework as that still allows you to implement your own styling and designs, instead of using a predefined UI Component-based framework like Bootstrap. I've been using it for a few months now and when you get the hang of it, it's really time efficient.
One tip: try to define your tech stack now, and focus on mastering those tools instead of being a jack of all trades. It's hard to master tools/topics if you're not enough invested in learning those because you want to learn too much. For example, I would either pick Django or Flask in your situation. My preference goes to Django. If API support is needed, then use the Django REST Framework for example.
Also, best way to learn is to just build things. Try building your portfolio website or a to-do app. Also, try to build something that retrieves data from an API.
Yeah, nextjs probably has the best frontend among all the development tools, but i dont recommend using it for backend, you can continue using django/flask since i think they are more development ready, even tough nextjs can do great things in its backend too
Yeah, nextjs probably has the best frontend among all the development tools, but i dont recommend using it for backend, you can continue using django/flask since i think they are more development ready, even tough nextjs can do great things in its backend too
Prototype to code would be better with teleport.hq. Figma is ok for the prototype itself but to get the code you would still end up using the Teleport plugin. Either way the code generated is always moderately hacky, you should keep learning JS and HTML so you can fix up odd looking parts yourself.
A key component in the field of automation was how to ensure a safe and easy transition from our repositories to runtime environments, with as few showstoppers as possible. Azure Pipelines was extremely straight forward in taking a concept from grassroots investigation to production in a very short time, without running the problem of vendor locking, allowing continious use of our current infrastructure, tooling and solutions.
I studied C lang/C++ and G (lab view) for 2 years at my previous university, the university where I study now teaches me C#, I am interested in web development (frontend and backend), embedded (for the Internet of Things, for Arduino), mobile development (Android, iOS), game development, The science of data and ML. I studied mathematics (discrete mathematics, analytical geometry, mathematical analysis).
I ask the developers for advice: what should I learn to be able to do everything I want (websites, games, drivers, sockets, desktop applications and others)?
I am looking for a universal solution, and I am limited in training time, and the number of vacancies is also important.
P.S. I used Google translator
I would suggest instead of going all over, you should focus on one specific field you want to master. I also have prior experience with all of these languages and during my studies, I can understand the mess you are going through.
Best of luck with your studies.
at its very beginning it was compiled with errors and cause a fast and huge deployement these bugs have never been solved because of too much people using them.
example ; 10 - '1' = 9 but 10 + '1' = 101 🤦♂️
So as Muhammad wrote you better learn JS frameworks than JS itself who's a waste of time.
No, it will just break your heart for both languages.
Thank you very much, Muhammad!
If you will be studying c# checkout A ASP-NET core, MAUI - mobile cross-platform, and if you have time look at Blazor and Entity Framework.
I am presently using Google Sheets or Microsoft Excel on SharePoint so that I can share stored data and allow data input with users. I need to add simpler input forms, process documentation, attachments, analytics-light and storage as well. I also would like to have mobile data input and retrieval. Retool seems to offer what I need and as there will be less than 10 users, the pricing seems affordable.
I'm looking for any recommendations of this or alternate software.
Hi Brian! Based on your requirements, I’d strongly suggest giving Retool a try. It excels at having the pre-assembled components library which lets you put together apps in a breeze. It scales with your needs and the medium plan should be quite sufficient for a while. I’m helping companies with their use of Retool as part of my business: www.blackholeconsulting.net
Hope this recommendation helps! Cheers, Stephan
Dom here, co-founder of Five, a low-code company.
The first question I'd ask is this: do you want to continue using Google Sheets or Microsoft Excel as your database? If yes, then indeed Retool is a great choice because it connects to Google Sheets and lets you build a front end on top of it. An alternative could be AppSheet, which belongs to Google and does the same as Retool.
My advice, however, would be not to use a spreadsheet as a database. I won't go into all the reasons for this. But a spreadsheet is not designed to support web applications. At some point, it will either become very slow or you will struggle with data integrity, especially if you have ten users reading & writing data concurrently. That's why I'd look for an online database application builder.
Now, this is where I'm biased, given my role at Five, but here's what Five lets you do:
You can create your own MySQL database straight inside Five. So instead of storing data in a spreadsheet, you store it in a web-hosted MySQL database. You can import CSV files into your database, so your existing data won't be lost. You can then build the front end on top of the MySQL database. The advantages: you get something that is scalable and won't break in the future. And MySQL is open-source, so even if at some point in the future, you won't go elsewhere with your application, your data is portable.
Hope this helps and as I said, think about the right back end for your application first. :)
Pro-Tip of the day: Stay pure
At Findustrial we strongly stick to the principle of staying pure and not relying on external dependencies. Why? Because every external software library or package we need to include in our code couples us to external companies or projects. Which is especially bad when using external code on your core business logic.
I would always consider and discuss the need of an external library or tool over implementing the code on your own. Rather take a few days in building a custom solution that fits your needs exactly over engineering an external dependency into your product.
Plus: Independence from other software vendors and projects may also drive up your businesses overall evaluation in the end.
The downside of this, of course, is reinventing the wheel. The biggest downside is probably that now all your developers are hostage to your company's ability to write good documentation as well. If its a small shop this isn't as much of a pressure but you're still bottlenecking knowledge transfer of your custom solution to person-to-person communication.
I am planning on creating an application using the following tech-stack. Vue.js (TypeScript) for the front-end, Django (specifically Django REST framework) for the server-side work, and using PostgreSQL as the database. Is there any reason NOT to use this tech stack mentioned or are there better options? Without giving away too much info, my app will be logging information from the user, displaying this information, setting goals, displaying visual graphs, a friend system where you can add other people etc...
Great stack. Very productive and the vue development tools are excellent. The generic views from drf help a lot in productivity
Agreed, a very productive stack. Django takes care of a lot stuff for you down to the serialization of your data models, and Vue is just the best thing out there right now for front end projects, having good component structures while being flexible and easy to use.
Easy stack to start and develop your product. Vue is easy to learn and use, great support from the community if you have questions. Django is a powerful backend framework, the Django Rest Framework comes with a lot of generic views that you can use which will come in handy. Also, Django admin gives you and out of the box interface for all your admin/support needs.
Hello, A question to frontend developers. I am a beginner on frontend.
I am building a UI for my company to replace old legacy one with React and this question is about choosing how to apply design to it.
I have Tailwind CSS on one hand and Ant Design on the other (I didnt like mui and Bootstrap doesn't seem to have enterprise components as ant) As far as I understand, tailwind is great. It allows me to literally build an application without touching the css but I have to build my own react components with it. Ant design or mantine has ready to use components which I can use and rapidly build my application.
My question is, is it the right approach to: - Use a component framework for now and replace legacy app. - Introduce tailwind later when I have a frontend resource in hand and then build own component library
Although I use Hugo instead of React (and don't have experience with Ant Design), I'd highly suggest using Tailwind. The main reason I like it is because I can't tell if a site is using Tailwind or regular CSS, whereas once you've seen a Bootstrap site, you'll see Bootstrap everywhere whenever it's used (and I'd assume the same with Ant Design).
Most probably you don't want to create component's logic from scratch. As you already have an app, try to make a list of all components that you'll need - modals, dropdowns, etc. And then try to find a library that has all of them, because some components are rare (like a range selector).
There's some libraries built with/for tailwind, for example https://headlessui.com. It's pretty basic, but maybe it'll be enough for you.
It's not that when you're using tailwind you're not touching css. It's just a convenient way to write it and it gives you a nice design system by default.
We decided to migrate our existing serverless applications entirely to SST (coming from serverless framework). We're seeing the main benefits in the local developer experience & the use of CDK. Since we are deploying "real" cloud resources with SST during local development, we can iterate much faster, learn more about the serverless / cloud specifics & catch issues before deploying to a preview deployment. Utilizing AWS CDK (Typescript) for IaC matches our full-stack typescript mentality.
I've looked at this closely and we're still on the fence. Many folks like having a completely offline model for testing and SST is not philosophically aligned with that. Further, the finance team is worried about the cost of all developers spinning up cloud resources for their offline development. Have you found either to be a concern?
We also evaluated & actually worked on the "completely offline model" for our apps based on serverless framework. We used local emulators for dynamodb, s3, sqs, sns via localstack etc. However those emulators did not really give us full confidence [e.g. testing if your IAM permissions are setup correctly] & were quite flaky to setup / maintain tbh. Another part is that testing more complex event driven patterns [e.g. api gateway -> lambda -> sns -> sqs -> lambda] was never really possible using those emulators. Running on SST allows to cover those tests during local development.
Regarding financial concerns all used services are pay per usage & usage during development is typically quite low so we don't have any issues around that. For pricey components [e.g. RDS] we're using a shared instance across all preview deployments to avoid high costs for preview envs. We also invested in a proper SSO structure on our AWS accounts, where each engineer has their own AWS account [with budget alarms being setup to avoid any costly accidents].
We're planning to share more on our setup in a blog post soon, stay tuned :)
would love to read when available!
Hello, I am trying to learn a backend framework besides Node.js. I am not sure what to pick between ASP.NET Core (C#) and Spring Boot (Java). Any advice, any suggestion is highly appreciated. I am planning to build only Web APIs (no desktop applications or something like that). One thing to mention is that I have no experience in Java or C#. I am trying to learn one of those 2 and stick to it.
UPDATE: The project I am trying to build is a SaaS using microservices that supports multi tenancy.
I'd recommend to learn Spring as it is very widespread in the industry and provides a lot of easy integration into most of the common backend tech stacks. Rather than learning Java you could look into Kotlin. It's a very consistent, stable and well-thought language in my opinion and not as verbose as Java. Many problems can be solved with Kotlin in a clear and elegant way while also always having the option to use data structures and libs in JVM. It is also has a very good support in Spring.
Why not pick Django or Flask (both Python)
Personally, I am not a big fan of Python in general. I need a backend good enough for creating a SAAS with Microservices and to support multi tenancy. I am not sure if Python can fit these requirements.
ig , u can use python for one of the microservices
from experience with C# - Microsoft gives you lots of capabilities out of the box with Visual studio , so it will be easy to ramp up and get code going
had more difficult with java but it was a long time ago
*currently working with node and C# and can tell you that Microsoft did much to make the transition fairly simple with new C# and .net version
Hi, We are looking to implement 2FA - so that users would be sent a Verification code over their Email and SMS to their phone.
We faced some limitations with Amazon SNS where we could either send the verification code to email OR to the phone number, while we want to send it to both.
We also are looking to make the 2FA more flexible by adding any other options later on.
What are the best alternatives to SNS for this use case and purpose? Looked at Twilio but want to explore other options before making a decision.
Would be great to know what the experience with Twilio has been, especially the limitations/issues with Twilio...
Appreciate any input from users of Twilio and others who have had similar use cases.
Hi Ravi - I spent 5 years at Twilio and am currently over at Messagebird (CPaaS). - Generally, there are two options: - use SMS API and own the logic on your side (Phone number provisioning, token creation, token validation, retries, fallback etc.) - Verify Solution (which both Messagebird and Twilio offer): Verify provides a purpose-built API. Number provisioning (especially challenging globally), token creation, retries, fallback methods, etc. are managed by the verify solution
Messagebird helps the largest senders with use cases like OTP globally, and you have the choice own the development, or use the Verify API. Anecdotally, our Global network, and the maturity of our network, makes us stand apart in regards to global reach and deliverability.
Happy to chat, feel free to reach out.
2FA Security is a pretty important topic. While as a convince it would be great to broadcast the security code to as many devices as possible this is fundamentally a bad security practice. Imagine for a minute that a bad actor has compromised one or the other of your message platforms now when you attempt to login to fix things they're also given your security code. If you read enough stories you will find that both email and SMS can be compromised to grab peoples codes.
Secondly, I have never interacted with a product that broadcasts to both messages upon login, they always present a choice of where to send it.
To you actual question; Twilio + SendGrid (a Twillo company) would be the default choice because both of these log what happened when you send a message. For instance with SendGrid you can see the delivery events in their UI to debug issues (e.g. was it delivered to a mailbox, or what was the error code). If you use Amazon SNS you will have to build out all of the logging to know what happened. At some point you'll need to have all of this info in your product because your CS agents will need it for quick debugging of customer issues, but when you first roll out it's great to just let the service do the logging.
For up to 10 users youtrack is free and gives you much more flexibility to manage task than asana, trello or definitely clickup. You have lots of charts and reports. Sprint or kanban. Powerful search. Integrations, rules, ets..
All of the above are either not available or paid in Assana, Trello or Click up.
This is an example of: it does not matter if your product is better, the only thing that matters is marketing (and the money for the marketing). So sad :(
I want to learn cross-platform application frameworks like React Native, Flutter, Xamarin, or Ionic, and I'm a web developer. I can learn other programming languages as well. But I'm confused about what to learn, which framework is best, and which framework will last long as the application grows further into complexity.
Flutter is the best one. If you are a new comer in mobile app development, choose
But if you have strong experience in
Ionic also has its strong points such as a lot of prebuilt components for different platforms and minimal dev environment requirement (you only need a browser).
React Native has a very rich ecosystem and if you're already a web developer, the skills that you already possess will transfer over very well. React is the second most popular web framework according to Stack Overlow's 2022 Developer Survey. No one framework is the 'best' as they all serve different purposes and have different use cases. If you're looking to pick up something popular, I would recommend React Native.
I just did a big update for the images optimization, added unzip functionality to the buckets.
I selected CloudFront over NodeJS because a lot of the functionality that I was doing on the lambda functions as preprocessing is now replaced by some functionality on the viewer, request and response of the distributions Edge handlers.
Now you can select the right size based on the query parameter and the same filename, before I was using different names to prevent abuse and improve cache, but now I take some precautions on the viewer handler even with the query parameter
Hi Guys, If you were to learn one of these languages for backend development: Golang, Python or TypeScript/Node.js, which one would you choose? Should meet the following criteria: - Focus on web application development. - Be stable for the next 10 years. - Good for microservices (compete with Java Spring Boot). - Production ready for now and not in the future. (Like Rust) - Have good ecosystems, i.e. libraries, testing, CLI, framework and good deployment options. - Good language features. I'm not interested in ML/AI, Data Science or DevOps.
Both Python and Node.JS solves similar yet different purposes for microservices. As a concern, I choose Node.JS over anything as My services could be handled by any cloud. If you want to perform some tasks requiring more to the server, then definitely go for Python else JS is best.
Thanks Bhupendra, Can you please explain to me what you mean with "requiring more to the server"? some explicit real use cases ma be useful.
Converting files to JSON format or any task requiring computing power might need python as its possible to do in python and JS is just for data processing and all sort of tasks
I would go with Go if you need performance or solve highly concurrent tasks. If not, Node feels easier to work with and is arguably more common (also, it's JS - it's everywhere, and you can switch to FE more quickly since you want to focus on web apps). Python is cool as well, but I hate how the package management is not solved, and the pythonic coding standards are not excellent, in my opinion, of course. As for stability (in terms of their APIs), I guess Go is the safest choice (it's still v1, after all), Python is a close second, and Node changes relatively fast. It's also a question of what language(s) you already know and use.
Nowadays everything is possible with JS. Go deep dive with JS and that will be enough I guess.
Keep on with JS and learn Node. - Node is easy to start with and powerful. It can help you learn the basics of working with servers, authentication, authorization, middleware, etc.
- If you are building a Single Page Application using Angular, React or some such, that is hosted and deployed separately from the backend, then you have more good options, such as:
* PHP: Slim offers a very compelling Express-like framework for building web services, also checkout Lumen
* Ruby: both Grape and Sintara are easy frameworks for web services
* Java: Vert.x is the tool I use, checkout vertx-awesome for all the things that are available
* Python: both FastAPI and Flask are popular web services frameworks with easy API
* C++: yes, it can be very easy to build a web service in C++, with Crow.
Thanks for the input! Probably going to use Java or Python for the backend. I'm planning on buying the hardware (already have the components chosen). Out of those 2 options, Python may be the best option since Flask seems to have a decent uptime and isn't going to cause me issues. I don't know how knowledgeable you are with virtual machines, but would Python have better efficiency in a ritualized environment over Java due to Python not relying on a runtime environment?
Python does rely on a runtime environment - the C-Python parser. Without getting too much into the definition of VMs (as in, software runtime abstraction layer, e.g, Java VM, Python VM, Ruby VM, etc) generally, it is accepted that you don't choose an interpreted language (which C-Python definitely is) for execution speed - Python is better than alternatives because it optimizes for "developer speed".
There are various strategies to accelerate Python, one of them is Jython - which is running Python on the Java runtime (e.g. https://pybenchmarks.org/u64q/jython.php), but generally - if you care very much about runtime performance, you probably want to consider Java or one of he other compiled languages (like C++ or C#).
My days of using Firebase are over! I want to move to something scalable and possibly less cheap. In the past seven days I have done my research on what type of DB best fits my needs, and have chosen to go with the nonrelational DB; MongoDB. Although I understand it, I need help understanding how to set up the architecture. I have the client app (Flutter/ Dart) that would make HTTP requests to the web server (node/express), and from there the webserver would query data from MongoDB.
How should I go about hosting the web server and MongoDb; do they have to be hosted together (this is where a lot of my confusion is)? Based on the research I've done, it seems like the standard practice would be to host on a VM provided by services such as Amazon Web Services, Google Cloud Platform, Microsoft Azure, etc. If there are better ways, such as possibly self-hosting (more responsibility), should I? Anyways, I just want to confirm with a community (you guys) to make sure I do this right, all input is highly appreciated.
Firstly, there's nothing wrong with Firebase for scalability, not can I see anything wrong with "cheap" - unless you expect to need the more complex tools that MongoDB offers (such as Map/Reduce, GridFS and such), I don't think you would want to pay more to get the same capabilities. That being said, there are advantages to move to an open-source code base that you have the option of hosting yourself - preventing vendor lock-in is a legitimate requirement.
Now, as for hosting MongoDB: there are a lot of providers that will host MongoDB (or compatible, see AWS DocumentDB) for you - AWS, Linode or Digital Ocean all offer managed database as a service, so you don't have to mess with VMs and installing and maintaining your own instance of the database server - they are often also cheaper than just running a VM. There's no need to co-locate the database near the application - all of those managed MongoDB services offer great connectivity so unless millisecond latency is critical for your application, any will do.
That being said, your best bet for starting to work with MongoDB is probably MongoDB's own Atlas service - it is a managed service provider that allows you to select in which cloud hosting provider to co-locate a managed MongoDB instance - they support AWS, Azure, GCP and others. They always have the latest and greatest MongoDB version (they make it themselves) and they even have a free tier for starting development on the cheap.
you can also use mongodb atlas, it is a dbaas, it also has shared clusters which are essentially free, good to start with. also are you planning to use an ORM( prisma or mongoose) or raw mongodb driver
We startup project with Apollo Client as the fronted data management library with a promise that in the short future we will have Graphql backend but for now you have to connect with standard REST. After 1 year there is no Graphql backend, classical business promises... so we switched to React query.Pros.:
- you do not have to worry about merging objects
- you do not have to worry about writing custom resolvers
- you do not have to worry about writing
__typenamein custom resolvers
- you do not have to worry about schema description in
- you do not have to worry about describing graphql schema
- you need to writing fetch keys
- you need to keep in mind fetch keys similarities