Here are some features of this website:
- Utilizes Material UI for visual components and "easy" responsive design on xs - lg screens.
- Reuses components like ProjectCard to reduce the need to change code in multiple places.
- Proxies the fetch requests from the frontend to the backend server to obscure API keys and other sensitive information. Also allows for better scaled API request handling.
- Utilizes Load Balancing on the frontend, with SSL/TLS termination.
- Has HTTP/2 enabled
- End to end encryption thanks to AWS Certificate Manager
- AWS WAF Enabled for protection against bots and CloudWatch for log management
- Caches API responses and stores them in memory for 1 day
- Minimize API Weather calls by making 1 call and parsing data for forecast and realtime
- Implements security suggestions from Snyk.io (input validation, sanitization, XSS attack prevention, etc.)
- Create more projects for projects section.
- Add loading wheel so users can see when the weather information is done loading
- Consider switching from EC2 -> Lambda to save money, at least for routing
- Improve load time for Weather app (reduce network load)
- Improve caching, prevent stale data (might not be applicable for the weather app, but may be necessary with future apps)
- Some cities that populate with the state/municipality will cause the weather app to crash, ex: Rio de Janeiro populates as Rio-de-Janeiro-State-of-Rio-de-Janeiro-Brazil , which does not work with Tomorrow.io forecast API. I need to account for cities like this and parse out the municipality / state names ( as well as create an error message page ) (Update: for now cities are limited to U.S., this should help mitigate issues)
- High Severity Weather app will ocassionaly not render a new city and will go back to the default city (Frisco, TX). Need to find root cause and fix.