- D01 - Provide and manage API
- D02 - Intelligent Search
- D03 - Flexible data storage
- D04 - User management & Authentication
- D05 - Data-integrations
- D06 - Data-processing pipeline
- D07 - Event Sourcing & Propagation
- D08 - Improved SPA-Provisioning
- D09 - App Configuration
- D10 - Client Notifications
- D30 - Simplified Frontend Apps
- D31 - Static Landing Page
- D32 - Frontend Component Packaging
- D33 - Corporate Design System
- D34 - Consolidated Logging
The funtionality shall be available to other applications - developped internally as well by external providers. You need to provide a simple API documentation (OpenAPI) as well as the possibility to test the API without custom implementation. The type of API integration shall be provided to the function in a stable way. There is already one concrete requirement that one external integration shall exchange the data XML-formatted instead of standard JSON.
API Management
- Recipe for setup of API Management with Functions
Provide search functionality to the pre-existing function. Optionally you may include:
- fuzzy-search
- facets
- entity-recognition from project descriptions
- or ability to search all (localized) content in English
How can you consider similarities? How can you score or use scoring to qualify results? Examples:
- If one search for an Angular-skilled Dev, it may also show Devs with other JavaScript-Framework experience
- If one search for a JavaScript professional, it could be worthy to get results ordered by a score combined form e.g. range of known Frameworks, number of different projects & years of experiance
You may further extend application-logic with type-ahead/autosuggest functionality in the search-box. Another interesting functionality could be the extraction of intends from the search input. So if the user enters e.g. "define skill" the application opens the according functionality instead of displaying search results.
Cognitive Search (with Skills), LUIS
Integration in Frotend-application is optional (it is completely okay to just demonstrate functionality and concepts on API or Search Explorer).
Implement a data storage concept which allows the dynamic definition of properties for projects and users (in an optimized way). This shall also include the optimiced storage of document attachements. Additionally you may provide a basis implementation for a simple "media library" of project contents.
Cosmos DB
- Adation of Frotend-application to changes is optional (it is completely okay to show functionality on Functions test page only)
- Recipe for setup of Cosmos DB with Entity Framework Core
- Some data is highly referenced to each other (Projects-Users-Skills-Technologies) - what are the chances and benfits of a graph database (Cosmos DB Gremlin API)?
The application needs an appropriate management of its users. It shall as much as possible be separated form the application itself. Provide a management solution with some test accounts as well as a basic integration into the application which shows the concept for data-linking and authorization functionality (roles).
AD B2C
The authentication process with the Frotend-application should work, but its not required to integrate user data in the Frontend (e.g. profile or sign-out functionality).
The application shall integrate other systems and data sources to provide valueable predefined content for users which simplifies usage. The idea is to have a reference implementation to show how this can be achieved in a simple and easy maintainable way. There are two concreate ideas for this (you can implement one or both):
- List of technologies with sort of a "popularity score" which can be used for cool analytics later. This should be periodically updated / re-evaluated so that the trend of this score is available. The pre-evaluated source if hotframeworks.com.
- List of project from organisations SharePoint. It should only create not yet existing projects but avoid the creation of multiple projects with the same name. It shall copy or link all relevant data (e.g. description, logo, links).
Function with Graph-Binding, Logic App, Data Factory Pipeline
- For this lab it is not required to scrap data from hotframeworks.com automatically (CSV exports in folder
D05
) - On the GARAIO AG SharePoint you find project sites under:
\<base-url>/sites/solutions-hub/SitePages/Alle-Projekte.aspx
There are two scenarios for asynchronous data processing:
- The definition of a technology should be simple and recognize automatically additive information such as Logo, Framework-site and others
- As the CV-contents as well as project descriptions shall be used for marketing purposes (public), it must be ensured that it does not contain damage causing content. Therefore whenever a sensitive field is edited by a user, it shall become a status "validating" which starts an automatic validation process to check if it can directly be "published" or needs to be set to "manual validation".
Event Grid, Functions/Logic Apps, Content Moderator, Bing Entity Search, Bing Spell Check, SendGrid Account
(none)
As a business requirement all changes on entities must be tracked so a complete history could be made available.
Furthermore external systems must have a possibility to react on some key events such as creation or deletion of an entity (at best filterable to particular types). Such subscriptions shall be triggered as immediately as possible and be properly manageable. Potential interfaces could be:
- HTTP Webhooks (defined format)
- AMQP Queue/Topic Binding
Event Grid, Service Bus, Functions/Logic Apps
(none)
The provisioning of the Demo UI (as Angular-based Single Page Application) with the capabilities of the Storage Account lacks the support of client side routing functionality. As soon as a sub-route is established, the application cannot be reloaded anymore. As this is a crucial functionality (e.g. to share links) a solution is needed to resolve this problem. Additionally you may provide a solution to use a custom domain or subdomain to access the application.
CDN, DNS Zone
- To implement and test the custom domain functionality you need to have such a domain available.
- Recipe for setup of CDN with routing rules
It is foreseen to massively extend the application with additional services implemented with specific Function Apps. To support this, a solution for central, stable management of business configurations is required. This should also include the concept of Feature Toggles
.
Provide a solution which allows the activation/deactivation of some functionality (e.g. search functionality). Integration into Frotend-application is optional.
App Configuration
The application shall be extended with notification functionaly to shows news of e.g. finished asynchronous tasks or messages to user.
Provide a solution to consume such notifications for the current user in an efficient way (i.e. polling should be avoided).
SignalR Service
Look at the current application as it is part of a bigger landscape with many similar application. A central solution to ingest all relevant application data shall be implemented. Provide a base implementation which shows the relevant concepts for ingestion and direct analytics.
Azure Synapse Workspace
- It may be reasonable to first migrate the Storage Tables based database to Cosmos DB SQL API
The data managed within the application shall be directly available to Power Apps and Power Automate implementations. To prevent additional license costs, the integration shall be done using Microsoft Dataflex (previously known as Common Data Service (CDS) consisting of data structures defined with Common Data Model definitions).
Microsoft Dataflex (aka Common Data Service)
- Note: It is unsure if this is currently realizable and/or what licenses are required to setup and use Microsoft Dataflex
- Demo Session of Build 2019
As Microsoft Teams is becoming the central platform for employee application, a reference integration shall be provided.
The goal is to view the current Frontend-application (or a simplified rebuild using another technology) as an App in Teams. At best the user authentication can be linked with a SSO experience and upcoming notifications in the application are transmitted also to the Teams integration.
(none)
- The basis of a Teams App is to have a
Progressive Web App (PWA)
The vision is to provide frontend applications as more simple Micro Frontends
. Single parts of the current application shall be provided as independent modules with an independent technology stack (e.g. Vue.js, Blazor).
Provide a simple reference implementation of such a module (e.g. management of technologies) with an independent, lightweight provisioning.
Static Web Apps
To provide an immediate available of the Frontend-application on the initial load, so called Static Site Generators
have been discussed. There is an idea to load initially a very lightweight, static page (aka Jamstack
) while loadind and materializing the SPA components in the background.
Provide a simple reference implementation which demonstrates the functionality.
It is not required that this bases on the current Frontend-application or any specific technology.
(none)
(none)
As there are bunch of similar Frontend-applications planned, a system/solutions which allows the easy reuse of single components could be valuable.
Provide a simple reference implementation which show how components can be defined and reused. At best this is integrated in a continous integration/delivery process which also handles versioning and update functionality.
It is not required that this bases on the current Frontend-application or any specific technology.
(none)
The company has a growing number of web applications and is struggling to maintain a consistent styling and look&feel of all those applications. The idea is to somehow build a design system
which beside a living style guide also provides a way to centrally manage CSS styles/themes wich are directly applied by applications.
Provide a simple reference implementation which show how CSS styles can be managed outside of the application scope and applied by the application in a stable and managed way. At best this is integrated in a continous integration/delivery process which also handles versioning and update functionality.
It is not required that this bases on the current Frontend-application or any specific technology.
(none)
- It became popular to manage company-wide Style Guides with
Brand Management Software
such as e.g. Frontify. It may improve customer acceptance if style definitions can be completely managed and controlled in such a system
For improved error analysis but mainly to generate comprehensive business insights, relevant events occurring in the Frontend-application shall directly be logged to the Application Insights
already set up and used by the Azure services.
Depending on the data available, the logging shall include context information (e.g. user identity, device information) to enable the pre-build usage analysis in Application Insights
.
Application Insights