A Go application that helps automate restaurant reservations on Resy.
- Make restaurant reservations through Resy's API
- Local development and testing support
- GCP Cloud Run deployment ready
- Configurable through environment variables
- Detailed logging for debugging
- Go 1.24 or later
- Make
- Docker (for container builds)
- Resy API credentials
- GCP account (for deployment)
- Clone the repository:
git clone https://github.com/aaron-lau/go-get-resy-table.git
cd go-get-resy-table- Install dependencies:
go mod tidy- Create a
.envfile:
RESY_API_KEY=your_api_key_here
RESY_AUTH_KEY=your_auth_key_here
PORT=8080
DEBUG=trueOr with debug logging:
DEBUG=true make runRun all tests:
make testTest the API endpoint:
make curl-testcurl -X POST http://localhost:8080/book \
-H "Content-Type: application/json" \
-H "X-Resy-Auth-Token: ${RESY_AUTH_KEY}" \
-d '{
"restaurant_name": "Test Restaurant",
"date": "2024-02-14",
"time": "19:00",
"party_size": 2
}'go-get-resy-table/
├── cmd/
│ └── main.go
├── internal/
│ ├── config/
│ │ └── config.go
│ ├── handlers/
│ │ └── reservation.go
│ └── resy/
│ ├── client.go
│ ├── models.go
│ └── service.go
├── terraform/
│ ├── main.tf
│ ├── variables.tf
│ └── outputs.tf
├── Dockerfile
├── Makefile
└── README.md
make run: Run the applicationmake test: Run all testsmake build: Build the applicationmake clean: Clean build artifactsmake curl-test: Test the API endpointmake run-debug: Run with debug logging
| Variable | Description | Required | Default |
|---|---|---|---|
| RESY_API_KEY | Resy API Key | Yes | - |
| RESY_AUTH_KEY | Resy Auth Token | Yes | - |
| PORT | Server Port | No | 8080 |
| DEBUG | Enable Debug Logging | No | false |
docker build -t go-get-resy-table .cd terraform
terraform init
terraform apply- Implement actual Resy API integration
- Add authentication middleware
- Add rate limiting
- Implement retry logic
- Add metrics and monitoring
- Add more comprehensive tests
- Add CI/CD pipeline
- Thanks to Resy for their API
- Built with Go and ❤️