{"id":50939589,"url":"https://github.com/xanderbilla/my-project","last_synced_at":"2026-06-17T12:32:44.552Z","repository":{"id":342015324,"uuid":"1171147146","full_name":"xanderbilla/my-project","owner":"xanderbilla","description":"Go REST API with high performance","archived":false,"fork":false,"pushed_at":"2026-03-04T12:18:56.000Z","size":118,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"my-project/dev","last_synced_at":"2026-03-04T17:26:39.918Z","etag":null,"topics":["devops","go","golang","rest-api"],"latest_commit_sha":null,"homepage":"https://github.com/xanderbilla/my-project","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/xanderbilla.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"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":"2026-03-02T23:22:00.000Z","updated_at":"2026-03-04T12:19:00.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/xanderbilla/my-project","commit_stats":null,"previous_names":["xanderbilla/my-project"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/xanderbilla/my-project","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xanderbilla%2Fmy-project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xanderbilla%2Fmy-project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xanderbilla%2Fmy-project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xanderbilla%2Fmy-project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xanderbilla","download_url":"https://codeload.github.com/xanderbilla/my-project/tar.gz/refs/heads/my-project/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xanderbilla%2Fmy-project/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34449277,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-17T02:00:05.408Z","response_time":127,"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":["devops","go","golang","rest-api"],"created_at":"2026-06-17T12:32:43.631Z","updated_at":"2026-06-17T12:32:44.546Z","avatar_url":"https://github.com/xanderbilla.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# My Project (Go)\n\nA REST API learning project built with Go demonstrating proper error handling, structured logging, and middleware patterns.\n\n## Features\n\n- Structured error responses with user-friendly messages\n- JSON logging with configurable levels\n- Request ID tracking for debugging\n- Input validation\n- Graceful shutdown\n- Environment-based configuration\n- Panic recovery\n\n## Quick Start\n\n### Using Docker (Recommended)\n\nPull and run the latest image from Docker Hub or GitHub Container Registry:\n\n**Step 1:** Create a `.env` file:\n\n```bash\ncat \u003e .env \u003c\u003c EOF\nHTTP_ADDRESS=:8080\nSTORAGE_PATH=/tmp/storage.db\nLOG_LEVEL=info\nENV=prod\nEOF\n```\n\n**Step 2:** Run with the `.env` file:\n\n```bash\n# Using Docker Hub\ndocker pull docker.io/xanderbilla/my-project:latest\ndocker run -p 8080:8080 --env-file .env docker.io/xanderbilla/my-project:latest\n\n# OR using GitHub Container Registry\ndocker pull ghcr.io/xanderbilla/my-project:latest\ndocker run -p 8080:8080 --env-file .env ghcr.io/xanderbilla/my-project:latest\n\n# Use a specific version (recommended for production)\ndocker run -p 8080:8080 --env-file .env ghcr.io/xanderbilla/my-project:v1.0.1\n\n# With persistent storage (volume mount)\ndocker run -p 8080:8080 \\\n  --env-file .env \\\n  -e STORAGE_PATH=/data/storage.db \\\n  -v $(pwd)/storage:/data \\\n  ghcr.io/xanderbilla/my-project:latest\n```\n\n**Available tags:** `latest`, `v1.0.1`, `v1.0.0`, `1.0.1`, `1.0`, `1`\n\n**Note:** The `--env-file .env` flag loads environment variables from your `.env` file. You can override specific variables using additional `-e` flags if needed.\n\nSee all [releases](https://github.com/xanderbilla/my-project/releases) for version history.\n\n### Using Local Development\n\n```bash\n# 1. Copy environment template\ncp .env.example .env\n\n# 2. Start the app\nmake run-quick\n```\n\nThat's it! Your server is running on http://localhost:8080\n\n### Using Docker Compose\n\n```bash\n# Start all services\ndocker-compose up\n\n# Start in detached mode\ndocker-compose up -d\n```\n\n## Configuration\n\nAll configuration is managed via environment variables.\n\n### Required Variables\n\nThese **must** be set for the application to run:\n\n- `HTTP_ADDRESS` - Server bind address (e.g., `:8080`, `localhost:8080`)\n- `STORAGE_PATH` - Path to storage file (e.g., `storage/dev-storage.db`, `/tmp/storage.db`)\n\n### Optional Variables\n\n- `ENV` - Environment: `dev`, `staging`, `prod` (default: `prod`)\n- `LOG_LEVEL` - Log level: `DEBUG`, `INFO`, `WARN`, `ERROR` (default: `INFO`)\n\n### Docker Example with .env File\n\nCreate a `.env` file:\n\n```bash\nHTTP_ADDRESS=:8080\nSTORAGE_PATH=/tmp/storage.db\nLOG_LEVEL=info\nENV=prod\n```\n\nRun with the `.env` file:\n\n```bash\ndocker run -p 8080:8080 --env-file .env ghcr.io/xanderbilla/my-project:latest\n```\n\nFor local development, see [.env.example](.env.example) or the [Configuration Guide](DEVELOPMENT.md#configuration).\n\n## API Endpoints\n\n| Method | Endpoint         | Description     |\n| ------ | ---------------- | --------------- |\n| GET    | `/api/users`     | Get all users   |\n| GET    | `/api/users/:id` | Get user by ID  |\n| POST   | `/api/users`     | Create new user |\n| PUT    | `/api/users/:id` | Update user     |\n| DELETE | `/api/users/:id` | Delete user     |\n\n## Example Usage\n\n```bash\n# Get all users\ncurl http://localhost:8080/api/users\n\n# Create a user\ncurl -X POST http://localhost:8080/api/users \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"name\":\"Aman\",\"email\":\"aman@example.com\",\"age\":22}'\n\n# Get specific user\ncurl http://localhost:8080/api/users/1\n\n# Update user\ncurl -X PUT http://localhost:8080/api/users/1 \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"name\":\"Aman Updated\",\"email\":\"aman@example.com\",\"age\":23}'\n\n# Delete user\ncurl -X DELETE http://localhost:8080/api/users/1\n```\n\nFor detailed API response format, error handling, and examples, see [DEVELOPMENT.md](DEVELOPMENT.md#api-documentation).\n\n## For Developers\n\nAll technical documentation, including setup, testing, building, and release processes, is in:\n\n**[📖 Development Guide](DEVELOPMENT.md)**\n\nQuick links:\n\n- [Development Setup](DEVELOPMENT.md#development-setup) - Local setup and configuration\n- [Configuration](DEVELOPMENT.md#configuration) - Environment setup\n- [Project Structure](DEVELOPMENT.md#project-structure) - Code organization\n- [Testing](DEVELOPMENT.md#testing) - Running tests and coverage\n- [Building](DEVELOPMENT.md#building) - Creating binaries\n- [Docker Development](DEVELOPMENT.md#docker-development) - Container workflows\n- [API Documentation](DEVELOPMENT.md#api-documentation) - Response formats and endpoints\n- [Release Process](DEVELOPMENT.md#release-process) - How to release\n- [CI/CD Pipeline](DEVELOPMENT.md#cicd-pipeline) - Automated workflows\n- [Troubleshooting](DEVELOPMENT.md#troubleshooting) - Common issues\n\n## About\n\nThis is a learning project to demonstrate best practices in Go API development. Feel free to use it as a reference for your own projects.\n\n## Contributing\n\nWe welcome contributions! Please see:\n\n- [DEVELOPMENT.md](DEVELOPMENT.md) - Development guide and setup\n- [CONTRIBUTING.md](CONTRIBUTING.md) - Contribution guidelines\n- [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) - Community guidelines\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Author\n\n**Vikas Singh** ([@xanderbilla](https://github.com/xanderbilla))\n\n[xanderbilla.com](https://xanderbilla.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxanderbilla%2Fmy-project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxanderbilla%2Fmy-project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxanderbilla%2Fmy-project/lists"}