This project represents the "extended prototype" featuring Angular 2 from the DSpace UI Prototype Challenge. This prototype is a collaboration by @mire, Cineca, DuraSpace and Texas A&M.
The goal of this extended prototype is to evaluate the Angular 2 framework as a plausible DSpace UI platform. This includes evaluating whether it meets the SEO needs of Google Scholar.
In Phase 1 of this UI Prototype, we will be rapidly developing a basic Angular 2 UI using Angular Universal (isomorphic Javascript for Angular 2). The purpose of the initial prototype is to simply prove (or disprove) that Angular Universal's server-side rendering capabilities will meet the SEO needs of Google Scholar.
In Phase 1, all development will occur using Node / NPM (these are akin to Maven or Gradle for Java). This will allow us to rapidly build a simple Angular 2 UI against an existing REST API (e.g. http://demo.dspace.org). That simple Angular 2 UI can then be tested by Google Scholar to see if it will meet their SEO needs.
After this phase is complete, we'd simply have a prototype Angular 2 UI that can be installed via Node and pointed at an existing DSpace installation's REST API.
In Phase 2 we will be building an enhanced prototype for demonstration at the OR16 Conference in Dublin. This enhanced prototype will include (but is not limited to):
After OR16, we will work to bring the Angular 2 UI into/alongside Spring Boot (alongside the DSpace Java API, REST API, etc). This will involve migrating the existing Angular2 Node / NPM build process into either Maven (or Gradle), using an available Node plugin for those build tools.
After this phase is complete, we'd have an Angular 2 UI that is provided as part of the normal DSpace installation process.
config.ts
in the root directory.Here's how you can install/run the current prototype:
npm install
Installs local and global dependencies.
./node_modules
subdirectoryconfig.ts
. By default, this prototype currently uses the REST API for https://training-ir.tdl.org
npm run watch
Builds the project, then starts up the node server and watches for any changes to files (if detected, automatically rebuilds the project to see changes immediately). Visit http://localhost:3000/
npm run build
Builds the project. Required to be re-run whenever typescript files are changed.npm run test
Runs node server and a (temporary) proxy to work around CORS and security issues of DSpace REST API. Visit http://localhost:3000/Other available commands:
npm run docs
Generates the TypeDoc documentation (i.e. Typescript docs) in the docs
directory. Should be run and update to gh-pages when typescript is changed.npm run clean
Removes all local dependencies by deleting ./node_modules
. Only useful for testing a fresh install process.Overview of all the parts of the UI prototype:
*.ts
files under src
). Typescript (built by Microsoft) is "typed superset of Javascript that compiles to plain Javascript". It is the recommended language to use with Angular 2, see the 5 min Quickstarttsconfig.json
webpack.config.js
typings.json
src/typings.d.ts
package.json
nodemon.json
Here's where various parts of the codebase are located:
src/app/
is the client-side typescript that drives applicationsrc/server/
is the server-side typescript componentsresources/
is where all static resources (CSS, images, etc) are keptWe've begun to gather a list of useful resources for learning more about these technologies on our Wiki. In particular, take a look at Developer Resources
Other "best practices" to note: