{"id":31809864,"url":"https://github.com/prmditya/kampung-tani","last_synced_at":"2025-10-29T03:09:34.635Z","repository":{"id":318296218,"uuid":"1067701111","full_name":"prmditya/kampung-tani","owner":"prmditya","description":"IoT Dashboard Website for Soil Monitoring","archived":false,"fork":false,"pushed_at":"2025-10-06T09:53:36.000Z","size":248,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-06T11:36:48.079Z","etag":null,"topics":["agriculture-iot","iot","iot-dashboard"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/prmditya.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-01T08:56:51.000Z","updated_at":"2025-10-06T09:53:40.000Z","dependencies_parsed_at":"2025-10-06T11:36:50.761Z","dependency_job_id":null,"html_url":"https://github.com/prmditya/kampung-tani","commit_stats":null,"previous_names":["prmditya/kampung-tani"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/prmditya/kampung-tani","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prmditya%2Fkampung-tani","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prmditya%2Fkampung-tani/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prmditya%2Fkampung-tani/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prmditya%2Fkampung-tani/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prmditya","download_url":"https://codeload.github.com/prmditya/kampung-tani/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prmditya%2Fkampung-tani/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279006353,"owners_count":26084088,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-11T02:00:06.511Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agriculture-iot","iot","iot-dashboard"],"created_at":"2025-10-11T05:53:08.267Z","updated_at":"2025-10-11T05:53:12.074Z","avatar_url":"https://github.com/prmditya.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- Improved compatibility of back to top link: See: https://github.com/othneildrew/Best-README-Template/pull/73 --\u003e\n\n\u003ca id=\"readme-top\"\u003e\u003c/a\u003e\n\n\u003c!--\n*** Thanks for checking out the Best-README-Template. If 4. **Build and Start the Application**\n   ```sh\n   # Build and start all services\n   docker-compose up --build\n\n   # Or run in detached mode\n   docker-compose up --build -d\n   ```\n\n5. **Verify Installation** suggestion\n*** that would make this better, please fork the repo and create a pull request\n*** or simply open an issue with the tag \"enhancement\".\n*** Don't forget to give the project a star!\n*** Thanks again! Now go create something AMAZING! :D\n--\u003e\n\n\u003c!-- PROJECT SHIELDS --\u003e\n\u003c!--\n*** I'm using markdown \"reference style\" links for readability.\n*** Reference links are enclosed in brackets [ ] instead of parentheses ( ).\n*** See the bottom of this document for the declaration of the reference variables\n*** for contributors-url, forks-url, etc. This is an optional, concise syntax you may use.\n*** https://www.markdownguide.org/basic-syntax/#reference-style-links\n--\u003e\n\n[![Contributors][contributors-shield]][contributors-url]\n[![Forks][forks-shield]][forks-url]\n[![Stargazers][stars-shield]][stars-url]\n[![Issues][issues-shield]][issues-url]\n[![MIT License][license-shield]][license-url]\n[![LinkedIn][linkedin-shield]][linkedin-url]\n\n\u003c!-- PROJECT LOGO --\u003e\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/prmditya/kampung-tani\"\u003e\n    \u003cimg src=\"frontend/public/assets/kt-logo.webp\" alt=\"Logo\" height=\"80\"\u003e\n  \u003c/a\u003e\n\n\u003ch3 align=\"center\"\u003eKampung Tani IoT Monitoring Dashboard\u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n    A comprehensive IoT monitoring dashboard for agricultural sensor data management and device monitoring, built with modern web technologies and real-time MQTT integration.\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/prmditya/kampung-tani\"\u003e\u003cstrong\u003eExplore the docs »\u003c/strong\u003e\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/prmditya/kampung-tani\"\u003eView Demo\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/prmditya/kampung-tani/issues/new?labels=bug\u0026template=bug-report---.md\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/prmditya/kampung-tani/issues/new?labels=enhancement\u0026template=feature-request---.md\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\u003cdetails\u003e\n  \u003csummary\u003eTable of Contents\u003c/summary\u003e\n  \u003col\u003e\n    \u003cli\u003e\n      \u003ca href=\"#about-the-project\"\u003eAbout The Project\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#built-with\"\u003eBuilt With\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#features\"\u003eFeatures\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#getting-started\"\u003eGetting Started\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#prerequisites\"\u003ePrerequisites\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#environment-setup\"\u003eEnvironment Setup\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#architecture\"\u003eArchitecture\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#api-documentation\"\u003eAPI Documentation\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contributing\"\u003eContributing\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#license\"\u003eLicense\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contact\"\u003eContact\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#acknowledgments\"\u003eAcknowledgments\u003c/a\u003e\u003c/li\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\u003c!-- ABOUT THE PROJECT --\u003e\n\n## About The Project\n\n[![Kampung Tani Dashboard Screenshot][product-screenshot]](https://github.com/prmditya/kampung-tani)\n\nKampung Tani IoT Monitoring Dashboard is a comprehensive agricultural monitoring system that enables real-time tracking and management of IoT sensors in farming environments. The platform provides farmers and agricultural professionals with intuitive tools to monitor soil conditions, environmental parameters, and device status through a modern web interface.\n\n### Key Capabilities:\n\n- **Real-time IoT Data Monitoring**: Live sensor data from agricultural devices (SEM225, NPK sensors, weather stations)\n- **Device Management**: Automatic device registration, status monitoring, and maintenance tracking\n- **Data Visualization**: Interactive charts and dashboards for sensor data analysis\n- **MQTT Integration**: Real-time data streaming from IoT devices via MQTT protocol\n- **User Authentication**: Secure access control with JWT-based authentication\n- **RESTful API**: Comprehensive API for data access and device management\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n### Built With\n\n#### Frontend Technologies\n\n- [![Next.js][Next.js]][Next-url] - React framework for production\n- [![React][React.js]][React-url] - UI library for building user interfaces\n- [![TypeScript][TypeScript]][TypeScript-url] - Type-safe JavaScript development\n- [![Tailwind CSS][TailwindCSS]][TailwindCSS-url] - Utility-first CSS framework\n- [![Lucide React][Lucide]][Lucide-url] - Beautiful \u0026 consistent icon library\n\n#### Backend Technologies\n\n- [![FastAPI][FastAPI]][FastAPI-url] - Modern, fast web framework for building APIs\n- [![Python][Python]][Python-url] - Backend programming language\n- [![PostgreSQL][PostgreSQL]][PostgreSQL-url] - Advanced open source database\n- [![Pydantic][Pydantic]][Pydantic-url] - Data validation using Python type hints\n- [![Paho MQTT][MQTT]][MQTT-url] - MQTT client library for IoT communication\n\n#### Infrastructure \u0026 DevOps\n\n- [![Docker][Docker]][Docker-url] - Containerization platform\n- [![Docker Compose][DockerCompose]][DockerCompose-url] - Multi-container Docker applications\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n### Features\n\n#### 🌱 **Agricultural IoT Monitoring**\n\n- Real-time soil sensor data (Temperature, Moisture, pH, NPK levels)\n- Environmental monitoring (Humidity, TDS, Salinity, Conductivity)\n- Automatic sensor data scaling and unit conversion\n- Device status tracking and health monitoring\n\n#### 📊 **Dashboard \u0026 Analytics**\n\n- Interactive sensor data visualization\n- Historical data analysis and trends\n- Device management and monitoring panels\n- Real-time status indicators\n\n#### 🔧 **Device Management**\n\n- Automatic device registration via MQTT\n- Device status history tracking\n- Online/offline status monitoring\n- Device maintenance scheduling\n\n#### 🔐 **Security \u0026 Authentication**\n\n- JWT-based authentication system\n- Role-based access control (Admin/User)\n- Secure API endpoints\n- Environment-based configuration management\n\n#### 🚀 **Modern Architecture**\n\n- Microservices architecture with Docker\n- RESTful API design\n- Real-time MQTT data streaming\n- Responsive web design\n- Type-safe development with TypeScript\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- GETTING STARTED --\u003e\n\n## Getting Started\n\nTo get a local copy up and running, follow these simple steps.\n\n### Prerequisites\n\nMake sure you have the following software installed on your system:\n\n- **Docker \u0026 Docker Compose**\n\n  ```sh\n  # Install Docker Desktop (includes Docker Compose)\n  # Windows/Mac: Download from https://www.docker.com/products/docker-desktop\n  # Linux: Follow installation guide for your distribution\n  ```\n\n- **Git**\n\n  ```sh\n  git --version\n  ```\n\n- **Node.js (optional, for local development)**\n  ```sh\n  node --version\n  npm --version\n  ```\n\n### Installation\n\n1. **Clone the repository**\n\n   ```sh\n   git clone https://github.com/prmditya/kampung-tani.git\n   cd kampung-tani\n   ```\n\n2. **Environment Setup**\n   Copy the example environment files and configure them:\n\n   ```sh\n   # Copy global environment file\n   cp .env.example .env\n\n   # Copy backend-specific environment file\n   cp backend/.env.local.example backend/.env.local\n\n   # Copy frontend-specific environment file\n   cp frontend/.env.local.example frontend/.env.local\n   ```\n\n3. **Configure Environment Variables**\n   Edit the `.env`, `backend/.env.local`, and `frontend/.env.local` files with your specific configuration:\n\n   - Database credentials and connection settings\n   - Backend API and MQTT configuration\n   - Frontend API endpoints and application settings\n   - JWT secret keys (use strong, unique keys)\n   - CORS origins for development\n\n   **⚠️ Important**: Never commit `.env` or `.env.local` files to version control. They contain sensitive information.\n\n4. **Build and Start the Application**\n\n   ```sh\n   # Build and start all services\n   docker-compose up --build\n\n   # Or run in detached mode\n   docker-compose up --build -d\n   ```\n\n5. **Verify Installation**\n   After the containers are running, verify the services:\n   - **Frontend**: http://localhost:3000\n   - **Backend API**: http://localhost:5000\n   - **API Documentation**: http://localhost:5000/api/v3/docs\n   - **Database**: localhost:5432\n\n### Environment Setup\n\n#### Configuration Requirements\n\nThe application requires environment configuration for:\n\n- **Database Settings**: PostgreSQL connection parameters\n- **Backend API**: FastAPI server configuration and MQTT settings\n- **Frontend App**: Next.js application settings and API endpoints\n- **Authentication**: JWT secret keys and token expiration\n- **CORS Settings**: Allowed origins for development\n\n#### Security Notes\n\n- Create strong, unique passwords and secret keys\n- Use different credentials for development and production\n- Never commit `.env` or `.env.local` files to version control\n- Refer to example files for required variables\n- Use environment-specific configurations\n\n#### Example Environment Files\n\nThe project includes example environment files:\n\n- `.env.example` - Global application and infrastructure settings\n- `backend/.env.local.example` - Backend-specific configuration\n- `frontend/.env.local.example` - Frontend-specific configuration\n\nCopy these files and configure them according to your environment.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- USAGE EXAMPLES --\u003e\n\n## Usage\n\n### Starting the Application\n\n```sh\n# Start all services\ndocker-compose up\n\n# View logs\ndocker-compose logs -f\n\n# Stop services\ndocker-compose down\n```\n\n### Accessing the Dashboard\n\n1. **Open the web application**: Navigate to http://localhost:3000\n2. **Login with default credentials** (change in production):\n   - Username: `admin`\n   - Password: `admin123`\n3. **Explore the dashboard**: View real-time sensor data and device status\n\n**⚠️ Security Note**: Change default credentials immediately in production environments.\n\n### API Usage\n\nThe backend provides a comprehensive RESTful API. Access the interactive documentation at:\n\n- **Swagger UI**: http://localhost:5000/api/v3/docs\n- **ReDoc**: http://localhost:5000/api/v3/redoc\n\n#### Example API Endpoints\n\n```sh\n# Get all devices\ncurl -X GET \"http://localhost:5000/api/v3/devices\" \\\n  -H \"Authorization: Bearer YOUR_JWT_TOKEN\"\n\n# Get sensor data for a device\ncurl -X GET \"http://localhost:5000/api/v3/devices/1/sensor-data\" \\\n  -H \"Authorization: Bearer YOUR_JWT_TOKEN\"\n\n# Health check\ncurl -X GET \"http://localhost:5000/api/v3/health\"\n```\n\n### MQTT Integration\n\nThe system automatically listens for MQTT messages from IoT devices:\n\n#### Supported MQTT Topics\n\n- `sensor/sem225/data` - SEM225 soil sensor data\n- `sensors/+/data` - Generic sensor data format\n- `sensor/+/data` - Legacy sensor data format\n\n#### Example MQTT Message Format\n\n```json\n{\n  \"d\": [\n    { \"tag\": \"SEM225:Temperature\", \"value\": 250 },\n    { \"tag\": \"SEM225:Moisture\", \"value\": 350 },\n    { \"tag\": \"SEM225:PH\", \"value\": 65 },\n    { \"tag\": \"SEM225:Nitrogen\", \"value\": 120 },\n    { \"tag\": \"SEM225:Phosphorus\", \"value\": 45 },\n    { \"tag\": \"SEM225:Potassium\", \"value\": 180 }\n  ],\n  \"ts\": \"2025-01-07T10:30:00Z\"\n}\n```\n\n_For more examples and detailed API documentation, please refer to the [API Documentation](http://localhost:5000/api/v3/docs)_\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Architecture\n\n### System Architecture\n\n```\n┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐\n│                 │    │                 │    │                 │\n│   Frontend      │    │   Backend       │    │   Database      │\n│   (Next.js)     │◄──►│   (FastAPI)     │◄──►│   (PostgreSQL)  │\n│   Port: 3000    │    │   Port: 5000    │    │   Port: 5432    │\n│                 │    │                 │    │                 │\n└─────────────────┘    └─────────────────┘    └─────────────────┘\n                              │\n                              ▼\n                       ┌─────────────────┐\n                       │                 │\n                       │   MQTT Broker   │\n                       │   (External)    │\n                       │                 │\n                       └─────────────────┘\n                              ▲\n                              │\n                       ┌─────────────────┐\n                       │                 │\n                       │   IoT Devices   │\n                       │   (SEM225, etc) │\n                       │                 │\n                       └─────────────────┘\n```\n\n### Frontend Architecture\n\n```\nsrc/\n├── app/                    # Next.js App Router pages\n│   ├── (auth)/            # Authentication routes\n│   └── (dashboard)/       # Dashboard routes\n├── features/              # Feature-specific components\n│   ├── auth/              # Authentication features\n│   ├── dashboard/         # Dashboard features\n│   └── devices/           # Device management features\n└── shared/                # Reusable components \u0026 utilities\n    ├── components/        # UI components\n    ├── hooks/             # Custom React hooks\n    ├── lib/               # Utilities \u0026 constants\n    └── types/             # TypeScript type definitions\n```\n\n### Backend Architecture\n\n```\nbackend/\n├── app/\n│   ├── core/              # Core functionality\n│   │   ├── config.py      # Configuration management\n│   │   ├── database.py    # Database connection\n│   │   └── security.py    # Authentication \u0026 security\n│   ├── routers/           # API route handlers\n│   │   ├── auth.py        # Authentication endpoints\n│   │   ├── devices.py     # Device management\n│   │   └── sensors.py     # Sensor data endpoints\n│   └── services/          # Business logic services\n├── mqtt_listener.py       # MQTT data processing\n└── main.py               # FastAPI application entry\n```\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## API Documentation\n\n### Authentication\n\n#### Login\n\n```http\nPOST /api/v3/auth/login\nContent-Type: application/json\n\n{\n  \"username\": \"admin\",\n  \"password\": \"admin123\"\n}\n```\n\n#### Response\n\n```json\n{\n  \"access_token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\",\n  \"token_type\": \"bearer\",\n  \"user\": {\n    \"id\": 1,\n    \"username\": \"admin\",\n    \"email\": \"admin@kampungtani.com\",\n    \"role\": \"admin\"\n  }\n}\n```\n\n### Devices\n\n#### Get All Devices\n\n```http\nGET /api/v3/devices\nAuthorization: Bearer YOUR_JWT_TOKEN\n```\n\n#### Get Device Sensor Data\n\n```http\nGET /api/v3/devices/{device_id}/sensor-data?limit=100\u0026hours=24\nAuthorization: Bearer YOUR_JWT_TOKEN\n```\n\n### Health Check\n\n#### System Health\n\n```http\nGET /api/v3/health\n```\n\n```json\n{\n  \"status\": \"healthy\",\n  \"timestamp\": \"2025-01-07T10:30:00Z\",\n  \"version\": \"1.0.0\",\n  \"database\": \"connected\",\n  \"services\": {\n    \"mqtt_listener\": \"running\",\n    \"api\": \"running\"\n  }\n}\n```\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- CONTRIBUTING --\u003e\n\n## Contributing\n\nContributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.\n\nIf you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag \"enhancement\".\nDon't forget to give the project a star! Thanks again!\n\n### Contributing Guidelines\n\n1. **Fork the Project**\n2. **Create your Feature Branch** (`git checkout -b feature/AmazingFeature`)\n3. **Follow the existing code style** and architecture patterns\n4. **Add tests** for new functionality\n5. **Update documentation** as needed\n6. **Commit your Changes** using [Conventional Commits](https://www.conventionalcommits.org/)\n   ```sh\n   git commit -m 'feat: add amazing new feature'\n   git commit -m 'fix: resolve device connection issue'\n   git commit -m 'docs: update API documentation'\n   ```\n7. **Push to the Branch** (`git push origin feature/AmazingFeature`)\n8. **Open a Pull Request**\n\n### Development Setup\n\nFor local development without Docker:\n\n```sh\n# Backend development\ncd backend\npython -m venv venv\nsource venv/bin/activate  # On Windows: venv\\Scripts\\activate\npip install -r requirements.txt\npython main.py\n\n# Frontend development\ncd frontend\nnpm install\nnpm run dev\n```\n\n### Security Considerations\n\nWhen deploying to production:\n\n- **Change default credentials** immediately\n- **Use strong, unique JWT secret keys** (minimum 32 characters)\n- **Configure proper CORS origins** for your domain\n- **Use HTTPS** for all communications\n- **Set up proper firewall rules** for database and MQTT access\n- **Regularly update dependencies** for security patches\n- **Monitor logs** for suspicious activities\n- **Use environment-specific configurations**\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- LICENSE --\u003e\n\n## License\n\nDistributed under the MIT License. See `LICENSE` for more information.\n\nThis project is open source and available under the [MIT License](https://opensource.org/licenses/MIT). You are free to use, modify, and distribute this software for both commercial and non-commercial purposes.\n\n### What this means:\n\n- ✅ **Commercial use** - You can use this project for commercial purposes\n- ✅ **Modification** - You can modify the source code\n- ✅ **Distribution** - You can distribute the original or modified versions\n- ✅ **Private use** - You can use this project for private purposes\n- ✅ **Patent use** - You can use any patents that may be present\n\n### Requirements:\n\n- 📄 **License and copyright notice** - Include the original license and copyright notice in any copy of the software/source\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- CONTACT --\u003e\n\n## Contact\n\n**Thoriq Kusuma** - [@prmditya](https://github.com/prmditya) - t.paramaditya@gmail.com\n\n**Project Link**: [https://github.com/prmditya/kampung-tani](https://github.com/prmditya/kampung-tani)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- ACKNOWLEDGMENTS --\u003e\n\n## Acknowledgments\n\nWe would like to thank the following projects and resources that made this project possible:\n\n- [FastAPI](https://fastapi.tiangolo.com/) - For the excellent Python web framework\n- [Next.js](https://nextjs.org/) - For the powerful React framework\n- [Tailwind CSS](https://tailwindcss.com/) - For the utility-first CSS framework\n- [Lucide Icons](https://lucide.dev/) - For the beautiful icon library\n- [PostgreSQL](https://www.postgresql.org/) - For the robust database system\n- [Paho MQTT](https://www.eclipse.org/paho/) - For MQTT client implementation\n- [Best README Template](https://github.com/othneildrew/Best-README-Template) - For this README template\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- MARKDOWN LINKS \u0026 IMAGES --\u003e\n\u003c!-- https://www.markdownguide.org/basic-syntax/#reference-style-links --\u003e\n\n[contributors-shield]: https://img.shields.io/github/contributors/prmditya/kampung-tani.svg?style=for-the-badge\n[contributors-url]: https://github.com/prmditya/kampung-tani/graphs/contributors\n[forks-shield]: https://img.shields.io/github/forks/prmditya/kampung-tani.svg?style=for-the-badge\n[forks-url]: https://github.com/prmditya/kampung-tani/network/members\n[stars-shield]: https://img.shields.io/github/stars/prmditya/kampung-tani.svg?style=for-the-badge\n[stars-url]: https://github.com/prmditya/kampung-tani/stargazers\n[issues-shield]: https://img.shields.io/github/issues/prmditya/kampung-tani.svg?style=for-the-badge\n[issues-url]: https://github.com/prmditya/kampung-tani/issues\n[license-shield]: https://img.shields.io/github/license/prmditya/kampung-tani.svg?style=for-the-badge\n[license-url]: https://github.com/prmditya/kampung-tani/blob/main/LICENSE\n[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge\u0026logo=linkedin\u0026colorB=555\n[linkedin-url]: https://linkedin.com/in/prmdtya\n[product-screenshot]: images/screenshot.png\n\n\u003c!-- Technology Badges --\u003e\n\n[Next.js]: https://img.shields.io/badge/next.js-000000?style=for-the-badge\u0026logo=nextdotjs\u0026logoColor=white\n[Next-url]: https://nextjs.org/\n[React.js]: https://img.shields.io/badge/React-20232A?style=for-the-badge\u0026logo=react\u0026logoColor=61DAFB\n[React-url]: https://reactjs.org/\n[TypeScript]: https://img.shields.io/badge/TypeScript-007ACC?style=for-the-badge\u0026logo=typescript\u0026logoColor=white\n[TypeScript-url]: https://www.typescriptlang.org/\n[TailwindCSS]: https://img.shields.io/badge/Tailwind_CSS-38B2AC?style=for-the-badge\u0026logo=tailwind-css\u0026logoColor=white\n[TailwindCSS-url]: https://tailwindcss.com/\n[FastAPI]: https://img.shields.io/badge/FastAPI-005571?style=for-the-badge\u0026logo=fastapi\n[FastAPI-url]: https://fastapi.tiangolo.com/\n[Python]: https://img.shields.io/badge/Python-3776AB?style=for-the-badge\u0026logo=python\u0026logoColor=white\n[Python-url]: https://www.python.org/\n[PostgreSQL]: https://img.shields.io/badge/PostgreSQL-316192?style=for-the-badge\u0026logo=postgresql\u0026logoColor=white\n[PostgreSQL-url]: https://www.postgresql.org/\n[Docker]: https://img.shields.io/badge/Docker-2496ED?style=for-the-badge\u0026logo=docker\u0026logoColor=white\n[Docker-url]: https://www.docker.com/\n[DockerCompose]: https://img.shields.io/badge/Docker_Compose-2496ED?style=for-the-badge\u0026logo=docker\u0026logoColor=white\n[DockerCompose-url]: https://docs.docker.com/compose/\n[Pydantic]: https://img.shields.io/badge/Pydantic-E92063?style=for-the-badge\u0026logo=pydantic\u0026logoColor=white\n[Pydantic-url]: https://pydantic.dev/\n[MQTT]: https://img.shields.io/badge/MQTT-660066?style=for-the-badge\u0026logo=eclipse-mosquitto\u0026logoColor=white\n[MQTT-url]: https://www.eclipse.org/paho/\n[Lucide]: https://img.shields.io/badge/Lucide-F56565?style=for-the-badge\u0026logo=lucide\u0026logoColor=white\n[Lucide-url]: https://lucide.dev/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprmditya%2Fkampung-tani","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprmditya%2Fkampung-tani","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprmditya%2Fkampung-tani/lists"}