Ingredo is an AI-powered recipe discovery app that helps users turn available ingredients into practical meal ideas, with recipe search, profile features, and guided cooking flows.
- Frontend: React 18, TypeScript, Tailwind CSS, shadcn/ui, Framer Motion, Wouter, Zustand, TanStack Query
- Backend: Express.js, Drizzle ORM, Neon Postgres, express-session, connect-pg-simple
- Deployment: Vercel
Create environment variables from .env.example and set:
DATABASE_URL: Neon/Postgres connection string used by Drizzle,connect-pg-simple, and server storage.SESSION_SECRET: strong random secret for signing session and CSRF cookies.ADMIN_API_KEY: private key required by admin API routes through thex-admin-keyheader.NVIDIA_API_KEY: NVIDIA API key for the OpenAI-compatible AI pipeline.
The app also reads these platform/tooling variables:
NODE_ENV: set todevelopment,test, orproduction; the npm scripts set this for dev/start.PORT: server listen port; defaults to5000when unset.REPL_ID: optional Replit-only Vite plugin toggle; leave unset outside Replit.
Before deploying, create the session table used by connect-pg-simple:
CREATE TABLE IF NOT EXISTS "user_sessions" (
"sid" varchar NOT NULL COLLATE "default",
"sess" json NOT NULL,
"expire" timestamp(6) NOT NULL
)
WITH (OIDS=FALSE);
ALTER TABLE "user_sessions"
ADD CONSTRAINT "user_sessions_pkey" PRIMARY KEY ("sid") NOT DEFERRABLE INITIALLY IMMEDIATE;
CREATE INDEX IF NOT EXISTS "IDX_user_sessions_expire" ON "user_sessions" ("expire");-
Install dependencies:
npm install
-
Copy env template and fill values:
cp .env.example .env
-
Start development server:
npm run dev
-
Build for production:
npm run build
Run all tests:
npm run test:runType-check:
npm run check