GrowManager is a comprehensive grow journal and analytics platform designed to help cannabis cultivators track their grows, monitor plant health, manage harvests, and analyze performance over time.
GrowManager Phase 1 MVP focuses on manual tracking foundation with the following core features:
- User authentication and authorization
- Grow creation and management
- Plant lifecycle tracking
- Photo upload and management
- Harvest recording
- Basic analytics and reporting
- Framework: Spring Boot 3.x
- Language: Java 17+
- Database: PostgreSQL 14+
- Caching: Redis
- Object Storage: MinIO (S3-compatible)
- Build Tool: Maven
- Key Dependencies:
- Spring Web
- Spring Data JPA
- Spring Security
- Flyway (Database Migrations)
- Lombok
- Bean Validation
 
- Framework: React 18+
- Build Tool: Vite
- Language: TypeScript
- State Management: Zustand
- Routing: React Router
- Data Fetching: React Query
- Forms: React Hook Form + Zod
- UI Framework: Tailwind CSS + shadcn/ui
- Containerization: Docker & Docker Compose
- CI/CD: GitHub Actions
- Code Quality: SonarQube, ESLint, Prettier, Checkstyle
GrowManager/
├── growmanager-api/          # Spring Boot backend
│   ├── src/
│   │   ├── main/
│   │   │   ├── java/
│   │   │   │   └── com/growmanager/
│   │   │   │       ├── controller/
│   │   │   │       ├── service/
│   │   │   │       ├── repository/
│   │   │   │       ├── entity/
│   │   │   │       ├── dto/
│   │   │   │       ├── config/
│   │   │   │       ├── security/
│   │   │   │       └── exception/
│   │   │   └── resources/
│   │   │       ├── application.yml
│   │   │       └── db/migration/
│   │   └── test/
│   └── pom.xml
├── growmanager-ui/           # React frontend
│   ├── src/
│   │   ├── components/
│   │   ├── pages/
│   │   ├── hooks/
│   │   ├── services/
│   │   ├── types/
│   │   ├── utils/
│   │   └── stores/
│   ├── package.json
│   ├── tsconfig.json
│   └── vite.config.ts
├── docker-compose.yml
└── README.md
- Java 17 or higher
- Node.js 18 or higher
- Docker and Docker Compose
- Maven 3.8+
- Git
- 
Clone the repository git clone <repository-url> cd GrowManager 
- 
Start infrastructure services docker-compose up -d This starts PostgreSQL, Redis, and MinIO. 
- 
Set up backend cd growmanager-api cp .env.example .env # Edit .env with your local configuration mvn clean install mvn spring-boot:run Backend runs on http://localhost:8080 
- 
Set up frontend cd growmanager-ui cp .env.example .env # Edit .env with your local configuration npm install npm run dev Frontend runs on http://localhost:5173 
See growmanager-api/.env.example for required environment variables.
See growmanager-ui/.env.example for required environment variables.
Backend:
cd growmanager-api
mvn testFrontend:
cd growmanager-ui
npm testThe docker-compose.yml provides the following services:
- 
PostgreSQL - Port 5432 - Database: growmanager
- User: growmanager
- Password: (set in .env)
 
- 
Redis - Port 6379 - Used for session caching and rate limiting
 
- 
MinIO - Ports 9000 (API), 9001 (Console) - S3-compatible object storage for photos
- Console: http://localhost:9001
 
- main- Production-ready code
- develop- Integration branch for features
- feature/*- Feature branches
- 
Create a feature branch from developgit checkout develop git checkout -b feature/your-feature-name 
- 
Make your changes and commit git add . git commit -m "Description of changes" 
- 
Push and create a pull request to developgit push origin feature/your-feature-name 
Once the backend is running, API documentation is available at:
- Swagger UI: http://localhost:8080/swagger-ui.html
- OpenAPI JSON: http://localhost:8080/v3/api-docs
Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.
This project is licensed under the MIT License - see the LICENSE file for details.
For questions and support, please open an issue in the GitHub repository.