freedge/README.md
2025-03-10 00:24:26 +01:00

124 lines
3.0 KiB
Markdown

# Freedge
Freedge is a web application that generates personalized recipes based on the ingredients available in the user's fridge. The application is built on a modern fullstack architecture with a lightweight and fast backend, an integrated database, and a smooth user interface.
## Tech Stack
- **Frontend**: React.js + TailwindCSS + ShadCN
- **Backend**: Fastify + Prisma + SQLite
- **AI**: ChatGPT API for recipe generation
- **Payments**: Stripe (subscriptions)
## Project Structure
```
freedge/
├── frontend/ # React frontend application
│ ├── public/ # Static assets
│ └── src/ # Source code
│ ├── components/ # Reusable UI components
│ ├── pages/ # Application pages
│ ├── services/ # API service integrations
│ └── utils/ # Utility functions
├── backend/ # Fastify API server
│ ├── prisma/ # Prisma schema and migrations
│ └── src/ # Source code
│ ├── routes/ # API route definitions
│ ├── controllers/ # Request handlers
│ ├── services/ # Business logic
│ └── models/ # Data models
└── README.md # Project documentation
```
## Getting Started
### Prerequisites
- Node.js (v16+)
- npm or yarn
- SQLite
### Installation
1. Clone the repository
```
git clone https://github.com/yourusername/freedge.git
cd freedge
```
2. Install backend dependencies
```
cd backend
npm install
```
3. Set up environment variables
- Create a `.env` file in the backend directory (or modify the existing one)
- Add your OpenAI API key and Stripe keys
4. Set up the database
```
npx prisma migrate dev --name init
npx prisma generate
```
5. Install frontend dependencies
```
cd ../frontend
npm install
```
6. Start the development servers
In the backend directory:
```
npm run dev
```
In the frontend directory:
```
npm run dev
```
7. Open your browser and navigate to `http://localhost:5173`
## Features
- User authentication with JWT
- Ingredient management
- AI-powered recipe generation
- Subscription management with Stripe
- Recipe history
## API Routes
All routes are prefixed with `/api`.
### Authentication
- `POST /auth/register` - Create a new user account
- `POST /auth/login` - Login and get JWT token
### Profile Management
- `GET /profile` - Get user profile
- `PUT /profile` - Update user profile
### Ingredients
- `GET /ingredients` - Get user's ingredients
- `POST /ingredients` - Add a new ingredient
- `DELETE /ingredients/:id` - Delete an ingredient
### Recipes
- `POST /recipes/generate` - Generate a recipe based on ingredients
- `GET /recipes/history` - Get recipe history
- `GET /recipes/:id` - Get a specific recipe
### Subscriptions
- `POST /subscriptions/create-checkout-session` - Create a Stripe checkout session
- `GET /subscriptions/status` - Get subscription status
## License
MIT