Actually, you do not specifically need a framework choice for implementing PWA. Turning a web app into a PWA so straight-forward and not need a complete framework switch. Here is the list of what ng add @angular/pwa command does with the equivalient action you can do independent from a framework:
- Create a service worker with a default caching configuration. (You can do it with install / fetch events in your sw)
- Create a manifest file, which tells the browser how your app should behave when installed on the user's device. (Just a metadata for you app, the package.json-like file of a PWA) Add a link to the manifest file in index.html. (you can add via link tag) Add the theme-color tag to index.html. (You will be doing it within the manifest file) Create app icons in the src/assets directory. (Then you will point them in your manifest file)
If you wanna have the app on the foundation of responsive expectations, better to rely on media queries in your CSS and use the appropriate stylings of each element for each screen size you wanna support.
So as summary, you can easily start with a single JS, HTML and CSS file and then convert into what you need. If you prefer sth. with full-batteries and lightweight, Vite can be a good start to have a look. Svelte is another choice as it is basically a builder coming with its own easy-to-go syntax and its recent update, runes. These are the first details come into my mind regarding frontend.
Reagrding the business logic of what you would like to choose in the backend to search based on the locations. You do not need anything specific for searching the locations but the only detail to keep as the metadata of the locations are latitude, longitude and the name of the place (city,etc.). Then you can run the queries based on the keyword and return the LAT/LONG values back, if you need a map with the pin. If you specifically need a search index or sth., nowadays you can create indexes based on the most prefereed places in your db and gain some performance benefits.
For the database solution, i think again you can start small with a key-value strategy where you will keep “interaction” as events sent through FE<>BE with the user’s id associated with it. If the needs go beyond what you expext, you can iterarively migrate to a more document-based approach getting updates in batch with each user’s actions.
Hope the notes help for you project and wish you the best luck in your journey.
