Currently there are a lot of inefficiencies with creating/editing Ultra App configurations. A relatively simple action such as deleting Facebook Ultra in India requires a lot of manual work from the team (i.e. our main server guy manually figuring out the ordering/inheritance of the country/carrier filter stack & deploying config updates by hand).
Considering our ultimate goal is managing hundreds if not thousands of ultra apps, it would be nice to have a scalable system in place that does all of this work automatically with an easy UI....
The purpose of the CMS project is to create a tool that allows anyone on the team to
- Log in with their Samsung Opus Team credentials
- Check what ultra apps are in production (with proper targeting, eg. features enabled/ disabled, etc)
- Add/remove/edit ultra apps in production
- Create timeline of edits to the config files (with time stamps) and store them (with ability to backup at any point).
- Add login functionality + server validation
- Delpoy site to a hosted domain provided by Sergey. Alternatively, hook up a GCP server myself.
- Write a translator in go that translates ultra app configs to config.ini sections
- Blocked atm: Once Michal gets back he will make a simplified version of the config (2 weeks?).
- While building translator, change db schema to include countrymappings, build new dbinitialization on top of that, addNewApp, queries. BIG refactoring project...
- Make export button for the translator on site to be able to export config.ini files.
- Write logic that pushes go-generated config.ini's to production (dev cluster)
- Built out golang restAPI that provides various data at /rest/{category} and /rest/ultra/{appID} in response to GET requests
- Built out Samsung Ultra CMS Index page (with "ultraApps appTray view", working filter mechanics, dynamic elements & mobile css compatibility)
- Built out App Details page with javascript that generates HTML for the app based off a [webApp] JSON object request at /rest/ultra/{appID}
- Get "appTray adding" to work on client-> user provides the info contained in a webApp json
- A nice feature to have on top of adding would be autofill (based off DB)
- Get deleting to work on client
- Designed DB schema for the CMS
- Implemented SQLite implementation of DB schema for the CMS
- Finish implementing DB initialization function โ need to fill these tables during init:
- Countries (All possible countries + MCC codes)
- Operators (All possible operators + MCCMNC codes)
- FeaturedLocations (All possible featured locations, total of 4)
- Versions (All possible supported minVersions of Samsung Max, only 3.1 exists so far)
- AppConfigs (Every existing ultra app state)
- ConfigMappings (Maps every existing ultra app state to an operator and a featured Location)
- Update existing site load mechanics to query the SQL DB instead of the current JSONDB that I made by hand.
- Homepage (Apptray should query appConfigs table to display all apps with unique originalName's)
- Appview Page (On icon click in appTray, JS should query appConfigs+Mappings tables to figure out correct appConfig to show on that page)
- Finish building "smart" select filters.
- Country+Operator select filters should work together, with one reacting based off a selection in the other.
- Update appTray on change, query the appConfig+configMappings tables to figure out which apps to show.
- To do this on client, just implement the applyFilters() function in main.js
- Finish "Add Ultra App" view.
- Currently all it has is all of the fields to input the appConfig
- But, it doesn't have a UX for inputting where to insert this appConfig.
- By default, ALL countries is selected (if app already exists, this config will override the shit out of it everywhere)
- Search-field -> Input a country, press enter -> "ALL" bubble gets replaced with inputted country.
- Country bubble has a dropdown which on press shows all operators that are in the country, all selected by default.
- Submit button, packages all data (appConfig + appMappings) into json, sends to server for insert.
- Still need to finish Server validation โ either rejects & sends error message or approves.
- Reuse finished "Add Ultra App" view components to create a new "ultraApps global view" which shows a breakdown of all apps and their states (different from "ultraApps appTray view")
- Generate configHTML for hover popups on Global View Page on site load.
- Query all unique app configs (with distinct originalNames), and generate a map of html elements to the app config number.
- Optimize globalview query to bring down load time from 7 seconds
- globalView function in main.go