TasteFinder.de is a cutting-edge, cloud-based application that helps users discover new restaurants based on their location. Leveraging the power of modern technologies, TasteFinder provides a seamless and intuitive user experience, making the search for your next dining experience a breeze.
Disclaimer: At the moment, TasteFinder.de only works for the following cities:
- Berlin
- Hamburg
- Cologne
- Munich
- Frankfurt
- Münster
- Emsdetten
If you love to see the city you are living in or visiting added to the list, please let me know!
To get started with TasteFinder, clone the repository and follow the instructions in the individual paragraphs for each submodule. Make sure you have the necessary environment variables set up and the required permissions for AWS resources.
The ingest
submodule, written in Java, is responsible for fetching and processing data from external sources. It uses
the Google Places API to gather information about restaurants in various locations. The data is then ingested into an
AWS S3 bucket for further processing and use.
To get started with the ingest
module, follow these steps:
- Navigate to the
ingest
directory. - Set up your environment variables. You will need to provide your Google Maps API key and AWS credentials.
- Run the application using Maven:
mvn clean install
.
The infrastructure of TasteFinder is managed using Terraform, a popular Infrastructure as Code (IaC) tool. The Terraform scripts define and provide data for resources such as AWS Lambda for the backend, AWS S3 for data storage, and AWS Route53 for DNS management. This approach ensures that the infrastructure is easily reproducible, scalable, and maintainable.
To get started with the terraform
module, follow these steps:
- Navigate to the
terraform
directory. - Set up your AWS credentials.
- Initialize Terraform:
terraform init
. - Have your domain name ready.
- Apply the Terraform configuration:
terraform apply
.
The lambda
function, written in Rust, is the heart of our backend. It fetches the ingested data from the S3 bucket,
processes it, and serves it to the frontend. The function is deployed on AWS Lambda, ensuring scalability and
performance.
To get started with the lambda
module, follow these steps:
- Navigate to the
lambda
directory. - Have your AWS credentials ready.
- Build the application using Cargo:
cargo lambda build --release
. - Test the function locally:
cargo lambda invoke fetch-index --data-file 'test/payload.json'
. - Deploy the function to AWS Lambda.
The frontend of TasteFinder is a single-page application written in JavaScript. It provides a user-friendly interface for users to interact with the application. The frontend fetches data from the backend, displays a local restaurant option.
To get started with the frontend
module, follow these steps:
- Navigate to the
frontend
directory. - Open the
index.html
file in your browser.
Remember to replace the placeholders with your actual values. Enjoy using TasteFinder!