WARMAPPER is a modern WiFi network discovery and mapping tool built with the T3 Stack (TypeScript, Tailwind CSS, and tRPC). It helps security researchers and network administrators visualize and analyze WiFi networks from Wigle WiFi-compatible scans.
- πΊοΈ Interactive Maps: Visualize WiFi networks on Google Maps
- π Dashboard Analytics: Comprehensive WiFi network statistics
- π Security Analysis: Categorize networks by security level
- π‘ Signal Insights: Analyze signal strength and coverage
- π Data Sharing: Share WiFi data with the community
- π Real-time Parsing: Parse and process WiFi scan data instantly
- π Community Database: Access shared WiFi data from other users
Check out the live demo at warmapper-t3.vercel.app
- Prerequisites
- Installation
- Database Setup
- Environment Setup
- Usage
- Project Structure
- Technologies
- Troubleshooting
- Contributing
- License
- Contact
Before you begin, ensure you have the following installed:
- Node.js (v18.x or later)
- npm (v10.x or later)
- PostgreSQL (v15.x or later)
- Git
# Clone the repository
git clone https://github.com/webdevtodayjason/warmnapper.git
cd warmnapper
# Install dependencies
npm installWARMAPPER uses PostgreSQL for data storage. You can set up the database either manually or using our automated bootstrap script.
Our automated database bootstrap script will:
- Check if PostgreSQL is running
- Verify your DATABASE_URL environment variable
- Create the database if it doesn't exist
- Generate the Prisma client
- Push the schema to your database
# Run the database bootstrap script
npm run db:bootstrap- Create a PostgreSQL database:
# Connect to PostgreSQL
psql -U postgres
# Create the database
CREATE DATABASE warmapper;
# Grant permissions (replace 'your_username' with your PostgreSQL username)
GRANT ALL PRIVILEGES ON DATABASE warmapper TO your_username;
# Exit psql
\q- Generate the Prisma client and sync the schema:
# Generate Prisma client
npm run prisma:generate
# Push schema changes to the database
npm run db:pushCreate a .env.local file in the root directory with the following:
# Required: Google Maps API Key
NEXT_PUBLIC_GOOGLE_MAPS_API_KEY=your_google_maps_api_key
# Required: PostgreSQL Database URL
DATABASE_URL="postgresql://postgres:password@localhost:5432/warmapper?schema=public"
# Optional: For production, set NODE_ENV to "production"
NODE_ENV="development"
# Skip environment validation during development
SKIP_ENV_VALIDATION=true
Note: The DATABASE_URL must be defined in .env.local for proper operation.
-
Start the application:
npm run dev
-
Open your browser: Navigate to
http://localhost:3000 -
Upload WiFi Data:
- Use the upload button or drag and drop a WiFi scan file
- Sample data is available in
public/data/directory - Choose whether to share the data with the community
- If sharing, provide your city and state information
-
Explore the Map:
- View WiFi networks plotted on the map
- Toggle between security and signal strength views
- Click on markers to see detailed information
-
Analyze Statistics:
- Check the dashboard for comprehensive statistics
- View distribution charts for security levels, channels, etc.
-
Share Data:
- Your uploaded WiFi data can be stored in the PostgreSQL database
- You can choose to share it publicly with the community
WARMAPPER-T3/
βββ prisma/ # Database schema and migrations
βββ public/ # Static assets and sample data
β βββ data/ # Sample WiFi data files
βββ scripts/ # Utility scripts
β βββ bootstrap-db.js # Database bootstrap script
β βββ init-db.js # Database initialization script
βββ src/
β βββ app/ # Next.js App Router pages
β β βββ api/ # API routes
β β β βββ access-points/ # WiFi data API endpoint
β βββ components/ # React components
β β βββ charts/ # Dashboard chart components
β β βββ dashboard/ # Dashboard UI components
β β βββ map/ # Map visualization components
β β βββ providers/ # Context providers
β β βββ ui/ # UI components (shadcn/ui)
β βββ contexts/ # React context providers
β β βββ wifi-context.tsx # WiFi data context
β β βββ enhanced-wifi-context.tsx # Enhanced WiFi context
β βββ generated/ # Generated code
β β βββ prisma/ # Generated Prisma client
β βββ lib/ # Utility functions
β β βββ utils.ts # General utilities
β β βββ wifi-utils.ts # WiFi data processing utilities
β βββ server/ # Server-side code
β β βββ db.ts # Prisma client initialization
β βββ services/ # Data services
β β βββ wifi-data-service.ts # WiFi data service
β βββ styles/ # Global styles
β βββ types/ # TypeScript type definitions
βββ .env.example # Example environment variables
βββ .env.local # Local environment variables (not in git)
βββ DATABASE-SETUP.md # Detailed database setup guide
βββ next.config.js # Next.js configuration
βββ package.json # Project dependencies
βββ tailwind.config.js # Tailwind CSS configuration
βββ tsconfig.json # TypeScript configuration
-
Frontend:
- Next.js 14 - React framework with App Router
- TypeScript - Type-safe JavaScript
- Tailwind CSS - Utility-first CSS
- shadcn/ui - UI components
- React Hook Form - Form handling
- Zod - Schema validation
-
Backend:
- Next.js API Routes - Serverless functions
- Prisma - Database ORM
- PostgreSQL - Database
-
Maps & Visualization:
- Google Maps API - Map visualization
- Recharts - Data visualization
-
DevOps:
- Vercel - Deployment platform
- GitHub Actions - CI/CD
If you encounter database connection issues:
-
Check if PostgreSQL is running:
ps aux | grep postgres -
Verify your DATABASE_URL in
.env.local:- The URL should be in the format:
postgresql://username:password@localhost:5432/dbname - Make sure the DATABASE_URL is defined in
.env.local(not just.env)
- The URL should be in the format:
-
Run the database bootstrap script:
npm run db:bootstrap
-
Check Prisma client generation:
npm run prisma:generate
-
Try direct connection to the database:
psql -U postgres -h localhost -d warmapper
For detailed troubleshooting guidance, refer to the DATABASE-SETUP.md file.
- "Prisma client was not initialized": Usually means the DATABASE_URL is missing in
.env.localor PostgreSQL isn't running - "Cannot find module '@/generated/prisma'": Run
npm run prisma:generateto generate the Prisma client - Mapping issues: Ensure your Google Maps API key is properly set in
.env.local
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Set up the database using instructions above
- Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Project Link: github.com/webdevtodayjason/warmnapper
Made with β€οΈ by Jason Brashear
