diff --git a/LICENSE b/LICENSE index 50c5287afc..5d80d647be 100644 --- a/LICENSE +++ b/LICENSE @@ -20,3 +20,9 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +EXTERNAL COMPONENTS + +Parts of this software include assets from Flowbite Illustrations, +used under the MIT License. + +Copyright (c) Themesberg (https://flowbite.com) diff --git a/app/assets/images/roadmap/ATTRIBUTION.txt b/app/assets/images/roadmap/ATTRIBUTION.txt new file mode 100644 index 0000000000..9717c35e3a --- /dev/null +++ b/app/assets/images/roadmap/ATTRIBUTION.txt @@ -0,0 +1,14 @@ +The illustrations in this directory are sourced from Flowbite (https://flowbite.com/illustrations/) +and are licensed under the MIT License. + +Copyright (c) Themesberg (https://flowbite.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. diff --git a/app/assets/images/roadmap/scale.png b/app/assets/images/roadmap/scale.png new file mode 100644 index 0000000000..bb9b3926a9 Binary files /dev/null and b/app/assets/images/roadmap/scale.png differ diff --git a/app/assets/images/roadmap/security.png b/app/assets/images/roadmap/security.png new file mode 100644 index 0000000000..744b262fe3 Binary files /dev/null and b/app/assets/images/roadmap/security.png differ diff --git a/app/assets/images/roadmap/service_mgmt.png b/app/assets/images/roadmap/service_mgmt.png new file mode 100644 index 0000000000..78d84d5872 Binary files /dev/null and b/app/assets/images/roadmap/service_mgmt.png differ diff --git a/app/assets/images/roadmap/user_insights.png b/app/assets/images/roadmap/user_insights.png new file mode 100644 index 0000000000..ff52ceb2b1 Binary files /dev/null and b/app/assets/images/roadmap/user_insights.png differ diff --git a/app/assets/stylesheets/tailwind/components/roadmap.css b/app/assets/stylesheets/tailwind/components/roadmap.css new file mode 100644 index 0000000000..4a83fceb65 --- /dev/null +++ b/app/assets/stylesheets/tailwind/components/roadmap.css @@ -0,0 +1,91 @@ +/* Roadmap specific styles */ + +.roadmap-year { + letter-spacing: 0.05em; + font-size: 20px; +} + +.roadmap-title { + margin: 0 !important; + font-size: 60px !important; +} + +.roadmap-content { + max-width: 80rem; +} + +.roadmap-cards { + margin: 0 4rem; +} + +.roadmap-card-title { + background: linear-gradient(135deg, rgb(159, 179, 209), rgb(90, 125, 175)); + padding: 1rem; + border-radius: 1rem; + color: white; +} + +.initiative-title { + font-size: 2rem; + margin: 0; +} + +.initiative-description { + color: #555; + font-size: 0.95rem; + line-height: 1.6; +} + +.initiative-description p { + margin: 0 0 0.5rem 0; +} + +.initiative-subheading { + font-weight: 600; + color: #333; + margin-bottom: 0.5rem !important; +} + +.svg-placeholder { + background: linear-gradient(135deg, #9fb3d1 0%, #5a7daf 100%); + padding: 1rem; + border-radius: 1rem; +} + +.initiative-svg { + max-width: 100%; + max-height: 100%; + object-fit: contain; + padding: 1rem; +} + +.initiative-row { + gap: 6rem; +} + +/* Minimum height for placeholder containers */ +.min-h-250 { + min-height: 250px; +} + +@media (max-width: 768px) { + .min-h-250 { + min-height: 200px; + } +} + +#large-scale-svg img { + width: 150px; +} + +#service-management-svg img { + width: 275px; +} + +#user-insights-svg img { + width: 300px; +} + +#security-svg img { + width: 300px; +} diff --git a/app/assets/stylesheets/tailwind/style.css b/app/assets/stylesheets/tailwind/style.css index 90d3f4ba99..3db0791712 100644 --- a/app/assets/stylesheets/tailwind/style.css +++ b/app/assets/stylesheets/tailwind/style.css @@ -56,6 +56,7 @@ @import "./components/badge.css"; @import "./components/pricing.css"; @import "./components/attachments.css"; +@import "./components/roadmap.css"; /* views */ @import "./views/dashboard.css"; diff --git a/app/templates/views/roadmap.html b/app/templates/views/roadmap.html index ad61282317..79cd5c968c 100644 --- a/app/templates/views/roadmap.html +++ b/app/templates/views/roadmap.html @@ -1,14 +1,223 @@ -{% from "components/table.html" import mapping_table, row, text_field, edit_field, field with context %} -{% extends "content_template.html" %} +{% extends "admin_template.html" %} + +{# Roadmap illustrations from Flowbite (https://www.flowbite.com/illustrations/) #} +{# Licensed under MIT (https://github.com/themesberg/flowbite-illustrations) #} {% block per_page_title %} - {{ _('Roadmap') }} + {{ _('GC Notify Roadmap') }} +{% endblock %} + +{% block meta %} + {% set description = _('GC Notify Roadmap for 2026-2027. Discover upcoming features and improvements.') %} + {% set meta_title = _('GC Notify Roadmap | Notification GC') %} + + + {% endblock %} -{% block content_column_content %} +{% block content %} +
+
+
+
+ {{ _('Coming soon') }}
+ {% endblock %} diff --git a/app/translations/csv/fr.csv b/app/translations/csv/fr.csv index 743e77c59d..44652b0d1d 100644 --- a/app/translations/csv/fr.csv +++ b/app/translations/csv/fr.csv @@ -2491,3 +2491,48 @@ "Counted as 1 text message part.","Compté comme 1 partie de message texte." "Counted as {} text message parts.","Compté comme {} parties de messages texte." "Text message parts count toward your sending limits.","Les parties de message texte comptent envers vos limites d'envoi." +"GC Notify Roadmap for 2026-2027. Discover upcoming features and improvements.","Feuille de route de Notification GC pour 2026-2027. Découvrez les fonctionnalités et les améliorations à venir." +"GC Notify Roadmap | Notification GC","Feuille de route de Notification GC | Notification GC" +"Support large-scale notification delivery","Soutenir l'envoi de notifications à grande échelle" +"Support higher-volume sending for large government programs","Soutenir l'envoi à plus grand volume pour les grands programmes gouvernementaux" +"Improve onboarding and operational support for large-scale usage","Améliorer l'intégration et le soutien opérationnel pour l'utilisation à grande échelle" +"Continue platform performance, scalability, and reliability improvements","Poursuivre les améliorations en matière de performance, d'évolutivité et de fiabilité de la plateforme" +"Large-scale notification delivery illustration","Illustration de livraison de notifications à grande échelle" +"Research and define the needs of teams that manage multiple Notify services","Rechercher et définir les besoins des équipes qui gèrent plusieurs services Notification" +"Explore group-level monitoring, reporting, and usage insights","Explorer la surveillance au niveau du groupe, la production de rapports et les analyses d'utilisation" +"Improve account and service management capabilities","Améliorer les capacités de gestion des comptes et des services" +"Reduce manual reporting and administrative effort","Réduire les rapports manuels et les efforts administratifs" +"Improve service management illustration","Illustration de l'amélioration de la gestion des services" +"Turn user insights into product improvements","Transformer les insights des utilisateurs en améliorations de produits" +"Release file attachments in the Notify interface","Mettre en place les pièces jointes dans l'interface Notification" +"Expand template management and reporting capabilities through the API","Élargir les capacités de gestion des gabarits et de création de rapports via l'API" +"Improve account and service management experiences","Améliorer les expériences de gestion des comptes et des services" +"Explore emerging user and platform needs through research","Explorer les besoins émergents des utilisateurs et de la plateforme par la recherche" +"Deliver improvements informed by client feedback, support trends, and operational insights","Fournir des améliorations basées sur les commentaires des clients, les tendances du support et les insights opérationnels" +"Turn user insights into product improvements illustration","Illustration de la transformation des insights des utilisateurs en améliorations de produits" +"Strengthen platform security and reliability","Renforcer la sécurité et la fiabilité de la plateforme" +"Deliver planned security improvements identified through our security assessment","Fournir les améliorations de sécurité prévues identifiées par notre évaluation de sécurité" +"Improve monitoring, observability, and threat detection","Améliorer la surveillance, l'observabilité et la détection des menaces" +"Reduce security-related technical debt","Réduire la dette technique liée à la sécurité" +"Improve platform resilience and operational readiness","Améliorer la résilience de la plateforme et la disponibilité opérationnelle" +"Strengthen platform security and reliability illustration","Illustration du renforcement de la sécurité et de la fiabilité de la plateforme" +"This year at a glance","Aperçu de cette année" +"Recently shipped","Récemment livré" +"Modernized Message Editing","Édition de messages modernisée" +"SMS Usage Transparency","Transparence de l'utilisation des SMS" +"Platform Reliability Improvements","Améliorations de la fiabilité de la plateforme" +"Improved Monitoring & Observability","Surveillance et observabilité améliorées" +"Better Developer Resources","Meilleures ressources pour les développeurs" +"Working on now","En cours de travail" +"File Attachments","Pièces jointes" +"API Enhancements","Améliorations de l'API" +"Large-Scale Service Support","Soutien des services à grande échelle" +"Account & Service Management","Gestion des comptes et des services" +"Security Improvements","Améliorations de sécurité" +"Exploring","Exploration" +"Service Groups","Groupes de services" +"Aggregated Reporting & Insights","Rapports et analyses agrégés" +"Emerging User Needs","Besoins émergents des utilisateurs" +"Future Messaging Capabilities","Capacités de messagerie futures" +"GC Notify Roadmap","Feuille de route de GC Notify" +"Improve service management","Améliorer la gestion des services" diff --git a/package.json b/package.json index 46775f51ef..c0c4ea60f8 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "build:legacy-individual": "node scripts/build-legacy-individual.mjs", "watch:assets": "npx tailwindcss -i ./app/assets/stylesheets/tailwind/style.css -o ./app/static/stylesheets/index.css --watch & vite & vite build --config vite.legacy.config.js --watch", "build": "npx tailwindcss -i ./app/assets/stylesheets/tailwind/style.css -o ./app/static/stylesheets/index.css --minify && vite build && vite build --config vite.legacy.config.js && node scripts/build-legacy-individual.mjs", - "watch": "npm run build:legacy-individual && npm run watch:assets", + "watch": "npm run build && npm run build:legacy-individual && npm run watch:assets", "dev": "vite" }, "repository": { diff --git a/tests/app/main/views/test_index.py b/tests/app/main/views/test_index.py index 1adffe3e56..641da2b1d9 100644 --- a/tests/app/main/views/test_index.py +++ b/tests/app/main/views/test_index.py @@ -157,7 +157,6 @@ def test_security_txt(client): @pytest.mark.parametrize( "view", [ - "roadmap", "email", "sms", "letters",