rezeptly is a modern, web-based application designed to help you discover, organize, and manage your favorite recipes with ease. Whether you're a seasoned chef or just starting your culinary journey, rezeptly provides an intuitive and elegant interface for all your cooking needs.
- Create & Manage Recipes: Easily add, edit, and delete your own recipes.
- Detailed Instructions: Add structured instructions with step-by-step guidance.
- Ingredient Lists: Keep track of all the necessary ingredients for your recipes.
- Responsive Design: Access your recipes from any device—desktop, tablet, or mobile.
- Server logic lives in
src/lib/server/services/; routes and remote functions stay thin. - Remote functions live in
src/lib/api/*.remote.tsand usequery(),command(), andform()with Zod validation. - Server failures use SvelteKit
error()/redirect()with typed payloads shaped byApp.Error. - Permission failures use the shared
throwNewPermissionError()helper. - Shared error UI renders the server
messageandcodefields.
Follow these instructions to get a local copy of rezeptly up and running on your machine for development and testing purposes.
-
Clone the repository:
git clone https://github.com/your-username/rezeptly.git cd rezeptly -
Install dependencies:
pnpm install
-
Set up environment variables:
Create a
.envfile by copying the example file:cp .env.example .env
Update the
.envfile with your database credentials and other environment-specific settings. -
Start the database:
Make sure Docker is running, then start the PostgreSQL database service:
pnpm db:start
-
Apply database schema:
Push the latest schema changes to your database:
pnpm db:push
-
Seed the database (optional):
Populate the database with sample recipes for development and testing. Run the interactive seed menu:
pnpm db:seed
The interactive menu will present you with the following options:
- Option 1: Seed database (keep existing data)
- Option 2: Clear database and seed with fresh data
- Option 3: Clear database only (no seeding)
- Option 4: Exit
Alternatively, you can use CLI flags for non-interactive mode:
# Clear and seed the database pnpm db:seed -- --clear # Seed only (keep existing data) pnpm db:seed -- --seed
Note: You must run
pnpm db:startandpnpm db:pushbefore seeding the database.
Once the setup is complete, you can start the development server:
pnpm devThe application will be available at http://localhost:5173.
pnpm dev: Starts the development server with hot-reloading.pnpm build: Builds the application for production.pnpm preview: Serves the production build locally for previewing.pnpm check: Runs Svelte check for type-checking.pnpm lint: Lints the codebase using ESLint and Prettier.pnpm format: Formats the code using Prettier.
pnpm db:start: Starts the PostgreSQL database using Docker Compose.pnpm db:push: Pushes the current Drizzle schema to the database.pnpm db:generate: Creates a new SQL migration file based on schema changes.pnpm db:studio: Opens Drizzle Studio to browse and manage your data.pnpm db:seed: Opens an interactive menu to seed or clear the database (requiresdb:startanddb:pushfirst).- Use
pnpm db:seed -- --clearto clear and reseed without the interactive menu. - Use
pnpm db:seed -- --seedto seed without the interactive menu.
- Use
- SvelteKit - The core web framework.
- Drizzle ORM - TypeScript ORM for database access.
- PostgreSQL - The relational database.
- Tailwind CSS - For styling the user interface.
- TypeScript - For type-safe code.
- Vite - The build tool and development server.
