garden_tracker/README.md
2025-07-28 22:22:46 +03:00

171 lines
4.7 KiB
Markdown

# GardenTrack 🌱
A comprehensive full-stack garden plant and maintenance tracking system built with React.js, TypeScript, Express.js, and SQLite.
## Features
### 🌿 Plant Registry Module
- Add and manage all plants in your garden (trees, shrubs, herbs, etc.)
- Track plant type, variety/species, planting date, and health status
- Store detailed notes for each plant
- Visual health status indicators
### 📊 Yearly History Tracking
- Year-by-year history of blooming and fruiting dates
- Comprehensive harvest records with quantity and date tracking
- Maintenance activity logs with detailed descriptions
### 🔧 Maintenance Task Logging
- Log chemical treatments, fertilizer applications, and other garden activities
- Track dates, types, descriptions, and amounts used
- Categorized maintenance types for easy filtering
### 📅 Task Planning and Reminders
- Create future tasks with titles, descriptions, and deadlines
- Visual dashboard showing upcoming and overdue tasks
- Mark tasks as completed with progress tracking
### 🎨 Additional Features
- **Responsive Design**: Optimized for desktop, tablet, and mobile devices
- **Search & Filter**: Find plants and records quickly
- **Modern UI**: Clean, nature-inspired interface with smooth animations
- **Dashboard Overview**: At-a-glance view of garden status and upcoming tasks
## Technology Stack
### Frontend
- **React.js 18** with TypeScript
- **Tailwind CSS** for styling
- **Lucide React** for icons
- **Vite** for development and building
### Backend
- **Express.js** REST API
- **SQLite** database
- **CORS** enabled for cross-origin requests
### Deployment
- **Docker Compose** setup with multi-container architecture
- **Nginx** reverse proxy for production
- **Containerized** frontend and backend services
## Getting Started
### Prerequisites
- Node.js 18+ and npm
- Docker and Docker Compose (for containerized deployment)
### Development Setup
1. **Clone and install dependencies:**
```bash
# Install frontend dependencies
npm install
# Install backend dependencies
cd backend
npm install
```
2. **Initialize the database:**
```bash
cd backend
npm run init-db
```
3. **Start development servers:**
```bash
# Start backend (in backend directory)
npm run dev
# Start frontend (in root directory)
npm run dev
```
4. **Access the application:**
- Frontend: http://localhost:5173
- Backend API: http://localhost:3001
### Docker Deployment
1. **Build and start services:**
```bash
docker-compose up --build
```
2. **Initialize database:**
```bash
docker-compose run db-init
```
3. **Access the application:**
- Application: http://localhost:3000
- API: http://localhost:3001
## API Endpoints
### Plants
- `GET /api/plants` - Get all plants
- `POST /api/plants` - Create new plant
- `PUT /api/plants/:id` - Update plant
- `DELETE /api/plants/:id` - Delete plant
### Tasks
- `GET /api/tasks` - Get all tasks
- `POST /api/tasks` - Create new task
- `PUT /api/tasks/:id` - Update task
- `DELETE /api/tasks/:id` - Delete task
### Maintenance Records
- `GET /api/maintenance` - Get all maintenance records
- `POST /api/maintenance` - Create maintenance record
### Harvest Records
- `GET /api/harvests` - Get all harvest records
- `POST /api/harvests` - Create harvest record
## Database Schema
The application uses SQLite with the following main tables:
- **plants** - Store plant information
- **tasks** - Task planning and tracking
- **maintenance_records** - Maintenance activity logs
- **harvest_records** - Harvest tracking
- **plant_history** - Year-by-year plant history
## Project Structure
```
gardentrack/
├── src/ # Frontend source code
│ ├── components/ # React components
│ ├── services/ # API services
│ ├── types/ # TypeScript types
│ └── App.tsx # Main application component
├── backend/ # Backend source code
│ ├── scripts/ # Database initialization
│ ├── database/ # SQLite database files
│ └── server.js # Express server
├── docker-compose.yml # Docker services configuration
└── README.md # Project documentation
```
## Contributing
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request
## License
This project is licensed under the MIT License - see the LICENSE file for details.
## Support
For support, please open an issue in the GitHub repository or contact the development team.
---
**Happy Gardening! 🌱**