Loading repository data…
Loading repository data…
saurabh-9528 / repository
A Full Stack Weather Dashboard built with HTML, CSS, JavaScript, Node.js, Express.js, MongoDB, JWT Authentication, Leaflet Maps, Charts, and Open-Meteo API.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Aether Weather is a premium, glassmorphic weather forecasting dashboard and progressive web application (PWA). It features dynamic weather-themed backgrounds, smooth micro-animations, and detailed atmospheric metrics.
This project is a production-ready, full-stack application migrating the weather services, autocomplete geocoding, reverse geocoding lookups, and historical trends to a Node.js/Express.js backend, and introducing JWT-based user authentication and MongoDB-backed favorites storage.
aether-weather/
├── client/ # Frontend Assets (PWA)
│ ├── icon-180.png
│ ├── icon.svg
│ ├── index.html # Main Glassmorphic Interface
│ ├── style.css # Vanilla CSS Design System & Styles
│ ├── app.js # Frontend Application Logic & Event Handlers
│ ├── sw.js # Service Worker (PWA Offline Cache)
│ └── manifest.json # Web App Manifest
├── server/ # Backend Source Code
│ ├── server.js # Express Server & Static File Setup
│ ├── config/
│ │ └── db.js # MongoDB Mongoose Connection
│ ├── middleware/
│ │ └── authMiddleware.js # JWT Protection Middleware
│ ├── models/
│ │ ├── User.js # Mongoose User Schema (Bcrypt password hashing)
│ │ └── Favorite.js # Mongoose Favorite Schema
│ ├── controllers/
│ │ ├── authController.js # Registration and login logic
│ │ ├── weatherController.js # Geocoding & weather API proxies
│ │ └── favoritesController.js # CRUD handlers for favorites in MongoDB
│ └── routes/
│ ├── auth.js # Routes for /api/auth/*
│ ├── weather.js # Routes for /api/weather and /api/search
│ └── favorites.js # Routes for /api/favorites/*
├── .env # Environment Variables (ignored by Git)
├── package.json # Project dependencies and scripts
└── build.js # Service Worker cache version bumper
Clone and Navigate to Project Root
cd "4. Weather App"
Install Dependencies
npm install
Configure Environment Variables
Create a .env file in the root directory (based on the sample below):
PORT=5000
MONGODB_URI=mongodb://127.0.0.1:27017/aether_weather
JWT_SECRET=your_super_secure_jwt_secret_key_here
Run in Production Mode
npm start
The application will be accessible at http://localhost:5000.
Run in Development Mode (with Nodemon auto-reload)
npm run dev
Bump PWA Cache Version To update files cached by the PWA Service Worker, bump the cache key:
npm run build
/api/auth)| Method | Endpoint | Description | Protected | Request Body |
|---|---|---|---|---|
| POST | /api/auth/register | Register a new user account | No | { "username": "JohnDoe", "email": "john@example.com", "password": "securepassword" } |
| POST | /api/auth/login | Authenticate user & get JWT token | No | { "email": "john@example.com", "password": "securepassword" } (Accepts username or email) |
/api)| Method | Endpoint | Description | Protected | Query Parameters |
|---|---|---|---|---|
| GET | /api/weather | Fetch forecast, AQI, historical, or reverse lookup | No | latitude, longitude, type (options: forecast (default), aqi, reverse, historical), plus standard Open-Meteo options. |
| GET | /api/search | Autocomplete search for cities | No | name or q (search query), count (default: 6) |
/api/favorites)All favorites endpoints require a valid JWT token passed in the header as: Authorization: Bearer <token>.
| Method | Endpoint | Description | Protected | Request / URL Params |
|---|---|---|---|---|
| GET | /api/favorites | Retrieve user's bookmarked cities | Yes | None |
| POST | /api/favorites | Add a city to user's bookmarks | Yes | { "name": "Tokyo", "lat": 35.689, "lon": 139.691, "country": "Japan", "admin1": "Tokyo" } |
| DELETE | /api/favorites/:id | Remove a bookmarked city by database ID | Yes | :id (MongoDB _id of the favorite document) |
This project is licensed under the ISC License - see package.json for details.