Projects
Last update 4/1/2022
Timesheets
This is my first actual professional application. I've put in a lot of sweat and hours (not tears) to this. I find the app to be clean, functional and responsive. Wappier Ltd is my first company that I gained professional experience from. You should check their website, they do a lot of interesting stuff.
Timesheets is the new worklog submission application that wappier personnel can use it to register their effort spent in various projects in SQL tables.
Getting started
The application has 6 main screens, which are shown below.
Home
This is where you get all of your options. There are a lot of things you can do. From the dropdown menu you can select which year you want to view the worklogs of. Also, by tapping the drawer on the left side, you get all the possible routes you can choose.
Notifications
Push notifications and Local notifications will be grouped here. The application is connected with Firebase that supports Cloud-messaging (Push notifications).
My Profile
This is your profile. Here you can view information associated with you.
My Statistics
The Statistics page displays the Projects and the Hours spent in each Project.
Add new Worklog
This is the worklog submission page. Sub-projects are mapped with Projects. This means that by selecting each Project you will be able to see only the associative Sub-projects. The date range will support selecting weeks, instead of days.
Settings
For the moment Sttings page displays 2 options. This is the Day mode and Night mode. The API KEY textfield modifies the initial API KEY. The text textfield will be removed once the SSO is integrated.
Dependencies-
Firebase (Cloud messaging, Push notifications, etc.), Google Analytics. The Google Analytics are integrated to Firebase.
Repository - Everything is on GitLab.
Calendarific API - This is a global event intelligence platform. At the beginning of the project I was thinking about using it, however I did not. Nevertheless the project is configured accordingly and in case you want to use this API, you can, but you need to get your own API keys.
BambooHr - All the user data is fetched by the BambooHr API.
Dart environment sdk: ">=2.1.0 <3.0.0"
Dooriver Technical Requirements
This document fully defines the purpose of Dooriver. It includes details on how the product should be built and supported to ensure it will be successful.
Introduction
Dooriver corresponds in today’s market with a lot of potential. I do not provide source code to this, as it is a big project (maybe my biggest) and I plan on making it a real product. Feel free to contact me if you are interested.
Objective
What is the objective of your app?
Local online delivery is rising for every Product Category nowadays. Dooriver just gives the chance, especially to small local companies, to take part in this trend. Platforms for local online delivery that already exist, serve only food delivery. The target of Dooriver is to expand this trend to unserved type of Companies like groceries , pharmacies and every type of Company that cannot afford creating their own online store.
User Flow
Here is a map that briefly outlines the flow of the app for a regular user. Firstly, by opening the app, the user enters the Welcome Page. Two options are available for the User.
The options are to ‘ Sign up’ or to ‘ Login’.
If the User selects to ‘ Log in’ the Login Page pops up.
However, if the ‘ Sign up’ button is tapped, the Sign up Page pops up.
Here the User must provide his/her telephone number because an OTP (One-Time Password) SMS will
be delivered to him/her.
So, after the User provides his/her OTP he/she is asked to fill in a form with personal information.
After that, the User is Logged. The User is taken to the Home Page.
The User now has two options for making the order. The options are the ‘ Take away’ or the ‘ Delivery’. Then the User can choose between available stores that Deliver in his/her Delivery address or to Take away from a store of his/her choice by typing its name.
Let us say the User chooses the ‘Local Grocery’. The User must now select the products.
The User can now browse between Categories and he/she is given a great option, to find the product of his/her choice by scanning its barcode.
If the User is in a hurry, the choice of finding the product by typing its name is always available.
Lastly, the User is taken to the Cart.
Now the User can choose the date & time , he/she can modify the Product List , the Payment method , and the Delivery address.
Business Requirements
- What is the purpose of the app? What are you trying to accomplish?
The purpose of the app is to help small companies. In addition, the product could have a leading role in retail , as it corresponds to the need that the pandemic caused. The need is doing most of the work that was previously done with natural presence, online - automated and without worries.
- What is the current problem it will solve?
After the end of social distancing, I imagine a new reality in technology that the world will face. Serious problems have arisen concerning the field of digital governance and especially in retail. A lot of small businesses will not be able to overcome the economic disaster they suffered.
So, I took the initiative to create a mobile application that any company of any size will be able to use, to market its products online. In hope that it will help them survive and enter dynamically the new digital era that is rising.
How will it streamline or improve the current process of retail?
- The delivery process gets automated.
- No mistakes through the order (computers do not make the mistakes that a phone call could cause).
- Less staff is needed.
- Advertises the company.
- Organizes the orders.
- Gives the opportunity to enter the digital world.
What is the product vision?
The product vision is to be a ‘ must have’ service for every company that wants to enter the future market of retail.
Other than that, it was originally created to rescue them. So even if the vision is not accomplished, it will be an act of volunteering.
- What aspects are already in place? What needs to be added? Is the app build from scratch?
Dooriver is already created to a great extent. However, some details need to be implemented. User interface and Database are finished , but the app for the businesses needs some work to be finished. In conclusion the most important parts of the app are ready to go. The app build is from scratch because it is completely created by me.
- What should the app be able to do (functionality)?
The app offers an online store for every company that can deliver its products locally to the customer’s home door. So, every potential customer, can make his order online without having misunderstanding problems that a phone call could cause. It is also a great customer experience to have all the products at a blink of an eye.
What features does it have?
- User Accounts a. Phone authentication with SMS code (One-Time Password). b. Personal Profile with saved addresses and orders. c. Available stores depending on location.
- Checkout process a. Specification of date & time. b. Payment method. c. Modification of product list if needed.
- Product selection a. Clear and nice presentation of products. b. Details of the product. c. Selection of product from barcode.
What is the monetization or business model?
There are a lot of ways to charge from an app. Some of them are advertisement and charging the businesses. For the moment I need to make the product work and if an in - app charge is needed that would be no problem at all to implement.
- Are there branding and design guidelines that need to be followed?
There are no branding guidelines , however the design must remain functional and serve the Database that is already created.
Product & Technical Requirements
- What platforms will the app be built for (iOS, Android, etc.)?
The app is written in Flutter which theoretically means it can run on Android, iOS, Google Fuchsia, Web platform, Windows, macOS and Linux. However, the app is intended to be distributed only for iOS and Android.
What operating system versions support it?
- Mobile operating systems: Android Jelly Bean, v16, 4.1.x or newer, and iOS 8 or newer.
- Mobile hardware: iOS devices (iPhone 4S or newer) and ARM Android devices.
- Flutter supports building ahead-of-time (AOT) compiled libraries for x86_64, armeabi- v7a, and arm64-v8a.
- Apps built for ARMv7 or ARM64 run fine (using ARM emulation) on many x86 Android devices.
What are your current services, servers, databases?
The database that the app uses is managed by Firebase. Firebase is Google’s mobile application development platform that helps you build, improve, and grow your app. Local servers face many problems and are considered solutions of the past. Nowadays, Cloud services are much more efficient and reliable, so I chose to use Firebase instead of a local server. Firebase also provides many services. These are Analytics, Crashlytics, Custom domain & SSL, Outbound networking, Virtual Device Tests and many more.
- What are your maintenance needs? Do you need to support it in the future?
**The maintenance of every app is to update it and keep the database functional. Yes, every app needs future support. This is something I can handle on my own.
- Does the app use an API?
An application program interface ( API ) is a set of routines, protocols, and tools for building software applications. Basically, an API specifies how software components should interact. Additionally, APIs are used when programming graphical user interface (GUI) components.
Dooriver does not currently use an API, however I am planning to implement a payment API from the National Bank of Greece, so the transaction information is handled directly from the Bank and not from me.
- Do you have current Apple, Google, or other developer accounts /credentials?
No , I do not own any Apple or Google developer account because I do not distribute any apps with in-app purchasing, so without having a VAT number it would not be legal. The process of creating an account is very simple.
- Are there other credentials that are needed or already exist (analytics systems, platforms, etc.)?
Analytics systems do exist and are handled by the Database platform. No more credentials are needed.
Dependencies
- Hardware that the app will run on/communicate with.
The only hardware dependency that the app needs to run is to have a Camera. This is for the barcode Scanner function. Other than that if the app is connected to the internet , it has no hardware limitations.
- Does your app rely on any third-party APIs?
Currently the app does not depend on any third-party APIs, however when the National Bank of Greece API is implemented, the app will depend from it.
- Profile/account/platform credentials?
All the Profile/account/platform credentials are handled by the Database. The Database is configured on its biggest part and it is easy to manage.
Assumptions
What are the technical assumptions you are making?
Every product faces problems that are not planned. I believe that Dooriver will be no exception. However, this is the job of every mechanic, to solve problems.
What are the business assumptions you are making?
The app can be published in a much shorter period than a regular app that starts today. It is not an idea that is hanging in the air. It is something I am working on for a long time and has all the potential to succeed.
Constraints
The constraints and the limitations rely only on the time of publication. There is no risk , because there are no resources/staff that need to be paid, and the quality requirements are set by me. The development of an app is expensive, but in my case since I am the developer that cost is zero.
App Store Submission
Although app store submission comes after development, it is important to think about the following requirements prior to developing the app. While these will vary depending on the app stores being submitted to, below are the assets and information to include for Apple App Store and Google Play.
Apple App Store Assets
- Tunes Connect Account access
- Company/Entity Name
- App Store app listing name Search
- Bundle ID / SKU
- Demo account for reviewers
- Description
- Support URL
- Marketing
- URL Privacy policy App
- Copyright information
- Contact information
- App icon (1024×1024)
- App Preview Video - can be uploaded in either portrait or landscape format.
- Minimum length of 15 seconds
- Maximum length of 30 seconds
- 500 MB file size
- App Store distribution provision profile App Store distribution code signing identity
- Screenshots (correct sizes based on devices)
Google Play
- Google Play Developer access Store
- Listing name
- Short description
- Full description
- App icon (512×512) 1024 KB file size limit
- Feature Graphic (1024×500) Accepted formats: jpg, png
- Video - If a video is used, the Feature Graphic will be a thumbnail for this video and will have a play button overlay.
- Recommended size: 1920 x 1080 pixels
- Minimum length of 30 seconds
- Maximum length of 2 minutes
- Accepted format: YouTube URL
- App type
- App category - It is vital to choose the right category, or the app will be buried.
- Content Rating
- Contact Email
- Privacy Policy
- Screenshots (correct sizes based on devices)
- Minimum dimension: 320 pixels
- Maximum dimension: 3840 pixels
- Aspect ratio cannot be more than 2:1
- Accepted formats: jpg, png
Legal
My job is to create the app and its features. I cannot handle the legality because I am not a lawyer. This is a problem that can be solved easily , every startup faces it in the beginning. It is not something new.
Employee Performance Appraisal
Introduction
Personal project - main goal is to integrate with HRMS (Human Resource Management Systems) or just Databases and evaluate the performance of each employee.
Basic Flow
There are 3 main options to select from:
- Complete appraisal
- Accept appraisal
- History
Complete appraisal
Accept appraisal
History
Conclusion
The human resources of enterprises are extremely complicated today. This solution just makes everything so simple. It also follows the general hierarch of the Greek public sector. It works seamlessly with HRMS so any company of any size can use it.
Flutter UI Design - Parallax Scrolling
One of the tricks I've found with Flutter. This is for creating a parallax scrolling effect. We mainly see this on websites and javascript projects. Very rare with Flutter. Posted on Youtube to help others too. Source code here: https://github.com/iamspyros/Parallax-Scrolling
Video below.
Keep the see plastic free
This was my first user interface that had a widget carousel. As I look at it right now (after 2 years of developing with Flutter and 6 months of them in production), I don't see anything impressive to be honest. However it was one of the first projects that actually got me into the whole mobile developement so I should mention it. There is a video of it. The source code is not something special, no need to include it. By clicking below, you will be redirected to Youtube.