ChloroFill is a modern, responsive web application showcasing meal and cocktail recipes, built with Vue 3.
This project demonstrates the integration of modern frontend technologies to create a dynamic Single Page Application (SPA). It started as a static layout and evolved into a feature-rich app using:
Note on Future Development: This project served as the foundation for a new version built with Nuxt 3 (SSR) for enhanced SEO and features. All future enhancements and active development will occur in the Nuxt project. This Vue 3 SPA version remains available as a reference or for other uses. You can find the Nuxt project here: ChloroFill Nuxt Edition.
- Vue 3 (Composition API): Leveraging
<script setup>for clean and efficient component development. - Vite & Bun: Ensuring a fast development experience and optimized builds.
- External APIs: Fetching recipe data from TheMealDB and TheCocktailDB, with development proxy setup to handle CORS.
- Routing: Client-side navigation managed by Vue Router, including dynamic routes and lazy-loading.
- Styling: Responsive design achieved with Bootstrap 5 (SCSS) and custom theming, including a persistent light/dark mode toggle.
- State Management: Utilizing Vue Composables for managing global state (Theme, LocalStorage Favorites).
- Dual Recipe Types: Browse and search both meal and cocktail recipes.
- Responsive UI: Mobile-first design using Bootstrap 5 SCSS.
- Dark Mode: Persistent theme switching with smooth transitions.
- API Interaction:
- Async data fetching from multiple REST APIs.
- Vite proxy for handling CORS in development.
- Simple in-memory caching with TTL for API responses.
- Client-Side Favorites: Save favorite recipes locally using
localStorage. - Search Functionality: Debounced, combined search across both recipe APIs.
- UI Components: Reusable components for cards, carousels, modals, loaders, error messages.
- SEO Basics: Dynamic page titles and meta descriptions using
@vueuse/head. - Modern Tooling: Built with Vite and managed with Bun.
- Framework: Vue.js 3 (Composition API)
- Build Tool: Vite
- Package Manager: Bun
- Routing: Vue Router 4
- Styling: Bootstrap 5 (SCSS), PrimeIcons
- State Management: Vue Composables
- APIs: TheMealDB, TheCocktailDB
- Libraries:
vue-toastification,@vueuse/head
-
Clone the repository:
git clone https://github.com/hkgonebad/chlorofill.git cd chlorofill -
Install dependencies:
bun install
-
Run the development server:
bun run dev
The application will be available at
http://localhost:5173(or the port specified by Vite).
- Push your code to a Git provider (GitHub, GitLab, Bitbucket).
- Import the project into Vercel.
- Configure Vercel settings:
- Framework Preset: Vite
- Build Command:
bun run build - Output Directory:
dist - Install Command:
bun install
- Deploy!
- Advanced filtering options.
Contributions, issues, and feature requests are welcome.