Logo Lanfrica

sai045/agri-market-price-tracker

Domaine:

agriculture

Type de record:

software
Créateur:
sai
Hôte:
Full-stack agricultural mandi tracker with admin price entry, Telugu master data, season and holiday intelligence, trends dashboard, and AWS-ready deployment scripts. # Agricultural Market Price Tracker Full-stack web app for daily agricultural market tracking with: - Admin-only data entry (max price only) - Public dashboards (today, history, seasons, holidays) - Flat item master (no category/variety split) - Telugu names stored in DB (`name_te`) - Per-city holidays including recurring weekly and annual rules ## Tech Stack - Frontend: React + TypeScript + Vite + Recharts - Backend: Node.js + Express + TypeScript + PostgreSQL - Infra: AWS (RDS + EC2 + S3 + CloudFront), Terraform, GitHub Actions ## Project Structure ```text market-price-tracker/ ├── client/ ├── server/ ├── db/migrations/ ├── infra/ │ ├── deploy.sh │ ├── scripts/ │ └── terraform/ ├── docker-compose.yml └── README.md ``` ## Local Setup 1. Install dependencies ```bash cd client && npm install cd ../server && npm install ``` 2. Start PostgreSQL ```bash docker-compose up -d ``` 3. Configure backend env ```bash cp server/.env.example server/.env ``` 4. Run DB migration ```bash cd server npm run db:migrate ``` 5. Start backend ```bash cd server npm run dev ``` 6. Configure frontend env ```bash cp client/.env.example client/.env ``` 7. Start frontend ```bash cd client npm run dev ``` ## Admin Bootstrap First run auto-creates admin from backend env: - `ADMIN_BOOTSTRAP_EMAIL` - `ADMIN_BOOTSTRAP_PASSWORD` Default dev values in `.env.example`: - Email: `admin@example.com` - Password: `ChangeMe123!` ## API Summary Public: - `GET /api/cities` - `GET /api/items` - `GET /api/prices/latest?cityId=...` - `GET /api/prices?cityId=...&itemId=...` - `GET /api/prices/trends?cityId=...&itemId=...&days=90` - `GET /api/seasons` - `GET /api/holidays?cityId=...&year=2026` Admin: - `POST /api/auth/login` - `POST /api/auth/logout` - `GET /api/admin/me` - `GET /api/admin/masters` - `POST /api/admin/cities` - `POST /api/admin/units` - `POST /api/admin/items` - `POST /api/admin/seasons` - `POST /api/admin/holidays` - `POST /api/admin/prices` - `POST /api/admin/price …

Languages