Skip to content

Repository files navigation

🌦️ Nautilus: Advanced Weather & Disaster Dashboard

Nautilus is a comprehensive full-stack environmental monitoring platform. It combines real-time weather forecasting with a community-driven disaster management system, allowing users to stay safe and coordinate volunteer efforts.


🚀 Features

  • Real-time Weather: Fetches data using OpenWeatherMap API.
  • 5-Day Forecast: Displays temperature, humidity, wind speed, and rain probability.
  • Smart Alerts: Warnings for extreme weather conditions (heatwaves, high winds).
  • Clothing Suggestions: Dynamic advice on what to wear (e.g., umbrella for rain, hat for sun).
  • User System: Secure Login & Signup with JWT Authentication and Bcrypt hashing.
  • Global Theming: Toggleable Dark/Light mode that persists to the database.
  • Interactive Map: Visual location selection using Leaflet.
  • Responsive Sidebar: Mobile-friendly navigation menu.

🛠️ Tech Stack

Frontend

  • Framework: React (Vite)
  • Styling: Tailwind CSS + Framer Motion
  • State Management: Context API
  • Maps: Leaflet.js
  • Internationalization: i18next
  • Icons: Lucide React

Backend

  • Environment: Node.js + Express.js (ES Modules)
  • Database: PostgreSQL
  • File Handling: Multer (Local storage with safe-delete logic)
  • Authentication: JWT & BCrypt
  • Mailing: Nodemailer + Google OAuth 2.0
  • Security: Express Rate Limit & CORS

⚙️ Getting Started

🖥️ 1. Clone the Repo

git clone https://github.com/vagman/nautilus.git
cd nautilus

🌐 2. Frontend Setup

npm install          # Install dependencies
npm run dev          # Start frontend server (http://localhost:5173)

You must create a .env file in the root project directory:

VITE_WEATHER_API_KEY=your_openweathermap_api_key

🔧 3. Backend Setup

cd weather-app-backend
npm install
npm run dev

Create a .env file inside the weather-app-backend/ folder:

PORT=4000
DB_USER=postgres
DB_PASSWORD=your_password
DB_NAME=weather_app
DB_HOST=localhost
DB_PORT=5432
JWT_SECRET=your_super_secret_key

🗃️ Database (PostgreSQL)

  1. Make sure PostgreSQL 14 or higher is installed and pgAdmin (or via cli) is runnung.
  2. Create database:
    CREATE DATABASE weather_app;
  3. Create all the needed database tables by running the PostgreSQL code that lives in \nautilus\weather-app-backend\schema.sql.
  4. Test the backend DB connection:
    curl http://localhost:4000/test-db
    The following message should confirm connection with the database: image

🧪 Useful Commands

Task Command
Start Frontend npm run dev (in project root)
Start Backend cd weather-app-backend && npm run dev
Build Frontend npm run build
Install Frontend Packages npm install
Install Backend Packages cd weather-app-backend && npm install
Test DB Connection curl http://localhost:4000/test-db

📝 Notes

  • You must have Node.js 18+ and PostgreSQL 14+ installed
  • File Extensions: Backend uses standard .js files with "type": "module" in package.json.
  • Make sure your OpenWeatherMap API key is valid
  • Security: Passwords are never stored in plain text; they are hashed using bcryptjs.

🛠️ Tech Stack

  • Frontend: React (Vite), Tailwind CSS, Leaflet Maps, Lucide React (icons), i18next (translation).
  • Backend: Node.js, Express, PostgreSQL, Nodemailer (OAuth 2.0).
  • Security: BCrypt, JWT, Express Rate Limit.

📄 License

This project is open source and available under the MIT License.

About

Thesis project: Development of an application for management of environmental phenomena and natural disasters

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages