- Based on reactGo (adapted and optimized)
- Original Repo
This is the new uwstf.org - an IT project management webapp used to allocate $5 million dollars across over 100 campus technology projects annually. Any campus organization can use this to begin their own technology projects and seek student endorsement. The STF Committee can use this web platform to review proposals, administer decisions, disperse awards and audit department finances.
The refresh project was an initiative to aggressively modernize the committee and build quality into committee processes. The traditional proposal process has been redefined as a project plan format, encouraging authors to present their information as a "change" to the academic environment. In regards to engineering, we've modernized our stack as much as possible by incorporating best-practices and thinking about the future in our engineering efforts. For more information, read the business case.
Summary: Single Page Application w/ Server-Side Rendered React/Redux. Based on Ant Design by AliBaba, styled with CSS modules and LESS. Served by a Node, Express and MongoDB backend.
- Language: ES6/ES7 with Async / Await for asynchronous code.
- By using future specs of JS, we're keeping our stack as current as possible. State of JS.
- Testing: Enzyme for testing React components
- Strongly backed by the community, maintained by AirBnB.
- Build: Webpack v3 for module bundling / css processing, as well as hot module replacement for dev servers.
- Fake models are pushed into fresh databases using Faker.
- Client Framework: React
- Chosen due to its declarative nature, extensibility, and robust internals / community support. Well supported per State of JS.
- UI/UX Language: Ant Design by AliBaba
- Chosen for its brand compliance and ability to handle / render rich datasets.
- State Management: Redux, with Redux-Query for caching and managing network state.
- State of JS on state management.
- Server: Node.JS
- Chosen for ease of use and development velocity, in addition to working well in our use case (Server Side Rendering).
- Router: Express router implementing Restify APIs
- Provides a consistent interface and query scheme.
- Authentication: Dual-Auth strategy implementing Passport for UW Shibboleth (SAML) and Google (OAuth2).
- Generates mock student profiles in development mode using Google user data.
- Database: MongoDB, using Mongoose for ODM and the autoref / autopopulate plugins.
- Chosen for ease of manipulation and to encourage future developers to manipulate documents outside of the DB, preserving data integrity.