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.
- 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.
- Framework: React (Vite)
- Styling: Tailwind CSS + Framer Motion
- State Management: Context API
- Maps: Leaflet.js
- Internationalization: i18next
- Icons: Lucide React
- 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
git clone https://github.com/vagman/nautilus.git
cd nautilusnpm 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_keycd weather-app-backend
npm install
npm run devCreate 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)
- Make sure PostgreSQL 14 or higher is installed and pgAdmin (or via cli) is runnung.
- Create database:
CREATE DATABASE weather_app;
- Create all the needed database tables by running the PostgreSQL code that lives in
\nautilus\weather-app-backend\schema.sql. - Test the backend DB connection:
The following message should confirm connection with the database:
curl http://localhost:4000/test-db

| 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 |
- You must have Node.js 18+ and PostgreSQL 14+ installed
- File Extensions: Backend uses standard
.jsfiles with"type": "module"inpackage.json. - Make sure your OpenWeatherMap API key is valid
- Security: Passwords are never stored in plain text; they are hashed using
bcryptjs.
- 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.
This project is open source and available under the MIT License.