Back to Projects
Full-Stack Developer2025Full-Stack

Vegcom • Vegan & Vegetarian Recipes Platform

In Progress

A full-stack platform that blends community, plant-based cooking, and fun.

Project image 1

The Challenge

Most recipe platforms weren't really built for vegans — they were built for everyone, with a vegan filter slapped on. I wanted to build something where the whole product assumes plant-based by default. That meant thinking through search and filtering properly (meal type, prep time, difficulty), building profiles that reflect a cooking identity rather than just a username, and creating a community feed where people actually want to post. On top of that, I wanted room to grow: a subscription model, an AI assistant, moderation tools. Getting all of that to feel coherent instead of bolted together was the real design challenge.

The Solution

The frontend is Next.js 15 with the App Router, TypeScript throughout, Tailwind CSS v4 for styling, and TanStack Query for server state. The backend is NestJS with Prisma and PostgreSQL. Auth is JWT-based with interceptors on the Axios client so token handling is invisible to components.

The recipe system supports full-text search, multi-param filtering, image uploads via Cloudinary, a Tiptap rich text editor for step-by-step instructions, and drag-and-drop ordering with dnd-kit. Recipes go through a review flow before publishing.

User profiles have two custom sections — one for their published recipes, one for saved favorites — with distinct copy and empty states to give the UI some personality rather than just blank tables.

The community feed supports three post types (posts, resources, announcements), nested comments, likes, and saves. It uses tab state kept in React state rather than URL params to avoid unnecessary middleware re-runs on every tab switch.

The AI chat runs on Gemini. Each session is isolated, and conversation history is fetched from the database and passed back to the model on every request — Gemini has no persistent session state, so that reconstruction happens server-side. Token limits are adjusted based on subscription tier.

Stripe is integrated for subscription management: checkout sessions, the customer portal, and a webhook that updates the user's plan on the backend.

Key Features

  • Recipe creation with rich text, image upload, and drag-and-drop step ordering
  • Advanced search with filters by meal type, prep time, difficulty, and category
  • User profiles with published recipes and saved favorites
  • Community feed with posts, nested comments, likes, and saves
  • Gemini AI chat with per-session conversation history
  • JWT auth with Axios interceptors
  • Stripe checkout and subscription management
  • Notification system with unread count polling

Technologies

Next.jsTypeScriptTanstack QueryNest.jsPostgreSQLPrisma