Our Journey from proprietary to open source
Published: 2024-03-21 09:52:40


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ut88t9e4c2e0macvqd98.jpg)
After navigating through proprietary software for four years, we're excited to announce our shift to open source with the launch of Enatega (enatega.com) – a delivery management software tailored for entrepreneurs in the food delivery and related industries.

Here's a brief overview of what Enatega offers:

1. Simplified Setup: Say goodbye to complex workflows and tools. Enatega streamlines the setup process, requiring only a few commands to run the project locally on your system.

2. Flexible Infrastructure: Enatega operates seamlessly across various platforms, offering unparalleled flexibility. Whether testing on emulators or physical devices, Enatega adjusts effortlessly to your setup, allowing for customization to meet your specific needs.

3. Embracing Open Source: Enatega fully embraces open source principles, providing users with access to live demos, comprehensive documentation, and instructional videos. This abundance of resources ensures that users can confidently explore and utilize the software's full capabilities without feeling overwhelmed.
You can find the source code and get started here: ([https://github.com/ninjas-code-official/food-delivery-multivendor](https://github.com/ninjas-code-official/food-delivery-multivendor))

### Our Journey to Open Source:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8cut0d6zjery36r7ryj3.jpg)
Four years ago, we initiated the development of Enatega as a side project under Ninjas Code, our software development agency located at ninjascode.com. Initially, our goal was to compete with a local food delivery app company by leveraging our software development expertise to address identified shortcomings. However, as we realized our lack of marketing skills in facing industry giants, we shifted our focus to assisting others in launching their own delivery services. Initially reliant on third-party marketplaces for marketing, the closure of the marketplace due to unforeseen circumstances marked the end of this phase of our journey.

Recognizing the need for a quick pivot, we utilized our development expertise and decided to open-source our App Repo to overcome our marketing challenges. Since then, we have witnessed significant traction without extensive paid marketing. Our value proposition goes beyond the product itself; we offer visibility to other contributors and provide tangible technical experience by involving them in a project utilized by over 100 startups.

Understanding the importance of monetization, we formulated a business model where the backend is offered as a licensed product, while the API remains open. While many enterprises opt to fully open-source their projects, our business model requires customization and may not be feasible otherwise.

### App Repo Unveiled:
[Enatega Multivendor](https://enatega.com/enatega-multi-vendor/) offers a comprehensive solution for multi-vendor food delivery accessible on iOS, Android, and the Web. We use Amplitude for managing dashboards and analytics, prioritizing high-quality designs for both mobile and dashboard applications to ensure seamless integration with any meal delivery service.

The mobile component is built using React Native and Expo, while React is used for developing the dashboard panel and customer web app. GraphQL is employed across both web and mobile platforms, with the Apollo Client managing endpoint querying and state management. Node, in collaboration with MongoDB, powers the creation of the API.

Enatega Multivendor features a well-organized codebase, streamlining development by removing unnecessary screens and integrating additional functionalities to enhance capabilities for restaurant or food delivery service applications.

Customer Mobile/Web Application:
- Verification of email and phone numbers
- Using Google, Apple, and Facebook for authentication
- Restaurants displayed on the map and home screen based on location
- Information about restaurants includes reviews and ratings, hours of operation, delivery schedules, the menu and items offered, as well as the establishment’s location and minimum order
- Adding an address using Maps integration and Google Places suggestions
- Analytics and reporting on errors with Amplitude and Sentry
- For account creation and order status updates, push notifications and emails to users also include global push notifications to all customers
- Real-time tracking of Rider and chat with Rider option
- Multi-Language and different themes support
- Rating and Review features for order
- Payment Integration for both PayPal and Stripe
- Previous order history and adding favorite restaurants
- Options to add different variations of food items and adding notes to restaurant
- Pick-up and delivery options with different timings
- Options to add different variations of food items and adding notes to restaurant
- Vouchers and Tipping option
- Searching functionality respective to restaurants and their items

Restaurant Application:
- Ringer and Push Notification alert for new incoming order   
- Time limiter for a restaurant to accept orders and setting time option for meal preparation
- Print Invoice option for restaurant
- Delivered orders history
- Changing restaurant status to online/offline
- Order Details with customer information and Order Details
- Real-time order receiving updates
Rider Application:

- Real-time order status change updates
- Push Notification and Ringer feature for a new order
- Map feature showing markers for delivery address and restaurant address with Google Maps integration
- Time limiter for accepting an order and updated time shown for meal preparation time
- The distance and anticipated travel time to the destination (Restaurant and Customer) are displayed
- Real-time chat with a customer option that includes push notifications for chats received on both ends
- History of all orders in progress and new orders
- Online delivery fees that are instantly placed into your wallet, the ability to withdraw money, and wallet history
- Option of changing a status online/offline of rider
Admin Dashboard:

- Role-based administration, whereby the administrator has access to all features while the vendor (the owner of the restaurant) only has access to the management of their own establishments
- Management of Restaurants, Vendors, Restaurants Section
- Defining Zones for Riders and assigning creating zones to Riders
- Managing withdrawal requests from riders and commission rates
- Configuration of application and global level order status management
- Restaurant orders stats and managing their stripe account for receiving commission directly
- Restaurants managing their timings and defining delivery bounds where they can operate
- Restaurants’ menus feature with complete options to add any variety of food with a discount feature
- User, Ratings, Coupon, and tipping option management

**Functionalities for better development experience:**
To make your life as a developer easier, we made sure the code was neatly organized and got rid of any extra screens. For an even better development experience, it is combined with the following functionalities.

- ESLint to provide you with linting capability in Javascript
- Prettier for code formatting
- Jest for unit testing
- Husky to prevent bad commits
What will you have in the Enatega Full App?

- Enatega Multivendor Mobile App (iOS and Android)
- Enatega Multivendor Rider App (iOS and Android)
- Enatega Multivendor Restaurant App (iOS and Android)
- Enatega Multivendor Web App
Admin Web Dashboard
Application program interface server
Analytics Dashboard with Expo Amplitude
Error reporting that is Sentry
**Enatega Technology Stack**

- Application program interface (API) server
- NodeJS
- MongoDB
- ExpressJS
- Stripe
- Paypal
- Nodemailer
- Firebase(for push notifications on web)
- Express GraphQL
- Mongoose(for MongoDB)
Web Dash​​​​​board

- React
- GraphQL
- Bootstrap
- Firebase(for push notification on web)
Mobile App

- React Native
- Expo
- Graphql
- Sentry
- Amplitude
Rider App

- React Native
- Expo
- Graphql
- Sentry
Restaurant App

- React Native
- Expo
- Graphql
- Sentry
Customer Web App

- React
- Material UI
- GraphQL
- Amplitude
- Sentry
- Firebase(for push notification on web)

### Contribute to our Open Source Project
We're thrilled to welcome contributors like yourself, whose input can drive our project forward. Our technology stack is highly sought after, offering an exceptional opportunity for involvement. Feel free to join our active Discord community for any queries: https://discord.gg/9tQrqXjW.
There are two ways to contribute to the project:
1. Issue Creation: Spot areas for improvement or propose new features by creating issues.
2. Pull Request Submission (PRs): Begin by forking the repository, creating a local branch, and requesting assignment of specific issues. Some issues are tagged as "good first issues" to help newcomers kickstart their contributions.
Thank you for dedicating time to read our blog. We eagerly look forward to your valuable contributions to the project.