{"id":29917679,"url":"https://github.com/muslchn/temperature-conversion","last_synced_at":"2026-04-19T10:31:41.956Z","repository":{"id":306395978,"uuid":"1022036335","full_name":"muslchn/temperature-conversion","owner":"muslchn","description":"🔁 CLI app for converting Celsius to Fahrenheit and Réaumur, with location logging, temperature classification, and clean Go architecture.","archived":false,"fork":false,"pushed_at":"2025-07-25T08:54:35.000Z","size":7,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-02T06:19:37.176Z","etag":null,"topics":["clean-architecture","cli","github-actions","go","golang","input-validation","location-logging","pointer","static-analysis","struct","temperature-classification","temperature-conversion"],"latest_commit_sha":null,"homepage":"https://github.com/muslchn/temperature-conversion","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/muslchn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-18T10:48:50.000Z","updated_at":"2025-07-25T08:54:40.000Z","dependencies_parsed_at":"2025-07-25T13:33:39.204Z","dependency_job_id":"ccd72ec8-9c94-4ce8-a1e0-2488a14056cb","html_url":"https://github.com/muslchn/temperature-conversion","commit_stats":null,"previous_names":["muslchn/temperature-conversion"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/muslchn/temperature-conversion","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/muslchn%2Ftemperature-conversion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/muslchn%2Ftemperature-conversion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/muslchn%2Ftemperature-conversion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/muslchn%2Ftemperature-conversion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/muslchn","download_url":"https://codeload.github.com/muslchn/temperature-conversion/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/muslchn%2Ftemperature-conversion/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32003997,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"online","status_checked_at":"2026-04-19T02:00:07.110Z","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":["clean-architecture","cli","github-actions","go","golang","input-validation","location-logging","pointer","static-analysis","struct","temperature-classification","temperature-conversion"],"created_at":"2025-08-02T05:14:13.786Z","updated_at":"2026-04-19T10:31:41.937Z","avatar_url":"https://github.com/muslchn.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Temperature Conversion Application\n\n[![CI][ci-badge]][ci-url]\n[![Go Report Card][goreport-badge]][goreport-url]\n[![License: MIT][license-badge]][license-url]\n\nA command-line temperature conversion application built in Go that converts Celsius temperatures to Fahrenheit and\nRéaumur scales, with location-based measurements and temperature classification.\n\n## Features\n\n- 🌡️ **Temperature Conversion**: Convert Celsius to Fahrenheit and Réaumur\n- 📍 **Location Tracking**: Record the location where temperature is measured\n- 🏷️ **Temperature Classification**: Automatically classify temperatures as:\n  - ❄️ **Dingin (Cold)**: Below 18°C\n  - 🌤️ **Hangat (Warm)**: 18°C - 25°C\n  - 🔥 **Panas (Hot)**: Above 25°C\n- ✅ **Input Validation**:\n  - Location must be alphabetic characters and spaces only\n  - Temperature must be numeric values\n- 🏗️ **Clean Architecture**: Uses structs and pointer-based functions for efficient memory usage\n\n## Installation\n\n### Prerequisites\n\n- Go 1.21 or higher\n- Git\n\n### Install from Source\n\n```bash\n# Clone the repository\ngit clone https://github.com/muslchn/temperature-conversion.git\n\n# Navigate to project directory\ncd temperature-conversion\n\n# Build the application\ngo build -o temperature-converter .\n\n# Run the application\n./temperature-converter\n```\n\n### Quick Install with Go\n\n```bash\ngo install github.com/muslchn/temperature-conversion@latest\n```\n\n## Usage\n\n### Interactive Mode\n\nRun the application and follow the prompts:\n\n```bash\n./temperature-converter\n```\n\n### Example Usage\n\n```text\n--- Konverter Suhu ---\nMasukkan lokasi pengukuran suhu: Jakarta\nMasukkan suhu dalam Celsius: 25\n\n\u003e Suhu di Jakarta adalah hangat\n\u003e Suhu di Jakarta dalam Reamur = 20.00\n\u003e Suhu di Jakarta dalam Fahrenheit = 77.00\n```\n\n### Error Handling\n\nThe application provides clear error messages for invalid inputs:\n\n```text\n--- Konverter Suhu ---\nMasukkan lokasi pengukuran suhu: Madinah\nMasukkan suhu dalam Celsius: dua puluh lima\n\n\u003e input tidak valid, hanya menerima angka\n```\n\n## Technical Details\n\n### Architecture\n\nThe application is built using clean architecture principles:\n\n- **Struct-based Data Management**: Uses `TemperatureData` struct to encapsulate location and temperature information\n- **Pointer-based Functions**: Implements pass-by-reference for efficient memory usage\n- **Separation of Concerns**: Clear separation between input validation, business logic, and output formatting\n\n### Key Components\n\n```go\ntype TemperatureData struct {\n    Location string\n    Celsius  float64\n}\n```\n\n### Conversion Formulas\n\n- **Fahrenheit**: `F = (C × 9/5) + 32`\n- **Réaumur**: `R = C × 4/5`\n\n### Temperature Classification Rules\n\n| Category | Temperature Range (°C) | Description |\n|----------|------------------------|-------------|\n| Dingin   | \u003c 18                   | Cold        |\n| Hangat   | 18 - 25                | Warm        |\n| Panas    | \u003e 25                   | Hot         |\n\n## Development\n\n### Project Structure\n\n```text\ntemperature-conversion/\n├── .github/\n│   └── workflows/\n│       └── ci.yml          # GitHub Actions CI/CD pipeline\n├── main.go                 # Main application code\n├── go.mod                  # Go module definition\n├── temperature-converter   # Compiled binary\n└── README.md              # This file\n```\n\n### Building from Source\n\n```bash\n# Download dependencies\ngo mod download\n\n# Build the application\ngo build -o temperature-converter .\n\n# Run tests (when available)\ngo test ./...\n\n# Run linting\ngo vet ./...\n```\n\n### Code Quality\n\nThis project maintains high code quality standards:\n\n- **Static Analysis**: Uses `staticcheck` for advanced Go linting\n- **Code Formatting**: Follows `gofmt` standards\n- **Error Handling**: Implements proper error handling patterns\n- **Input Validation**: Comprehensive input validation for user safety\n\n## CI/CD\n\nThe project uses GitHub Actions for continuous integration:\n\n- **Automated Testing**: Runs on every push and pull request\n- **Multiple Go Versions**: Tested against Go 1.21+\n- **Static Analysis**: Includes `go vet` and `staticcheck`\n- **Build Verification**: Ensures clean builds across platforms\n\n## Contributing\n\nWe welcome contributions! Please follow these steps:\n\n1. **Fork** the repository\n2. **Create** a feature branch (`git checkout -b feature/amazing-feature`)\n3. **Commit** your changes (`git commit -m 'Add some amazing feature'`)\n4. **Push** to the branch (`git push origin feature/amazing-feature`)\n5. **Open** a Pull Request\n\n### Development Guidelines\n\n- Follow Go naming conventions\n- Add tests for new features\n- Ensure all CI checks pass\n- Update documentation as needed\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Acknowledgments\n\n- Built as part of learning Go programming fundamentals\n- Focuses on practical application of structs, pointers, and input validation\n- Implements clean architecture patterns for maintainable code\n\n## Support\n\nIf you encounter any issues or have questions:\n\n1. Check the [Issues](https://github.com/muslchn/temperature-conversion/issues) page\n2. Create a new issue with detailed information\n3. Follow the issue template for faster resolution\n\n---\n\nMade with ❤️ and Go\n\n\u003c!-- Reference Links --\u003e\n[ci-badge]: https://github.com/muslchn/temperature-conversion/actions/workflows/ci.yml/badge.svg\n[ci-url]: https://github.com/muslchn/temperature-conversion/actions/workflows/ci.yml\n[goreport-badge]: https://goreportcard.com/badge/github.com/muslchn/temperature-conversion\n[goreport-url]: https://goreportcard.com/report/github.com/muslchn/temperature-conversion\n[license-badge]: https://img.shields.io/badge/License-MIT-yellow.svg\n[license-url]: https://opensource.org/licenses/MIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmuslchn%2Ftemperature-conversion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmuslchn%2Ftemperature-conversion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmuslchn%2Ftemperature-conversion/lists"}