Back

Arumdream - Easy Mobile App for Self-Orderings

Mobile application for easy self-ordering for everyone using Flutter, C#, ASP.NET

Stacks being used in this project

C#
C#
AWS
AWS
MariaDB
MariaDB
Flutter
Flutter

What is this project about?

It is a project that extends the concept of “The Friendly Kiosk Project” to mobile solutions.

There was an unexpected amount of resistance to the kiosk itself so to serve as many people as possible, We wanted to create a cross-platform, non-face-to-face solution for both Android and iOS.

POS solution was also developed to improve the inconvenience experience of existing web-based POS system using C# and WPF-like Cross-Platform GUI Framework called Avalonia.

한국어 알기쉬운 키오스크의 컨셉을 이어 모바일 솔루션으로 확장한 프로젝트입니다.

키오스크 자체에 거부감을 가지고 있는 사람이 의외로 있었기에, 최대한 많은 분들께 서비스를 제공하기 위해 해당 인원을 수용하면서 안드로이드, iOS 모두 사용 가능한 크로스플랫폼 비대면 솔루션을 제작하고자 했습니다.

또 기존 알기쉬운 키오스크 솔루션의 불편했던 점을 개선하기 위해 POS 솔루션 또한 C# 기반의 윈도우 어플리케이션으로 제작하였습니다.

Structure

Mobile App

  • Flutter
  • GetX

POS

  • C# (.NET 5)
  • Avalonia

Backend (AWS)

  • Beanstalk (ASP.NET 5)
  • RDS (MYSQL)

What did I do?

As a lead developer, I drew the entire system flow and structure.
And also developed the Mobile self-order application, AWS Backend, and Desktop POS Solution. Details are on below.

  • Built cross-platform mobile application using flutter.
  • Built cross-platform desktop application using C# (Dotnet 5) and Avalonia GUI Framework.
  • Built cross-platform Backend Code using C# (ASP.NET Core 5) using AWS Beanstalk
    • Used AWS lambda first, but it had cold-start issue, so we’ve decided to switch to beanstalk.

Technical challenges

Lambda to Beanstalk

At the first, We were using AWS lambda and Node. The response time was not bad, But in the case of Lambda, it was inconvenient when I had to debug something. And also, it was not suitable for the food ordering app that communicates frequently As AWS lambda charging a fee for a connection. So I decided to move to AWS Elastic Beanstalk, which uses EC2 Virtual Machine. The language was also changed to C# for more convenient development and maintenance by unifying backend code base with POS. The backend was written in ASP.NET 5, and for the POS, it’s based on DOTNET5 and Avalonia. At the result, I was able to speed up developing both of backend and POS system.

Securing API Backend

Another challenge was implementing Login System through API Server. I tried to use the JWT-based token method, but I had to study C# and ASP.NET which were new for me, and since it was my first time to implement the token method, the method was little confusing, I didn’t have enough time to learn it. Also, I had to build all the systems in about a month. I had to find another way somehow. So the way I managed is simply login with email and password returning the user’s Secret Key stored in the DB. I don’t think it’s a good way to go. there were vulnerabilities such as a case the DB is hijacked, the secret key is also able to be stolen. But I think it was the best shot with limited time and limited knowledge I had that time.

Cross Platform Development with C#

Improving the project, I considered several new devices to run POS Application. Linux and Windows, Android were all in option like before. For these various option I chose C# and dotnet core which support cross-platform runtime. However, the .NET Framework does not yet support cross-platform GUI. So, I had to find an alternative way. Avalonia was one of the largest open source cross-platform GUI frameworks. I decided to use this. It was not well documented and the community was not large, so I went through a lot of trial and error, but I was finally able to develop an application with a quite pretty design. If I develop this app again, I would like to use MAUI, which is Microsoft’s brand-new official GUI framework and supports cross-platform including mobile.

Team

  • Team Leader
    • Minwoo Kim
  • Lead Developer
    • Seongbin Yoon
  • Developer
    • Seoyoon Lee
  • Marketing
    • Dabin Son
  • Design
    • Yejin Yoon

Supports

  • Ulsan Youth Centre
  • LINC+ Centre of University of Ulsan
Built with Hugo
Theme Stack designed by Jimmy