skillsmatrix's People
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 server
create a docker container for the server component
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)
server unit test
add tests for the server part of the skills matrix
convert style guide to mui theme
https://xd.adobe.com/view/606b2df3-94c5-4190-a864-2a58fc44ffad-3538/
the application is already using a material UI theme. As much as possible, translate the style guide into a material theme.
tech showcase roadmap
UI comparison app helm chart
create a helm chart to deploy the comparison app container built in #40 to a kubernetes cluster with ingress
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
containerize UI container app
layer on top of the container from #38 to create a runnable container serving the UI container app
turn the hi fi mock up into tasks
take Jenny's mock up from here https://xd.adobe.com/view/606b2df3-94c5-4190-a864-2a58fc44ffad-3538/screen/3eb2a3f8-1126-4a5c-8631-4fd484c1e947/ and turn the work to go from the current comparison page to that comparison into issues in the repo
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
seed unit tests
add unit tests for the data seeding of the database
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
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
add rank as a title property
- Add a Rank type to the domain model
- seed rank with the three values Junior, Senior, Director
- add a Rank property to a Title
- seed Titles to be linked to the right rank
- update the Title contract type to have a
rank: string
property - update the comparison page to be able to reconstruct the domain model from the ReST API response
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
update app bar to match mock up
- add the nvisia logo
- move the registered page names to the right side, not the left
- you will not be able to take care of changing the name(s) of available pages in this task, the display name is supplied by the page itself ( #50 )
- styling should be taken care of in #48 but anything additional that applies to the app bar take care of here
automatically seed DB
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
database design doc
write up a design doc with the database type choice and why
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.