Skip to content

Repository files navigation

🍔 Foody Licious App

Flutter
Dart
License: MIT
Build

A modern food ordering and delivery app built with Flutter.
Foody Licious provides a seamless experience to browse restaurants, explore dishes, place orders, and manage profiles — all powered by a clean architecture and test-driven development.


✨ Features

  • 🔐 Authentication – Sign up, login, logout using Firebase Auth
  • 👤 User Profile – Update name, phone, and profile details
  • 🍴 Browse Restaurants & Dishes – Explore menus with images, prices, and details
  • 🛒 Cart & Orders – Add items to cart, checkout, and track your orders
  • 🔔 Push Notifications – Get order updates and special offers
  • 🌐 Remote & Local Storage – REST API + local caching with SharedPreferences
  • 📊 State Management – BLoC pattern for scalable architecture
  • 🧪 Unit Testing – Ensuring reliability with test coverage

🛠️ Tech Stack

  • Framework: Flutter
  • Language: Dart
  • State Management: BLoC
  • Backend: Firebase + REST API (Flask)
  • Database: MongoDB
  • Storage: SharedPreferences
  • CI/CD: GitHub Actions (Android builds)

📂 Project Structure

lib/
│── core/ # Error handling, utilities, constants
│── data/ # Data sources, repositories, models
│ ├── data_sources/
│ ├── models/
│ └── repositories/
│── domain/ # Entities, repository contracts, use cases
│── presentation/ # UI (widgets, screens), BLoC
│── main.dart # App entry point
test/ # Unit & widget tests

🚀 Getting Started

Prerequisites

  • Flutter SDK 3.29.3
  • Dart ≥ 3.7.2
  • Android Studio / VS Code
  • Firebase Project setup

Installation

# Clone the repo
git clone https://github.com/your-username/foody_licious.git
cd foody_licious

# Install dependencies
flutter pub get

# Run the app
flutter run

🧪 Running Tests

# Run all tests
flutter test

# Run with coverage
flutter test --coverage

🔑 Environment Variables

The app uses dotenv for environment configuration. Create a .env file in the project root:

BASE_URL = "http://your-api-url"
SERVER_CLIENT_ID = "your_api_key"

🤝 Contributing

Contributions are welcome! 🎉

  1. Fork the repo
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📜 License

This project is licensed under the MIT License.

👨‍💻 Author

Vishnu Mate 💼 LinkedIn | 🐙 GitHub

About

A scalable food ordering & delivery app built with Flutter using BLoC state management and Clean Architecture. Implements dependency injection with GetIt, unit testing with Mocktail, and follows industry best practices for maintainable, testable, and high-quality code.

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages