El Guacal aims to be a complete, up-to-date, sustainable source of Venezuelan product locations around the world.
Everyone, at some point, needs a taste of home. For the millions of Venezuelans living abroad, finding specific ingredients—like Harina P.A.N., queso de mano, or Pirulin—can be a challenge.
El Guacal aims to be a the largest open database of Venezuelan commercial footprints. It helps the diaspora locate the products that connect them to their culture.
The information comes from the public—anyone can go on the repository and add, edit, or remove locations.
The need for this project is driven by one of the largest displacement crises in the world. As of late 2024, there are over 7.9 million Venezuelan refugees and migrants worldwide 1. This represents approximately 20-30% of the country's total population 2.
This massive movement has created a global demand for Venezuelan goods, leading to a surge in entrepreneurship among migrants who open bodegas, restaurants, and import businesses to serve their communities 3.
This repository is a monorepo managed with moon.
We use Homebrew to manage dependencies. You can install all required tools by running:
brew bundleAlternatively, ensure you have the following installed:
- moon
- pnpm
- Rust
- Node.js (lts/jod recommended)
- Docker (or any container runtime)
- Google Cloud SDK
- Terraform
Install all project dependencies:
pnpm installWe use moon as our task runner. You can run tasks for individual projects from the root.
- Start the database:
docker compose up -d
- Run migrations:
moon run server:migrate-run
- Start the development server:
moon run server:dev
For more details, see apps/server/README.md.
- Generate the GraphQL client:
moon run web:graphql-codegen
- Start the development server:
moon run web:dev
For more details, see apps/web/README.md.
The infrastructure is managed with Terraform and located in the infrastructure/ directory.
For more details, see infrastructure/README.md.
Deployments are handled automatically via GitHub Actions.
- Pull Requests: Every PR triggers linting and testing for both the server and the web application.
- Manual Deploys: We use
workflow_dispatchfor production deployments.
- Server: Go to the "Actions" tab, select "Deploy server to production", and provide the version tag.
- Web: Go to the "Actions" tab, select "Deploy web to production", and provide the version tag.
The release process is managed via Release Please, which automatically creates tags and releases based on conventional commits.