182 lines
3.8 KiB
Markdown
182 lines
3.8 KiB
Markdown
# Lawn Mowing Schedule Manager
|
|
|
|
A comprehensive full-stack application for managing lawn mowing schedules with zone tracking, history logging, and Telegram notifications.
|
|
|
|
## Features
|
|
|
|
### 🌱 Zone Management
|
|
- Create and manage lawn zones with images
|
|
- Set mowing intervals or specific dates
|
|
- Track zone areas and status
|
|
- Visual site plan with interactive markers
|
|
|
|
### 📊 Activity Tracking
|
|
- Record mowing and trimming sessions
|
|
- Bulk operations for multiple zones
|
|
- Detailed history with notes and weather
|
|
- Time tracking and statistics
|
|
|
|
### 📱 Telegram Notifications
|
|
- Daily reminders for due/overdue zones
|
|
- Weekly status reports every Sunday
|
|
- Automatic scheduling with cron jobs
|
|
- Manual test triggers
|
|
|
|
### 📈 Analytics
|
|
- Zone status dashboard
|
|
- Mowing progress tracking
|
|
- Weekly and monthly statistics
|
|
- Equipment usage tracking
|
|
|
|
## Setup
|
|
|
|
### Prerequisites
|
|
- Node.js 18+
|
|
- npm or yarn
|
|
|
|
### Installation
|
|
|
|
1. Clone the repository
|
|
```bash
|
|
git clone <repository-url>
|
|
cd lawn-mowing-scheduler
|
|
```
|
|
|
|
2. Install dependencies
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
3. Configure environment variables
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
Edit `.env` with your settings:
|
|
```env
|
|
# Telegram Bot Configuration (optional)
|
|
TELEGRAM_BOT_TOKEN=your_bot_token_here
|
|
TELEGRAM_CHAT_ID=your_chat_id_here
|
|
|
|
# Database
|
|
DATABASE_URL=file:lawn_scheduler.db
|
|
|
|
# Server
|
|
PORT=3001
|
|
NODE_ENV=development
|
|
```
|
|
|
|
### Telegram Setup (Optional)
|
|
|
|
1. Create a bot with @BotFather on Telegram:
|
|
- Send `/newbot` to @BotFather
|
|
- Follow the instructions to create your bot
|
|
- Copy the bot token
|
|
|
|
2. Get your chat ID:
|
|
- Start a chat with your bot
|
|
- Send any message
|
|
- Visit `https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates`
|
|
- Find your chat ID in the response
|
|
|
|
3. Add the credentials to your `.env` file
|
|
|
|
4. Test the connection using the Telegram settings in the app
|
|
|
|
### Development
|
|
|
|
Start the development server:
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
This will start:
|
|
- Frontend (Vite): http://localhost:5173
|
|
- Backend (Express): http://localhost:3001
|
|
|
|
### Production
|
|
|
|
Build and start the production server:
|
|
```bash
|
|
npm run build
|
|
npm start
|
|
```
|
|
|
|
## Docker Deployment
|
|
|
|
### Development
|
|
```bash
|
|
docker-compose -f docker-compose.dev.yml up --build
|
|
```
|
|
|
|
### Production
|
|
```bash
|
|
docker-compose up --build
|
|
```
|
|
|
|
## API Endpoints
|
|
|
|
### Zones
|
|
- `GET /api/zones` - Get all zones
|
|
- `POST /api/zones` - Create zone
|
|
- `PUT /api/zones/:id` - Update zone
|
|
- `DELETE /api/zones/:id` - Delete zone
|
|
- `POST /api/zones/:id/mow` - Mark zone as mowed
|
|
- `POST /api/zones/:id/trim` - Record trimming
|
|
- `POST /api/zones/bulk-mow` - Bulk mowing session
|
|
|
|
### History
|
|
- `GET /api/history` - Get mowing history
|
|
- `GET /api/history/stats` - Get statistics
|
|
|
|
### Equipment
|
|
- `GET /api/mowers` - Get mowers
|
|
- `POST /api/mowers` - Create mower
|
|
|
|
### Telegram
|
|
- `POST /api/telegram/test` - Test connection
|
|
- `POST /api/telegram/check-reminders` - Manual reminder
|
|
- `POST /api/telegram/weekly-report` - Manual report
|
|
|
|
## Notification Schedule
|
|
|
|
- **Daily Reminders**: 8:00 AM - Zones that are due or overdue
|
|
- **Weekly Reports**: Sunday 9:00 AM - Complete status summary
|
|
|
|
## Database Schema
|
|
|
|
The application uses SQLite with the following main tables:
|
|
- `zones` - Lawn zones with scheduling info
|
|
- `mowing_history` - Activity log with sessions
|
|
- `mowers` - Equipment tracking
|
|
|
|
## Technologies Used
|
|
|
|
### Frontend
|
|
- React 18 with TypeScript
|
|
- Tailwind CSS for styling
|
|
- Vite for development and building
|
|
|
|
### Backend
|
|
- Node.js with Express
|
|
- SQLite with libsql client
|
|
- Multer for file uploads
|
|
- node-cron for scheduling
|
|
- node-telegram-bot-api for notifications
|
|
|
|
### Infrastructure
|
|
- Docker for containerization
|
|
- Nginx for reverse proxy
|
|
- File-based SQLite database
|
|
|
|
## Contributing
|
|
|
|
1. Fork the repository
|
|
2. Create a feature branch
|
|
3. Make your changes
|
|
4. Add tests if applicable
|
|
5. Submit a pull request
|
|
|
|
## License
|
|
|
|
MIT License - see LICENSE file for details |