Merge pull request #3148 from alphagov/add-get-started-page

Add a 'Get started' page
This commit is contained in:
Chris Hill-Scott
2019-11-01 10:36:47 +00:00
committed by GitHub
12 changed files with 173 additions and 25 deletions

View File

@@ -75,6 +75,7 @@ $path: '/static/images/';
@import 'views/template';
@import 'views/notification';
@import 'views/send';
@import 'views/get_started';
@import 'views/history';
// TODO: break this up

View File

@@ -0,0 +1,32 @@
.get-started-list {
counter-reset: get-started-counter;
&__item {
counter-increment: get-started-counter;
padding: 0 0 0 $gutter + 5px;
margin: ($gutter * 1.67) 0 0 0;
position: relative;
&:before {
@include bold-24;
content: counter(get-started-counter) ".";
position: absolute;
top: 5px;
left: 0;
}
summary[aria-expanded=false] {
margin-bottom: 0;
}
}
&__heading {
@include bold-24;
display: inline-block;
margin: 5px 0 $gutter-half 0;
}
}

View File

@@ -305,6 +305,13 @@ def message_status():
)
@main.route('/features/get-started')
def get_started():
return render_template(
'views/get-started.html'
)
@main.route('/trial-mode')
def trial_mode():
return redirect(url_for('.trial_mode_new'), 301)

View File

@@ -190,6 +190,7 @@ class HeaderNavigation(Navigation):
'forgot_password',
'get_example_csv',
'get_notifications_as_json',
'get_started',
'go_to_dashboard_after_tour',
'history',
'inbound_sms_admin',
@@ -504,6 +505,7 @@ class MainNavigation(Navigation):
'forgot_password',
'get_example_csv',
'get_notifications_as_json',
'get_started',
'go_to_dashboard_after_tour',
'history',
'how_to_pay',
@@ -731,6 +733,7 @@ class CaseworkNavigation(Navigation):
'forgot_password',
'get_example_csv',
'get_notifications_as_json',
'get_started',
'go_to_dashboard_after_tour',
'history',
'how_to_pay',
@@ -1015,6 +1018,7 @@ class OrgNavigation(Navigation):
'forgot_password',
'get_example_csv',
'get_notifications_as_json',
'get_started',
'go_to_dashboard_after_tour',
'history',
'how_to_pay',

View File

@@ -21,26 +21,26 @@
<p><a href="{{ url_for('main.register') }}">Create an account</a> for free and try it yourself.</p>
{% endif %}
<h2 class="heading-medium">Reusable message templates</h2>
<h2 class="heading-medium" id="templates">Reusable message templates</h2>
<p>To send an email, text or letter with Notify, you need to create a reusable message template first.</p>
<p>Templates let you send the same thing to lots of people, as often as you need to, without writing a new message each time.</p>
<h2 class="heading-medium">Personalised content</h2>
<h2 class="heading-medium" id="personalised-messages">Personalised content</h2>
<p>Notify makes it easy to send personalised messages from a single template.</p>
<p>If you want to include personalised content in your message, you can add a placeholder. Placeholders are filled in with details, like a name or reference number, each time you send a message. You can do this manually or upload a list of personal details and let Notify do it for you.</p>
<h2 class="heading-medium">Bulk sending</h2>
<h2 class="heading-medium" id="bulk-sending">Bulk sending</h2>
<p>To send a batch of messages at once, upload a list of contact details to Notify. If youre sending emails and text messages, you can also schedule the date and time you want them to be sent.</p>
<h2 class="heading-medium">API integration</h2>
<h2 class="heading-medium" id="api">API integration</h2>
<p>You can integrate the Notify API with your web application or back-office system to send messages automatically.</p>
<p>Read our <a href="{{ url_for('.documentation') }}">API documentation</a> for more information.</p>
<h2 class="heading-medium">Reporting</h2>
<h2 class="heading-medium" id="reporting">Reporting</h2>
<p>Notifys real-time dashboard lets you see the number of messages sent. You can also check the current status of any message to see when it was delivered.</p>
<p>Read more about how <a href="{{ url_for('main.message_status') }}">message status</a> works.</p>
<h2 class="heading-medium">Permissions</h2>
<h2 class="heading-medium" id="permissions">Permissions</h2>
<p>Control which members of your team can see, create, edit and send messages.</p>
<p>Notify lets you:</p>
<ul class="list list-bullet">
@@ -49,7 +49,7 @@
<li>choose who else can manage team members</li>
</ul>
<h2 class="heading-medium">Performance</h2>
<h2 class="heading-medium" id="performance">Performance</h2>
<p>Notify commits to:</p>
<ul class="list list-bullet">
<li>sending 95% of emails and text messages within 10 seconds</li>
@@ -60,7 +60,7 @@
<p>Visit GOV.UK Performance to <a href="https://www.gov.uk/performance/govuk-notify">see how Notify is performing</a>.</p>
<h2 class="heading-medium">Security</h2>
<h2 class="heading-medium" id="security">Security</h2>
<p>Notify protects and manages data to meet the needs of government services.</p>
<h3 class="heading-small">Hide sensitive information</h3>
@@ -70,7 +70,7 @@
<p>Notify uses two-factor authentication (2FA) to keep your account secure. When you sign in, well send a unique one-time code to your phone and ask you to enter it before we let you use your account.</p>
<p>Read more about <a href="{{ url_for('main.security') }}">security</a>.
<h2 class="heading-medium">Support</h2>
<h2 class="heading-medium" id="support">Support</h2>
<p>Notify provides 24-hour online support. If you have an emergency outside office hours, well reply within 30 minutes.</p>
<p>Find out more about <a href="{{ url_for('.support') }}">support</a>.</p>

View File

@@ -22,11 +22,11 @@
</ul>
<p>You can also <a href="{{ url_for('.documentation') }}">integrate with our API</a> to send emails automatically.</p>
<h3 class="heading heading-small">Email branding</h3>
<h3 class="heading heading-small" id="branding">Email branding</h3>
<p>Add your organisations logo and brand colour to email templates.</p>
<p>You can change your branding in your service settings.</p>
<h3 class="heading heading-small">Send files by email</h3>
<h3 class="heading heading-small" id="send-files">Send files by email</h3>
<p>Notify offers a safe and reliable way to send files by email.</p>
<p>Upload a file using our API, then send your users an email with a link to download it.</p>
<p>Notify uses encrypted links instead of email attachments because:</p>
@@ -38,7 +38,7 @@
<p><a href="{{ url_for('.feedback', ticket_type='ask-question-give-feedback') }}">Contact us</a> if you want to send files by email.</p>
<p>Read our <a href="{{ url_for('.documentation') }}">API documentation</a> for more information.</p>
<h3 class="heading heading-small">Add a reply-to address</h3>
<h3 class="heading heading-small" id="reply-to">Add a reply-to address</h3>
<p>Notify lets you choose the email address that users reply to.</p>
<p>Emails with a reply-to address seem more trustworthy and are less likely to be labelled as spam.</p>
<p>You can add reply-to addresses in your service settings.</p>

View File

@@ -22,12 +22,16 @@
</ul>
<p>You can also <a href="{{ url_for('.documentation') }}">integrate with our API</a> to send letters automatically.</p>
<h3 class="heading-small">Choose your postage</h3>
<h3 class="heading-small" id="postage">Choose your postage</h3>
<p>Notify can send letters by first or second class post.</p>
<p>First class letters are delivered one day after theyre dispatched. Second class letters are delivered 2 days after theyre dispatched.</p>
<p>Letters are printed at 5.30pm and dispatched the next working day (Monday to Friday). Royal Mail delivers from Monday to Saturday, excluding bank holidays.</p>
<h3 class="heading heading-small">Upload your own letters</h3>
<h3 class="heading-small" id="branding">Branding</h3>
<p>Add your organisations logo to your letter templates.</p>
<p>You can change your branding in your service settings.</p>
<h3 class="heading heading-small" id="upload-letters">Upload your own letters</h3>
<p>You can create reusable letter templates in Notify, or upload and send your own letters with the Notify API.</p>
<p>Use the <a href="https://docs.notifications.service.gov.uk/documentation/images/notify-pdf-letter-spec-v2.4.pdf">letter specification document</a> to help you set up your letter, save it as a PDF, then upload it to Notify.<p>
<p>Read our <a href="{{ url_for('.documentation') }}">API documentation</a> for more information.</p>

View File

@@ -21,17 +21,17 @@
<li>send and schedule bulk messages</li></ul>
<p>You can also <a href="{{ url_for('.documentation') }}">integrate with our API</a> to send text messages automatically.<p>
<h3 class="heading heading-small">Receive text messages</h3>
<h3 class="heading heading-small" id="receive">Receive text messages</h3>
<p>Let people send messages to your service or reply to your texts.</p>
<p>You can see and reply to the messages you receive when you sign in to Notify. If youre using our API, you can set up your own automated processes to manage replies.</p>
<p><a href="{{ url_for('.feedback', ticket_type='ask-question-give-feedback') }}">Contact us</a> to request a unique number for text message replies.</p>
<h3 class="heading heading-small">Show people who your texts are from</h3>
<h3 class="heading heading-small" id="sender">Show people who your texts are from</h3>
<p>When you send a text message with Notify, the sender name tells people who it's from.</p>
<p>You can change the text message sender name from the default of GOVUK in your service settings.</p>
<h2 class="heading heading-medium">Pricing<h2>
<p>Each service you set up has a free annual allowance. After that it costs 1.58 pence (plus VAT) to send a text to a UK number.</p>
<p>Each service you add has a free annual allowance. After that it costs 1.58 pence (plus VAT) to send a text to a UK number.</p>
<p>The free allowance is:</p>
<ul class="list list-bullet">
<li>250,000 free text messages for central government services</li>

View File

@@ -0,0 +1,83 @@
{% extends "content_template.html" %}
{% from "components/table.html" import mapping_table, row, text_field, edit_field, field with context %}
{% from "components/sub-navigation.html" import sub_navigation %}
{% block per_page_title %}
Get started
{% endblock %}
{% block content_column_content %}
<h1 class="heading-large">Get started</h1>
<ol class="get-started-list">
<li class="get-started-list__item">
<h2 class="get-started-list__heading">Check if GOV.UK Notify is right for you</h2>
<p>Read about our <a href="{{ url_for('main.features') }}">features</a>, <a href="{{ url_for('.pricing') }}">pricing</a> and <a href="{{ url_for('main.roadmap') }}">roadmap</a>.</p>
<details>
<summary>Organisations that can use Notify</summary>
<div id="eligible-organisations">
<p>Notify is available to:</p>
<ul class="list list-bullet">
<li>central government departments</li>
<li>local authorities</li>
<li>state-funded schools</li>
<li>housing associations</li>
<li>the NHS</li>
<li>companies owned by local or central government that deliver services on their behalf</li>
</ul>
<p>Notify is not currently available to charities.</p>
</div>
</details>
</li>
<li class="get-started-list__item">
<h2 class="get-started-list__heading">Create an account</h2>
{% if not current_user.is_authenticated %}
<p><a href="{{ url_for('.register') }}">Create an account</a> for free and add your first Notify service. When you add a new service, it will start in <a href="{{ url_for('main.trial_mode_new') }}">trial mode</a>.</p>
{% else %}
<p>Create an account for free and add your first Notify service. When you add a new service, it will start in <a href="{{ url_for('main.trial_mode_new') }}">trial mode</a>.</p>
{% endif %}
</li>
<li class="get-started-list__item">
<h2 class="get-started-list__heading">Write some messages</h2>
<p>Add <a href="{{ url_for('main.features', _anchor='templates') }}">message templates</a> with examples of the content you plan to send.<!-- You do not need to add letter templates if youre planning to <a href="{{ url_for('main.features_letters', _anchor='upload-letters') }}">upload your own letters</a>.--></p>
<p>The GOV.UK Service Manual has advice on:</p>
<ul class="list list-bullet">
<li><a href="https://www.gov.uk/service-manual/design/sending-emails-and-text-messages#how-to-write-emails-and-text-messages">how to write emails and text messages</a></li>
<li><a href="https://www.gov.uk/service-manual/design/writing-effective-letters">writing effective letters</a></li>
</ul>
</li>
<li class="get-started-list__item">
<h2 class="get-started-list__heading">Set up your service</h2>
{% if not current_user.is_authenticated or not current_service %}
<p>Review your settings to add message branding, reply-to addresses and sender information.</p>
<p>Add team members and check their <a href="{{ url_for('main.features', _anchor='permissions') }}">permissions</a>.</p>
{% else %}
<p>Review your <a href="{{ url_for('.service_settings', service_id=current_service.id) }}">settings</a> to add message branding, reply-to addresses and sender information.</p>
<p>Add <a href="{{ url_for('.manage_users', service_id=current_service.id) }}">team members</a> and check their <a href="{{ url_for('main.features', _anchor='permissions') }}">permissions</a>.</p>
{% endif %}
</li>
<li class="get-started-list__item">
<h2 class="get-started-list__heading">API integration (optional)</h2>
<p>Share our <a href="{{ url_for('main.documentation') }}">documentation</a> with your developers to help them set up an API integration.</p>
<p>You only need to do this if youre using the API to send messages automatically, rather than signing in to Notify.</p>
</li>
<li class="get-started-list__item">
<h2 class="get-started-list__heading">Start sending messages</h2>
{% if not current_user.is_authenticated %}
<p>You should request to go live when youre ready to send messages to people outside your team. Well approve your request within one working day.</p>
{% else %}
<p>You should <a href="{{ url_for('.request_to_go_live', service_id=current_service.id) }}">request to go live</a> when youre ready to send messages to people outside your team. Well approve your request within one working day.</p>
{% endif %}
<p>Check <a href="{{ url_for('main.how_to_pay') }}">how to pay</a> if you're planning to send letters or exceed the <a href="{{ url_for('.pricing') }}">free text message allowance</a>.</p>
</li>
</ol>
{% endblock %}

View File

@@ -20,19 +20,19 @@
<p>
{% if not current_user.is_authenticated %}
<a href="{{ url_for('main.register') }}">Create an account</a> then set up as many different services as you need to.</p>
<a href="{{ url_for('main.register') }}">Create an account</a> then add as many different services as you need to.</p>
{% else %}
You can set up as many different services as you need to.
You can add as many different services as you need to.
{% endif %}
</p>
<p>When you set up a new service it will start in <a href="{{ url_for('main.trial_mode_new') }}">trial mode</a>.</p>
<p>When you add a new service it will start in <a href="{{ url_for('main.trial_mode_new') }}">trial mode</a>.</p>
<h2 class="heading-medium">Emails</h2>
<p>Its free to send emails through Notify.</p>
<h2 class="heading-medium">Text messages</h2>
<p>Every service you set up has an annual allowance of free text messages.</p>
<p>Every service you add has an annual allowance of free text messages.</p>
<p>If your organisation has more than one service on Notify, they each have a separate allowance.</p>
<p>The allowance is:</p>
<ul class="list list-bullet">
@@ -118,7 +118,7 @@
<h2 class="heading-medium" id="letters">Letters</h2>
<p>The cost of sending a letter depends on the postage you choose and how many sheets of paper you need.</p>
<div>
{% call mapping_table(
caption='Letter pricing',

View File

@@ -27,7 +27,7 @@
<p>Before you can request to go live, you must:</p>
<ul class="list list-bullet">
<li>sign our data sharing and financial agreement</li>
<li>accept our data sharing and financial agreement</li>
<li>accept our terms of use</li>
<li>set up your service so youre ready to send and receive messages</li>
</ul>

View File

@@ -1,3 +1,5 @@
from functools import partial
import pytest
from bs4 import BeautifulSoup
from flask import url_for
@@ -74,16 +76,31 @@ def test_robots(client):
'cookies', 'privacy', 'pricing', 'terms', 'roadmap',
'features', 'documentation', 'security',
'message_status', 'features_email', 'features_sms',
'features_letters', 'how_to_pay',
'features_letters', 'how_to_pay', 'get_started'
])
def test_static_pages(
client_request,
mock_get_organisation_by_domain,
view,
):
page = client_request.get('main.{}'.format(view))
request = partial(client_request.get, 'main.{}'.format(view))
# Check the page loads when user is signed in
page = request()
assert not page.select_one('meta[name=description]')
# Check it still works when they dont have a recent service
with client_request.session_transaction() as session:
session['service_id'] = None
request()
# Check it still works when they sign out
client_request.logout()
with client_request.session_transaction() as session:
session['service_id'] = None
session['user_id'] = None
request()
@pytest.mark.parametrize('view, expected_view', [
('information_risk_management', 'security'),