# Quick Start Guide **CA Grow Ops Manager** — Get up and running in 15 minutes --- ## Prerequisites Before you begin, ensure you have: - **Node.js** 20.x LTS ([Download](https://nodejs.org)) - **Docker Desktop** ([Download](https://www.docker.com/products/docker-desktop)) - **Git** ([Download](https://git-scm.com)) - **VS Code** (recommended) ([Download](https://code.visualstudio.com)) --- ## Option 1: Docker Compose (Recommended) The fastest way to get the full stack running: ### 1. Clone the Repository ```bash git clone cd ca-grow-ops-manager ``` ### 2. Start All Services ```bash docker-compose up ``` This will start: - **Backend** on `http://localhost:3000` - **Frontend** on `http://localhost:5173` - **PostgreSQL** on `localhost:5432` - **Redis** on `localhost:6379` ### 3. Open in Browser Navigate to `http://localhost:5173` to see the frontend. ### 4. Stop Services ```bash docker-compose down ``` --- ## Option 2: Local Development (Without Docker) For a more traditional development setup: ### 1. Set Up PostgreSQL Install PostgreSQL 15 locally or use a cloud instance. Create a database: ```bash createdb ca_grow_ops_dev ``` ### 2. Set Up Backend ```bash cd backend npm install cp .env.example .env # Edit .env with your database credentials npx prisma migrate dev npm run dev ``` Backend will run on `http://localhost:3000`. ### 3. Set Up Frontend In a new terminal: ```bash cd frontend npm install cp .env.example .env # Edit .env with your API URL (http://localhost:3000/api) npm run dev ``` Frontend will run on `http://localhost:5173`. --- ## Project Structure ``` ca-grow-ops-manager/ ├── backend/ # Fastify + Prisma backend │ ├── src/ │ │ ├── modules/ # Feature modules │ │ ├── shared/ # Shared utilities │ │ └── server.ts # Entry point │ ├── prisma/ │ │ └── schema.prisma # Database schema │ └── package.json ├── frontend/ # Vite + React frontend │ ├── src/ │ │ ├── pages/ # Page components │ │ ├── components/ # Reusable components │ │ └── main.tsx # Entry point │ └── package.json ├── specs/ # Feature specifications ├── plans/ # Implementation plans ├── docs/ # Documentation └── docker-compose.yml # Docker Compose config ``` --- ## Common Commands ### Backend ```bash cd backend # Development npm run dev # Start dev server with hot reload npm run build # Build for production npm start # Start production server # Database npx prisma migrate dev # Create and apply migration npx prisma studio # Open Prisma Studio (DB GUI) npx prisma generate # Generate Prisma Client # Testing npm test # Run tests npm run test:watch # Run tests in watch mode npm run test:coverage # Generate coverage report # Code Quality npm run lint # Run ESLint npm run format # Format with Prettier ``` ### Frontend ```bash cd frontend # Development npm run dev # Start dev server with hot reload npm run build # Build for production npm run preview # Preview production build # Testing npm test # Run tests npm run test:ui # Run tests with UI npm run test:coverage # Generate coverage report # Code Quality npm run lint # Run ESLint npm run format # Format with Prettier ``` ### Docker ```bash # Start all services docker-compose up # Start in background docker-compose up -d # Stop all services docker-compose down # Rebuild containers docker-compose up --build # View logs docker-compose logs -f # View logs for specific service docker-compose logs -f backend ``` --- ## Environment Variables ### Backend (.env) ```bash # Database DATABASE_URL=postgresql://user:password@localhost:5432/ca_grow_ops_dev # Redis REDIS_URL=redis://localhost:6379 # JWT JWT_SECRET=your-secret-key-change-in-production JWT_ACCESS_EXPIRY=15m JWT_REFRESH_EXPIRY=7d # Server PORT=3000 NODE_ENV=development # Email (optional for v1) EMAIL_SERVICE=sendgrid EMAIL_API_KEY=your-api-key EMAIL_FROM=noreply@example.com ``` ### Frontend (.env) ```bash # API VITE_API_URL=http://localhost:3000/api # Features VITE_AUTH_ENABLED=true VITE_METRC_ENABLED=false ``` --- ## VS Code Setup ### Recommended Extensions Install these extensions for the best development experience: - **ESLint** (`dbaeumer.vscode-eslint`) - **Prettier** (`esbenp.prettier-vscode`) - **Prisma** (`Prisma.prisma`) - **Tailwind CSS IntelliSense** (`bradlc.vscode-tailwindcss`) - **TypeScript** (built-in) ### Workspace Settings Create `.vscode/settings.json`: ```json { "editor.formatOnSave": true, "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.codeActionsOnSave": { "source.fixAll.eslint": true }, "typescript.tsdk": "node_modules/typescript/lib", "[prisma]": { "editor.defaultFormatter": "Prisma.prisma" } } ``` --- ## Troubleshooting ### Backend won't start **Error**: `Cannot connect to database` **Solution**: 1. Ensure PostgreSQL is running 2. Check `DATABASE_URL` in `.env` 3. Run `npx prisma migrate dev` to apply migrations --- ### Frontend won't start **Error**: `Cannot connect to API` **Solution**: 1. Ensure backend is running on `http://localhost:3000` 2. Check `VITE_API_URL` in `.env` 3. Check CORS settings in backend --- ### Docker issues **Error**: `Port already in use` **Solution**: 1. Stop conflicting services: `docker-compose down` 2. Check for other processes using ports 3000, 5173, 5432, 6379 3. Kill processes: `lsof -ti:3000 | xargs kill -9` --- ### Prisma issues **Error**: `Prisma Client not generated` **Solution**: ```bash cd backend npx prisma generate ``` **Error**: `Migration failed` **Solution**: 1. Check database connection 2. Reset database: `npx prisma migrate reset` (⚠️ deletes all data) 3. Reapply migrations: `npx prisma migrate dev` --- ## Next Steps ### For New Developers 1. **Read the docs**: - [Constitution](constitution.md) — Project principles - [Architecture](docs/architecture.md) — System design - [Compliance Notes](docs/compliance-notes-ca.md) — California regulations 2. **Review the specs**: - [Tasks and Scheduling](specs/tasks-and-scheduling.md) - [Batches and Rooms](specs/batches-and-rooms.md) - [Labor and Hours](specs/labor-and-hours.md) 3. **Check the plan**: - [Phase 1 Plan](plans/phase-1-foundation.md) - [Week 1 Tasks](plans/tasks-week-1-infrastructure.md) 4. **Start coding**: - Pick a task from [Week 1 Tasks](plans/tasks-week-1-infrastructure.md) - Create a feature branch: `git checkout -b feature/task-001` - Implement the task - Write tests - Submit a PR ### For Project Managers 1. **Review project status**: [STATUS.md](STATUS.md) 2. **Set up project tracking** (GitHub Projects, Linear, etc.) 3. **Assign tasks** to team members 4. **Schedule kickoff meeting** --- ## Getting Help ### Documentation - [README](README.md) — Project overview - [Backend README](backend/README.md) — Backend details - [Frontend README](frontend/README.md) — Frontend details - [STATUS](STATUS.md) — Current project status ### External Resources - [Fastify Docs](https://www.fastify.io/docs/latest/) - [Prisma Docs](https://www.prisma.io/docs) - [React Docs](https://react.dev) - [Tailwind Docs](https://tailwindcss.com/docs) - [shadcn/ui Docs](https://ui.shadcn.com) --- ## License **Proprietary** — All rights reserved. --- **Happy Coding!** 🚀