Initial commit: ICE Watch Michigan community safety tool

- Node.js/Express backend with SQLite database
- Interactive map with real-time location tracking
- MapBox API integration for fast geocoding
- Admin panel for content moderation
- 24-hour auto-expiring reports
- Deployment scripts for Debian 12 ARM64
- Caddy reverse proxy with automatic HTTPS
This commit is contained in:
Deco Vander 2025-07-02 23:27:22 -04:00
commit edfdeb5117
16 changed files with 5323 additions and 0 deletions

139
README.md Normal file
View file

@ -0,0 +1,139 @@
# ICE Watch Michigan
A community-driven web application for tracking ICE activity locations in Michigan. Reports automatically expire after 24 hours to maintain current information.
## Features
- 🗺️ **Interactive Map** - Real-time location tracking centered on Grand Rapids
- ⚡ **Fast Geocoding** - Lightning-fast address lookup with MapBox API
- 🔄 **Auto-Expiration** - Reports automatically removed after 24 hours
- 👨‍💼 **Admin Panel** - Manage and moderate location reports
- 📱 **Responsive Design** - Works on desktop and mobile devices
- 🔒 **Privacy-Focused** - No user tracking, community safety oriented
## Quick Start
### Prerequisites
- Node.js 18+
- MapBox API token (free tier available)
### Local Development
1. **Clone the repository:**
```bash
git clone https://github.com/yourusername/icewatch.git
cd icewatch
```
2. **Install dependencies:**
```bash
npm install
```
3. **Configure environment variables:**
```bash
cp .env.example .env
# Edit .env with your MapBox token
```
4. **Start the server:**
```bash
npm start
```
5. **Visit the application:**
```
http://localhost:3000
```
## Environment Variables
```bash
# Required for fast geocoding
MAPBOX_ACCESS_TOKEN=pk.your_mapbox_token_here
# Admin panel access
ADMIN_PASSWORD=your_secure_password
# Server configuration
PORT=3000
```
## Deployment
### Automated Deployment (Debian 12 ARM64)
1. **Run the deployment script on your server:**
```bash
curl -sSL https://raw.githubusercontent.com/yourusername/icewatch/main/scripts/deploy.sh | bash
```
2. **Deploy your application:**
```bash
git clone https://github.com/yourusername/icewatch.git /opt/icewatch
cd /opt/icewatch
npm install
```
3. **Configure environment:**
```bash
cp .env.example .env
nano .env # Add your API keys
```
4. **Start services:**
```bash
sudo systemctl enable icewatch
sudo systemctl start icewatch
sudo systemctl enable caddy
sudo systemctl start caddy
```
### Manual Deployment
See `docs/deployment.md` for detailed manual deployment instructions.
## API Endpoints
- `GET /api/locations` - Get active location reports
- `POST /api/locations` - Submit new location report
- `GET /api/config` - Get API configuration
- `GET /admin` - Admin panel (password protected)
## Technology Stack
- **Backend:** Node.js, Express.js, SQLite
- **Frontend:** Vanilla JavaScript, Leaflet.js
- **Geocoding:** MapBox API (with Nominatim fallback)
- **Reverse Proxy:** Caddy (automatic HTTPS)
- **Database:** SQLite (lightweight, serverless)
## Contributing
1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Test thoroughly
5. Submit a pull request
## Security
- API keys are stored in environment variables
- Admin routes are password protected
- Database queries use parameterized statements
- HTTPS enforced in production
## License
MIT License - see LICENSE file for details
## Support
This is a community safety tool. For issues or questions:
- Create a GitHub issue
- Check existing documentation
- Review security guidelines
---
**⚠️ Safety Notice:** This tool is for community awareness. Always prioritize personal safety and know your rights.