This is a personal project created to improve order management.
It was developed with the intent to accurately, quickly and easily check current orders, what orders are not completed yet, are ready to be delivered or already delivered, the quantity of specific products needed to fulfill current orders and other features, while making the information available anywhere by storing it in a cloud database.
- Add Clients, Products and Orders to a cloud database;
- Show orders from a specific client;
- Show orders of a specific product;
- Show the quantities of all products currently ordered;
- Updating a order's status(long pressing on a DataTable's row);
- Import/Export of clients, products and orders databases to/from .csv files in order to facilitate sharing and/or editing;
- Authentication to allow only trusted accounts to access the information (ability to freely create an account would be removed in a real world implementation or require email/account verification before allowing login);
- Changing Password;
- Translation to different languages;
- Light/Dark Theme;
- Checking for updates (as it is a personal project, publishing in App Stores isn't feasible, so a different update checking system was implemented, not possible for iOS);
- Both portrait and landscape layouts are supported, as landscape layout significantly improves viewing information from the DataTables;
- As a common smartphone's screen width might not be enough to fully display the information from a DataTable's row, an alternative was implemented where clicking a DataTable's row will display all that row's information;
- All searches of clients/products have a "fuzzy searching" implementation with a "hint" list to help the user find the intended client/product;
- Update checking was implemented by having the APKs stored in Firebase Storage and then cross-checking the app's current version and the stored APKs version, downloading and updating if a more recent version is available (this isn't possible in iOS, as it doesn't allow sideloading);
- As all cloud functionalities (as is) require Firebase, any reproduction of this project will require setting up Firebase (more specifically the modules detailed in the next section) and adding both config files (google-services.json and GoogleService-Info.plist) to the project;
- Environment variables are used, so in any reproduction of this project setting them in a .env file (to run locally) and/or Expo (or other building framework) will be necessary. This is an .env example:
# Firebase Config Files
GOOGLE_SERVICES_JSON='./google-services.json'
GOOGLE_SERVICES_PLIST='./GoogleService-Info.plist'
This project was developed with the React Native Expo framework, using a mix of Typescript, CSS and some Javascript.
All cloud features are build using Firebase. The main Firebase features used are:
- Firebase Authentication for user accounts authentication;
- Firestore as a NoSQL DataBase to store data documents;
- Firebase Cloud Storage to store larger files (data exports and updates);
Some of the main packages used are:
- Fuse.js for fuzzy searching;
- i18next for translation implementation;
- React Native Paper for theming and appearance customization
- All other packages are present in package.json;













