AC Weather is a full stack weather application made with Node - Express JS and React JS.
-
-
-
Responsive on all screen devices.
-
-
Home Page
- Welcome user with a 3D animation
-
Weather Page
- Where the user can search any city and have information display
-
Favorite cities Page
- Where user can see all his favorite cities. For details weather info can click on any city and will redirect to weather page to see more info
-
Settings Page
- Where user can change the settings on display weather info (E.g. °C to °F)
-
Light and Dark Mode
-
-
- Allow the app to set the weather from your current location
-
-
-
-
-
-
Express – Backend web application framework for Node.js
-
Axios - a Javascript library used to make HTTP requests from node.js
-
React Hook Form - a library that helps you validate forms in React.
-
Redux - a JavaScript library for managing and centralizing application state
-
React-Redux - is the official Redux UI binding library use to bind Reactjs and Redux
-
React Router Dom - to implement dynamic routing in a web app (React Router v6)
-
React-Bootstrap - a component-based library that provides native Bootstrap components as pure React components.
-
Dayjs - a minimalist JavaScript date library for parsing, validating, manipulating, and formatting dates.
-
Framer Motion - an animation library
-
Three.js - JavaScript 3D library
-
Bootstrap – CSS framework used to help with classes to make the app responsive.
-
GitHub - used to create and host the repository
-
Git - used for the version-control system for tracking changes in any set of files
-
Heroku - cloud platform for hosting the website
-
-
-
VS Code - IDE
-
Create React App - This project was bootstrapped with Create React App
-
Weather API - for weather data
-
react-three/fiber - is a Three.js renderer that helps render 3D models and animations for React
-
react-three/drei - A growing collection of useful helpers and fully functional, ready-made abstractions for react-three/fiber.
-
Autoprefixer CSS - used to add prefix to css code
-
Tinypng - used to compress image file in order to reduce loading time on each page
-
CSS Validator - used to check CSS code for error
-
Am I Responsive? - for the main image in Readme to show responsive to different screen size
-
-
-
-
The project was deployed to Heroku using the following steps:
-
In order to deploy to Heroku you need an account
-
Now you can create a new app from the dashboard
New
Menu -
Now you need to set up a name and select a region closest to you
NOTE: Remember the name has to be unique and generally use a dash and lowercase letters
-
From the dashboard of your app click on the
Settings
and go to Reveal Config variables -
Set up the Config Vars
Key Value NODE_ENV production PORT 3001 WEATHER_API_KEY <your_secret_key> -
Now from the dashboard of your app click on the Deploy and from the Deployment method select
Github - Connect to Github
. Next on the search field type the name of the repository you want to deploy. -
Once it finds your repository click
Connect
-
Now From Manual Deploy you can click
Deploy Branch
and once it's finished you can clickView
-
-
-
In order to run this project locally you should have installed these 2 requirements on your machine plus an account on Weather API:
-
VS Code - IDE or your personal preference
-
Node.js - to run the application on your local machine
Now you can create an account on Weather API
Optional: you can install Git
-
At the top of the repository click on Code and click on download zip and extract the zip file to your chosen folder or keep the same name
Optional: if you have Git install on your machine you can type
git clone https://github.com/constantinadrian/weather-app
or to clone the repository into a different name on the folder you can run
git clone https://github.com/constantinadrian/weather-app folder_name
more info about cloning with git here.
-
Install all dependencies with
npm intall
-
Create a .env file in
server
folder and add your weather api keyWEATHER_API_KEY="your_secret_key"
-
Run the application with
npm start
-
-
-
- This project is for educational purposes only.