This repository is a mock backend service for a recipe browser application where people can find delicious recipes based on the ingredients and tools that they have, food preference, and their cooking mastery level.
This backend application is written in Go (Golang) which the client can connect via RESTful API's with MongoDB as its main database, Elasticsearch as its secondary database for search, and Redis for caching. This backend service is also equipped with a CI/CD tool using Github Actions to test and deploy to an Azure cloud server. Although the tech stacks seem way too overkill for a mock service, they are chosen as a proof of concept of how such an application would be designed in a large production environment.
- Golang 1.21 or later
- Docker Coompose
-
Clone the Repository:
git clone https://github.com/eifzed/makaji.git
-
Navigate to the Project Directory:
cd makaji
-
Setup DB:
docker-compose up
-
Setup Config File
cp ./files/etc/makaji-config/makaji-config.development.yaml.example ./files/etc/makaji-config/makaji-config.development.yaml cp ./files/etc/makaji-secret/makaji-secret.development.json.example ./files/etc/makaji-secret/makaji-secret.development.json
-
Run Application:
docker-compose up --build
-
Access the Application: Once the containers are up and running, you can access the GoLang application at http://localhost:8080.
cmd/
: Contains the GoLang application source code.files/
: Contains the configuration files.internal/
: Contains internal source code.lib/
: Contains common library.model/
: Contains data model.Dockerfile
: Dockerfile for building the GoLang application container.docker-compose.yml
: Docker Compose configuration file for managing containers.README.md
: This README file.
Contributions are welcome! Please feel free to submit issues or pull requests.
This project is licensed under the MIT License.