Compare commits
4 Commits
v1.0.1-loc
...
dbbca57f59
Author | SHA1 | Date | |
---|---|---|---|
dbbca57f59 | |||
a2ee1b3d1f | |||
7d91eb64eb | |||
a3df60178b |
95
README.md
95
README.md
@@ -1,98 +1,9 @@
|
|||||||
# Weather App
|
# Weather App
|
||||||
|
|
||||||
This is a simple weather application that allows users to view current weather data for a specified location. The app is built using React and TypeScript, and it fetches weather data from an external API.
|
This version is only meant for publishing on the web. It is not meant for local development or use.
|
||||||
|
|
||||||
> For that we use the OpenWeatherMap API. You can get your own API key by signing up at [OpenWeatherMap](https://openweathermap.org/api).
|
You can find the web version of the Weather App at [https://weather.the1s.de](https://weather.the1s.de).
|
||||||
|
|
||||||
## Features
|
|
||||||
|
|
||||||
- Search for weather by city name
|
|
||||||
- Display current weather conditions including temperature, humidity, and wind speed
|
|
||||||
- Responsive design for mobile and desktop views
|
|
||||||
- Change API key preferences
|
|
||||||
- Display weather data in a user-friendly format
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
|
|
||||||
### Prerequisites
|
|
||||||
|
|
||||||
To install and run this application, you need the following tools:
|
|
||||||
|
|
||||||
- Git (for cloning the repository)
|
|
||||||
|
|
||||||
**and**
|
|
||||||
|
|
||||||
- Node.js (v14 or higher)
|
|
||||||
- npm (Node Package Manager)
|
|
||||||
|
|
||||||
**or**
|
|
||||||
|
|
||||||
- Docker (for running the app in a container)
|
|
||||||
|
|
||||||
### 1st step - Get the source code
|
|
||||||
|
|
||||||
**You can either clone the repository or download the latest release. Keep in mind that the cloned version may contain bugs.**
|
|
||||||
|
|
||||||
1. Clone the repository:
|
|
||||||
```bash
|
|
||||||
git clone https://git.the1s.de/theis.gaedigk/weather-app.git
|
|
||||||
```
|
|
||||||
|
|
||||||
**or**
|
|
||||||
|
|
||||||
1. Download the latest release from the [releases page](https://git.the1s.de/theis.gaedigk/weather-app/releases/latest).
|
|
||||||
2. Unzip the downloaded file to your desired location.
|
|
||||||
|
|
||||||
#### 2nd step - Using Node.js and npm
|
|
||||||
|
|
||||||
1. Navigate to the frontend project directory:
|
|
||||||
```bash
|
|
||||||
cd weather-app/frontend
|
|
||||||
```
|
|
||||||
2. Install dependencies:
|
|
||||||
```bash
|
|
||||||
npm install
|
|
||||||
```
|
|
||||||
3. Start the development server:
|
|
||||||
```bash
|
|
||||||
npm run dev
|
|
||||||
```
|
|
||||||
4. Open your browser and go to `http://localhost:7002` to view the app.
|
|
||||||
**Note:** There is also a backend server directory, which is currently not in use. - You can ignore it for now.
|
|
||||||
|
|
||||||
**or**
|
|
||||||
|
|
||||||
#### 2nd step - Using Docker
|
|
||||||
|
|
||||||
1. Navigate to the root path project directory:
|
|
||||||
```bash
|
|
||||||
cd weather-app
|
|
||||||
```
|
|
||||||
2. Run in a Docker container:
|
|
||||||
```bash
|
|
||||||
docker compose up -d --build
|
|
||||||
```
|
|
||||||
3. Open your browser and go to `http://localhost:7002` to view the app.
|
|
||||||
**Note:** There is also a backend server directory, which is currently not in use. - You can ignore it for now.
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
1. Get an API key from [OpenWeatherMap](https://openweathermap.org/api).
|
|
||||||
2. Click on the "Set API Key" button in the header to enter your API key.
|
|
||||||
3. Enter a city name in the search bar and press Enter or click the "Get Weather" button.
|
|
||||||
|
|
||||||
**Now you can view the current weather data for the specified city!**
|
|
||||||
|
|
||||||
# Other Information
|
|
||||||
|
|
||||||
## Technologies Used
|
|
||||||
|
|
||||||
- React
|
|
||||||
- TypeScript
|
|
||||||
- Tailwind CSS
|
|
||||||
- OpenWeatherMap API
|
|
||||||
- Vite
|
|
||||||
|
|
||||||
## Version
|
## Version
|
||||||
|
|
||||||
**v1.0.1-local**
|
Currently hosted version: **1.0.0**
|
||||||
|
@@ -1,20 +1,29 @@
|
|||||||
services:
|
services:
|
||||||
frontend:
|
# frontend:
|
||||||
container_name: frontend
|
# container_name: frontend
|
||||||
build: ./frontend
|
# build: ./frontend
|
||||||
|
# network:
|
||||||
|
# - proxynet
|
||||||
|
# ports:
|
||||||
|
# - "7002:7002"
|
||||||
|
# environment:
|
||||||
|
# - CHOKIDAR_USEPOLLING=true
|
||||||
|
# volumes:
|
||||||
|
# - ./frontend:/app
|
||||||
|
# - /app/node_modules
|
||||||
|
# restart: unless-stopped
|
||||||
|
|
||||||
|
backend:
|
||||||
|
container_name: backend
|
||||||
|
build: ./backend
|
||||||
|
network:
|
||||||
|
- proxynet
|
||||||
ports:
|
ports:
|
||||||
- "7002:7002"
|
- "7001:7001"
|
||||||
environment:
|
|
||||||
- CHOKIDAR_USEPOLLING=true
|
|
||||||
volumes:
|
volumes:
|
||||||
- ./frontend:/app
|
- ./backend:/bikelane-backend
|
||||||
- /app/node_modules
|
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
# backend:
|
|
||||||
# container_name: backend
|
networks:
|
||||||
# build: ./backend
|
proxynet:
|
||||||
# ports:
|
external: true
|
||||||
# - "7001:7001"
|
|
||||||
#volumes:
|
|
||||||
# - ./backend:/bikelane-backend
|
|
||||||
# restart: unless-stopped
|
|
||||||
|
@@ -9,4 +9,4 @@ COPY . .
|
|||||||
|
|
||||||
EXPOSE 7002
|
EXPOSE 7002
|
||||||
|
|
||||||
CMD ["npm", "run", "dev"]
|
CMD ["npm", "start"]
|
@@ -64,7 +64,7 @@ const ChangeAPI: React.FC<Props> = ({ currentAPIKey, onClose }) => {
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<button
|
<button
|
||||||
type="submit"
|
type="button"
|
||||||
className="bg-gradient-to-r from-blue-600 to-blue-400 text-white font-bold px-6 py-3 rounded-xl shadow-lg hover:from-blue-700 hover:to-blue-500 transition-all"
|
className="bg-gradient-to-r from-blue-600 to-blue-400 text-white font-bold px-6 py-3 rounded-xl shadow-lg hover:from-blue-700 hover:to-blue-500 transition-all"
|
||||||
onClick={handleUpdate}
|
onClick={handleUpdate}
|
||||||
>
|
>
|
||||||
|
@@ -24,9 +24,7 @@ const WeatherData: React.FC = () => {
|
|||||||
? "°C"
|
? "°C"
|
||||||
: localStorage.getItem("unit") === "imperial"
|
: localStorage.getItem("unit") === "imperial"
|
||||||
? "°F"
|
? "°F"
|
||||||
: localStorage.getItem("unit") === "standard"
|
: "K"}
|
||||||
? "K"
|
|
||||||
: "°C"}
|
|
||||||
</p>
|
</p>
|
||||||
<p className="flex items-center justify-center gap-2">
|
<p className="flex items-center justify-center gap-2">
|
||||||
{weatherData?.sys?.country && (
|
{weatherData?.sys?.country && (
|
||||||
|
Reference in New Issue
Block a user