From b16aca685ab8302906f928ce61533c071a62152e Mon Sep 17 00:00:00 2001 From: davemess34 Date: Wed, 30 May 2018 16:53:26 -0400 Subject: [PATCH 1/6] first cut --- .../enterprise_mobile.v1.0.js | 61 +- .../projectQuestions/enterprise_web.v1.0.js | 896 ++++++++++++++++++ .../typeToSpecification.json | 1 + src/config/projectWizard/index.js | 9 + 4 files changed, 939 insertions(+), 28 deletions(-) create mode 100644 src/config/projectQuestions/enterprise_web.v1.0.js diff --git a/src/config/projectQuestions/enterprise_mobile.v1.0.js b/src/config/projectQuestions/enterprise_mobile.v1.0.js index a4bc672ca..88b75ef24 100644 --- a/src/config/projectQuestions/enterprise_mobile.v1.0.js +++ b/src/config/projectQuestions/enterprise_mobile.v1.0.js @@ -43,7 +43,7 @@ const sections = [ validationError: 'Please let us know the target device', title: 'App Type', description: 'What type of application are we developing? Please \ - place an X in the Required column for each required app \ + the required app \ type. Please note that each additional app type incurs \ a cost, but that the cost will be detailed and broken \ out in the final project proposal. ', @@ -53,7 +53,7 @@ const sections = [ { value: 'ios', label: 'iOS App - An app built for iPhone or iPads' }, { value: 'android', label: 'Android App - An app built for mobile phones or tablets running Android.' }, { value: 'hybrid', label: 'Hybrid App - An app built using a hybrid framework (ex. Ionic/Cordova/Xamarin) and exported to one or more operating systems (iOS, Android or both).' }, - { value: 'web', label: 'Progressive Mobile Web App - An app that is accessed by using a mobile web browser like Safari or Chrome, but that provides a native mobile app experience (rich features, i.e access device features such as GPS)' } + { value: 'web', label: 'Mobile Web App - An app that is accessed by using a mobile web browser like Safari or Chrome.' } ] }, { @@ -92,7 +92,7 @@ const sections = [ { required: false, hideTitle: false, - title: 'Style Guide & Brand Guidelines -- Please add your answers below. If you do not know the answer, please add “Open to suggestions from the community/looking for creative solutions”', + title: 'Style Guide & Brand Guidelines - Please add your answers below. If you do not know the answer, please add “Open to suggestions from the community/looking for creative solutions”', description: '', type: 'questions', questions: [ @@ -133,7 +133,7 @@ const sections = [ { required: false, hideTitle: false, - title: 'User Roles', + title: 'User Roles - Please use the fields below to specify the type of users/roles for the application. If the role is not applicable, please enter N/A', type: 'questions', description: 'Please select each for each user type/role. Please provide details on what the user/role should do in the Description column.', questions: [ @@ -166,7 +166,7 @@ const sections = [ { required: false, hideTitle: false, - title: 'Integrations', + title: ' - Will this application be dependant on data from another system or tool? If yes, please briefly describe that dependency here. This can include integration with an API or an existing backend/database.', description: 'Will this application be dependant on data from another system or tool? If yes, please briefly describe that dependency here. This can include integration with an API or an existing backend/database.', type: 'questions', questions: [ @@ -200,16 +200,14 @@ const sections = [ id: 'screen-features', required: false, hideTitle: false, - title: 'Screens and Features', + title: 'Screen and Features', description: '', type: 'questions', questions: [ { icon: 'question', title: 'Screen / Feature List', - description: 'Please note that each added feature incurs a cost, \ - but that the cost will be detailed and broken out in the \ - final project proposal. ', + description: 'Please select each required feature. Please note that each added feature incurs a cost, but that the cost will be detailed and broken out in the final project proposal. ', fieldName: 'details.appDefinition.screens', type: 'checkbox-group', options: [ @@ -247,8 +245,8 @@ const sections = [ { icon: 'question', - title: 'Tech Features', - description: '', + title: 'Technology Requirements', + description: 'Please select each required technology requirement above', fieldName: 'details.appDefinition.techFeatures', type: 'checkbox-group', options: [ @@ -275,7 +273,7 @@ const sections = [ id: 'techStack', required: false, hideTitle: false, - title: 'Technology Stack', + title: 'Technology Stack - Do you have a preferred technology stack? If yes, please list those requirements here:', description: 'Do you have a preferred technology stack? If yes, please list those requirements here:', type: 'questions', questions: [ @@ -332,14 +330,14 @@ const sections = [ title: 'Security Requirements', type: 'checkbox-group', options: [ - { value: 'standard', label: 'Standard Security' }, - { value: 'enterprise', label: 'Enterprise - if your application will house\ - or transmit PII or sensitive data. The data will be encrypted on the device and the server.' }, - { value: 'vulnerability', label: 'Vulnerability Scanning - Scan your application for weaknesses' }, - { value: 'auditing', label: 'Audit - Auditing will record user information on actions performed.' }, - { value: 'confidential', label: 'System will be working with confidential, health or financial records'} + { value: 'standard', label: 'Standard Security - Select this option if your app requires standard security.' }, + { value: 'enterprise', label: 'Enterprise - Select this option if your application will house or transmit PII or sensitive data. The data will be encrypted on the device and the server.' }, + { value: 'vulnerability', label: 'Vulnerability Scanning - Vulnerability scanning is a security technique used to identify security weaknesses in a computer system.' }, + { value: 'auditing', label: 'Audit - Is it necessary to audit user actions? Auditing will keep a record of specific user actions like data creation/modification and will be helpful in identifying which user performed a particular action.' }, + { value: 'confidential', label: 'Confidential Information, Sensitive Financial Data or Personally Identifiable Information (PII) - Will the user be working directly with financial or other protected information such has health records?'}, + { value: 'mdm', label: 'Mobile Device Management (MDM) - Do you employ an MDM solution? If yes, what service do you use?'} ], - description: 'Please select each for each required security requirement.', + description: 'Please select each required security requirement above.', }, { icon: 'question', @@ -348,13 +346,20 @@ const sections = [ fieldName: 'details.qaTesting.testing', type: 'checkbox-group', options: [ - { value: 'rw-unstructured', label: 'Real World Unstructured - Users search on their own for bugs or usability issues.' }, - { value: 'rw-structured', label: 'Structured Functional - execution of predefined test scripts' }, - { value: 'testcases', label: 'Test Case Creation - creation of scenarios, instructions and exepected results' }, - { value: 'certification', label: 'Certify your mobile application release against predefined device set including.' }, - { value: 'devicelab', label: 'Test real devices in real cell networks across the world' }, - { value: 'performanceTuning', label: 'Identify and provide perfromance improvements' }, - { value: 'performanceTesting', label: 'Testing web application robustness' }, + { value: 'rw-unstructured', label: 'Real World Unstructured - Functional testing performed without test scripts. Users search on their own for bugs or usability issues.' }, + { value: 'rw-structured', label: 'Real World Testing - Structured - Test case based execution, covering all the functional requirements & cross-browser device testing.' }, + { value: 'testcases', label: 'Test Cases/Scenarios - \ +Creation of test cases/test scenarios including scenario setup, pre/post conditions to scenario, instructions to execute scenario, and expected results' }, + { value: 'certification', label: 'App Certification - Certify your mobile application release against predefined device set including; \ +\ + --App profiling to see the device vital monitoring – CPU, battery and memory usage of APP;\ +\ + --App behavior analysis in different modes (inactive, active, low battery, );\ +\ + --App performance under various interrupts, under simulated network conditions, etc. ' }, + { value: 'devicelab', label: 'Mobile Device Lab on Hire - Allows you to remotely access devices in real cell networks across the world' }, + { value: 'performanceTuning', label: 'Performance Testing - Testing web application’s robustness, availability, and reliability for defined business scenarios and concurrent users.' }, + { value: 'performanceTesting', label: 'Performance Tuning - Analyze and identify performance issues, actionable items for improvement.' }, ] }, { @@ -378,7 +383,7 @@ const sections = [ { icon: 'question', title: 'User Acceptance / Beta Testing', - description: 'UAT is the process of sharing the final application with users and gathering feedback. Please select each for each required UAT requirement.', + description: 'UAT is the process of sharing the final application with users and gathering feedback. Please select each required UAT requirement.', fieldName: 'details.qaTesting.uat', type: 'checkbox-group', options: [ @@ -415,7 +420,7 @@ const sections = [ }, { icon: 'question', - description: 'When do you need your app by? ', + description: 'When do you need your app by?', title: 'Timeline', fieldName: 'details.loadDetails.timeline', type: 'slide-radiogroup', diff --git a/src/config/projectQuestions/enterprise_web.v1.0.js b/src/config/projectQuestions/enterprise_web.v1.0.js new file mode 100644 index 000000000..88b75ef24 --- /dev/null +++ b/src/config/projectQuestions/enterprise_web.v1.0.js @@ -0,0 +1,896 @@ +import React from 'react' // eslint-disable-line no-unused-vars + +const sections = [ + { + id: 'appDefinition', + required: true, + description: 'Please answer a few basic questions about your project. You can also provide the needed information in a supporting document--add a link in the notes section or upload it below.', + subSections: [ + { + id: 'projectName', + required: true, + validationError: 'Please provide a name for your project', + fieldName: 'name', + description: '', + title: 'Project Name', + type: 'project-name' + }, + { + id: 'user', + required: true, + hideTitle: true, + title: 'Questions', + description: '', + type: 'questions', + questions: [ + { + id: 'projectInfo', + // required is not needed if we specifiy validations + required: true, + validations: 'isRequired,minLength:160', + validationErrors: { + isRequired : 'Please provide a description', + minLength : 'Please enter at least 160 characters' + }, + fieldName: 'description', + description: 'Can you provide a brief summary of the application you’d like to develop?', + title: 'App Summary', + type: 'textbox' + }, + { + icon: 'question', + required: true, + validationError: 'Please let us know the target device', + title: 'App Type', + description: 'What type of application are we developing? Please \ + the required app \ + type. Please note that each additional app type incurs \ + a cost, but that the cost will be detailed and broken \ + out in the final project proposal. ', + fieldName: 'details.appDefinition.appType', + type: 'checkbox-group', + options: [ + { value: 'ios', label: 'iOS App - An app built for iPhone or iPads' }, + { value: 'android', label: 'Android App - An app built for mobile phones or tablets running Android.' }, + { value: 'hybrid', label: 'Hybrid App - An app built using a hybrid framework (ex. Ionic/Cordova/Xamarin) and exported to one or more operating systems (iOS, Android or both).' }, + { value: 'web', label: 'Mobile Web App - An app that is accessed by using a mobile web browser like Safari or Chrome.' } + ] + }, + { + // required is not needed if we specifiy validations + // required: true, + fieldName: 'details.appDefinition.workflow', + description: 'Please describe the ideal workflow for the proposed solution.', + title: 'Workflow', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + fieldName: 'details.appDefinition.objectives', + description: 'What are the main business objectives you want to achieve by developing this application?', + title: 'Objectives', + type: 'textbox' + }, + { + icon: 'question', + title: 'Form Factor/Orientation', + description: 'Please select each for each \ + form factor/orientation that must be supported.', + fieldName: 'details.appDefinition.formFactor', + type: 'checkbox-group', + options: [ + { value: 'mobile-phone-portrait', label: 'Mobile Phone - Portrait' }, + { value: 'mobile-phone-landscape', label: 'Mobile Phone - Landscape' }, + { value: 'tablet-device-portrait', label: 'Tablet Device - Portrait'}, + { value: 'tablet-device-landscape', label: 'Tablet Device - Landscape' } + ] + } + + ] + }, + { + required: false, + hideTitle: false, + title: 'Style Guide & Brand Guidelines - Please add your answers below. If you do not know the answer, please add “Open to suggestions from the community/looking for creative solutions”', + description: '', + type: 'questions', + questions: [ + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.designGuidelines.Styleguide', + title: 'Do you have a style guide or branding guidelines that need to be followed?', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.designGuidelines.fonts', + title: 'Are there any particular fonts you want used?', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.designGuidelines.colors', + title: 'Are there any particular colors/themes you want used?', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.designGuidelines.appIcon', + title: 'Do you need an app icon designed, or will you provide one?', + type: 'textbox' + } + ] + }, + { + required: false, + hideTitle: false, + title: 'User Roles - Please use the fields below to specify the type of users/roles for the application. If the role is not applicable, please enter N/A', + type: 'questions', + description: 'Please select each for each user type/role. Please provide details on what the user/role should do in the Description column.', + questions: [ + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.userRoles.standard', + title: 'Standard User', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.userRoles.admin', + title: 'Admin', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.userRoles.superAdmin', + title: 'Super Admin', + type: 'textbox' + } + ] + }, + { + required: false, + hideTitle: false, + title: ' - Will this application be dependant on data from another system or tool? If yes, please briefly describe that dependency here. This can include integration with an API or an existing backend/database.', + description: 'Will this application be dependant on data from another system or tool? If yes, please briefly describe that dependency here. This can include integration with an API or an existing backend/database.', + type: 'questions', + questions: [ + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.integrations.api', + title: 'API', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.integrations.backend', + title: 'Backend', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.integrations.database', + title: 'Database', + type: 'textbox' + } + ] + }, + { + id: 'screen-features', + required: false, + hideTitle: false, + title: 'Screen and Features', + description: '', + type: 'questions', + questions: [ + { + icon: 'question', + title: 'Screen / Feature List', + description: 'Please select each required feature. Please note that each added feature incurs a cost, but that the cost will be detailed and broken out in the final project proposal. ', + fieldName: 'details.appDefinition.screens', + type: 'checkbox-group', + options: [ + { value: 'enterprise-login', label:'Enterprise Login - Supports integration with an existing authorization/authentication mechanism.'}, + { value: 'email-login', label:'Email Login - Support sign in using an email address/password.'}, + { value: 'social-login', label:'Social Login - Support register and login using third-party services such as Facebook, Twitter, and Google.'}, + { value: 'registration', label:'Registration - Allow users to register and login using their email address and a password. Users can also change their password or recover a forgotten one.'}, + { value: 'invitations', label:'Invitations - Allow users to invite others to use your app via email. '}, + { value: 'introductions', label:'Introductions - Present your app and inform users of core functionality using a series of introductory screens before they sign up.'}, + { value: 'onboarding', label:'Onboarding - Virtually walk your users through your application. This functionality is especially useful if you need new users to set up an account or express preferences after they sign up.'}, + { value: 'search', label:'Search - Provide the ability to search your app for specific content, such as products, members, or locations. Please specify below if you also would like autocomplete--suggesting appropriate search terms as a user starts typing.'}, + { value: 'location-based-services', label:'Location Based Services - App must support the identification of the users geographic location for location based features. Ex. show store locations on a map or illustrating the progress of a delivery.'}, + { value: 'camera', label:'Camera (Audio & Video) - Add this feature if your app will require using the camera to capture audio or video.'}, + { value: 'file-upload', label:'File Upload - Allow users to upload photos or other files.'}, + { value: 'notifications', label:'Notifications - Take advantage of notifications; for example, remind users to do certain tasks or update them on new content.'}, + { value: 'dashboard', label:'Dashboard - App must have a central dashboard where users can access functionality'}, + { value: 'tagging', label:'Tagging - Allow users to tag products, people or content; for example, in order to classify and easily retrieve notes.'}, + { value: 'account-settings', label:'Account Settings - Allow your users to adjust settings or specify preferences, such as communication frequency.'}, + { value: 'help-faws', label:'Help/FAQs - Include a section dedicated to FAQ or Help content.'}, + { value: 'marketplace', label:'Marketplace - Allow users to buy, sell, or rent products or services.'}, + { value: 'ratings-reviews', label:'Ratings & Reviews - Let users rate or review people, products, or services.'}, + { value: 'payments', label:'Payments - Allow users to pay in some way; for example, using credit cards, PayPal, or Bitcoin.'}, + { value: 'shopping-cart', label:'Shopping Cart - Allow users to save items before purchasing. Please specify your desired functionality below.'}, + { value: 'product-listing', label:'Product Listing - Add this feature to shows lists of product or services, with individual detail pages for each one.'}, + { value: 'activity-feed', label:'Activity Feed - Show your users an activity feed of some kind, as they’re used to seeing on Facebook and Twitter, for example.'}, + { value: 'profiles', label:'Profiles - Add this feature if your app requires users to have a profile, including the ability to edit it.'}, + { value: 'messaging', label:'Messaging - Allow direct communication between two or more users.'}, + { value: 'admin-tool', label:'Admin Tool - App must have an administrative tool or panel to enable direct management of users, content and the application.'}, + { value: 'social-media-integration', label:'Social Media Integration - App must integrate with social media providers (Facebook, Instagram, Twitter, Google+, etc)'}, + { value: 'reporting', label:'Reporting - App must have the ability to report/export data'}, + { value: 'contact-us', label:'Contact Us - App must have the ability to allow users to contact an administrator/send feedback to administrators.'}, + { value: '3d-touch', label:'3D Touch - If this is an iOS App -- should the designers make use of 3D Touch?'} + ] + }, + + { + icon: 'question', + title: 'Technology Requirements', + description: 'Please select each required technology requirement above', + fieldName: 'details.appDefinition.techFeatures', + type: 'checkbox-group', + options: [ + { value: 'enterprise-login', label:'SSO Integration - App must integrate with enterprise single-sign-on capability.'}, + { value: 'api-integration', label:'API Integration - App must integrate with a pre-existing API.'}, + { value: 'third-party-system-integration', label:'Third Party System Integration - App must integrate with an external application or system and either retrieve or post data.'}, + { value: 'containerized-code', label:'Containerized Code - The codebase must be containerized via Docker to allow for easier deployment and maintenance.'}, + { value: 'unit-tests', label:'Unit Tests - App must have unit tests to ensure code coverage.'}, + { value: 'continuous-integration-/-continuous-deployment', label:'Continuous Integration / Continuous Deployment - Establishment of a CI/CD pipeline.'}, + { value: 'analytics-implementation', label:'Analytics Implementation - Implementation of analytics to track user behavior and app usage.'}, + { value: 'email-(smtp-server)-setup', label:'Email (SMTP Server) Setup - Development and configuration of an SMTP server to provide email notifications. Design, content and development of the emails will need to be handled separately.'}, + { value: 'offline-capability', label:'Offline Capability - Ability to use features of the application offline, and have the data persist/saved locally and then sent back to a server for syncing.'}, + { value: 'camera', label:'Minimal Battery Usage Implementation - Update to the core features of a mobile application to support the ability to minimize usage of network bandwidth and battery usage.'}, + { value: 'apple-app-store-&-google-play-submission-support', label:'Apple App Store & Google Play Submission Support - Consulting support to help streamline the app publishing process to Apple App Store or Google Play.'}, + { value: 'sms-gateway-integration', label:'SMS Gateway Integration - App must integrate with an external SMS gateway/provider for notifications via SMS.'}, + { value: 'error-logging', label:'Error Logging - Does the application need error logging (this will log all errors, exceptions, warnings, debug information during the application execution and will be helpful to rectify the issues)?'}, + { value: 'faceid-touchid', label:'Face ID / Touch ID -- If this is an iOS App -- should we support Face ID/Touch ID for login'} + ] + } + ] + + }, + { + id: 'techStack', + required: false, + hideTitle: false, + title: 'Technology Stack - Do you have a preferred technology stack? If yes, please list those requirements here:', + description: 'Do you have a preferred technology stack? If yes, please list those requirements here:', + type: 'questions', + questions: [ + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.techstack.languages', + title: 'Programming Languages', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.techstack.frameworks', + title: 'Frameworks', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.techstack.Database', + title: 'Database', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.techstack.server', + title: 'Server', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.techstack.hosting', + title: 'Hosting Environment', + type: 'textbox' + } + ] + }, + { + hideTitle: true, + title: 'Quality Assurance, Testing and Security', + description: '', + type: 'questions', + questions: [ + { + fieldName: 'details.qaTesting.security', + title: 'Security Requirements', + type: 'checkbox-group', + options: [ + { value: 'standard', label: 'Standard Security - Select this option if your app requires standard security.' }, + { value: 'enterprise', label: 'Enterprise - Select this option if your application will house or transmit PII or sensitive data. The data will be encrypted on the device and the server.' }, + { value: 'vulnerability', label: 'Vulnerability Scanning - Vulnerability scanning is a security technique used to identify security weaknesses in a computer system.' }, + { value: 'auditing', label: 'Audit - Is it necessary to audit user actions? Auditing will keep a record of specific user actions like data creation/modification and will be helpful in identifying which user performed a particular action.' }, + { value: 'confidential', label: 'Confidential Information, Sensitive Financial Data or Personally Identifiable Information (PII) - Will the user be working directly with financial or other protected information such has health records?'}, + { value: 'mdm', label: 'Mobile Device Management (MDM) - Do you employ an MDM solution? If yes, what service do you use?'} + ], + description: 'Please select each required security requirement above.', + }, + { + icon: 'question', + title: 'Quality Assurance, Test Data & Performance Testing', + description: 'Please select each for each required QA requirement.', + fieldName: 'details.qaTesting.testing', + type: 'checkbox-group', + options: [ + { value: 'rw-unstructured', label: 'Real World Unstructured - Functional testing performed without test scripts. Users search on their own for bugs or usability issues.' }, + { value: 'rw-structured', label: 'Real World Testing - Structured - Test case based execution, covering all the functional requirements & cross-browser device testing.' }, + { value: 'testcases', label: 'Test Cases/Scenarios - \ +Creation of test cases/test scenarios including scenario setup, pre/post conditions to scenario, instructions to execute scenario, and expected results' }, + { value: 'certification', label: 'App Certification - Certify your mobile application release against predefined device set including; \ +\ + --App profiling to see the device vital monitoring – CPU, battery and memory usage of APP;\ +\ + --App behavior analysis in different modes (inactive, active, low battery, );\ +\ + --App performance under various interrupts, under simulated network conditions, etc. ' }, + { value: 'devicelab', label: 'Mobile Device Lab on Hire - Allows you to remotely access devices in real cell networks across the world' }, + { value: 'performanceTuning', label: 'Performance Testing - Testing web application’s robustness, availability, and reliability for defined business scenarios and concurrent users.' }, + { value: 'performanceTesting', label: 'Performance Tuning - Analyze and identify performance issues, actionable items for improvement.' }, + ] + }, + { + icon: 'question', + title: 'How many users do you intend to support?', + type: 'textbox', + fieldName: 'details.qaTesting.users', + required: false + }, + { + icon: 'question', + title: 'Do you intend to supply test data or should Topcoder create it?', + fieldName: 'details.qaTesting.data', + type: 'slide-radiogroup', + options: [ + { value: 'create', title: 'We will provide obfuscated data'}, + { value: 'provide', title: 'Topcoder will create data' } + ], + required: false + }, + { + icon: 'question', + title: 'User Acceptance / Beta Testing', + description: 'UAT is the process of sharing the final application with users and gathering feedback. Please select each required UAT requirement.', + fieldName: 'details.qaTesting.uat', + type: 'checkbox-group', + options: [ + { value: 'uat', label: '1 UAT/Beta Test Cycle.' }, + { value: 'uat-updates', label: 'Implementation of Updates (update the app based on UAT/Beta Testing feedback)' } + ] + }, + ] + + + }, + { + hideTitle: false, + title: 'Budget and Timeline', + description: '', + type: 'questions', + questions: [ + { + icon: 'question', + description: 'How much budget do you have?', + + title: 'Budget', + fieldName: 'details.loadDetails.budget', + type: 'slide-radiogroup', + options: [ + { value: 'upto-25', title: 'Under $25K '}, + { value: 'upto-50', title: '$25K to $50K' }, + { value: 'upto-75', title: '$50K to $75K' }, + { value: 'upto-100', title: '$75K to $100K' }, + { value: 'above-100', title: 'More than $100K' } + ], + required: true, + validationError: 'Please provide expected hours of execution' + }, + { + icon: 'question', + description: 'When do you need your app by?', + title: 'Timeline', + fieldName: 'details.loadDetails.timeline', + type: 'slide-radiogroup', + options: [ + { value: 'upto-1month', title: 'Under 1 month'}, + { value: 'upto-2months', title: '1 to 2 months' }, + { value: 'upto-3months', title: '2 to 3 months' }, + { value: 'upto-6months', title: '3 to 6 months' } + ], + required: true, + validationError: 'Please provide expected hours of execution' + } + ] + }, + { + id: 'notes', + fieldName: 'details.appDefinition.notes', + title: 'Notes', + description: 'Add any other important information regarding your project (e.g., links to documents or existing applications)', + type: 'notes' + } + ] + } +] + +export default sections + +export const basicSections = [ + { + id: 'appDefinition', + title: '', + required: true, + description: 'Please answer a few basic questions about your project and, as an option, add links to supporting documents in the “Notes” section. If you have any files to upload, you’ll be able to do so later.', + subSections: [ + { + id: 'projectName', + required: true, + validationError: 'Please provide a name for your project', + fieldName: 'name', + description: '', + title: 'Project Name', + type: 'project-name' + }, + { + id: 'user', + required: true, + hideTitle: true, + title: 'Questions', + description: '', + type: 'questions', + questions: [ + { + id: 'projectInfo', + // required is not needed if we specifiy validations + required: true, + validations: 'isRequired,minLength:160', + validationErrors: { + isRequired : 'Please provide a description', + minLength : 'Please enter at least 160 characters' + }, + fieldName: 'description', + description: 'Can you provide a brief summary of the application you’d like to develop?', + title: 'App Summary', + type: 'textbox' + }, + { + icon: 'question', + required: true, + validationError: 'Please let us know the target device', + title: 'App Type', + description: 'What type of application are we developing? Please \ + the required app \ + type. Please note that each additional app type incurs \ + a cost, but that the cost will be detailed and broken \ + out in the final project proposal. ', + fieldName: 'details.appDefinition.appType', + type: 'checkbox-group', + options: [ + { value: 'ios', label: 'iOS App - An app built for iPhone or iPads' }, + { value: 'android', label: 'Android App - An app built for mobile phones or tablets running Android.' }, + { value: 'hybrid', label: 'Hybrid App - An app built using a hybrid framework (ex. Ionic/Cordova/Xamarin) and exported to one or more operating systems (iOS, Android or both).' }, + { value: 'web', label: 'Mobile Web App - An app that is accessed by using a mobile web browser like Safari or Chrome.' } + ] + }, + { + // required is not needed if we specifiy validations + // required: true, + fieldName: 'details.appDefinition.workflow', + description: 'Please describe the ideal workflow for the proposed solution.', + title: 'Workflow', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + fieldName: 'details.appDefinition.objectives', + description: 'What are the main business objectives you want to achieve by developing this application?', + title: 'Objectives', + type: 'textbox' + }, + { + icon: 'question', + title: 'Form Factor/Orientation', + description: 'Please select each for each \ + form factor/orientation that must be supported.', + fieldName: 'details.appDefinition.formFactor', + type: 'checkbox-group', + options: [ + { value: 'mobile-phone-portrait', label: 'Mobile Phone - Portrait' }, + { value: 'mobile-phone-landscape', label: 'Mobile Phone - Landscape' }, + { value: 'tablet-device-portrait', label: 'Tablet Device - Portrait'}, + { value: 'tablet-device-landscape', label: 'Tablet Device - Landscape' } + ] + } + + ] + }, + { + required: false, + hideTitle: false, + title: 'Style Guide & Brand Guidelines - Please add your answers below. If you do not know the answer, please add “Open to suggestions from the community/looking for creative solutions”', + description: '', + type: 'questions', + questions: [ + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.designGuidelines.Styleguide', + title: 'Do you have a style guide or branding guidelines that need to be followed?', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.designGuidelines.fonts', + title: 'Are there any particular fonts you want used?', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.designGuidelines.colors', + title: 'Are there any particular colors/themes you want used?', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.designGuidelines.appIcon', + title: 'Do you need an app icon designed, or will you provide one?', + type: 'textbox' + } + ] + }, + { + required: false, + hideTitle: false, + title: 'User Roles - Please use the fields below to specify the type of users/roles for the application. If the role is not applicable, please enter N/A', + type: 'questions', + description: 'Please select each for each user type/role. Please provide details on what the user/role should do in the Description column.', + questions: [ + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.userRoles.standard', + title: 'Standard User', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.userRoles.admin', + title: 'Admin', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.userRoles.superAdmin', + title: 'Super Admin', + type: 'textbox' + } + ] + }, + { + required: false, + hideTitle: false, + title: ' - Will this application be dependant on data from another system or tool? If yes, please briefly describe that dependency here. This can include integration with an API or an existing backend/database.', + description: 'Will this application be dependant on data from another system or tool? If yes, please briefly describe that dependency here. This can include integration with an API or an existing backend/database.', + type: 'questions', + questions: [ + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.integrations.api', + title: 'API', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.integrations.backend', + title: 'Backend', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.integrations.database', + title: 'Database', + type: 'textbox' + } + ] + }, + { + id: 'screen-features', + required: false, + hideTitle: false, + title: 'Screen and Features', + description: '', + type: 'questions', + questions: [ + { + icon: 'question', + title: 'Screen / Feature List', + description: 'Please select each required feature. Please note that each added feature incurs a cost, but that the cost will be detailed and broken out in the final project proposal. ', + fieldName: 'details.appDefinition.screens', + type: 'checkbox-group', + options: [ + { value: 'enterprise-login', label:'Enterprise Login - Supports integration with an existing authorization/authentication mechanism.'}, + { value: 'email-login', label:'Email Login - Support sign in using an email address/password.'}, + { value: 'social-login', label:'Social Login - Support register and login using third-party services such as Facebook, Twitter, and Google.'}, + { value: 'registration', label:'Registration - Allow users to register and login using their email address and a password. Users can also change their password or recover a forgotten one.'}, + { value: 'invitations', label:'Invitations - Allow users to invite others to use your app via email. '}, + { value: 'introductions', label:'Introductions - Present your app and inform users of core functionality using a series of introductory screens before they sign up.'}, + { value: 'onboarding', label:'Onboarding - Virtually walk your users through your application. This functionality is especially useful if you need new users to set up an account or express preferences after they sign up.'}, + { value: 'search', label:'Search - Provide the ability to search your app for specific content, such as products, members, or locations. Please specify below if you also would like autocomplete--suggesting appropriate search terms as a user starts typing.'}, + { value: 'location-based-services', label:'Location Based Services - App must support the identification of the users geographic location for location based features. Ex. show store locations on a map or illustrating the progress of a delivery.'}, + { value: 'camera', label:'Camera (Audio & Video) - Add this feature if your app will require using the camera to capture audio or video.'}, + { value: 'file-upload', label:'File Upload - Allow users to upload photos or other files.'}, + { value: 'notifications', label:'Notifications - Take advantage of notifications; for example, remind users to do certain tasks or update them on new content.'}, + { value: 'dashboard', label:'Dashboard - App must have a central dashboard where users can access functionality'}, + { value: 'tagging', label:'Tagging - Allow users to tag products, people or content; for example, in order to classify and easily retrieve notes.'}, + { value: 'account-settings', label:'Account Settings - Allow your users to adjust settings or specify preferences, such as communication frequency.'}, + { value: 'help-faws', label:'Help/FAQs - Include a section dedicated to FAQ or Help content.'}, + { value: 'marketplace', label:'Marketplace - Allow users to buy, sell, or rent products or services.'}, + { value: 'ratings-reviews', label:'Ratings & Reviews - Let users rate or review people, products, or services.'}, + { value: 'payments', label:'Payments - Allow users to pay in some way; for example, using credit cards, PayPal, or Bitcoin.'}, + { value: 'shopping-cart', label:'Shopping Cart - Allow users to save items before purchasing. Please specify your desired functionality below.'}, + { value: 'product-listing', label:'Product Listing - Add this feature to shows lists of product or services, with individual detail pages for each one.'}, + { value: 'activity-feed', label:'Activity Feed - Show your users an activity feed of some kind, as they’re used to seeing on Facebook and Twitter, for example.'}, + { value: 'profiles', label:'Profiles - Add this feature if your app requires users to have a profile, including the ability to edit it.'}, + { value: 'messaging', label:'Messaging - Allow direct communication between two or more users.'}, + { value: 'admin-tool', label:'Admin Tool - App must have an administrative tool or panel to enable direct management of users, content and the application.'}, + { value: 'social-media-integration', label:'Social Media Integration - App must integrate with social media providers (Facebook, Instagram, Twitter, Google+, etc)'}, + { value: 'reporting', label:'Reporting - App must have the ability to report/export data'}, + { value: 'contact-us', label:'Contact Us - App must have the ability to allow users to contact an administrator/send feedback to administrators.'}, + { value: '3d-touch', label:'3D Touch - If this is an iOS App -- should the designers make use of 3D Touch?'} + ] + }, + + { + icon: 'question', + title: 'Technology Requirements', + description: 'Please select each required technology requirement above', + fieldName: 'details.appDefinition.techFeatures', + type: 'checkbox-group', + options: [ + { value: 'enterprise-login', label:'SSO Integration - App must integrate with enterprise single-sign-on capability.'}, + { value: 'api-integration', label:'API Integration - App must integrate with a pre-existing API.'}, + { value: 'third-party-system-integration', label:'Third Party System Integration - App must integrate with an external application or system and either retrieve or post data.'}, + { value: 'containerized-code', label:'Containerized Code - The codebase must be containerized via Docker to allow for easier deployment and maintenance.'}, + { value: 'unit-tests', label:'Unit Tests - App must have unit tests to ensure code coverage.'}, + { value: 'continuous-integration-/-continuous-deployment', label:'Continuous Integration / Continuous Deployment - Establishment of a CI/CD pipeline.'}, + { value: 'analytics-implementation', label:'Analytics Implementation - Implementation of analytics to track user behavior and app usage.'}, + { value: 'email-(smtp-server)-setup', label:'Email (SMTP Server) Setup - Development and configuration of an SMTP server to provide email notifications. Design, content and development of the emails will need to be handled separately.'}, + { value: 'offline-capability', label:'Offline Capability - Ability to use features of the application offline, and have the data persist/saved locally and then sent back to a server for syncing.'}, + { value: 'camera', label:'Minimal Battery Usage Implementation - Update to the core features of a mobile application to support the ability to minimize usage of network bandwidth and battery usage.'}, + { value: 'apple-app-store-&-google-play-submission-support', label:'Apple App Store & Google Play Submission Support - Consulting support to help streamline the app publishing process to Apple App Store or Google Play.'}, + { value: 'sms-gateway-integration', label:'SMS Gateway Integration - App must integrate with an external SMS gateway/provider for notifications via SMS.'}, + { value: 'error-logging', label:'Error Logging - Does the application need error logging (this will log all errors, exceptions, warnings, debug information during the application execution and will be helpful to rectify the issues)?'}, + { value: 'faceid-touchid', label:'Face ID / Touch ID -- If this is an iOS App -- should we support Face ID/Touch ID for login'} + ] + } + ] + + }, + { + id: 'techStack', + required: false, + hideTitle: false, + title: 'Technology Stack - Do you have a preferred technology stack? If yes, please list those requirements here:', + description: 'Do you have a preferred technology stack? If yes, please list those requirements here:', + type: 'questions', + questions: [ + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.techstack.languages', + title: 'Programming Languages', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.techstack.frameworks', + title: 'Frameworks', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.techstack.Database', + title: 'Database', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.techstack.server', + title: 'Server', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.techstack.hosting', + title: 'Hosting Environment', + type: 'textbox' + } + ] + }, + { + hideTitle: true, + title: 'Quality Assurance, Testing and Security', + description: '', + type: 'questions', + questions: [ + { + fieldName: 'details.qaTesting.security', + title: 'Security Requirements', + type: 'checkbox-group', + options: [ + { value: 'standard', label: 'Standard Security - Select this option if your app requires standard security.' }, + { value: 'enterprise', label: 'Enterprise - Select this option if your application will house or transmit PII or sensitive data. The data will be encrypted on the device and the server.' }, + { value: 'vulnerability', label: 'Vulnerability Scanning - Vulnerability scanning is a security technique used to identify security weaknesses in a computer system.' }, + { value: 'auditing', label: 'Audit - Is it necessary to audit user actions? Auditing will keep a record of specific user actions like data creation/modification and will be helpful in identifying which user performed a particular action.' }, + { value: 'confidential', label: 'Confidential Information, Sensitive Financial Data or Personally Identifiable Information (PII) - Will the user be working directly with financial or other protected information such has health records?'}, + { value: 'mdm', label: 'Mobile Device Management (MDM) - Do you employ an MDM solution? If yes, what service do you use?'} + ], + description: 'Please select each required security requirement above.', + }, + { + icon: 'question', + title: 'Quality Assurance, Test Data & Performance Testing', + description: 'Please select each for each required QA requirement.', + fieldName: 'details.qaTesting.testing', + type: 'checkbox-group', + options: [ + { value: 'rw-unstructured', label: 'Real World Unstructured - Functional testing performed without test scripts. Users search on their own for bugs or usability issues.' }, + { value: 'rw-structured', label: 'Real World Testing - Structured - Test case based execution, covering all the functional requirements & cross-browser device testing.' }, + { value: 'testcases', label: 'Test Cases/Scenarios - \ +Creation of test cases/test scenarios including scenario setup, pre/post conditions to scenario, instructions to execute scenario, and expected results' }, + { value: 'certification', label: 'App Certification - Certify your mobile application release against predefined device set including; \ +\ + --App profiling to see the device vital monitoring – CPU, battery and memory usage of APP;\ +\ + --App behavior analysis in different modes (inactive, active, low battery, );\ +\ + --App performance under various interrupts, under simulated network conditions, etc. ' }, + { value: 'devicelab', label: 'Mobile Device Lab on Hire - Allows you to remotely access devices in real cell networks across the world' }, + { value: 'performanceTuning', label: 'Performance Testing - Testing web application’s robustness, availability, and reliability for defined business scenarios and concurrent users.' }, + { value: 'performanceTesting', label: 'Performance Tuning - Analyze and identify performance issues, actionable items for improvement.' }, + ] + }, + { + icon: 'question', + title: 'How many users do you intend to support?', + type: 'textbox', + fieldName: 'details.qaTesting.users', + required: false + }, + { + icon: 'question', + title: 'Do you intend to supply test data or should Topcoder create it?', + fieldName: 'details.qaTesting.data', + type: 'slide-radiogroup', + options: [ + { value: 'create', title: 'We will provide obfuscated data'}, + { value: 'provide', title: 'Topcoder will create data' } + ], + required: false + }, + { + icon: 'question', + title: 'User Acceptance / Beta Testing', + description: 'UAT is the process of sharing the final application with users and gathering feedback. Please select each required UAT requirement.', + fieldName: 'details.qaTesting.uat', + type: 'checkbox-group', + options: [ + { value: 'uat', label: '1 UAT/Beta Test Cycle.' }, + { value: 'uat-updates', label: 'Implementation of Updates (update the app based on UAT/Beta Testing feedback)' } + ] + }, + ] + + + }, + { + hideTitle: false, + title: 'Budget and Timeline', + description: '', + type: 'questions', + questions: [ + { + icon: 'question', + description: 'How much budget do you have?', + + title: 'Budget', + fieldName: 'details.loadDetails.budget', + type: 'slide-radiogroup', + options: [ + { value: 'upto-25', title: 'Under $25K '}, + { value: 'upto-50', title: '$25K to $50K' }, + { value: 'upto-75', title: '$50K to $75K' }, + { value: 'upto-100', title: '$75K to $100K' }, + { value: 'above-100', title: 'More than $100K' } + ], + required: true, + validationError: 'Please provide expected hours of execution' + }, + { + icon: 'question', + description: 'When do you need your app by?', + title: 'Timeline', + fieldName: 'details.loadDetails.timeline', + type: 'slide-radiogroup', + options: [ + { value: 'upto-1month', title: 'Under 1 month'}, + { value: 'upto-2months', title: '1 to 2 months' }, + { value: 'upto-3months', title: '2 to 3 months' }, + { value: 'upto-6months', title: '3 to 6 months' } + ], + required: true, + validationError: 'Please provide expected hours of execution' + } + ] + }, + { + id: 'notes', + fieldName: 'details.appDefinition.notes', + title: 'Notes', + description: 'Add any other important information regarding your project (e.g., links to documents or existing applications)', + type: 'notes' + } + ] + } +] diff --git a/src/config/projectSpecification/typeToSpecification.json b/src/config/projectSpecification/typeToSpecification.json index 95e757d4b..88e3d9a42 100644 --- a/src/config/projectSpecification/typeToSpecification.json +++ b/src/config/projectSpecification/typeToSpecification.json @@ -25,5 +25,6 @@ "health_check": "health_check.v1.0", "frontend_dev" : "app_dev.v1.0", "enterprise_mobile" : "enterprise_mobile.v1.0", + "enterprise_web" : "enterprise_web.v1.0", "sfdc_testing" : "sfdc_accelerator.v1.0" } diff --git a/src/config/projectWizard/index.js b/src/config/projectWizard/index.js index a9cc50194..1b1b24e4c 100644 --- a/src/config/projectWizard/index.js +++ b/src/config/projectWizard/index.js @@ -25,6 +25,15 @@ const products = { aliases: ['enterprise-mobile'], hidden: true }, + 'Enterprise Web': { + brief: 'Enterprise Web', + details: 'Enterprise Web', + formTitle: 'Enterprise Web', + icon: 'product-app-app', + id: 'enterprise_web', + aliases: ['enterprise-web'], + hidden: true + }, 'topgear-dev': { brief: 'Topgear', details: 'Topgear', From 93ff75c50712acb4f5902a4b6938ee7ff9e5c06e Mon Sep 17 00:00:00 2001 From: davemess34 Date: Thu, 31 May 2018 12:59:23 -0400 Subject: [PATCH 2/6] added updated enterprise web --- .../projectQuestions/enterprise_web.v1.0.js | 459 +----------------- 1 file changed, 6 insertions(+), 453 deletions(-) diff --git a/src/config/projectQuestions/enterprise_web.v1.0.js b/src/config/projectQuestions/enterprise_web.v1.0.js index 88b75ef24..22ed794f0 100644 --- a/src/config/projectQuestions/enterprise_web.v1.0.js +++ b/src/config/projectQuestions/enterprise_web.v1.0.js @@ -15,426 +15,6 @@ const sections = [ title: 'Project Name', type: 'project-name' }, - { - id: 'user', - required: true, - hideTitle: true, - title: 'Questions', - description: '', - type: 'questions', - questions: [ - { - id: 'projectInfo', - // required is not needed if we specifiy validations - required: true, - validations: 'isRequired,minLength:160', - validationErrors: { - isRequired : 'Please provide a description', - minLength : 'Please enter at least 160 characters' - }, - fieldName: 'description', - description: 'Can you provide a brief summary of the application you’d like to develop?', - title: 'App Summary', - type: 'textbox' - }, - { - icon: 'question', - required: true, - validationError: 'Please let us know the target device', - title: 'App Type', - description: 'What type of application are we developing? Please \ - the required app \ - type. Please note that each additional app type incurs \ - a cost, but that the cost will be detailed and broken \ - out in the final project proposal. ', - fieldName: 'details.appDefinition.appType', - type: 'checkbox-group', - options: [ - { value: 'ios', label: 'iOS App - An app built for iPhone or iPads' }, - { value: 'android', label: 'Android App - An app built for mobile phones or tablets running Android.' }, - { value: 'hybrid', label: 'Hybrid App - An app built using a hybrid framework (ex. Ionic/Cordova/Xamarin) and exported to one or more operating systems (iOS, Android or both).' }, - { value: 'web', label: 'Mobile Web App - An app that is accessed by using a mobile web browser like Safari or Chrome.' } - ] - }, - { - // required is not needed if we specifiy validations - // required: true, - fieldName: 'details.appDefinition.workflow', - description: 'Please describe the ideal workflow for the proposed solution.', - title: 'Workflow', - type: 'textbox' - }, - { - // required is not needed if we specifiy validations - // required: true, - fieldName: 'details.appDefinition.objectives', - description: 'What are the main business objectives you want to achieve by developing this application?', - title: 'Objectives', - type: 'textbox' - }, - { - icon: 'question', - title: 'Form Factor/Orientation', - description: 'Please select each for each \ - form factor/orientation that must be supported.', - fieldName: 'details.appDefinition.formFactor', - type: 'checkbox-group', - options: [ - { value: 'mobile-phone-portrait', label: 'Mobile Phone - Portrait' }, - { value: 'mobile-phone-landscape', label: 'Mobile Phone - Landscape' }, - { value: 'tablet-device-portrait', label: 'Tablet Device - Portrait'}, - { value: 'tablet-device-landscape', label: 'Tablet Device - Landscape' } - ] - } - - ] - }, - { - required: false, - hideTitle: false, - title: 'Style Guide & Brand Guidelines - Please add your answers below. If you do not know the answer, please add “Open to suggestions from the community/looking for creative solutions”', - description: '', - type: 'questions', - questions: [ - { - // required is not needed if we specifiy validations - // required: true, - - fieldName: 'details.designGuidelines.Styleguide', - title: 'Do you have a style guide or branding guidelines that need to be followed?', - type: 'textbox' - }, - { - // required is not needed if we specifiy validations - // required: true, - - fieldName: 'details.designGuidelines.fonts', - title: 'Are there any particular fonts you want used?', - type: 'textbox' - }, - { - // required is not needed if we specifiy validations - // required: true, - - fieldName: 'details.designGuidelines.colors', - title: 'Are there any particular colors/themes you want used?', - type: 'textbox' - }, - { - // required is not needed if we specifiy validations - // required: true, - - fieldName: 'details.designGuidelines.appIcon', - title: 'Do you need an app icon designed, or will you provide one?', - type: 'textbox' - } - ] - }, - { - required: false, - hideTitle: false, - title: 'User Roles - Please use the fields below to specify the type of users/roles for the application. If the role is not applicable, please enter N/A', - type: 'questions', - description: 'Please select each for each user type/role. Please provide details on what the user/role should do in the Description column.', - questions: [ - { - // required is not needed if we specifiy validations - // required: true, - - fieldName: 'details.userRoles.standard', - title: 'Standard User', - type: 'textbox' - }, - { - // required is not needed if we specifiy validations - // required: true, - - fieldName: 'details.userRoles.admin', - title: 'Admin', - type: 'textbox' - }, - { - // required is not needed if we specifiy validations - // required: true, - - fieldName: 'details.userRoles.superAdmin', - title: 'Super Admin', - type: 'textbox' - } - ] - }, - { - required: false, - hideTitle: false, - title: ' - Will this application be dependant on data from another system or tool? If yes, please briefly describe that dependency here. This can include integration with an API or an existing backend/database.', - description: 'Will this application be dependant on data from another system or tool? If yes, please briefly describe that dependency here. This can include integration with an API or an existing backend/database.', - type: 'questions', - questions: [ - { - // required is not needed if we specifiy validations - // required: true, - - fieldName: 'details.integrations.api', - title: 'API', - type: 'textbox' - }, - { - // required is not needed if we specifiy validations - // required: true, - - fieldName: 'details.integrations.backend', - title: 'Backend', - type: 'textbox' - }, - { - // required is not needed if we specifiy validations - // required: true, - - fieldName: 'details.integrations.database', - title: 'Database', - type: 'textbox' - } - ] - }, - { - id: 'screen-features', - required: false, - hideTitle: false, - title: 'Screen and Features', - description: '', - type: 'questions', - questions: [ - { - icon: 'question', - title: 'Screen / Feature List', - description: 'Please select each required feature. Please note that each added feature incurs a cost, but that the cost will be detailed and broken out in the final project proposal. ', - fieldName: 'details.appDefinition.screens', - type: 'checkbox-group', - options: [ - { value: 'enterprise-login', label:'Enterprise Login - Supports integration with an existing authorization/authentication mechanism.'}, - { value: 'email-login', label:'Email Login - Support sign in using an email address/password.'}, - { value: 'social-login', label:'Social Login - Support register and login using third-party services such as Facebook, Twitter, and Google.'}, - { value: 'registration', label:'Registration - Allow users to register and login using their email address and a password. Users can also change their password or recover a forgotten one.'}, - { value: 'invitations', label:'Invitations - Allow users to invite others to use your app via email. '}, - { value: 'introductions', label:'Introductions - Present your app and inform users of core functionality using a series of introductory screens before they sign up.'}, - { value: 'onboarding', label:'Onboarding - Virtually walk your users through your application. This functionality is especially useful if you need new users to set up an account or express preferences after they sign up.'}, - { value: 'search', label:'Search - Provide the ability to search your app for specific content, such as products, members, or locations. Please specify below if you also would like autocomplete--suggesting appropriate search terms as a user starts typing.'}, - { value: 'location-based-services', label:'Location Based Services - App must support the identification of the users geographic location for location based features. Ex. show store locations on a map or illustrating the progress of a delivery.'}, - { value: 'camera', label:'Camera (Audio & Video) - Add this feature if your app will require using the camera to capture audio or video.'}, - { value: 'file-upload', label:'File Upload - Allow users to upload photos or other files.'}, - { value: 'notifications', label:'Notifications - Take advantage of notifications; for example, remind users to do certain tasks or update them on new content.'}, - { value: 'dashboard', label:'Dashboard - App must have a central dashboard where users can access functionality'}, - { value: 'tagging', label:'Tagging - Allow users to tag products, people or content; for example, in order to classify and easily retrieve notes.'}, - { value: 'account-settings', label:'Account Settings - Allow your users to adjust settings or specify preferences, such as communication frequency.'}, - { value: 'help-faws', label:'Help/FAQs - Include a section dedicated to FAQ or Help content.'}, - { value: 'marketplace', label:'Marketplace - Allow users to buy, sell, or rent products or services.'}, - { value: 'ratings-reviews', label:'Ratings & Reviews - Let users rate or review people, products, or services.'}, - { value: 'payments', label:'Payments - Allow users to pay in some way; for example, using credit cards, PayPal, or Bitcoin.'}, - { value: 'shopping-cart', label:'Shopping Cart - Allow users to save items before purchasing. Please specify your desired functionality below.'}, - { value: 'product-listing', label:'Product Listing - Add this feature to shows lists of product or services, with individual detail pages for each one.'}, - { value: 'activity-feed', label:'Activity Feed - Show your users an activity feed of some kind, as they’re used to seeing on Facebook and Twitter, for example.'}, - { value: 'profiles', label:'Profiles - Add this feature if your app requires users to have a profile, including the ability to edit it.'}, - { value: 'messaging', label:'Messaging - Allow direct communication between two or more users.'}, - { value: 'admin-tool', label:'Admin Tool - App must have an administrative tool or panel to enable direct management of users, content and the application.'}, - { value: 'social-media-integration', label:'Social Media Integration - App must integrate with social media providers (Facebook, Instagram, Twitter, Google+, etc)'}, - { value: 'reporting', label:'Reporting - App must have the ability to report/export data'}, - { value: 'contact-us', label:'Contact Us - App must have the ability to allow users to contact an administrator/send feedback to administrators.'}, - { value: '3d-touch', label:'3D Touch - If this is an iOS App -- should the designers make use of 3D Touch?'} - ] - }, - - { - icon: 'question', - title: 'Technology Requirements', - description: 'Please select each required technology requirement above', - fieldName: 'details.appDefinition.techFeatures', - type: 'checkbox-group', - options: [ - { value: 'enterprise-login', label:'SSO Integration - App must integrate with enterprise single-sign-on capability.'}, - { value: 'api-integration', label:'API Integration - App must integrate with a pre-existing API.'}, - { value: 'third-party-system-integration', label:'Third Party System Integration - App must integrate with an external application or system and either retrieve or post data.'}, - { value: 'containerized-code', label:'Containerized Code - The codebase must be containerized via Docker to allow for easier deployment and maintenance.'}, - { value: 'unit-tests', label:'Unit Tests - App must have unit tests to ensure code coverage.'}, - { value: 'continuous-integration-/-continuous-deployment', label:'Continuous Integration / Continuous Deployment - Establishment of a CI/CD pipeline.'}, - { value: 'analytics-implementation', label:'Analytics Implementation - Implementation of analytics to track user behavior and app usage.'}, - { value: 'email-(smtp-server)-setup', label:'Email (SMTP Server) Setup - Development and configuration of an SMTP server to provide email notifications. Design, content and development of the emails will need to be handled separately.'}, - { value: 'offline-capability', label:'Offline Capability - Ability to use features of the application offline, and have the data persist/saved locally and then sent back to a server for syncing.'}, - { value: 'camera', label:'Minimal Battery Usage Implementation - Update to the core features of a mobile application to support the ability to minimize usage of network bandwidth and battery usage.'}, - { value: 'apple-app-store-&-google-play-submission-support', label:'Apple App Store & Google Play Submission Support - Consulting support to help streamline the app publishing process to Apple App Store or Google Play.'}, - { value: 'sms-gateway-integration', label:'SMS Gateway Integration - App must integrate with an external SMS gateway/provider for notifications via SMS.'}, - { value: 'error-logging', label:'Error Logging - Does the application need error logging (this will log all errors, exceptions, warnings, debug information during the application execution and will be helpful to rectify the issues)?'}, - { value: 'faceid-touchid', label:'Face ID / Touch ID -- If this is an iOS App -- should we support Face ID/Touch ID for login'} - ] - } - ] - - }, - { - id: 'techStack', - required: false, - hideTitle: false, - title: 'Technology Stack - Do you have a preferred technology stack? If yes, please list those requirements here:', - description: 'Do you have a preferred technology stack? If yes, please list those requirements here:', - type: 'questions', - questions: [ - { - // required is not needed if we specifiy validations - // required: true, - - fieldName: 'details.techstack.languages', - title: 'Programming Languages', - type: 'textbox' - }, - { - // required is not needed if we specifiy validations - // required: true, - - fieldName: 'details.techstack.frameworks', - title: 'Frameworks', - type: 'textbox' - }, - { - // required is not needed if we specifiy validations - // required: true, - - fieldName: 'details.techstack.Database', - title: 'Database', - type: 'textbox' - }, - { - // required is not needed if we specifiy validations - // required: true, - - fieldName: 'details.techstack.server', - title: 'Server', - type: 'textbox' - }, - { - // required is not needed if we specifiy validations - // required: true, - - fieldName: 'details.techstack.hosting', - title: 'Hosting Environment', - type: 'textbox' - } - ] - }, - { - hideTitle: true, - title: 'Quality Assurance, Testing and Security', - description: '', - type: 'questions', - questions: [ - { - fieldName: 'details.qaTesting.security', - title: 'Security Requirements', - type: 'checkbox-group', - options: [ - { value: 'standard', label: 'Standard Security - Select this option if your app requires standard security.' }, - { value: 'enterprise', label: 'Enterprise - Select this option if your application will house or transmit PII or sensitive data. The data will be encrypted on the device and the server.' }, - { value: 'vulnerability', label: 'Vulnerability Scanning - Vulnerability scanning is a security technique used to identify security weaknesses in a computer system.' }, - { value: 'auditing', label: 'Audit - Is it necessary to audit user actions? Auditing will keep a record of specific user actions like data creation/modification and will be helpful in identifying which user performed a particular action.' }, - { value: 'confidential', label: 'Confidential Information, Sensitive Financial Data or Personally Identifiable Information (PII) - Will the user be working directly with financial or other protected information such has health records?'}, - { value: 'mdm', label: 'Mobile Device Management (MDM) - Do you employ an MDM solution? If yes, what service do you use?'} - ], - description: 'Please select each required security requirement above.', - }, - { - icon: 'question', - title: 'Quality Assurance, Test Data & Performance Testing', - description: 'Please select each for each required QA requirement.', - fieldName: 'details.qaTesting.testing', - type: 'checkbox-group', - options: [ - { value: 'rw-unstructured', label: 'Real World Unstructured - Functional testing performed without test scripts. Users search on their own for bugs or usability issues.' }, - { value: 'rw-structured', label: 'Real World Testing - Structured - Test case based execution, covering all the functional requirements & cross-browser device testing.' }, - { value: 'testcases', label: 'Test Cases/Scenarios - \ -Creation of test cases/test scenarios including scenario setup, pre/post conditions to scenario, instructions to execute scenario, and expected results' }, - { value: 'certification', label: 'App Certification - Certify your mobile application release against predefined device set including; \ -\ - --App profiling to see the device vital monitoring – CPU, battery and memory usage of APP;\ -\ - --App behavior analysis in different modes (inactive, active, low battery, );\ -\ - --App performance under various interrupts, under simulated network conditions, etc. ' }, - { value: 'devicelab', label: 'Mobile Device Lab on Hire - Allows you to remotely access devices in real cell networks across the world' }, - { value: 'performanceTuning', label: 'Performance Testing - Testing web application’s robustness, availability, and reliability for defined business scenarios and concurrent users.' }, - { value: 'performanceTesting', label: 'Performance Tuning - Analyze and identify performance issues, actionable items for improvement.' }, - ] - }, - { - icon: 'question', - title: 'How many users do you intend to support?', - type: 'textbox', - fieldName: 'details.qaTesting.users', - required: false - }, - { - icon: 'question', - title: 'Do you intend to supply test data or should Topcoder create it?', - fieldName: 'details.qaTesting.data', - type: 'slide-radiogroup', - options: [ - { value: 'create', title: 'We will provide obfuscated data'}, - { value: 'provide', title: 'Topcoder will create data' } - ], - required: false - }, - { - icon: 'question', - title: 'User Acceptance / Beta Testing', - description: 'UAT is the process of sharing the final application with users and gathering feedback. Please select each required UAT requirement.', - fieldName: 'details.qaTesting.uat', - type: 'checkbox-group', - options: [ - { value: 'uat', label: '1 UAT/Beta Test Cycle.' }, - { value: 'uat-updates', label: 'Implementation of Updates (update the app based on UAT/Beta Testing feedback)' } - ] - }, - ] - - - }, - { - hideTitle: false, - title: 'Budget and Timeline', - description: '', - type: 'questions', - questions: [ - { - icon: 'question', - description: 'How much budget do you have?', - - title: 'Budget', - fieldName: 'details.loadDetails.budget', - type: 'slide-radiogroup', - options: [ - { value: 'upto-25', title: 'Under $25K '}, - { value: 'upto-50', title: '$25K to $50K' }, - { value: 'upto-75', title: '$50K to $75K' }, - { value: 'upto-100', title: '$75K to $100K' }, - { value: 'above-100', title: 'More than $100K' } - ], - required: true, - validationError: 'Please provide expected hours of execution' - }, - { - icon: 'question', - description: 'When do you need your app by?', - title: 'Timeline', - fieldName: 'details.loadDetails.timeline', - type: 'slide-radiogroup', - options: [ - { value: 'upto-1month', title: 'Under 1 month'}, - { value: 'upto-2months', title: '1 to 2 months' }, - { value: 'upto-3months', title: '2 to 3 months' }, - { value: 'upto-6months', title: '3 to 6 months' } - ], - required: true, - validationError: 'Please provide expected hours of execution' - } - ] - }, { id: 'notes', fieldName: 'details.appDefinition.notes', @@ -491,18 +71,12 @@ export const basicSections = [ required: true, validationError: 'Please let us know the target device', title: 'App Type', - description: 'What type of application are we developing? Please \ - the required app \ - type. Please note that each additional app type incurs \ - a cost, but that the cost will be detailed and broken \ - out in the final project proposal. ', + description: 'What type of application are we developing? Please place an X in the Required column for each required app type. Please note that each additional app type incurs a cost, but that the cost will be detailed and broken out in the final project proposal. ', fieldName: 'details.appDefinition.appType', type: 'checkbox-group', options: [ - { value: 'ios', label: 'iOS App - An app built for iPhone or iPads' }, - { value: 'android', label: 'Android App - An app built for mobile phones or tablets running Android.' }, - { value: 'hybrid', label: 'Hybrid App - An app built using a hybrid framework (ex. Ionic/Cordova/Xamarin) and exported to one or more operating systems (iOS, Android or both).' }, - { value: 'web', label: 'Mobile Web App - An app that is accessed by using a mobile web browser like Safari or Chrome.' } + { value: 'desktop', label: 'Desktop Web App - An app built to be accessed over the web using a desktop browser such as Chrome, Safari and MS Explorer' }, + { value: 'responsive', label: 'Responsive Web App - An app built to be accessed over the web using a desktop, tablet or mobile browser such as Chrome, Safari and MS Explorer. The application will render on multiple devices types, with a optimized screen for each type of device.' }, ] }, { @@ -520,20 +94,6 @@ export const basicSections = [ description: 'What are the main business objectives you want to achieve by developing this application?', title: 'Objectives', type: 'textbox' - }, - { - icon: 'question', - title: 'Form Factor/Orientation', - description: 'Please select each for each \ - form factor/orientation that must be supported.', - fieldName: 'details.appDefinition.formFactor', - type: 'checkbox-group', - options: [ - { value: 'mobile-phone-portrait', label: 'Mobile Phone - Portrait' }, - { value: 'mobile-phone-landscape', label: 'Mobile Phone - Landscape' }, - { value: 'tablet-device-portrait', label: 'Tablet Device - Portrait'}, - { value: 'tablet-device-landscape', label: 'Tablet Device - Landscape' } - ] } ] @@ -687,8 +247,7 @@ export const basicSections = [ { value: 'admin-tool', label:'Admin Tool - App must have an administrative tool or panel to enable direct management of users, content and the application.'}, { value: 'social-media-integration', label:'Social Media Integration - App must integrate with social media providers (Facebook, Instagram, Twitter, Google+, etc)'}, { value: 'reporting', label:'Reporting - App must have the ability to report/export data'}, - { value: 'contact-us', label:'Contact Us - App must have the ability to allow users to contact an administrator/send feedback to administrators.'}, - { value: '3d-touch', label:'3D Touch - If this is an iOS App -- should the designers make use of 3D Touch?'} + { value: 'contact-us', label:'Contact Us - App must have the ability to allow users to contact an administrator/send feedback to administrators.'} ] }, @@ -707,12 +266,8 @@ export const basicSections = [ { value: 'continuous-integration-/-continuous-deployment', label:'Continuous Integration / Continuous Deployment - Establishment of a CI/CD pipeline.'}, { value: 'analytics-implementation', label:'Analytics Implementation - Implementation of analytics to track user behavior and app usage.'}, { value: 'email-(smtp-server)-setup', label:'Email (SMTP Server) Setup - Development and configuration of an SMTP server to provide email notifications. Design, content and development of the emails will need to be handled separately.'}, - { value: 'offline-capability', label:'Offline Capability - Ability to use features of the application offline, and have the data persist/saved locally and then sent back to a server for syncing.'}, - { value: 'camera', label:'Minimal Battery Usage Implementation - Update to the core features of a mobile application to support the ability to minimize usage of network bandwidth and battery usage.'}, - { value: 'apple-app-store-&-google-play-submission-support', label:'Apple App Store & Google Play Submission Support - Consulting support to help streamline the app publishing process to Apple App Store or Google Play.'}, { value: 'sms-gateway-integration', label:'SMS Gateway Integration - App must integrate with an external SMS gateway/provider for notifications via SMS.'}, - { value: 'error-logging', label:'Error Logging - Does the application need error logging (this will log all errors, exceptions, warnings, debug information during the application execution and will be helpful to rectify the issues)?'}, - { value: 'faceid-touchid', label:'Face ID / Touch ID -- If this is an iOS App -- should we support Face ID/Touch ID for login'} + { value: 'error-logging', label:'Error Logging - Does the application need error logging (this will log all errors, exceptions, warnings, debug information during the application execution and will be helpful to rectify the issues)?'} ] } ] @@ -783,8 +338,7 @@ export const basicSections = [ { value: 'enterprise', label: 'Enterprise - Select this option if your application will house or transmit PII or sensitive data. The data will be encrypted on the device and the server.' }, { value: 'vulnerability', label: 'Vulnerability Scanning - Vulnerability scanning is a security technique used to identify security weaknesses in a computer system.' }, { value: 'auditing', label: 'Audit - Is it necessary to audit user actions? Auditing will keep a record of specific user actions like data creation/modification and will be helpful in identifying which user performed a particular action.' }, - { value: 'confidential', label: 'Confidential Information, Sensitive Financial Data or Personally Identifiable Information (PII) - Will the user be working directly with financial or other protected information such has health records?'}, - { value: 'mdm', label: 'Mobile Device Management (MDM) - Do you employ an MDM solution? If yes, what service do you use?'} + { value: 'confidential', label: 'Confidential Information, Sensitive Financial Data or Personally Identifiable Information (PII) - Will the user be working directly with financial or other protected information such has health records?'} ], description: 'Please select each required security requirement above.', }, @@ -806,7 +360,6 @@ Creation of test cases/test scenarios including scenario setup, pre/post conditi --App behavior analysis in different modes (inactive, active, low battery, );\ \ --App performance under various interrupts, under simulated network conditions, etc. ' }, - { value: 'devicelab', label: 'Mobile Device Lab on Hire - Allows you to remotely access devices in real cell networks across the world' }, { value: 'performanceTuning', label: 'Performance Testing - Testing web application’s robustness, availability, and reliability for defined business scenarios and concurrent users.' }, { value: 'performanceTesting', label: 'Performance Tuning - Analyze and identify performance issues, actionable items for improvement.' }, ] From 1cb1a5d5bcdf9e1a545b8032a820ee8ddf861328 Mon Sep 17 00:00:00 2001 From: davemess34 Date: Thu, 31 May 2018 13:01:18 -0400 Subject: [PATCH 3/6] fixed update for web --- .../projectQuestions/enterprise_web.v1.0.js | 393 ++++++++++++++++++ 1 file changed, 393 insertions(+) diff --git a/src/config/projectQuestions/enterprise_web.v1.0.js b/src/config/projectQuestions/enterprise_web.v1.0.js index 22ed794f0..253feea95 100644 --- a/src/config/projectQuestions/enterprise_web.v1.0.js +++ b/src/config/projectQuestions/enterprise_web.v1.0.js @@ -15,6 +15,399 @@ const sections = [ title: 'Project Name', type: 'project-name' }, + { + id: 'user', + required: true, + hideTitle: true, + title: 'Questions', + description: '', + type: 'questions', + questions: [ + { + id: 'projectInfo', + // required is not needed if we specifiy validations + required: true, + validations: 'isRequired,minLength:160', + validationErrors: { + isRequired : 'Please provide a description', + minLength : 'Please enter at least 160 characters' + }, + fieldName: 'description', + description: 'Can you provide a brief summary of the application you’d like to develop?', + title: 'App Summary', + type: 'textbox' + }, + { + icon: 'question', + required: true, + validationError: 'Please let us know the target device', + title: 'App Type', + description: 'What type of application are we developing? Please place an X in the Required column for each required app type. Please note that each additional app type incurs a cost, but that the cost will be detailed and broken out in the final project proposal. ', + fieldName: 'details.appDefinition.appType', + type: 'checkbox-group', + options: [ + { value: 'desktop', label: 'Desktop Web App - An app built to be accessed over the web using a desktop browser such as Chrome, Safari and MS Explorer' }, + { value: 'responsive', label: 'Responsive Web App - An app built to be accessed over the web using a desktop, tablet or mobile browser such as Chrome, Safari and MS Explorer. The application will render on multiple devices types, with a optimized screen for each type of device.' }, + ] + }, + { + // required is not needed if we specifiy validations + // required: true, + fieldName: 'details.appDefinition.workflow', + description: 'Please describe the ideal workflow for the proposed solution.', + title: 'Workflow', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + fieldName: 'details.appDefinition.objectives', + description: 'What are the main business objectives you want to achieve by developing this application?', + title: 'Objectives', + type: 'textbox' + } + + ] + }, + { + required: false, + hideTitle: false, + title: 'Style Guide & Brand Guidelines - Please add your answers below. If you do not know the answer, please add “Open to suggestions from the community/looking for creative solutions”', + description: '', + type: 'questions', + questions: [ + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.designGuidelines.Styleguide', + title: 'Do you have a style guide or branding guidelines that need to be followed?', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.designGuidelines.fonts', + title: 'Are there any particular fonts you want used?', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.designGuidelines.colors', + title: 'Are there any particular colors/themes you want used?', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.designGuidelines.appIcon', + title: 'Do you need an app icon designed, or will you provide one?', + type: 'textbox' + } + ] + }, + { + required: false, + hideTitle: false, + title: 'User Roles - Please use the fields below to specify the type of users/roles for the application. If the role is not applicable, please enter N/A', + type: 'questions', + description: 'Please select each for each user type/role. Please provide details on what the user/role should do in the Description column.', + questions: [ + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.userRoles.standard', + title: 'Standard User', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.userRoles.admin', + title: 'Admin', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.userRoles.superAdmin', + title: 'Super Admin', + type: 'textbox' + } + ] + }, + { + required: false, + hideTitle: false, + title: ' - Will this application be dependant on data from another system or tool? If yes, please briefly describe that dependency here. This can include integration with an API or an existing backend/database.', + description: 'Will this application be dependant on data from another system or tool? If yes, please briefly describe that dependency here. This can include integration with an API or an existing backend/database.', + type: 'questions', + questions: [ + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.integrations.api', + title: 'API', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.integrations.backend', + title: 'Backend', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.integrations.database', + title: 'Database', + type: 'textbox' + } + ] + }, + { + id: 'screen-features', + required: false, + hideTitle: false, + title: 'Screen and Features', + description: '', + type: 'questions', + questions: [ + { + icon: 'question', + title: 'Screen / Feature List', + description: 'Please select each required feature. Please note that each added feature incurs a cost, but that the cost will be detailed and broken out in the final project proposal. ', + fieldName: 'details.appDefinition.screens', + type: 'checkbox-group', + options: [ + { value: 'enterprise-login', label:'Enterprise Login - Supports integration with an existing authorization/authentication mechanism.'}, + { value: 'email-login', label:'Email Login - Support sign in using an email address/password.'}, + { value: 'social-login', label:'Social Login - Support register and login using third-party services such as Facebook, Twitter, and Google.'}, + { value: 'registration', label:'Registration - Allow users to register and login using their email address and a password. Users can also change their password or recover a forgotten one.'}, + { value: 'invitations', label:'Invitations - Allow users to invite others to use your app via email. '}, + { value: 'introductions', label:'Introductions - Present your app and inform users of core functionality using a series of introductory screens before they sign up.'}, + { value: 'onboarding', label:'Onboarding - Virtually walk your users through your application. This functionality is especially useful if you need new users to set up an account or express preferences after they sign up.'}, + { value: 'search', label:'Search - Provide the ability to search your app for specific content, such as products, members, or locations. Please specify below if you also would like autocomplete--suggesting appropriate search terms as a user starts typing.'}, + { value: 'location-based-services', label:'Location Based Services - App must support the identification of the users geographic location for location based features. Ex. show store locations on a map or illustrating the progress of a delivery.'}, + { value: 'camera', label:'Camera (Audio & Video) - Add this feature if your app will require using the camera to capture audio or video.'}, + { value: 'file-upload', label:'File Upload - Allow users to upload photos or other files.'}, + { value: 'notifications', label:'Notifications - Take advantage of notifications; for example, remind users to do certain tasks or update them on new content.'}, + { value: 'dashboard', label:'Dashboard - App must have a central dashboard where users can access functionality'}, + { value: 'tagging', label:'Tagging - Allow users to tag products, people or content; for example, in order to classify and easily retrieve notes.'}, + { value: 'account-settings', label:'Account Settings - Allow your users to adjust settings or specify preferences, such as communication frequency.'}, + { value: 'help-faws', label:'Help/FAQs - Include a section dedicated to FAQ or Help content.'}, + { value: 'marketplace', label:'Marketplace - Allow users to buy, sell, or rent products or services.'}, + { value: 'ratings-reviews', label:'Ratings & Reviews - Let users rate or review people, products, or services.'}, + { value: 'payments', label:'Payments - Allow users to pay in some way; for example, using credit cards, PayPal, or Bitcoin.'}, + { value: 'shopping-cart', label:'Shopping Cart - Allow users to save items before purchasing. Please specify your desired functionality below.'}, + { value: 'product-listing', label:'Product Listing - Add this feature to shows lists of product or services, with individual detail pages for each one.'}, + { value: 'activity-feed', label:'Activity Feed - Show your users an activity feed of some kind, as they’re used to seeing on Facebook and Twitter, for example.'}, + { value: 'profiles', label:'Profiles - Add this feature if your app requires users to have a profile, including the ability to edit it.'}, + { value: 'messaging', label:'Messaging - Allow direct communication between two or more users.'}, + { value: 'admin-tool', label:'Admin Tool - App must have an administrative tool or panel to enable direct management of users, content and the application.'}, + { value: 'social-media-integration', label:'Social Media Integration - App must integrate with social media providers (Facebook, Instagram, Twitter, Google+, etc)'}, + { value: 'reporting', label:'Reporting - App must have the ability to report/export data'}, + { value: 'contact-us', label:'Contact Us - App must have the ability to allow users to contact an administrator/send feedback to administrators.'} + ] + }, + + { + icon: 'question', + title: 'Technology Requirements', + description: 'Please select each required technology requirement above', + fieldName: 'details.appDefinition.techFeatures', + type: 'checkbox-group', + options: [ + { value: 'enterprise-login', label:'SSO Integration - App must integrate with enterprise single-sign-on capability.'}, + { value: 'api-integration', label:'API Integration - App must integrate with a pre-existing API.'}, + { value: 'third-party-system-integration', label:'Third Party System Integration - App must integrate with an external application or system and either retrieve or post data.'}, + { value: 'containerized-code', label:'Containerized Code - The codebase must be containerized via Docker to allow for easier deployment and maintenance.'}, + { value: 'unit-tests', label:'Unit Tests - App must have unit tests to ensure code coverage.'}, + { value: 'continuous-integration-/-continuous-deployment', label:'Continuous Integration / Continuous Deployment - Establishment of a CI/CD pipeline.'}, + { value: 'analytics-implementation', label:'Analytics Implementation - Implementation of analytics to track user behavior and app usage.'}, + { value: 'email-(smtp-server)-setup', label:'Email (SMTP Server) Setup - Development and configuration of an SMTP server to provide email notifications. Design, content and development of the emails will need to be handled separately.'}, + { value: 'sms-gateway-integration', label:'SMS Gateway Integration - App must integrate with an external SMS gateway/provider for notifications via SMS.'}, + { value: 'error-logging', label:'Error Logging - Does the application need error logging (this will log all errors, exceptions, warnings, debug information during the application execution and will be helpful to rectify the issues)?'} + ] + } + ] + + }, + { + id: 'techStack', + required: false, + hideTitle: false, + title: 'Technology Stack - Do you have a preferred technology stack? If yes, please list those requirements here:', + description: 'Do you have a preferred technology stack? If yes, please list those requirements here:', + type: 'questions', + questions: [ + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.techstack.languages', + title: 'Programming Languages', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.techstack.frameworks', + title: 'Frameworks', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.techstack.Database', + title: 'Database', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.techstack.server', + title: 'Server', + type: 'textbox' + }, + { + // required is not needed if we specifiy validations + // required: true, + + fieldName: 'details.techstack.hosting', + title: 'Hosting Environment', + type: 'textbox' + } + ] + }, + { + hideTitle: true, + title: 'Quality Assurance, Testing and Security', + description: '', + type: 'questions', + questions: [ + { + fieldName: 'details.qaTesting.security', + title: 'Security Requirements', + type: 'checkbox-group', + options: [ + { value: 'standard', label: 'Standard Security - Select this option if your app requires standard security.' }, + { value: 'enterprise', label: 'Enterprise - Select this option if your application will house or transmit PII or sensitive data. The data will be encrypted on the device and the server.' }, + { value: 'vulnerability', label: 'Vulnerability Scanning - Vulnerability scanning is a security technique used to identify security weaknesses in a computer system.' }, + { value: 'auditing', label: 'Audit - Is it necessary to audit user actions? Auditing will keep a record of specific user actions like data creation/modification and will be helpful in identifying which user performed a particular action.' }, + { value: 'confidential', label: 'Confidential Information, Sensitive Financial Data or Personally Identifiable Information (PII) - Will the user be working directly with financial or other protected information such has health records?'} + ], + description: 'Please select each required security requirement above.', + }, + { + icon: 'question', + title: 'Quality Assurance, Test Data & Performance Testing', + description: 'Please select each for each required QA requirement.', + fieldName: 'details.qaTesting.testing', + type: 'checkbox-group', + options: [ + { value: 'rw-unstructured', label: 'Real World Unstructured - Functional testing performed without test scripts. Users search on their own for bugs or usability issues.' }, + { value: 'rw-structured', label: 'Real World Testing - Structured - Test case based execution, covering all the functional requirements & cross-browser device testing.' }, + { value: 'testcases', label: 'Test Cases/Scenarios - \ +Creation of test cases/test scenarios including scenario setup, pre/post conditions to scenario, instructions to execute scenario, and expected results' }, + { value: 'certification', label: 'App Certification - Certify your mobile application release against predefined device set including; \ +\ + --App profiling to see the device vital monitoring – CPU, battery and memory usage of APP;\ +\ + --App behavior analysis in different modes (inactive, active, low battery, );\ +\ + --App performance under various interrupts, under simulated network conditions, etc. ' }, + { value: 'performanceTuning', label: 'Performance Testing - Testing web application’s robustness, availability, and reliability for defined business scenarios and concurrent users.' }, + { value: 'performanceTesting', label: 'Performance Tuning - Analyze and identify performance issues, actionable items for improvement.' }, + ] + }, + { + icon: 'question', + title: 'How many users do you intend to support?', + type: 'textbox', + fieldName: 'details.qaTesting.users', + required: false + }, + { + icon: 'question', + title: 'Do you intend to supply test data or should Topcoder create it?', + fieldName: 'details.qaTesting.data', + type: 'slide-radiogroup', + options: [ + { value: 'create', title: 'We will provide obfuscated data'}, + { value: 'provide', title: 'Topcoder will create data' } + ], + required: false + }, + { + icon: 'question', + title: 'User Acceptance / Beta Testing', + description: 'UAT is the process of sharing the final application with users and gathering feedback. Please select each required UAT requirement.', + fieldName: 'details.qaTesting.uat', + type: 'checkbox-group', + options: [ + { value: 'uat', label: '1 UAT/Beta Test Cycle.' }, + { value: 'uat-updates', label: 'Implementation of Updates (update the app based on UAT/Beta Testing feedback)' } + ] + }, + ] + + + }, + { + hideTitle: false, + title: 'Budget and Timeline', + description: '', + type: 'questions', + questions: [ + { + icon: 'question', + description: 'How much budget do you have?', + + title: 'Budget', + fieldName: 'details.loadDetails.budget', + type: 'slide-radiogroup', + options: [ + { value: 'upto-25', title: 'Under $25K '}, + { value: 'upto-50', title: '$25K to $50K' }, + { value: 'upto-75', title: '$50K to $75K' }, + { value: 'upto-100', title: '$75K to $100K' }, + { value: 'above-100', title: 'More than $100K' } + ], + required: true, + validationError: 'Please provide expected hours of execution' + }, + { + icon: 'question', + description: 'When do you need your app by?', + title: 'Timeline', + fieldName: 'details.loadDetails.timeline', + type: 'slide-radiogroup', + options: [ + { value: 'upto-1month', title: 'Under 1 month'}, + { value: 'upto-2months', title: '1 to 2 months' }, + { value: 'upto-3months', title: '2 to 3 months' }, + { value: 'upto-6months', title: '3 to 6 months' } + ], + required: true, + validationError: 'Please provide expected hours of execution' + } + ] + }, { id: 'notes', fieldName: 'details.appDefinition.notes', From e96f15f8cb7e4b08e0a34d3d094c1ce1f0e54515 Mon Sep 17 00:00:00 2001 From: davemess34 Date: Thu, 7 Jun 2018 11:13:57 -0400 Subject: [PATCH 4/6] fixed SalesForce spelled wrong --- src/config/projectWizard/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/projectWizard/index.js b/src/config/projectWizard/index.js index 1b1b24e4c..aefcb83a9 100644 --- a/src/config/projectWizard/index.js +++ b/src/config/projectWizard/index.js @@ -330,7 +330,7 @@ const products = { }, 'Salesforce Accelerator': { brief: 'TBD', - details: 'SalesForce Testing, Cross browser-device Testing', + details: 'Salesforce Testing, Cross browser-device Testing', icon: 'product-qa-sfdc-accelerator', id: 'sfdc_testing', aliases: ['sfdc_testing', 'sfdc-testing'] From c793d8bb6a98f477d9d2bad85248cf9adba1a6a8 Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Mon, 25 Jun 2018 10:50:00 +0530 Subject: [PATCH 5/6] Enabling maintenance mode if projects api is down. Needed to deploy the backend services without causing partial or wrong data in database because of old api serving the content during the deployment --- src/components/Layout/Layout.js | 7 +++++-- src/components/Layout/Layout.jsx | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/components/Layout/Layout.js b/src/components/Layout/Layout.js index a5834cfca..887a7ce77 100644 --- a/src/components/Layout/Layout.js +++ b/src/components/Layout/Layout.js @@ -18,10 +18,13 @@ class Layout extends Component { } } -const mapStateToProps = ({ loadUser }) => { +const mapStateToProps = ({ loadUser, projectState, projectSearch }) => { + const projectDetailApiCheck = !projectState.isLoading && !!projectState.error + const projectListingApiCheck = !projectSearch.isLoading && !!projectSearch.error return { user : loadUser.user, - isLoadingUser: loadUser.isLoading + isLoadingUser: loadUser.isLoading, + maintenanceMode: projectDetailApiCheck || projectListingApiCheck } } diff --git a/src/components/Layout/Layout.jsx b/src/components/Layout/Layout.jsx index 423ce6682..f0ca3c7b7 100644 --- a/src/components/Layout/Layout.jsx +++ b/src/components/Layout/Layout.jsx @@ -12,11 +12,11 @@ import '../../styles/vendors/s-alert-default.css' import 'react-s-alert/dist/s-alert-css-effects/slide.css' const Layout = (props) => { - const { isLoadingUser } = props + const { isLoadingUser, maintenanceMode } = props if (isLoadingUser) { return (
) - } else if (MAINTENANCE_MODE) { + } else if (maintenanceMode) { return } else { return ( From 25f7e8ddcee461972a03d52d82686549d2acbb28 Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Mon, 25 Jun 2018 10:54:45 +0530 Subject: [PATCH 6/6] lint fix --- src/components/Layout/Layout.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Layout/Layout.jsx b/src/components/Layout/Layout.jsx index f0ca3c7b7..a4a7c92cd 100644 --- a/src/components/Layout/Layout.jsx +++ b/src/components/Layout/Layout.jsx @@ -1,6 +1,6 @@ import React from 'react' import Footer from '../Footer/Footer' -import { MAINTENANCE_MODE } from '../../config/constants' +// import { MAINTENANCE_MODE } from '../../config/constants' import Alert from 'react-s-alert' import cn from 'classnames' import Maintenance from '../Maintenance/Maintenance'