NVRS: Evolution of a Full-Stack Project
Project Background
VRS (Virtual Restaurant System) represents my journey through modern web development and business. It began with a capstone business plan from a top-ranked business school, originally as a vanilla JavaScript app. It slowly evolved into an AWS-based venture with sophisticated frameworks and serverless architecture. It would later be integrated with a Nutritional Assistant™ an LLM-powered feature that interprets the patron's nutritional needs or preferences and recommends a meal based on the menu. VRS demonstrates the natural progression of web application development in today's cloud-first, LLM-driven world.
Current Projects
VRS App — React / TypeScript / Next.js / AI Live
The current production VRS App runs on TypeScript and Next.js with an LLM-powered Nutritional Consultant built in. The consultant accepts voice input via OpenAI's speech-to-text, then hands off to a DeepSeek-powered response agent that reasons over the full menu — including ingredient-level data — to recommend dishes that match each patron's stated preferences, restrictions, and macro targets.
Tech Stack:
Launch the VRS App- React
- TypeScript
- Next.js
- React.js
- Node.js
- Express.js
- MySQL
- OpenAI Speech-to-Text
- DeepSeek API
Nutritional Consultant — How It Works
- Voice or text input: the patron describes what they want — "high protein, no shellfish, under 600 calories."
- Speech-to-text: OpenAI transcribes voice requests into clean text.
- Menu + ingredient lookup: the agent queries the menu and its underlying ingredient table, so recommendations respect allergens, macros, and dietary rules at the component level — not just the dish description.
- Reasoning & recommendation: DeepSeek ranks matching dishes and returns a short, natural-language explanation.
Key Improvements Over the Legacy Build
- Type-safe development with TypeScript to reduce runtime errors
- Server-side rendering and edge deployment via Next.js
- Improved state management and component architecture
- Ingredient-level database schema powering dietary filtering
- LLM-driven conversational ordering (voice + text)
Technical Evolution
Phase 1: Foundation (Vanilla JS)
The original VRS prototype laid the groundwork with:
- Express.js server handling route logic
- MySQL database for data persistence
- Basic client-side JavaScript for interactivity
- Bootstrap for responsive design
- Deployed on traditional server infrastructure
Phase 2: Modern Framework (Next.js with TypeScript)
Evolving the application with current best practices:
- TypeScript implementation for type safety
- Server-side rendering with Next.js
- Enhanced routing capabilities
- Improved state management
- Better code organization and maintainability
- Deployment on Cloudflare Pages for improved performance
- LLM-powered Nutritional Consultant wired into the menu
Phase 3: Building for Growth with AWS
Hardening the platform for scale and reliability:
- Implementing Lambda functions for messaging features
- Robust REST API architecture for CRUD actions
- Cloudflare CDN for faster frontend response
Phase 4: Leveraging LLMs with Purpose
turning the menu from static text into a living, reasoned dataset that an LLM can actually work with.
- Prepared the database to support ingredient-level and food-preparation data so recommendations can respect allergens, macros, and cooking methods, not just dish names.
- Trained DeepSeek, a widely-used LLM, to listen to the patron and recommend menu items based on their stated needs, restrictions, and preferences.
Key Features Across All Versions
- Secure user authentication system
- RESTful API design principles
- Responsive UI across devices
- Scalable database architecture
- Order management workflow
- Restaurant menu configuration
Development Insights
The transition from vanilla JavaScript to TypeScript and Next.js revealed significant advantages:
- Type safety drastically reduced runtime errors and improved developer experience
- Component-based architecture with React simplified maintenance and feature development
- Server-side rendering improved initial load performance and SEO capabilities
- The structured nature of TypeScript enforced better coding practices
- Modern tooling streamlined the development workflow
The upcoming move to AWS Lambda represents our commitment to scalable, maintainable architecture that can grow with demand without significant infrastructure management overhead.
Coming Soon
Next Major Release Features:
- .NET based security implementation
- Admin dashboard with image upload capabilities for menu customization
- Enhanced contextual menu controls for improved navigation
Future Enhancements
- Implementing C# serverless functions on AWS Lambda
- Enhanced API documentation with Swagger/OpenAPI
- Advanced caching mechanisms for improved performance
- Real-time updates using WebSockets
- Integration with third-party payment processors
- Mobile app development with React Native
- Performance monitoring and analytics integration
Try the Apps
Tech Stack Evolution
Original Stack
- • Node.js
- • Express.js
- • Vanilla JavaScript
- • MySQL
- • Apache 2.4
- • AWS (S3, EC2, Route 53)
Current Stack
- • TypeScript
- • Next.js
- • React.js
- • Node.js/Express (Backend)
- • MySQL
- • Cloudflare Pages
Why TypeScript?
TypeScript provides numerous advantages for complex applications:
- Static type checking catches errors during development
- Better IntelliSense and code completion
- Improved code documentation with types
- Enhanced refactoring capabilities
- Greater scalability for team development