An open API service indexing awesome lists of open source software.

https://github.com/louisstefanuto/miam

A web app to organize cooking recipes and export them in printable formats to share with my family and friends.
https://github.com/louisstefanuto/miam

docker postgresql python recipes-website

Last synced: 3 months ago
JSON representation

A web app to organize cooking recipes and export them in printable formats to share with my family and friends.

Awesome Lists containing this project

README

          

# miam

**A web app to organize cooking recipes and export them in printable formats to share with my family and friends.**

Logo

[![Docs](https://img.shields.io/badge/docs-available-brightgreen.svg)](https://louisstefanuto.github.io/miam/)
[![Coverage](https://codecov.io/gh/LouisStefanuto/miam/branch/main/graph/badge.svg)](https://codecov.io/gh/LouisStefanuto/miam)

[**Install**](#install) • [**Run**](#run) • [**Docs**](https://louisstefanuto.github.io/miam/) • [**Dev**](#dev)

---

## Install

Install dependencies and setup virtual environment. Requires [`uv`](https://docs.astral.sh/uv/getting-started/installation/) installed.

```bash
make install
```

## Run

Launch project using `docker compose`.

```bash
make start
```

Stop project.

```bash
make stop
```

## Documentation

The project's documentation is available on [**GitHub Pages**](https://louisstefanuto.github.io/miam/).

To preview your documentation in real-time while editing, run:

```bash
make docs
```

## Google SSO Setup

Authentication uses Google Sign-In. To configure it:

1. Go to [Google Cloud Console](https://console.cloud.google.com) and create a project (or use an existing one)
2. Navigate to **Google Auth Platform > Clients**, click **Create Client**, select **Web application**
3. Under **Authorized JavaScript origins**, add your frontend URL (e.g. `http://localhost:3000`)
4. Copy the **Client ID** and set it in both env files:

```env
# backend/.env
GOOGLE_CLIENT_ID=your-client-id.apps.googleusercontent.com

# frontend/.env
VITE_GOOGLE_CLIENT_ID=your-client-id.apps.googleusercontent.com
```

5. Go to **Google Auth Platform > Audience** and add your email under **Test users** (required while the app is in Testing mode)
6. Restart both frontend and backend

## Dev

Before pushing to this repo, please setup pre-commit.

```bash
uv tool install pre-commit
pre-commit install --hook-type commit-msg --hook-type pre-push
```

When running the project containers, monitor container resource usage with [Dozzle](https://dozzle.dev/guide/what-is-dozzle).

```bash
make dozzle
```

For performance results under load testing, see the [Locust section](./locust/README.md).

## Architecture

- Containerization: Docker Compose, Docker, Dozzle for container resource monitoring
- Backend: PostgreSQL, FastAPI, SqlAlchemy, Alembic, Python
- Frontend (vibe-coded): React, TypeScript, Vite, Tailwind CSS, shadcn/ui
- Load testing: Locust