lawnmowing/README.md

3.8 KiB

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
git clone <repository-url>
cd lawn-mowing-scheduler
  1. Install dependencies
npm install
  1. Configure environment variables
cp .env.example .env

Edit .env with your settings:

# 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:

npm run dev

This will start:

Production

Build and start the production server:

npm run build
npm start

Docker Deployment

Development

docker-compose -f docker-compose.dev.yml up --build

Production

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