Onemenu

Onemenu #

Project presentation #

Figma link: Presentation

    / [pdf]

Description #

Nowadays there are many ways for customers to order goodies and services. Big corporations such as Ozon, Avito and Yandex have already taken part of the market. However, small businesses still in need of a single customizable application, which will allow better customer experience. After some research, we found that all the available solutions are lacking essential functionalities, such as intuitive UI/UX design, quick in-application support, useful statistics, etc. Onemenu is our solution to the problem.

Weekly reports #

Week 1

Introduction #

Nowadays there are many ways for customers to order goodies and services. Big corporations such as Ozon, Avito and Yandex have already taken part of the market. However, small businesses still in need of a single customizable application, which will allow better customer experience. After some research, we found that all the available solutions are lacking essential functionalities, such as intuitive UI/UX design, quick in-application support, useful statistics, etc. Onemenu is our solution to the problem.

Team Members #

Team MemberTelegram IDEmail Address
Timofey Sedovmoflotast.sedov@innopolis.university
Nikita Bogdankovnikibogn.bogdankov@innopolis.university
Grigorii FilFil126g.fil@innopolis.university
Pavel Nestiurkinwhoevertfp.nestiurkin@innopolis.university

Value Proposition #

Identify the Problem:

  • First pain point is a big amount of different websites, apps, and telegram chats for different restaurants. Our goal is to reduce their number to a unified powerful solution for better user experience. Second one is that almost none of the eating establishments have a loyalty system. Another problem we discovered is that no one uses statistics to improve their efficiency. Lastly, clients experience discomfort, since they don’t have personalized recommendations while they are choosing what to order and where to order from.

Solution Description:

  • We propose a solution, where clients can view a list of different restaurants in one app. It makes the choice of the eateries easier. Also it reduces the number of applications used by a client.

  • Personalization for the client is also one of the ways to solve the problem. Our chat-bot will advise users what to order, because most times it’s hard to choose.

  • One app for a booking system, and an online menu is convenient. Integrated chat-bot will advise the establishment how to improve their business model based on the gathered statistics. Because of the personalization for users, chat-bot will be able to attract clients to the eateries.

Benefits to users:

  • The first benefit for the user is that the user will have one list of all the eating establishments in our website (Telegram WebApp), so the clients won’t need to search somewhere else, or visit different sites to view a menu. It is time saving for the user. The second benefit is personalization. Users will have personalized recommendations and discounts from the eateries, and advising the dishes. Thirdly, since we will gather statistics, we will have the ability to share with customers, amount of each product to buy and which number of dishes to cook more etc. Additionally, our website will have a convenient online menu with a nice design, improving UI and UX.

Differentiation:

  • Our competitive advantage for clients is that they will have a personalized app and it will improve their experience a lot. Also nice design is a rare thing in apps like this.

  • Our competitive advantage for eateries is that they will have personalized advice based on the statistics we gathered. It can improve the business model of the company which is crucial.

User Impact:

  • Our app makes it easier for clients to discover new places to visit and to choose the dishes. The main impact on clients is that they will have a personalized app.

  • Our app improves the productivity of the eateries, because it allows the establishments to reduce the number of people working in your business. Moreover, it allows us to centralize all the systems at once. Advice from AI is a useful tool that improves the workflow.

User testimonials or Use Case:

  • The client came to the restaurant, but they didn’t know what to order. The client asks the chat-bot what to order like: “Advise what to order for four people for less than 100 dollars.” Our chat-bot can advise the user dishes. And also it can help the eateries to sell what they have left more than should. It helps both of the sides.

  • Another example is that the owner of the establishments doesn’t have a big profit, because his business model is not that profitable. Our AI can advise the way to improve the business model based on statistics.

Lean Startup Questionnaire #

What problem or need does your software project address?

  • Our project is aimed to develop a convenient environment for businesses in the food (restaurant) industry. The software we suggest is a system for companies allowing them to take orders automatically, get ratings and statistics, personalize the customers and special offers for them.

Who are your target users or customers?

  • Our target users are going to be the restaurant businesses and end users, i.e. customers of the restaurants using our software. The companies use our solution for unified order taking and their customers for convenient order making.

How will you validate and test your assumptions about the project?

  • We will obtain the data of some certain cafe/restaurant, calculate metrics, analyze the info about sellings and revenue. Then provide the company with our product and evaluate the performance after some time. Compare the data and track the tendencies.

What metrics will you use to measure the success of your project?

  • For the efficiency evaluation we will use the economic metrics which are supposed to be the main ones for any business, e.g., customer retention rate, average order value and the customer satisfaction index.

How do you plan to iterate and pivot if necessary based on user feedback?

  • We will definitely design a process that allows users to give feedback regularly and ensure that the team is actively listening to their suggestions. Based on it, we will modify the trajectory of our further development.

Leveraging AI, Open-Source, and Experts #

AI:

We plan to use AI in several ways:

  • Firstly, we are going to introduce chat-bot helping users to choose dishes from the menu. It often happens that people don’t know what to order and they only have vague desires such as “sweet coffee drink” or “lunch without soup under 500 rubles”. Here comes the chat-bot, which will take into consideration any client desire and provide suggestions.

  • Second way to use AI is to collect and analyze data from the clients and provide them with personal offers such as fixed discounts on all the dishes or discounts on particular combos. We are going to use knowledge acquired during IML and STDSR courses to generate useful statistics and suggestions for the customers.

  • Lastly, we plan to speed up our development using tools such as ChatGPT, Copilot, DALLE, etc. They will help us with bug-fixing, test coverage, meaningful picture placeholder generation and other labor work.

Open-source:

  • We plan to use tailwind css framework as it is providing comprehensive designs for free and it will be very helpful due to the lack of time for the project. For the development part, we will use open source libraries for frontend (React), backend (Pyrogram, Flask), ML (pandas, scikit-learn, numpy, etc.) For the deployment part, we are planning to use docker.

Experts in relevant domain:

  • Andrei Markov - backend specialist, he will help us resolving issues with database scheme
  • Rustam Lukmanov - ML specialist, he will help suggest us on ML problems

Inviting Other Students #

Solution:

  • We plan to invite some students for help in particular parts of our project such as database schema creation and ML-algorithm implementations, since we might not have enough expertise in those fields.

Defining the Vision for Your Project #

Overview:

  • We provide a simple and unified solution for ordering food in restaurants. Telegram bot (with the usage of WebApp) will make it easier for users to interact with the restaurant, and will be able to provide personal offers for each user. AI assistant can help with the choice of dishes.

Schematic Drawings:

Our project scheme

Tech Stack:

  • We will use python for backend and ML because we are most experienced with it. For the server we will use the Flask framework, for telegram bot - Pyrogram. For frontend we will use JavaScript React because we are also familiar with it.

Anticipating Future Problems:

  • One major problem of all software projects is unclear architecture. If we choose the wrong structure of our project now, then, in the future, it would be hard to maintain and develop the product. Moreover, if during the development it turns out that the architecture is unsuitable for our project, then the project will be unfinished. To avoid this, we will thoroughly choose the architecture and development stack in the beginning, and if we find any problems with our choice, we will make corrections as fast as possible to avoid problems in future.

Elaborate Explanations:

  • Our app consists of 3 components: backend server, telegram bot, website. Website and bot will do essentially the same thing: clients will interact with them to order dishes, and restaurant staff will see available orders. Server will be used to process inputs from bot and website, and also for ML (analytics).
Week 2

Introduction #

This week we were mainly focused on choosing the tech stack of the project and robust architecture design. This is important, since if we put “garbage in” now, we will get “garbage out” in future. Also, since we designed the project architecture, assigned the roles and finished all the preparations, we started our working pipeline centralizing our code and issues, assigning tasks for our weekly sprints and reviewing our code on GitHub.

Week 2 questionnaire #

1. Tech Stack Resources: Are you utilizing any project-based books that specifically cover your tech stack and help you build your project?

  • The art of unchangeable architecture
  • Laws of UX (Using Psychology to Design Better Products & Services) by Jon Yablonski
  • Practical Statistics for Data Scientists by Peter Bruce, Andrew Bruce

2. Mentorship Support: Do you currently have a mentor actively involved in your project?

  • To design a reliable architecture, we contacted our fellow expert Andrei Markov for help. His suggestion was to separate our project into several loosely connected parts, in order to increase reliability, readability and scalability. During the meeting, we also made some draft designs and got a suggestion to use GraphQL for the API design.

3. Exploring Alternative Resources: In addition to project-based books, what other resources have you explored to expand your understanding of your tech stack?

  • We found reading documentation being the most useful resource along the way. So, Flask documentation, Pyrogram documentation and GraphQL were the main sources of information for this week. Additionally, we watched some videos on youtube, but there is nothing special about them.

4. Identifying Knowledge Gaps: Are there any specific areas within your tech stack where you or your team feel there are knowledge gaps or expertise is lacking?

  • We feel that the whole project is going to be a new experience for us. But we think that ML and AI in general would be the hardest part of our project. To fill this gap of knowledge we are going to research the ways to implement our ideas in articles, seek suggestions from experts in the field and, more probably, find open-source solutions of similar problems.

5. Engaging with the Tech Community: Have you actively engaged with the broader tech community to seek guidance or learn from experienced professionals in your tech stack?

  • For now, we don’t have problems with implementation in our project. The idea of the project also seems straightforward. Additionally, the tech stack is well documented and popular, so we do not expect to have many problems with it. Thus, we are not engaging with the community, at least now. But as we progress and expand our tech stack, we might encounter irresolvable issues due to poor documentation, lack of knowledge, etc and consider community guidance as a way of resolving.

6. Learning Objectives: What specific learning objectives have you set for yourself and your team in relation to your tech stack this week?

  • For this week our main objective was to familiarize ourselves with the tech stack we have chosen. This was not tracked anyway, instead during weekly discussion, we shared our experience and observations, set up GitHub issues for future development and distributed the tasks.

7. Sharing Knowledge with Peers: How have you been sharing your knowledge and expertise with your teammates?

  • We communicate in several ways: by telegram chat and on offline meetings. On telegram, we usually discuss small topics and a plan for offline meetings. To choose the time for a meeting, we use when2meet. Offline gathering helps us to better communicate with each other and have more productive discussions about the project.

8. How have you leveraged AI to compensate for any lacking expertise in your tech stack?

  • Our team decided not to use AI for this purpose, since it is better to rely on the experience of us, our friends and our experts.

Tech Stack Selection and Team Allocation #

Our project can be divided into three components: backend, frontend, and ML.

  • For the backend we will use Python as it is easy for development and we are experienced with it. We will use the Flask framework for the server part, and Pyrogram for the telegram bot. To store the data about users, cafes, etc., we will use MongoDB. As for the API design, we will use GraphQL due to its ease and functionality.

  • For the ML part, we have not decided yet, since this topic requires additional research. Certainly, we are going to use python for ML-related tasks and API to connect it with the rest of the project, but the details are a bit tricky.

  • For frontend, we have chosen the React framework due to its simplicity and popularity. Figma will be used to make the UI/UX design of our product.

  • Finally, GitHub CI/CD will be used to set up the process of automatic testing of our code for errors and style issues. For deployment we will utilize Docker.

Team allocation Table #

Team MemberTrackResponsibilities
Timofey SedovFullStackTrack progress of the team, assign tasks, work on frontend + backend part of the application
Nikita BogdankovFrontend, DesignUI/UX design of the application, frontend development
Grigorii FilBackendArchitecture design, Database design, backend development
Pavel NestiurkinMLDatabase design, Analytics, Research

Architecture Design #

In this project we are going to have a robust architecture, which will allow us to separate it into microservices. For customers it means the reliability of our service and for us it means easy maintenance of the source code part.

Schematic drawing of the components is shown here:

Our architecture

As for data management we plan to use the PyMongo library to access our Mongo database. For UI/UX design we are already using Figma. Since our project should provide a seamless experience from the very beginning till the end of the customer interaction, we plan to integrate some payment APIs, but we might not be able to connect it during the MVP state of the project. Talking about scalability, because we plan to use microservices architecture, we shall not encounter problems with scalability. As for security, since we do not have any authorization (telegram will provide it for us), the only issue with security we might encounter is data leaks from the MongoDB. We will try to follow all of the best practices to ensure database security. Security of the money transactions is also crucial, but as we said previously, we might not be able to introduce that functionality when the project is in the MVP state. To catch and fix errors in the project we plan to use the Sentry monitoring system. And, for the DevOps part, we plan to set up the rules and CI/CD on GitHub.

Weekly Progress Report #

  • First of all, we distributed roles in our project between team members, so that everyone knows their responsibilities. We resolved the main issues we had about the architecture of the project. Some of our team members had different visions, but, finally, we agreed on one of the variants.

  • Secondly, we identified the final tech stack we are going to use in our application and started working on the UX design.

  • Lastly, we scaled down the vision of our project. As a result, we created this state diagram to set the flow of our application:

Our flow

Week 3

Developing the first prototype, creating the priority list #

As the title proposes, this week we are going to develop the first prototype of our project. But designing only the prototype would be a bad idea, since only 4 weeks are left, therefore during this week we also started our workflow on github, created the first issues and started working on them.

Now, lets discuss how we have finished this week in details.

Technical Infrastructure:

  • We have successfully set our workflow on github because it is convinient for all of the team members, combined a little learning session (about basic git commands), created the first issues and started working on them. From now on, everything is ready for the development of the first prototype.

Backend Development:

  • As for backend development, we have decided to switch our application stack, since it will be easier for us.
    1. We switched from Flask to FastAPI, since it has a better compatability with GraphQL, using strawberry library. Also, it will simplify work with the database tables created via SQLAlchemy library.
    2. Talking about SQLAlchemy, we have decided to use relational database it instead of nosql, since it will allow us to have better data consistency and integrity. Also, it will be easier to work with it, since we have more experience with relational databases.
    3. ML part of the project (as all others) is independently working in a separate branch and has no problems with the stack. Currently, they work on the chatbot, which will be used in our application later.

Frontend Development:

  • We have already designed almost all of the user interface in Figma and from the next week we will start developing frontend components. As we previously said, main UI framework will be React.

Data Management:

  • Due to switch to the relational database, we designed an appropriate design draw.io. We believe, that our design addresses all of the requirements and will be easy to use and scale up. Now, we have to convert it to SQLAlchemy models, fill with fake data and connect it to the backend.

Prototype Testing:

  • We have not started testing yet, since we have not finished the first prototype. But, we have already created a list of test cases, which we will use to test our prototype.

Progress report #

Let’s discuss the progress report in details, what have done, what will be done and what problems we have encountered.

Prototype Features and User Interface:

  • In the current Figma prototype we have implemented UI/UX design for the customer which is the most essential part of our project. You can check the progress of the prototype here. As for the rest of the project, we are still in progress of creation of the actual, working, connected to every service prototype.

Challenges and Solutions:

  • Main challenge was to design an appropriate database without overengeneering, since we had to switch from nosql to relational database. But, we have successfully designed it and now we are working on the implementation of the database.
  • Another challenge was to design a good architecture for the project. We have discussed it with our mentor Andrei Markov and now we have a clear vision of the architecture of the project. We will share it in the next week.

Next Steps:

  • We think that the upcoming week is going to be the most productive as we develop the main components of the application. We created priority list on github and will follow it to develop the first prototype.
    1. Create working prototype and syncronize all of the work across different project directions
    2. Test our architecture and fix bugs
    3. Polish the prototype and prepare for the presentation

Feedback
I have reviewed the reports for Week 2 and Week 3, and I must say they are well-organized and effectively communicate the progress of your project. It is evident that you have put careful thought into the development process. Once the foundational components are in place, I anticipate that further development to create a functional and useful codebase should proceed smoothly.

I am pleased to see that you have sought guidance from someone with experience and expertise. Making informed architectural choices is essential, and it demonstrates a proactive approach to avoiding potential pitfalls or complications that may arise from incorrect technology stack decisions. By consulting with an experienced individual, you can benefit from their knowledge and insights, ensuring a more efficient and effective project execution. Overall, nice reports and progress. 5/5 for both weeks

Week 4

External Feedback #

Telegram WebApp #

After we showed our Telegram WebApp to people from the side, we found a problem. Because the member from our team tested it only on PC and iPhone, he didn’t know that there will be some problems with Android devices. When users opened WebApp on Android, it didn’t work, it showed only a lot of runtime errors, which were not the case on tested devices. We solved this problem updating our build scripts, which for some reason contained a lot of vulnerabilities and outdated packages. After updating, the WebApp started working on Android devices as seamlessly as on other devices.

Frontend #

Some of the test users reported the problem with displaying the WebApp on PC with small screens. In some places the information wasn’t displayed correctly. This was the problem with the architecture of the pages. Fortunately, the fix was easy and by the time of report, we have already made it.

Testing #

We have tested several aspects of our project - the database, the API, and the frontend.

The database had several issues, mainly, it does not contained all the information needed to display on frontend. It was fixed quickly and caused no significant problems.

By the time we decided to connect our frontend with backend, we found that there was a misunderstaning between the teams. Database didn’t contain important information for the frontend application, namely food categories. But it was not that much of a problem, since we have already designed the database and it was easy to add new tables and fill them with data. After that, we have updated our backend to work with the new database. And moved further

The API testing showed that it does not provide thorough validation of input data, and validation models (created with the use of pydantic) have conflicts with the orm models (created by sqlalchemy). We had to remade our validation schemas, and by doing so we found out that we are using the old version of pydantic, so we upgraded it to a newer one. While testing the frontend, we found no critical mistakes, except for popup description of the dish which could not be closed. That was quickly fixed and frontend started working properly.

Iteration #

We thoroughly tested our application in several scenarious both ourselves and with potential users. It showed that we are all human beings and the mistakes are part of our life.

For the next week we will try to deliver even more functionality in our product, make an attempt to properly deploy it. We are continuing to utilize github issues and project board to track our progress and to make sure that we are on the right track. Also as a part of team collaboration, we communicate with each on life meetings and in telegram chat. This helps us to keep team focused and motivated.

Last steps to be made are creating fake database, craeting analytics application and simple telegram bot, allowing to seamlessly broadcast messages to all users.

Week 5

Weekly tasks #

Feedback Collection #

We conducted one on one meetings with users and collected the information associated with frontend and design areas. We asked their overall satisfaction with the product, what they think of the feauture with changing colors based on your Telegram theme. Also we asked them about the possibility to choose to have meal either in restaurant or at home. They were glad to have the feature to choose where they want to eat in one app. Also, that the app is based in Telegram was convenient for them, because they don’t need to visit a website or download an app.

Product usability, functionality, and overall satisfaction #

We asked users the level of convenience of using our application. They shared that it was easy to understand and use, and everything was placed exactly where they expected it to be. Users said that this level of functionality is enough for them, they didn’t find anything else they would like to be in the application. We believe, it happened due to our refinement process which was made previously.

Feedback received from stakeholders #

Overall satisfaction with the product was quite high, users liked the design, the feature with changing colors based on your Telegram theme, the possibility to quickly change the menu from usual mobile dish menu to the one similiar to the cafe, where you can see much more at one screen. But also was noticed some problems with displaying the content on different devices. Because the WebApp on PC with small devices appeared to be wider and shorter tham expected, it caused some problems with the design. But after receiving this feedback, it was quickly fixed.

Feedback prioritization and Necessary changes #

Despite the goods, we still have more work to get done. More specifically, storing orders in the database, creating analytics application and simple telegram bot, allowing to seamlessly broadcast messages to all users. We will try to deliver all this functionality next week.

Product roadmap refinement #

For now we have neither time, nor resources to refine our roadmap for future. If we will see customers’ interest in our product, we will continue to develop it. But for now we are satisfied with the result we have achieved.

Team Members #

If you have questions or anything to share with us, feel free to contact:

Team MemberTelegram IDEmail Address
Timofey Sedovmoflotast.sedov@innopolis.university
Nikita Bogdankovnikibogn.bogdankov@innopolis.university
Grigorii FilFil126g.fil@innopolis.university
Pavel Nestiurkinwhoevertfp.nestiurkin@innopolis.university