https://github.com/patricksferraz/pinned-place
A modern, scalable location-based service built with Go. Features RESTful API, PostgreSQL, Kafka, and Kubernetes support. Perfect for handling location data with high reliability and performance.
https://github.com/patricksferraz/pinned-place
api backend clean-architecture cloud-native database devops distributed-systems docker event-driven go golang high-performance infrastructure-as-code kafka kubernetes location-service microservices postgresql rest-api scalable
Last synced: 5 months ago
JSON representation
A modern, scalable location-based service built with Go. Features RESTful API, PostgreSQL, Kafka, and Kubernetes support. Perfect for handling location data with high reliability and performance.
- Host: GitHub
- URL: https://github.com/patricksferraz/pinned-place
- Owner: patricksferraz
- License: mit
- Created: 2022-02-14T01:20:43.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2025-05-08T14:06:51.000Z (about 1 year ago)
- Last Synced: 2025-08-17T09:35:50.778Z (10 months ago)
- Topics: api, backend, clean-architecture, cloud-native, database, devops, distributed-systems, docker, event-driven, go, golang, high-performance, infrastructure-as-code, kafka, kubernetes, location-service, microservices, postgresql, rest-api, scalable
- Language: Go
- Homepage:
- Size: 71.3 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Pinned Place ๐ฏ
[](https://goreportcard.com/report/github.com/patricksferraz/pinned-place)
[](https://godoc.org/github.com/patricksferraz/pinned-place)
[](https://opensource.org/licenses/MIT)
A modern, scalable location-based service built with Go, designed to handle location data efficiently and reliably.
## ๐ Features
- 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
## ๐ Quick Start
### Prerequisites
- Go 1.18+
- Docker and Docker Compose
- Make (optional, but recommended)
### Environment Setup
1. Clone the repository:
```bash
git clone https://github.com/patricksferraz/pinned-place.git
cd pinned-place
```
2. Copy the example environment file and configure it:
```bash
cp .env.example .env
```
3. Start the services using Docker Compose:
```bash
docker-compose up -d
```
### Development
The project uses Air for hot-reloading during development. To start the development server:
```bash
make dev
```
## ๐๏ธ Project Structure
```
.
โโโ app/ # Application layer
โโโ cmd/ # Command-line interface
โโโ domain/ # Domain models and business logic
โโโ infra/ # Infrastructure implementations
โโโ k8s/ # Kubernetes configurations
โโโ utils/ # Utility functions and helpers
```
## ๐ ๏ธ Technology Stack
- **Language**: Go
- **Database**: PostgreSQL
- **Message Broker**: Kafka
- **Containerization**: Docker
- **Orchestration**: Kubernetes
- **Development**: Air (hot-reload)
- **Database Admin**: Adminer
## ๐ API Documentation
The API documentation is available at `/swagger` when running the application.
## ๐ง Configuration
The application can be configured through environment variables:
- `REST_PORT`: Port for the REST API
- `POSTGRES_*`: PostgreSQL configuration
- `KAFKA_*`: Kafka configuration
- `DSN_*`: Data Source Name configuration
See `.env.example` for all available configuration options.
## ๐งช Testing
Run the test suite:
```bash
make test
```
## ๐ฆ Deployment
### Docker
Build and run using Docker:
```bash
make docker-build
make docker-run
```
### Kubernetes
Deploy to Kubernetes:
```bash
kubectl apply -f k8s/
```
## ๐ค Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
1. Fork the repository
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request
## ๐ License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## ๐ฅ Authors
- **Patrick Ferraz** - *Initial work*
## ๐ Acknowledgments
- 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!