124 lines
3.0 KiB
Markdown
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
|