{"id":31767879,"url":"https://github.com/webdevtodayjason/warmnapper","last_synced_at":"2025-10-10T01:48:40.434Z","repository":{"id":294526130,"uuid":"987196108","full_name":"webdevtodayjason/warmnapper","owner":"webdevtodayjason","description":null,"archived":false,"fork":false,"pushed_at":"2025-05-21T00:07:57.000Z","size":165,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-06T01:30:33.749Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/webdevtodayjason.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-20T18:04:36.000Z","updated_at":"2025-05-21T00:08:01.000Z","dependencies_parsed_at":"2025-05-20T21:59:49.466Z","dependency_job_id":null,"html_url":"https://github.com/webdevtodayjason/warmnapper","commit_stats":null,"previous_names":["webdevtodayjason/warmnapper"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/webdevtodayjason/warmnapper","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webdevtodayjason%2Fwarmnapper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webdevtodayjason%2Fwarmnapper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webdevtodayjason%2Fwarmnapper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webdevtodayjason%2Fwarmnapper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/webdevtodayjason","download_url":"https://codeload.github.com/webdevtodayjason/warmnapper/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webdevtodayjason%2Fwarmnapper/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002400,"owners_count":26083375,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-10-10T01:48:31.813Z","updated_at":"2025-10-10T01:48:40.428Z","avatar_url":"https://github.com/webdevtodayjason.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WARMAPPER-T3 🌐📡\n\n![License](https://img.shields.io/badge/license-MIT-blue.svg)\n![Version](https://img.shields.io/badge/version-1.0.0-green.svg)\n![T3 Stack](https://img.shields.io/badge/T3%20Stack-TypeScript%20|%20Tailwind%20|%20tRPC-blue)\n![Next.js](https://img.shields.io/badge/Next.js-14-black)\n![Prisma](https://img.shields.io/badge/Prisma-6.8-white)\n\nWARMAPPER 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.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/webdevtodayjason/warmnapper/main/public/warmapper-preview.png\" alt=\"WARMAPPER Preview\" width=\"800\"\u003e\n\u003c/p\u003e\n\n## ✨ Features\n\n- 🗺️ **Interactive Maps**: Visualize WiFi networks on Google Maps\n- 📊 **Dashboard Analytics**: Comprehensive WiFi network statistics\n- 🔍 **Security Analysis**: Categorize networks by security level\n- 📡 **Signal Insights**: Analyze signal strength and coverage\n- 📂 **Data Sharing**: Share WiFi data with the community\n- 🔄 **Real-time Parsing**: Parse and process WiFi scan data instantly\n- 🌐 **Community Database**: Access shared WiFi data from other users\n\n## 🚀 Live Demo\n\nCheck out the live demo at [warmapper-t3.vercel.app](https://warmapper-t3.vercel.app)\n\n## 📋 Table of Contents\n\n- [Prerequisites](#-prerequisites)\n- [Installation](#-installation)\n- [Database Setup](#-database-setup)\n- [Environment Setup](#-environment-setup)\n- [Usage](#-usage)\n- [Project Structure](#-project-structure)\n- [Technologies](#-technologies)\n- [Troubleshooting](#-troubleshooting)\n- [Contributing](#-contributing)\n- [License](#-license)\n- [Contact](#-contact)\n\n## 🔍 Prerequisites\n\nBefore you begin, ensure you have the following installed:\n\n- [Node.js](https://nodejs.org/) (v18.x or later)\n- [npm](https://www.npmjs.com/) (v10.x or later)\n- [PostgreSQL](https://www.postgresql.org/) (v15.x or later)\n- [Git](https://git-scm.com/)\n\n## 🔧 Installation\n\n```bash\n# Clone the repository\ngit clone https://github.com/webdevtodayjason/warmnapper.git\ncd warmnapper\n\n# Install dependencies\nnpm install\n```\n\n## 🗄️ Database Setup\n\nWARMAPPER uses PostgreSQL for data storage. You can set up the database either manually or using our automated bootstrap script.\n\n### Option 1: Automated Setup (Recommended)\n\nOur automated database bootstrap script will:\n- Check if PostgreSQL is running\n- Verify your DATABASE_URL environment variable\n- Create the database if it doesn't exist\n- Generate the Prisma client\n- Push the schema to your database\n\n```bash\n# Run the database bootstrap script\nnpm run db:bootstrap\n```\n\n### Option 2: Manual Setup\n\n1. Create a PostgreSQL database:\n\n```bash\n# Connect to PostgreSQL\npsql -U postgres\n\n# Create the database\nCREATE DATABASE warmapper;\n\n# Grant permissions (replace 'your_username' with your PostgreSQL username)\nGRANT ALL PRIVILEGES ON DATABASE warmapper TO your_username;\n\n# Exit psql\n\\q\n```\n\n2. Generate the Prisma client and sync the schema:\n\n```bash\n# Generate Prisma client\nnpm run prisma:generate\n\n# Push schema changes to the database\nnpm run db:push\n```\n\n## 🔐 Environment Setup\n\nCreate a `.env.local` file in the root directory with the following:\n\n```\n# Required: Google Maps API Key\nNEXT_PUBLIC_GOOGLE_MAPS_API_KEY=your_google_maps_api_key\n\n# Required: PostgreSQL Database URL\nDATABASE_URL=\"postgresql://postgres:password@localhost:5432/warmapper?schema=public\"\n\n# Optional: For production, set NODE_ENV to \"production\"\nNODE_ENV=\"development\"\n\n# Skip environment validation during development\nSKIP_ENV_VALIDATION=true\n```\n\nNote: The `DATABASE_URL` must be defined in `.env.local` for proper operation.\n\n## 📚 Usage\n\n1. **Start the application**:\n   ```bash\n   npm run dev\n   ```\n\n2. **Open your browser**:\n   Navigate to `http://localhost:3000`\n\n3. **Upload WiFi Data**:\n   - Use the upload button or drag and drop a WiFi scan file\n   - Sample data is available in `public/data/` directory\n   - Choose whether to share the data with the community\n   - If sharing, provide your city and state information\n\n4. **Explore the Map**:\n   - View WiFi networks plotted on the map\n   - Toggle between security and signal strength views\n   - Click on markers to see detailed information\n\n5. **Analyze Statistics**:\n   - Check the dashboard for comprehensive statistics\n   - View distribution charts for security levels, channels, etc.\n\n6. **Share Data**:\n   - Your uploaded WiFi data can be stored in the PostgreSQL database\n   - You can choose to share it publicly with the community\n\n## 📁 Project Structure\n\n```\nWARMAPPER-T3/\n├── prisma/                 # Database schema and migrations\n├── public/                 # Static assets and sample data\n│   ├── data/               # Sample WiFi data files\n├── scripts/                # Utility scripts\n│   ├── bootstrap-db.js     # Database bootstrap script\n│   ├── init-db.js          # Database initialization script\n├── src/\n│   ├── app/                # Next.js App Router pages\n│   │   ├── api/            # API routes\n│   │   │   ├── access-points/ # WiFi data API endpoint\n│   ├── components/         # React components\n│   │   ├── charts/         # Dashboard chart components\n│   │   ├── dashboard/      # Dashboard UI components\n│   │   ├── map/            # Map visualization components\n│   │   ├── providers/      # Context providers\n│   │   └── ui/             # UI components (shadcn/ui)\n│   ├── contexts/           # React context providers\n│   │   ├── wifi-context.tsx # WiFi data context\n│   │   ├── enhanced-wifi-context.tsx # Enhanced WiFi context\n│   ├── generated/          # Generated code\n│   │   ├── prisma/         # Generated Prisma client\n│   ├── lib/                # Utility functions\n│   │   ├── utils.ts        # General utilities\n│   │   └── wifi-utils.ts   # WiFi data processing utilities\n│   ├── server/             # Server-side code\n│   │   ├── db.ts           # Prisma client initialization\n│   ├── services/           # Data services\n│   │   ├── wifi-data-service.ts # WiFi data service\n│   ├── styles/             # Global styles\n│   └── types/              # TypeScript type definitions\n├── .env.example            # Example environment variables\n├── .env.local              # Local environment variables (not in git)\n├── DATABASE-SETUP.md       # Detailed database setup guide\n├── next.config.js          # Next.js configuration\n├── package.json            # Project dependencies\n├── tailwind.config.js      # Tailwind CSS configuration\n└── tsconfig.json           # TypeScript configuration\n```\n\n## 🛠️ Technologies\n\n- **Frontend**:\n  - [Next.js](https://nextjs.org/) 14 - React framework with App Router\n  - [TypeScript](https://www.typescriptlang.org/) - Type-safe JavaScript\n  - [Tailwind CSS](https://tailwindcss.com/) - Utility-first CSS\n  - [shadcn/ui](https://ui.shadcn.com/) - UI components\n  - [React Hook Form](https://react-hook-form.com/) - Form handling\n  - [Zod](https://zod.dev/) - Schema validation\n\n- **Backend**:\n  - [Next.js API Routes](https://nextjs.org/docs/api-routes) - Serverless functions\n  - [Prisma](https://prisma.io/) - Database ORM\n  - [PostgreSQL](https://www.postgresql.org/) - Database\n\n- **Maps \u0026 Visualization**:\n  - [Google Maps API](https://developers.google.com/maps) - Map visualization\n  - [Recharts](https://recharts.org/) - Data visualization\n\n- **DevOps**:\n  - [Vercel](https://vercel.com/) - Deployment platform\n  - [GitHub Actions](https://github.com/features/actions) - CI/CD\n\n## 🔧 Troubleshooting\n\n### Database Connection Issues\n\nIf you encounter database connection issues:\n\n1. **Check if PostgreSQL is running**:\n   ```bash\n   ps aux | grep postgres\n   ```\n\n2. **Verify your DATABASE_URL in `.env.local`**:\n   - The URL should be in the format: `postgresql://username:password@localhost:5432/dbname`\n   - Make sure the DATABASE_URL is defined in `.env.local` (not just `.env`)\n\n3. **Run the database bootstrap script**:\n   ```bash\n   npm run db:bootstrap\n   ```\n\n4. **Check Prisma client generation**:\n   ```bash\n   npm run prisma:generate\n   ```\n\n5. **Try direct connection to the database**:\n   ```bash\n   psql -U postgres -h localhost -d warmapper\n   ```\n\nFor detailed troubleshooting guidance, refer to the `DATABASE-SETUP.md` file.\n\n### Common Issues\n\n- **\"Prisma client was not initialized\"**: Usually means the DATABASE_URL is missing in `.env.local` or PostgreSQL isn't running\n- **\"Cannot find module '@/generated/prisma'\"**: Run `npm run prisma:generate` to generate the Prisma client\n- **Mapping issues**: Ensure your Google Maps API key is properly set in `.env.local`\n\n## 👨‍💻 Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Set up the database using instructions above\n4. Commit your changes (`git commit -m 'Add some amazing feature'`)\n5. Push to the branch (`git push origin feature/amazing-feature`)\n6. Open a Pull Request\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the LICENSE file for details.\n\n## 📬 Contact\n\nProject Link: [github.com/webdevtodayjason/warmnapper](https://github.com/webdevtodayjason/warmnapper)\n\n---\n\n\u003cp align=\"center\"\u003e\n  Made with ❤️ by \u003ca href=\"https://github.com/webdevtodayjason\"\u003eJason Brashear\u003c/a\u003e\n\u003c/p\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebdevtodayjason%2Fwarmnapper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwebdevtodayjason%2Fwarmnapper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebdevtodayjason%2Fwarmnapper/lists"}