A modern and user-friendly weather application built with JavaFX that provides real-time weather information for cities worldwide. Now with secure user authentication system!
WeatherWiseApp now features a complete authentication system that allows users to create accounts, sign in securely, and manage their sessions. This transforms the app from a simple weather tool into a personalized weather experience.
- β User Registration: Create new accounts with username, email, and secure password
- β Secure Login: Sign in with username/email and password
- β Session Management: Automatic timeout after 30 minutes of inactivity
- β Secure Logout: Properly end sessions and clear user data
- β Password Security: BCrypt hashing for secure password storage
- β Input Validation: Comprehensive validation for all user inputs
- β PostgreSQL Database: Robust database for user data persistence with connection pooling
- π User Authentication: Secure login and signup system with session management
- π€ User Accounts: Create and manage personal accounts with secure password storage
- π City Search: Easily search for any city worldwide
- π‘οΈ Temperature Data: View current temperature and "feels like" temperature in Celsius
- π§ Humidity Information: Check current humidity levels
- πͺοΈ Wind Speed: Monitor wind conditions in meters per second
- β²οΈ Atmospheric Pressure: View pressure in hectopascals (hPa)
- ποΈ Visibility: Check visibility conditions in kilometers
- βοΈ Sun Timings: Track sunrise and sunset times
- π± Modern UI: Clean and intuitive user interface with emoji indicators
- β‘ Fast Response: Quick weather data retrieval with caching system
- π Auto-Refresh: Weather data is cached for 5 minutes for optimal performance
- π Session Management: Automatic session timeout and secure logout functionality
- Java 11 or later installed
- PostgreSQL database server installed and running
- Maven for building the project
-
Install PostgreSQL (if not already installed):
- Windows: Download from https://www.postgresql.org/download/windows/
- macOS:
brew install postgresql
- Ubuntu/Debian:
sudo apt-get install postgresql postgresql-contrib
-
Set up the database:
# Run the PostgreSQL setup script psql -U postgres -f postgresql_setup.sql
For detailed setup instructions, see POSTGRESQL_SETUP.md
-
Clone the repository:
git clone https://github.com/ozgucdlg/WeatherWiseApp.git
-
Navigate to the project directory:
cd WeatherWiseApp
-
Build the project:
mvn clean install
-
Run the application:
mvn javafx:run
Note: For detailed PostgreSQL setup instructions, see POSTGRESQL_SETUP.md
- Launch the application
- Click "Create Account" to register
- Fill in your details:
- Username (3-20 characters, letters, numbers, underscores)
- Email address
- Password (8+ characters, must contain letters and numbers)
- Confirm password
- Click "Create Account" to complete registration
- You'll be redirected to the login screen
- Launch the application
- Enter your username or email
- Enter your password
- Click "Sign In" to access your account
- After successful login, you'll see the main weather interface
- Enter a city name in the search field
- Click "Show Weather" or press Enter
- View detailed weather information including:
- Current temperature
- Feels like temperature
- Humidity percentage
- Wind speed
- Atmospheric pressure
- Visibility
- Sunrise and sunset times
- Current weather conditions
- Use the "Logout" button to securely end your session
- π Secure Registration: Create accounts with validation
- π Flexible Login: Use username or email to sign in
- β° Session Timeout: Automatic logout after 30 minutes of inactivity
- πͺ Secure Logout: Properly end sessions and clear data
- π‘οΈ Password Security: Industry-standard BCrypt hashing
- β Input Validation: Real-time validation with helpful feedback
- Java 11 - Main programming language
- JavaFX - Modern GUI framework
- PostgreSQL - Robust database with connection pooling
- HikariCP - High-performance connection pool
- Maven - Dependency management and build tool
- OpenWeatherMap API - Real-time weather data
- PostgreSQL - Robust database for user management and sessions
- BCrypt - Secure password hashing
- Input Validation - Comprehensive data validation
- Session Management - Secure user sessions
- JSON - API response parsing
- SQL - Database operations
- Password Hashing: BCrypt algorithm for secure password storage
- Input Sanitization: Protection against injection attacks
- Session Management: Secure session handling with timeout
- Data Validation: Comprehensive input validation
- SQL Injection Protection: Prepared statements for database operations
- PostgreSQL Database: User data stored securely with connection pooling
- Connection Pooling: HikariCP for optimal database performance
- Session Expiration: Automatic logout for security
- Secure Logout: Complete session cleanup
The application uses the OpenWeatherMap API to fetch weather data. The following endpoints are used:
- Current Weather Data:
api.openweathermap.org/data/2.5/weather
Parameters:
q
: City nameunits
: Metriclang
: en (English)appid
: Your API key
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Weather data provided by OpenWeatherMap
- Icons and emojis for weather representation
- JavaFX community for GUI components
Coming soon - Login and Signup interface screenshots
- π Secure Login Screen - Professional authentication interface
- π User Registration - Comprehensive signup form with validation
- π€οΈ Weather Dashboard - Clean, modern weather display
- π€ User Session - Personalized experience with logout functionality
ΓzgΓΌΓ§ DalgiΓ§ - @ozgucdlg
Project Link: https://github.com/ozgucdlg/WeatherWiseApp