This is a complete full-stack food recipe website built with the T3 stack: TailwindCSS, TypeScript, tRPC, and more. It features a modern, attractive UI and a robust backend powered by Go, Hasura, and PostgreSQL.
- User Authentication: JWT-based signup and login.
- Recipe Management: Create, Read, Update, and Delete recipes.
- Dynamic Content: Add ingredients and steps dynamically.
- Interactive Elements: Like, bookmark, comment, and rate recipes.
- Advanced Filtering: Search by title, filter by category, preparation time, and ingredients.
- Image Uploads: Multiple image uploads with a featured image, powered by a MinIO S3-compatible storage.
- Payments: "Buy a Recipe" feature integrated with Chapa.
- User Dashboards: created recipes, and bookmarks.
- Frontend: Nuxt 3 (Vue 3), TailwindCSS, Pinia, Vee-Validate, Apollo Client
- Backend: Golang (Gin), PostgreSQL
- API Layer: Hasura GraphQL Engine (v2)
- Authentication: JWT
- File Storage: MinIO (S3-Compatible)
- Containerization: Docker & Docker Compose
- Docker and Docker Compose
- Node.js (v18 or later)
- Go (v1.21 or later)
- Hasura CLI (for managing Hasura metadata locally)
-
Clone the Repository
git clone <repo-url> cd food-recipes-app
-
Configure Environment Variables
- Create a
.envfile in thefrontenddirectory. - Update the
docker-compose.ymlfile with your chosen passwords and secrets. Do not commit these secrets to version control.
- Create a
-
Run the Application
docker-compose up -d --build
This command will build the images and start all the services (Postgres, Hasura, Go Backend, MinIO).
-
Apply Hasura Migrations Navigate to the
hasura/directory and apply the database schema and metadata.cd hasura hasura migrate apply --endpoint http://localhost:8080 --admin-secret yourAdminSecret hasura metadata apply --endpoint http://localhost:8080 --admin-secret yourAdminSecretNote: If this is the first time, Hasura might apply migrations automatically from the volume mount.
-
Set up MinIO Bucket
- Access the MinIO console at
http://localhost:9001. - Log in with
minioadmin/minioadmin. - Create a new bucket named
recipes. - Set the bucket's access policy to
Public.
- Access the MinIO console at
-
Install Frontend Dependencies & Run
cd frontend npm install npm run dev
- Frontend App: http://localhost:3001
- Hasura Console: http://localhost:8080
- Go Backend API: http://localhost:3000
- MinIO Console: http://localhost:9001