- Updated all static asset URLs to use iceymi.b-cdn.net CDN - Changed favicon, CSS, and JS file references in index.html, admin.html, and privacy.html - API calls remain pointed to origin server for dynamic content - Ready for CDN deployment with proper cache separation
139 lines
3.3 KiB
Markdown
139 lines
3.3 KiB
Markdown
# Great Lakes Ice Report
|
|
|
|
A community-driven web application for tracking winter road conditions and icy hazards in the Great Lakes region. Reports automatically expire after 48 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 git@github.com:deco/great-lakes-ice-report.git
|
|
cd great-lakes-ice-report
|
|
```
|
|
|
|
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://ice.puremichigan.lol/scripts/deploy.sh | bash
|
|
```
|
|
|
|
2. **Deploy your application:**
|
|
```bash
|
|
git clone git@github.com:deco/great-lakes-ice-report.git /opt/great-lakes-ice-report
|
|
cd /opt/great-lakes-ice-report
|
|
npm install
|
|
```
|
|
|
|
3. **Configure environment:**
|
|
```bash
|
|
cp .env.example .env
|
|
nano .env # Add your API keys
|
|
```
|
|
|
|
4. **Start services:**
|
|
```bash
|
|
sudo systemctl enable great-lakes-ice-report
|
|
sudo systemctl start great-lakes-ice-report
|
|
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.
|