Recipe Discovery
flexible discovery search powered by structured data for fast, relevant results.
I built Cuispiria to explore working with external REST APIs in a real-world context, and a recipe API provided structured yet dynamic data to experiment with. I also wanted to deepen my understanding of data visualization, particularly around nutritional breakdowns, while strengthening my grasp of server actions, date logic, and reliable error handling patterns.
Home cooking often feels overwhelming and unorganized, making it difficult to discover meals, plan the week ahead, and understand the nutritional value of what you’re eating.
Eliminates scattered recipe searching by centralizing discovery
Replaces disorganized bookmarks with a structured personal library
Removes weekly meal-planning stress with an integrated calendar system
Provides clear nutritional information to support informed eating choices
Cuispiria solves the overwhelm of home cooking by centralizing recipe discovery, structuring meal planning, and providing detailed nutritional information to support consistent, informed decisions.
flexible discovery search powered by structured data for fast, relevant results.
Organize your favorite and customized recipes in a personal library.
Plan your meals with an integrated calendar that syncs with your personal library.
Get clear nutritional information for every recipe to make informed eating choices.
Sensitive operations stay server-side: external API calls, database persistence, session validation, data shaping, and caching. The UI consumes structured, typed data for clarity, performance, and maintainability.
Server Actions over REST Routes
Mutations live close to components with strong TypeScript typing and reduced boilerplate.Server-side Data Shaping
External API data is transformed server-side to provide a clean, consistent interface for the UI.Document-Based Persistence
MongoDB enables flexible iteration of recipe and meal plan models.Strategic Data Caching
External API responses and user-scoped database reads are cached and selectively invalidated to balance performance and consistency.Clear Client-Server Separation
Sensitive logic, tokens, and database interactions never reach the client.The interface prioritizes clarity and momentum: discover quickly, organize confidently, and plan without friction. Visual hierarchy and motion guide decisions without overwhelming the user.
Search-first experience that reduces cognitive load
Structured recipe cards with consistent nutritional visibility
Calendar-based planning built for multi-view scanning
Empty states designed to drive the next logical action
Progressive disclosure for deep nutritional data (macros, details)
Component Architecture
Composable UI primitives built on shadcn/ui with Tailwind-driven consistency.
State Variants
Defined loading, empty, error, and interaction states for predictable behavior.
State Variants
Defined loading, empty, error, and interaction states for predictable behavior.
Interaction Patterns
Server-triggered mutations paired with immediate visual feedback.
Visual Consistency Layer
Shared wrappers and reusable style classes unify Search, Library, and Planning.