Cuisine Courier is a modern recipe browsing and management application built with Next.js, featuring a cozy cabin kitchen aesthetic. The app allows users to discover recipes, save favorites, create collections, and manage their culinary adventures.
- User Authentication: Secure user registration and login system
- Recipe Browsing: Search and browse recipes from TheMealDB API
- Personalized Dashboard: User-specific dashboard showing recent activities, favorites, and collections
- Favorites: Save and manage favorite recipes
- Collections: Create custom collections to organize recipes
- Responsive Design: Beautiful UI that works on all devices
-
Frontend:
- Next.js 15 (App Router)
- React 19
- TypeScript
- Tailwind CSS for styling
-
Backend:
- Next.js API Routes
- Prisma ORM with PostgreSQL (Neon Database)
- JWT/Jose for authentication
-
APIs:
- Integration with TheMealDB for recipe data
-
Deployment:
- Ready for deployment on Vercel
cuisine_courierv2/
├── prisma/ # Database schema and seed data
│ ├── schema.prisma # Database models and relationships
│ └── seed.mjs # Seed script for initial data
├── public/ # Static assets
├── src/
│ ├── app/ # Next.js App Router structure
│ │ ├── api/ # API routes
│ │ ├── auth/ # Authentication pages
│ │ ├── browse/ # Recipe browsing pages
│ │ ├── dashboard/ # User dashboard pages
│ │ └── page.tsx # Home page
│ ├── components/ # Reusable components
│ │ ├── auth/ # Authentication components
│ │ ├── nav/ # Navigation components
│ │ └── ui/ # UI components
│ ├── lib/ # Core functionality
│ │ ├── auth.ts # Authentication logic
│ │ ├── db.ts # Database connection
│ │ ├── mealdb.ts # TheMealDB API integration
│ │ └── favorites.ts # Favorites management
│ └── utils/ # Utility functions
The application uses a PostgreSQL database with the following models:
- User: User accounts and profiles
- Favorite: User's favorite recipes
- Collection: Custom recipe collections
- CollectionRecipe: Junction table for recipes in collections
- Activity: User activity tracking
First, set up your environment variables by creating a .env file in the root directory:
DATABASE_URL=your_neon_database_connection_string
DIRECT_URL=your_direct_neon_connection_string
JWT_SECRET=your_jwt_secret
Then, run the development server:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun devOpen http://localhost:3000 with your browser to see the result.
To populate the database with initial data:
npm run seedThis creates a test user:
- Email: test@example.com
- Password: password123
To build the application:
npm run buildThe project is configured for easy deployment on Vercel with automatic Prisma migrations.
To learn more about the technologies used:
This project is licensed under the MIT License - see the LICENSE file for details.
