A modern, scalable location-based service built with Go, designed to handle location data efficiently and reliably.
- RESTful API for location management
- PostgreSQL database for reliable data storage
- Kafka integration for event streaming
- Docker and Kubernetes support for easy deployment
- Hot-reload development environment with Air
- Comprehensive database migrations
- Admin interface for database management
- Go 1.18+
- Docker and Docker Compose
- Make (optional, but recommended)
- Clone the repository:
git clone https://github.com/patricksferraz/pinned-place.git
cd pinned-place- Copy the example environment file and configure it:
cp .env.example .env- Start the services using Docker Compose:
docker-compose up -dThe project uses Air for hot-reloading during development. To start the development server:
make dev.
├── app/ # Application layer
├── cmd/ # Command-line interface
├── domain/ # Domain models and business logic
├── infra/ # Infrastructure implementations
├── k8s/ # Kubernetes configurations
└── utils/ # Utility functions and helpers
- Language: Go
- Database: PostgreSQL
- Message Broker: Kafka
- Containerization: Docker
- Orchestration: Kubernetes
- Development: Air (hot-reload)
- Database Admin: Adminer
The API documentation is available at /swagger when running the application.
The application can be configured through environment variables:
REST_PORT: Port for the REST APIPOSTGRES_*: PostgreSQL configurationKAFKA_*: Kafka configurationDSN_*: Data Source Name configuration
See .env.example for all available configuration options.
Run the test suite:
make testBuild and run using Docker:
make docker-build
make docker-runDeploy to Kubernetes:
kubectl apply -f k8s/Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Patrick Ferraz - Initial work
- Thanks to all contributors who have helped shape this project
- Inspired by modern microservices architecture
- Built with best practices in mind
⭐ Star this repository if you find it useful!