Giter Site home page Giter Site logo

skillsmatrix's People

Contributors

hypnopotamus avatar krohrmeier avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

skillsmatrix's Issues

initial prototype

translate the skills matrix spreadsheet into code and present it in a way that's easier to consume than the spreadsheet

DB migration

rather than seeding the database with data as the way to shape the graphdb soemthing more sophisticated is needed

something needs to be designed and implemented that can

  • version the data model
  • migrate existing data from one version to the next
  • add / remove types from version to version
  • still can seed data on a fresh database at the version matching the application

some of these things might be automatically take care of by the way a graphdb works, some might need explicit thought

app container + navigation

create an app container using material's layout components and guidelines

format the two pages (or however many there end up being by this time) as micro-frontends. Build the page menu out of the registered navigable pages

user auth

provide oauth from at least Google and and Microsoft's providers

fix Comparison page startup

when starting the entire UI (from the container) don't open a browser to localhost:3001, there is no page hosted there (it's hosting the js bundle instead)

when starting just the comparison page allow it to be rendered as a page (do open a browser and have an index.html page served up)

containerize UI comparison app

layer on top of the container built in #38 to create a runnable container serving the build output of the comparison page (the main.js bundle from webpack)

dedupe build scripts

build scripts are duplicated across the api, ui container, and comparison page

dedupe them into a common package that includes the dependencies needed to run the scripts as well as the scripts themselves

for the scripts that don't have exec/spawn output piped to stderr and stdout add that

micro frontend k8 operator

Acceptance Criteria: As a Developer of the Skills Matrix I Don't want to need to manually maintain the script links from the app container to the app pages

  • When a new app page is deployed it should automatically be added to the extra scripts to load in the app container's index html file
  • When an app page is un-deployed it should automatically be removed from the extra scripts to load in the app container's index html file

create an operator that watches ingresses for a known annotation (configuration to the operator, shared value in the code) and rewrites the script tag(s) in the container's index.html page to correspond to micro frontends that are present (or tells the frontend container application which scripts it should load when the pages is loaded)

infrastructure design doc

write up a design doc for the ops-iest part of the devops work for this project

  • local environment
    • include local auth plans
  • deployed environment
  • tools
  • etc

local deployment

deploy to the local environment (build containers, run helm charts)

check db before seeding

when running the db:seed command check that the database is actually empty. If it isn't then don't seed it with the initial data

additional UI/UX design

design for additional pages, user flows, etc. This is a catch-all bucket that additional tasks should flow out of

app container readme

add a readme that explains how the app container works and how to register pages as plugins to it

Reconnect API to local DB

in containerizing and deploying to a local cluster the API lost connection to the local database; localhost inside the container, for the api application, is not localhost to the cluster host, where the tinkerpop container runs

UI container app helm chart

create a helm chart for the UI container container built in #39 to deploy the container app to a kubernetes cluster with ingress

UI unit test

fix / finish the UI unit tests that got trounced in implementing the graph db and ejecting from create react app to update dependencies

replace the prototype comparison page

blocked by #22 and #51

https://xd.adobe.com/view/606b2df3-94c5-4190-a864-2a58fc44ffad-3538/screen/3c78f506-c9ff-4d16-8592-ff500fc8ac85

replace the prototype comparison page with this comparison page, see mockup for details
use only mui components or extensions of mui components

#2 will be completed by this work; the app container has been unit tested and the not unit tested prototype comparison page is going to be replaced by the new page, which will be unit tested as part of this work

security design

write up the design for application security to ready work on implementing it

protect main

mark main as unavailable for push, requiring an approved merge request. setup up the merge request rules

  • collaborators or higher granted explicit access to the repo can approve merge requests, anyone can open one
  • all discussions resolved

api swagger needs to be ingress aware

the pieces of the application are hosted by a single ingress controller. The UI container application is given the default / path as the default entry point. the API is at /api, which lets traffic come into the api however swagger isn't aware of this prefix and needs to generate API calls that include /api in the basepath

server helm chart

create a helm chart to deploy the server container built in #37 to a kubernetes cluster with ingress

IaC Azure environment

IaC to set up an Azure environment similar to or the same as the local environment

manual deploy to Azure

once all pieces can be deployed and are working in a local kubernetes environment

https://github.com/hypnopotamus/SkillsMatrix/blob/master/design/infrastructure.md

  • Iac to
    • spin up an AKS cluster + supporting Azure resources in a resource group
    • get the necessary infrastructure components deployed into the cluster
    • deploy the application components into the cluster
  • manual trigger to get the deployment to go off
  • remote OCI registry + npm package registry
    • would be great if these were managed by IaC as well but if they're already available by virtue of having a github hosted source repo then only nice to have

frontend server setup

  • build an express server that can serve the build output of the UI components (right now, the container app and the comparison page). Build it once and use it for all frontend pieces.
  • Remove the webpack dev server configuration(s).
  • use that server to host both the container app and the comparison page when running locally (assuming containerization has not already begun)

UI application container - navigation by selected page

when a plugin page is selected virtual routing should show the page name in the URL
when the URL has a page component name in it that page should be selected (if someone visited a page, copied the URL, then pasted it back into a new tab, for example)

comparison page redesign

the comparison page from the prototype stage might be better than the spreadsheet but it could be even better with some UX touches and UI niceties

user role protection

differentiate between admin and non-admin users

requires storing and assigning roles somewhere

protection of data access by user role required in the backed
protection of UI view required in the front end

project design doc

write up a design doc for why this project exists and what the plans for it are

include architecture style, patterns, and technologies

graph db

use a graphdb to store and express skill level / title relationships

make Track a domain type

tracks have title(s) and titles have track(s)

  • add a Track domain type
  • seed the DB with the nvisia engineering tracks (technical, project) linked to the nvisia seed Titles
  • add a Track reference property to Title
  • seed Titles with the nvisia Title to Track links
  • update the ReST API
    • Track controller
    • GET Track
    • GET Track/id
    • Track has a TitleLink for contained titles
    • Title has a TrackLink for the track(s) it is on
  • update the comparison page to be able to reconstruct the domain model from the ReST API response

admin UI

new UI page to update the data in the database (through admin API where the domain model enforces rules and guides actions)

CI

add UI / server CI, require that CI passes on merge requests

admin API

create a second API to expose administrative data interaction and retreival, potentially housing a new administrative subdomain model

automatically seed DB

blocked by #24

after #24 extend start up scripts / deployment scripts to automatically seed the DB on startup if it hasn't been seeded already ("hasn't been seeded already" should be part of 24)

multi-page design doc

write out the design doc for the multi-page micro front end. Include future looking reasoning for having the servers for the individual micro front ends return nothing for users not authorized for parts of the UI

CD

on successful CI to main deploy to Azure

local prod-like environment

setup a local environment that is the same as or similar to the deployed environment.

include automated setup and tear down as much as possible

UI application container - current page highlighted

in the UI container make the current page highlighted in some way. Consult Material Design's documentation and Jen to determine what that way is. Make sure the current page is always displayed first, outside of any menus.

containerize UI express server

create a container for the UI content server. The intent is for this to be the base image of UI plugins, they should layer on their build output and their server configuration

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.