mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-05-26 08:09:51 -04:00
Merge pull request #3148 from alphagov/add-get-started-page
Add a 'Get started' page
This commit is contained in:
@@ -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
|
||||
|
||||
32
app/assets/stylesheets/views/get_started.scss
Normal file
32
app/assets/stylesheets/views/get_started.scss
Normal 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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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 you’re 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>Notify’s 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, we’ll 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, we’ll reply within 30 minutes.</p>
|
||||
<p>Find out more about <a href="{{ url_for('.support') }}">support</a>.</p>
|
||||
|
||||
|
||||
@@ -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 organisation’s 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>
|
||||
|
||||
@@ -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 they’re dispatched. Second class letters are delivered 2 days after they’re 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 organisation’s 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>
|
||||
|
||||
@@ -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 you’re 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>
|
||||
|
||||
83
app/templates/views/get-started.html
Normal file
83
app/templates/views/get-started.html
Normal 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 you’re 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 you’re 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 you’re ready to send messages to people outside your team. We’ll 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 you’re ready to send messages to people outside your team. We’ll 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 %}
|
||||
@@ -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>It’s 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',
|
||||
|
||||
@@ -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 you’re ready to send and receive messages</li>
|
||||
</ul>
|
||||
|
||||
@@ -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 don’t 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'),
|
||||
|
||||
Reference in New Issue
Block a user