After too many times spent getting ready at a set time to then see all reservations get sniped by bots and disappear before I can click any, I decided to build something that would allow my friends and I to actually be able to get reservations and not have to organise a morning around getting online at a set time.
This is solely intended for personal use. To all those who scalp and resell, you truly ruin it for everyone else.
Cierge is a platform built to support multiple users and handle scheduling reservation jobs. The goal is for a user to select the restaurant, the date, and time slots and Cierge will handle scheduling the execution of the reservation job right when reservations open up for the given date, executing it, and notifying the user of the result.
Cierge is designed to be cloud agnostic but has native support for AWS to allow for the use of Lambdas to perform the job execution and EventBridge to handle scheduling.
The repository is a monorepo and contains multiple components that are each individually versioned. See Components
Warning
Cierge is in active development. Please make sure to use a tagged version of the repo for actual usage.
- Download the binary for the latest release of the command line interface that corresponds to your platform (Mac users, select Darwin, and users with an M series Mac, select Darwin arm64)
- Mac users, open the
pkgfile and install it. Then open a terminal and go to step 2 - For Windows and Linux users, open a terminal from the download location and run the Cierge CLI by doing
./cierge
- Mac users, open the
- Run
cierge initand specify the server host provided to you by the server administrator and your credentials - Connect reservation platforms by running
cierge token add - Verify everything is good by running
cierge status
You are now ready to start creating reservation jobs!
To create a new reservation job, run cierge job create and follow the prompts.
- Create the necessary AWS infrastructure (lambda, KMS key, roles) using the
deploy/aws.tfTerraform- A local implementation of the scheduler and reservation logic is on the roadmap for the next release but at this time, the scheduling and reservation execution via a lambda is only implemented in AWS
- Generate TLS certificates for the host (required in production)
- Complete the server configuration file (
deploy/server.json)- Complete the AWS configuration using the values outputted from the Terraform
- Generate a JWT secret (recommend
openssl rand -base64 64) - Generate and set the database password
- Run the Docker compose file that corresponds to your desired environment
Enjoy!
- Automated reservation booking at the exact time reservations become available
- Drop configurations so you don't have to manually set when the reservation needs to be executed
- Handles multiple acceptable slot times with respective priority to try and ensure that preferred times are booked
- Management of token platforms and maintaining of token lifecycle to allow for seamless experience for users
- Cloud agnostic job execution
- Command line interface for interacting with Cierge
- API library to allow for easy integrations
| Component | Description | |
|---|---|---|
| api | API library for the Cierge API | |
| cli | Command line interface for Cierge | |
| deploy | Infrastructure as code for server deployment | |
| errcol | Error collector designed for wide event logging | |
| lambda | AWS Lambda for the reservation job execution | |
| opentable | OpenTable API library | |
| querycol | Database query collector designed for wide event logging | |
| reservation | Reservation job execution logic | |
| resy | Resy API library | |
| server | Cierge server |
Core functionality and good enough to start sharing.
- Notifications
- OpenTable support
- Local 'cloud' implementation
- Platform token lifecycle management
- Complete user management functionality
- Favourite restaurant functionality
- Complete command line interface
- Website (ugh)
- Complete documentation
- OIDC authentication
- Social authentication