squaredlabs / nucore-uconn Goto Github PK
View Code? Open in Web Editor NEWThis project forked from tablexi/nucore-open
Northwestern University Core Facility Management Software (NUCore)
License: MIT License
This project forked from tablexi/nucore-open
Northwestern University Core Facility Management Software (NUCore)
License: MIT License
Consider feature-flagging some changes so that they can be more comfortably pushed to upstream.
impact factor: 36
/accounts
/accounts/:account_id/statements
/facilities/:facility_id/:product/
/facilities/:facility_id/:product/:product_id/price_policies
/facilities/:facility_id/:product/:product_id/users/
/facilities/:facility_id/accounts
/facilities/:facility_id/accounts/:account_id/members
/facilities/:facility_id/accounts/:account_id/statements
/facilities/:facility_id/accounts_receivable
/facilities/:facility_id/bundles/:bundle_id/bundle_products
/facilities/:facility_id/facility_accounts(.:format)
/facilities/:facility_id/facility_users
/facilities/:facility_id/instruments/:instrument_id/schedule
/facilities/:facility_id/instruments/:instrument_id/schedule_rules
/facilities/:facility_id/instruments/example-instrument/product_access_groups
/facilities/:facility_id/journals
/facilities/:facility_id/order_statuses
/facilities/:facility_id/price_groups
/facilities/:facility_id/price_groups/:id/accounts
/facilities/:facility_id/products/:product_id/accessories
/facilities/:facility_id/statements
/facilities/:facility_id/training_requests
/facilities/:facility_id/users/:user_id/accounts
/facilities/:facility_id/users/:user_id/orders
/facilities/:facility_id/users/:user_id/orders
/facilities/:facility_id/users/:user_id/reservations
/facilities/list
/global_user_roles
/journal_cutoff_dates
/my_files
/orders
/orders/:id
/orders/:id/receipt
/orders/:order_id/order_details/:id
/orders/cart
/users/:id/user_preferences
TableXI has an example of the unicorn configuration they use for staging environments in config/unicorn/stage.rb
. For our production deployment, we will need our own production unicorn configuration.
I am planning to keep most of their configuration, but replace some of the hard-coded values (e.g., the socket path) to use environment variables instead.
If we decide to build a staging environment to mirror production (which would be a good idea), then we will want to customize the staging configuration as well (config/unicorn/stage.rb
).
Create mockups for use mode facilities and instruments page with A-Z filter for both and see all button.
(See "A CIP of CIDER", page 6.)
A number of classes of text need to be established or redefined to match the design.
Running the the jobs in the whenever
job list using a cron
-based container requires root and makes the operations of those jobs less transparent and loggable to k8s. This is acceptable for the docker-compose setup, but less so for k8s in dev and prod. The jobs in the whenever
job list should be converted to k8s CronJob objects.
See https://github.com/SquaredLabs/nucore-uconn/wiki/Redesign-Mockups#facility-reservations-tab
This will help functionally eliminate the "pull-right" group in the nav, as it will help remove items from it. However, that group should remain in the code so as not to break other people's code.
This project is already compatible with CircleCI, but it needs to be hooked up.
The person deploying the app should be able to set the name of the database the app should use.
Instead of a text list of facilities, create a flexbox with tiles to represent the facilities.
https://github.com/SquaredLabs/nucore-uconn/wiki/Redesign-Mockups#homepage
impact factor: 2
/orders/:id
/orders/cart
https://github.com/SquaredLabs/nucore-uconn/wiki/Redesign-Mockups#tabular-view
impact factor: 1
/facilities/:facility_id/journals/:id
A list of backup solutions should be made and one should be implemented into the Helm chart.
Instead of listing facility contents in a list vertically, create 4 columns, 1 for each category of content.
https://github.com/SquaredLabs/nucore-uconn/wiki/Redesign-Mockups#individual-facility-view
impact factor: 1
/facilities/:facility_id/instruments/list
impact factor: 1
/orders/:id/choose_account
impact factor: 33
/facilities/:facility_id/:product/:product_id/edit
/facilities/:facility_id/:product/:product_id/files?file_type=(.*)
/facilities/:facility_id/:product/:product_id/price_policies/:id/edit
/facilities/:facility_id/:product/:product_id/price_policies/new
/facilities/:facility_id/:product/new
/facilities/:facility_id/accounts/:id/edit
/facilities/:facility_id/bundles/:bundle_id/bundle_products/:id/edit
/facilities/:facility_id/bundles/:bundle_id/bundle_products/new
/facilities/:facility_id/edit
/facilities/:facility_id/facility_accounts/:id/edit(.:format)
/facilities/:facility_id/facility_accounts/new(.:format)
/facilities/:facility_id/facility_users/:facility_user_id/map_user
/facilities/:facility_id/instruments/:instrument_id/offline_reservations/edit
/facilities/:facility_id/instruments/:instrument_id/offline_reservations/new
/facilities/:facility_id/instruments/:instrument_id/schedule_rules/:id/edit
/facilities/:facility_id/instruments/:instrument_id/schedule_rules/new
/facilities/:facility_id/instruments/example-instrument/product_access_groups/:id/edit
/facilities/:facility_id/instruments/example-instrument/product_access_groups/new
/facilities/:facility_id/order_statuses/:id/edit
/facilities/:facility_id/order_statuses/new
/facilities/:facility_id/orders/:order_id/order_details/:order_detail_id/reservations/:id/edit
/facilities/:facility_id/price_groups/new
/facilities/:facility_id/products/:product_id/accessories
/facilities/:facility_id/users/:id/edit
/facilities/:facility_id/users/new
/facilities/:facility_id/users/new_external
/facilities/new
/global_user_roles/:id/edit
/journal_cutoff_dates/:id
/journal_cutoff_dates/new
/orders/:order_id/order_details/:id/edit
/orders/:order_id/order_details/:order_detail_id/reservations/:id/edit
/users/password/edit_current
It would be rather painful for facility owners to have to manage their accounts directly. To that end, we need to ask the KFS team for a nightly feed of facility/account data, and then we need to write an ETL seeder that runs on a cron for it.
impact factor: 6
/facilities/:facility_id/instruments/:instrument_id/schedule
/facilities/:facility_id/instruments/:instrument_id/schedule_rules
/facilities/:facility_id/orders/:order_id/order_details/:order_detail_id/reservations/:id
/facilities/:facility_id/orders/:order_id/order_details/:order_detail_id/reservations/:id/edit
/orders/:order_id/order_details/:order_detail_id/reservations/:id(.:format)
/orders/:order_id/order_details/:order_detail_id/reservations/:id/edit
impact factor: 64
/facilities/:facility_id/:product/
/facilities/:facility_id/:product/:product_id/edit
/facilities/:facility_id/:product/:product_id/files?file_type=(.*)
/facilities/:facility_id/:product/:product_id/price_policies
/facilities/:facility_id/:product/:product_id/price_policies/:id/edit
/facilities/:facility_id/:product/:product_id/price_policies/new
/facilities/:facility_id/:product/:product_id/users/
/facilities/:facility_id/:product/:product_id/users/new
/facilities/:facility_id/:product/new
/facilities/:facility_id/accounts
/facilities/:facility_id/accounts/:account_id/account_users/user_search
/facilities/:facility_id/accounts/:account_id/members
/facilities/:facility_id/accounts/:account_id/statements
/facilities/:facility_id/accounts/:id
/facilities/:facility_id/accounts/:id/edit
/facilities/:facility_id/accounts_receivable
/facilities/:facility_id/bundles/:bundle_id/bundle_products
/facilities/:facility_id/bundles/:bundle_id/bundle_products/:id/edit
/facilities/:facility_id/bundles/:bundle_id/bundle_products/new
/facilities/:facility_id/disputed_orders
/facilities/:facility_id/edit
/facilities/:facility_id/facility_accounts(.:format)
/facilities/:facility_id/facility_accounts/:id/edit(.:format)
/facilities/:facility_id/facility_accounts/new(.:format)
/facilities/:facility_id/facility_users
/facilities/:facility_id/facility_users/:facility_user_id/map_user
/facilities/:facility_id/instruments/:instrument_id/offline_reservations/edit
/facilities/:facility_id/instruments/:instrument_id/offline_reservations/new
/facilities/:facility_id/instruments/:instrument_id/schedule
/facilities/:facility_id/instruments/:instrument_id/schedule_rules
/facilities/:facility_id/instruments/:instrument_id/schedule_rules/:id/edit
/facilities/:facility_id/instruments/:instrument_id/schedule_rules/new
/facilities/:facility_id/instruments/example-instrument/product_access_groups
/facilities/:facility_id/instruments/example-instrument/product_access_groups/:id/edit
/facilities/:facility_id/instruments/example-instrument/product_access_groups/new
/facilities/:facility_id/journals
/facilities/:facility_id/journals/:id
/facilities/:facility_id/journals/new
/facilities/:facility_id/manage
/facilities/:facility_id/movable_transactions
/facilities/:facility_id/notifications
/facilities/:facility_id/order_statuses
/facilities/:facility_id/order_statuses/:id/edit
/facilities/:facility_id/order_statuses/new
/facilities/:facility_id/price_groups
/facilities/:facility_id/products/:product_id/accessories
/facilities/:facility_id/statements
/facilities/:facility_id/statements/:id
/facilities/:facility_id/statements/new
/facilities/:facility_id/training_requests
/facilities/:facility_id/transactions
/facilities/:facility_id/users
/facilities/:facility_id/users/:id
/facilities/:facility_id/users/:id/edit
/facilities/:facility_id/users/:user_id/accounts
/facilities/:facility_id/users/:user_id/orders
/facilities/:facility_id/users/:user_id/orders
/facilities/:facility_id/users/:user_id/reservations
/facilities/:facility_id/users/new
/facilities/:facility_id/users/new_external
/journal_cutoff_dates
/journal_cutoff_dates/:id
/journal_cutoff_dates/new
/log_events
Create updated mockup with cart (#) before logout, and global settings after search and before logout.
impact factor: 5
/accounts/:account_id/account_users/new
/facilities/:facility_id/:product/:product_id/users/new
/facilities/:facility_id/accounts/:account_id/account_users/user_search
/facilities/:facility_id/users
/global_user_roles/search
impact factor: 1
/facilities/:facility_id/orders/:id
Currently, the Helm chart exposes the MySQL password of the database that's running, instead of passing it through a secret. It also lacks a NUcore secret input, I think secrets are currently just regenerated every time. Finally, the MySQL password is output in the logs while the app runs. These things should be fixed so the secrets don't leak to people viewing logs or kubectl
object descriptions.
impact factor: 1
/facilities/:facility_id/order_imports/new
A facility sub-item, such as an item or instrument, should have a "purchase" quick link to bypass the page for the item. This link is located directly below the name of the sub-item, and the name should keep the current functionality.
https://github.com/SquaredLabs/nucore-uconn/wiki/Redesign-Mockups#individual-facility-view
Example: https://circleci.com/gh/SquaredLabs/nucore-uconn/54
Sending report to https://codeclimate.com for branch master... bundler: failed to load command: report_coverage (/home/ubuntu/nucore-uconn/vendor/bundle/ruby/2.4.0/bin/report_coverage)
RuntimeError: HTTP Error: 401
/home/ubuntu/nucore-uconn/vendor/bundle/ruby/2.4.0/gems/codeclimate-test-reporter-1.0.8/lib/code_climate/test_reporter/client.rb:70:in `post_results'
This step in the build process sends reports to CodeClimate. In order to do this, the CODECLIMATE_REPO_TOKEN
environment variable needs to be set in circle. This token comes from a codeclimate account. We can discuss if you want to set up your own account. It should be free for open source projects.
Otherwise, for now you can remove that line from the circle.yml
file (https://github.com/SquaredLabs/nucore-uconn/blob/master/circle.yml#L23)
I would also recommend removing the deployment
section. That is a step that automatically deploys to a stage server on successful builds. We do that through capistrano (see config/deploy.rb
and config/deploy/staging.rb
). Currently, we only do this continuous deployment on the open source branch. For the school-specific ones we do manual deployments; this is largely because of firewall restrictions making it hard to deploy from Circle (p.s. Circle 2.0 is on the horizon, we just haven't gotten there yet.)
impact factor: 1
/facilities/:facility_id
Update Mockup with changes to the manage drop down, moving search to the top of the drop down.
Updated mock up with "view" link to the right of the "purchase" link for Example Facility view of instruments, services, items, and bundles.
impact factor: 7
/accounts/:account_id
/facilities/:facility_id/accounts/:id
/facilities/:facility_id/manage
/facilities/:facility_id/orders/:order_id/order_details/:order_detail_id/reservations/:id
/facilities/:facility_id/statements/:id
/facilities/:facility_id/users/:id
/orders/:order_id/order_details/:order_detail_id/reservations/:id(.:format)
https://cider.uconn.edu/facilities/example/users/new gives "The user could not be located in the university database. Please make sure you typed the NetID correctly."
Probably will have to integrate with kennel, as LDAP is not going to be allowed and extra SAML attrs (if possible) would take time.
We want deployments in k8s to support SSL.
Use:
Relevant docs on using ACME validation for cert manager here: http://docs.cert-manager.io/en/latest/tutorials/acme/dns-validation.html
impact factor: 15
/accounts/:account_id
/accounts/:account_id/statements
/facilities/:facility_id/:product/
/facilities/:facility_id/accounts/:account_id/statements
/facilities/:facility_id/accounts/:id
/facilities/:facility_id/bundles/:bundle_id/bundle_products
/facilities/:facility_id/orders
/facilities/:facility_id/reservations
/facilities/:facility_id/statements/:id
/facilities/:facility_id/users/:id
/facilities/:facility_id/users/:user_id/accounts
/facilities/:facility_id/users/:user_id/orders
/facilities/:facility_id/users/:user_id/orders
/facilities/:facility_id/users/:user_id/reservations
/orders
impact factor: 18
/facilities/:facility_id/:product/
/facilities/:facility_id/:product/:product_id/price_policies
/facilities/:facility_id/:product/:product_id/users/
/facilities/:facility_id/accounts
/facilities/:facility_id/accounts/:account_id/members
/facilities/:facility_id/bundles/:bundle_id/bundle_products
/facilities/:facility_id/facility_accounts(.:format)
/facilities/:facility_id/facility_users
/facilities/:facility_id/instruments/:instrument_id/schedule
/facilities/:facility_id/instruments/:instrument_id/schedule_rules
/facilities/:facility_id/instruments/example-instrument/product_access_groups
/facilities/:facility_id/order_statuses
/facilities/:facility_id/price_groups
/facilities/:facility_id/price_groups/:id/accounts
/facilities/:facility_id/products/:product_id/accessories
/facilities/list
/global_user_roles
/journal_cutoff_dates
A volume should be added to persist uploaded assets.
https://cider.uconn.edu/facilities/:facility_id/accounts/:account_id/members
allows people to add others to their accounts. The available roles one can assign to someone else are "Owner", "Business Administrator", "Purchaser". The different kinds of roles UConn has are "Account Owner", "Principal Investigator", "Account Manager", and whoever's authorized on the account to buy stuff. We've agreed the actual account owner from KFS doesn't necessarily need to be listed, so the mapping would be as follows:
These changes can be made with the i18n settings.
Establish a consistent language for buttons and their active states so that smaller changes can be made to other views based on these sets of aesthetic rules.
@robstolarz please add more detail as needed
If the order form feature is turned on for a facility, the display of each product type as a list doesn't work, and instead they show in the long list as if the column feature was off.
It appears to be because with the form we have this: .product_list_container.columns > form > .product_list.columns
. If I move the .product_list_container.columns
onto the form, then it mostly works except it messes up the "Create Order" button.
Also, I believe we can safely remove the product_list_columns_on
feature flag for this.
Reference: https://github.com/tablexi/nucore-open/pull/1570/files
The README.md should be updated with instructions on how to test the application as a docker-compose
app as well as instructions on how to bring up a local dev k8s cluster with CIDER running in it (like the ones found here but written more carefully).
Additionally, the chart has a NOTES.txt file that is templated and output to the user at the time of the Helm chart being deployed. This file should be updated to have relevant information about the application.
See https://github.com/SquaredLabs/nucore-uconn/wiki/Redesign-Mockups#overall-design-cheat-sheet.
An image should be added and some text should be changed. The text is from app_name
, whatever that is.
Should this be implemented with a ViewHook or with an optional image? Part of this feature needs to go upstream.
impact factor: 9
/facilities/:facility_id/disputed_orders
/facilities/:facility_id/journals/new
/facilities/:facility_id/movable_transactions
/facilities/:facility_id/notifications
/facilities/:facility_id/orders
/facilities/:facility_id/reservations
/facilities/:facility_id/statements/new
/facilities/:facility_id/transactions
/log_events
impact factor: 1
/facilities
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.