Code Monkey home page Code Monkey logo

samsungcms's Introduction

SamsungCMS

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

  1. Log in with their Samsung Opus Team credentials
  2. Check what ultra apps are in production (with proper targeting, eg. features enabled/ disabled, etc)
  3. Add/remove/edit ultra apps in production
  4. Create timeline of edits to the config files (with time stamps) and store them (with ability to backup at any point).

To do

  • 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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.