From 837382ddbd9f30e9180e2ade776222f83296f09a Mon Sep 17 00:00:00 2001 From: AlexandreDFM Date: Sun, 5 Nov 2023 23:13:32 +0100 Subject: [PATCH 1/5] refactor(files): docs & format --- frontend/.dockerignore | 2 +- frontend/.npmrc | 2 +- frontend/.prettierrc | 8 +- frontend/.yarnrc.yml | 33 ++++++++- frontend/Dockerfile | 27 ++++++- frontend/Dockerfile.dev | 27 ++++++- frontend/capacitor.config.json | 12 +-- frontend/components/AccountSettings.vue | 1 - frontend/components/App/AppNavbar.vue | 6 +- frontend/components/App/AppSidebar.vue | 23 +++--- .../App/Flow/Block/AutocompleteInput.vue | 2 +- .../components/App/Flow/Block/Available.vue | 6 +- .../components/App/Flow/Block/Container.vue | 2 +- frontend/components/App/Flow/Block/Full.vue | 40 +++++----- .../components/App/Flow/Block/Preview.vue | 1 + frontend/components/App/Flow/Card.vue | 8 +- frontend/components/App/Flow/EmptyList.vue | 9 ++- frontend/components/DebitCard.vue | 1 - frontend/components/FounderCard.vue | 2 - frontend/components/Navbar.vue | 36 +++++---- frontend/components/ProfileCard.vue | 2 +- frontend/layouts/default.vue | 2 - frontend/nginx.conf | 2 +- frontend/package.json | 74 +++++++++---------- frontend/plugins/event-bus.ts | 1 + frontend/plugins/i18n.ts | 4 +- frontend/tailwind.config.js | 2 +- frontend/types/IActionDisplay.ts | 4 + frontend/types/IActionReaction.ts | 1 + frontend/types/IActionReactionInput.ts | 2 + frontend/types/IActionReactionOutput.ts | 2 + frontend/types/IActionReactionService.ts | 2 + frontend/types/IBlockAvailableProps.ts | 4 + frontend/types/IBlockFullProps.ts | 2 + frontend/types/IBlockInput.ts | 3 + .../types/IBlockInputAutocompleteProps.ts | 5 +- frontend/types/IBlockOutput.ts | 7 ++ frontend/types/IBlockPreviewProps.ts | 3 + frontend/types/IButtonLinkProps.ts | 2 + frontend/types/IButtonProps.ts | 2 + frontend/types/IDebitCardProps.ts | 6 ++ frontend/types/IFlow.ts | 2 + frontend/types/IFounderCardProps.ts | 10 +++ frontend/types/IIntegrationList.ts | 3 + frontend/types/ILanguageSelectProps.ts | 2 + frontend/types/INodeType.ts | 19 +++++ frontend/types/IRadioProps.ts | 1 + frontend/types/IReactionDisplay.ts | 4 + frontend/types/ISelectProps.ts | 29 ++++++++ frontend/types/IServiceDisplay.ts | 3 + frontend/types/ITooltipProps.ts | 15 ++++ frontend/types/IUser.ts | 3 + frontend/types/IUserCookie.ts | 2 + frontend/utilities/apiRequest.ts | 16 +++- 54 files changed, 361 insertions(+), 128 deletions(-) diff --git a/frontend/.dockerignore b/frontend/.dockerignore index 4938407e..b008fc61 100644 --- a/frontend/.dockerignore +++ b/frontend/.dockerignore @@ -1,4 +1,4 @@ .gitignore *.md node_modules -dist \ No newline at end of file +dist diff --git a/frontend/.npmrc b/frontend/.npmrc index c483022c..bf2e7648 100644 --- a/frontend/.npmrc +++ b/frontend/.npmrc @@ -1 +1 @@ -shamefully-hoist=true \ No newline at end of file +shamefully-hoist=true diff --git a/frontend/.prettierrc b/frontend/.prettierrc index 3adb2d47..eaac1a96 100755 --- a/frontend/.prettierrc +++ b/frontend/.prettierrc @@ -1,6 +1,6 @@ { - "singleQuote": false, - "trailingComma": "all", - "tabWidth": 4, - "useTabs": false + "singleQuote": false, + "trailingComma": "all", + "tabWidth": 4, + "useTabs": false } diff --git a/frontend/.yarnrc.yml b/frontend/.yarnrc.yml index a4d7ae7a..d7d3b340 100644 --- a/frontend/.yarnrc.yml +++ b/frontend/.yarnrc.yml @@ -1,9 +1,34 @@ +# File Name: .yarnrc.yml +# Author: Gwenaël Hubler, Stephane Fievez, Roman Lopes, Alexandre Kévin De Freitas Martins, Bouna Diallo +# Creation Date: 2023 +# Description: Configuration file for Yarn +# +# Copyright (c) 2023 Tux Inc. +# +# 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. +# +# THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# 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. + nodeLinker: node-modules supportedArchitectures: - os: - - linux - - darwin - - windows + os: + - linux + - darwin + - windows yarnPath: .yarn/releases/yarn-3.6.3.cjs diff --git a/frontend/Dockerfile b/frontend/Dockerfile index ed6b783b..44efb42c 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -1,3 +1,28 @@ +# File Name: Dockerfile +# Author: Gwenaël Hubler, Stephane Fievez, Roman Lopes, Alexandre Kévin De Freitas Martins, Bouna Diallo +# Creation Date: 2023 +# Description: Dockerfile for the frontend of the application +# +# Copyright (c) 2023 Tux Inc. +# +# 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. +# +# THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# 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. + # Build stage FROM node:latest AS build-stage @@ -26,4 +51,4 @@ RUN mkdir /app COPY --from=build-stage /usr/src/app/dist /app/ # Copy nginx config -COPY nginx.conf /etc/nginx/nginx.conf \ No newline at end of file +COPY nginx.conf /etc/nginx/nginx.conf diff --git a/frontend/Dockerfile.dev b/frontend/Dockerfile.dev index d57ebb61..a85d3e88 100644 --- a/frontend/Dockerfile.dev +++ b/frontend/Dockerfile.dev @@ -1,3 +1,28 @@ +# File Name: Dockerfile.dev +# Author: Gwenaël Hubler, Stephane Fievez, Roman Lopes, Alexandre Kévin De Freitas Martins, Bouna Diallo +# Creation Date: 2023 +# Description: Dockerfile for the frontend of the application +# +# Copyright (c) 2023 Tux Inc. +# +# 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. +# +# THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# 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. + # Build stage FROM node:latest @@ -7,4 +32,4 @@ WORKDIR /usr/src/app # Install app dependencies COPY package*.json ./ -RUN npm install \ No newline at end of file +RUN npm install diff --git a/frontend/capacitor.config.json b/frontend/capacitor.config.json index c30badfe..b97ef17f 100644 --- a/frontend/capacitor.config.json +++ b/frontend/capacitor.config.json @@ -1,8 +1,8 @@ { - "appId": "com.tuxinc.flowsphere", - "appName": "Tuxify", - "webDir": "dist", - "server": { - "androidScheme": "https" - } + "appId": "com.tuxinc.flowsphere", + "appName": "Tuxify", + "webDir": "dist", + "server": { + "androidScheme": "https" + } } diff --git a/frontend/components/AccountSettings.vue b/frontend/components/AccountSettings.vue index 18eb87d4..c0264486 100644 --- a/frontend/components/AccountSettings.vue +++ b/frontend/components/AccountSettings.vue @@ -47,7 +47,6 @@ const validate = (state: any): FormError[] => { }; async function submit(event: FormSubmitEvent) { - // Do something with data console.log(event.data); } diff --git a/frontend/components/App/AppNavbar.vue b/frontend/components/App/AppNavbar.vue index b0944469..cc7053f7 100644 --- a/frontend/components/App/AppNavbar.vue +++ b/frontend/components/App/AppNavbar.vue @@ -32,13 +32,13 @@ import { useColorMode } from "@vueuse/core"; import { IUserCookie } from "~/types/IUserCookie"; const i18n = useI18n(); -const { metaSymbol } = useShortcuts(); +const localesItems: any = []; const { $event } = useNuxtApp(); const colorMode = useColorMode(); -const availableLocales = computed(() => i18n.availableLocales); -const localesItems: any = []; +const { metaSymbol } = useShortcuts(); const userCookie = useCookie("user"); const sendEvent = (event: string) => $event(event); +const availableLocales = computed(() => i18n.availableLocales); const isDark = computed({ get() { diff --git a/frontend/components/App/AppSidebar.vue b/frontend/components/App/AppSidebar.vue index 18164201..5bffb4dd 100644 --- a/frontend/components/App/AppSidebar.vue +++ b/frontend/components/App/AppSidebar.vue @@ -46,34 +46,32 @@ const sendEvent = (event: string) => $event(event); @click="sendEvent('app:newFlow')" color="primary" variant="solid" - >{{ i18n.t("app.sidebar.newFlow") }} + :label="i18n.t('app.sidebar.newFlow')" + /> - {{ i18n.t("app.sidebar.home") }} - + :label="i18n.t('app.sidebar.home')" + /> - {{ i18n.t("app.sidebar.flows") }} - + :label="i18n.t('app.sidebar.flows')" + /> {{ i18n.t("app.sidebar.services") }} - + :label="i18n.t('app.sidebar.services')" + />
$event(event); icon="i-heroicons-cog-8-tooth" color="gray" variant="ghost" - > - {{ i18n.t("app.sidebar.settings") }} - + :label="i18n.t('app.sidebar.settings')" + />
diff --git a/frontend/components/App/Flow/Block/AutocompleteInput.vue b/frontend/components/App/Flow/Block/AutocompleteInput.vue index 418ce40e..8dfb234b 100644 --- a/frontend/components/App/Flow/Block/AutocompleteInput.vue +++ b/frontend/components/App/Flow/Block/AutocompleteInput.vue @@ -35,8 +35,8 @@ const emit = defineEmits<{ (e: "flow-block-autocomplete", value: string): void; }>(); -const userInput = ref(props.input.value); const isFocused = ref(false); +const userInput = ref(props.input.value); const hideTimeout = ref(null); const suggestions = computed(() => { diff --git a/frontend/components/App/Flow/Block/Available.vue b/frontend/components/App/Flow/Block/Available.vue index f260226d..09444285 100644 --- a/frontend/components/App/Flow/Block/Available.vue +++ b/frontend/components/App/Flow/Block/Available.vue @@ -27,15 +27,15 @@ THE SOFTWARE. - - diff --git a/frontend/components/Navbar.vue b/frontend/components/Navbar.vue index e0ae22f1..00f22043 100644 --- a/frontend/components/Navbar.vue +++ b/frontend/components/Navbar.vue @@ -28,8 +28,8 @@ THE SOFTWARE. - + From a62bdccfe3906472b2abfe8abb83cef87fa10d1f Mon Sep 17 00:00:00 2001 From: AlexandreDFM Date: Mon, 6 Nov 2023 02:36:54 +0100 Subject: [PATCH 5/5] refactor(lang): add full i18n trad --- frontend/locales/en.json | 61 +--- frontend/locales/fr.json | 768 +++++++++++++++++++++------------------ 2 files changed, 411 insertions(+), 418 deletions(-) diff --git a/frontend/locales/en.json b/frontend/locales/en.json index 8bdb73d6..6db1dc94 100644 --- a/frontend/locales/en.json +++ b/frontend/locales/en.json @@ -3,7 +3,8 @@ "en": "English", "fr": "French", "de": "German", - "zh": "Chinese" + "zh": "Chinese", + "pr": "Portuguese" }, "auth": { "signIn": "Sign In", @@ -119,63 +120,7 @@ "integration": { "title": "Connect to any service", "description": "Tuxify allows you to connect to any service that has an API. You can connect to an unlimited number of services.", - "button": "View all services", - "services": [ - { - "title": "GitHub", - "description": "GitHub is a development platform inspired by the way you work. You can host and review code, manage projects used by over50 million developers.", - "icon": "landing/integration_icons/github.svg", - "alt": "GitHub logo" - }, - { - "title": "Gmail", - "description": "Gmail is email that's intuitive, efficient, and useful. 15 GB of storage, less spam, and mobile access.", - "icon": "landing/integration_icons/gmail.svg", - "alt": "Gmail logo" - }, - { - "title": "Google Calendar", - "description": "Google Calendar is a online tool for scheduling, organizing events, and managing time collaboratively with customizable reminders.", - "icon": "landing/integration_icons/google-calendar.svg", - "alt": "Google Calendar logo" - }, - { - "title": "Google Sheets", - "description": "Google Sheets is a cloud-based spreadsheet software for data analysis, collaboration, and visualization.", - "icon": "landing/integration_icons/google-sheets.svg", - "alt": "Google Sheets logo" - }, - { - "title": "Google Docs", - "description": "Google Docs is a online collaborative word processor by Google, enables real-time editing and sharing of documents.", - "icon": "landing/integration_icons/google-docs.svg", - "alt": "Google Docs logo" - }, - { - "title": "Google Drive", - "description": "Google Drive is a cloud storage service by Google for files, documents, and collaboration, accessible from anywhere online.", - "icon": "landing/integration_icons/google-drive.svg", - "alt": "Google Drive logo" - }, - { - "title": "Linear", - "description": "Linear helps streamline software projects, sprints, tasks, and bug tracking. It's built for high-performance teams.", - "icon": "landing/integration_icons/linear.svg", - "alt": "Linear logo" - }, - { - "title": "Slack", - "description": "Slack is a new way to communicate with your team. It's faster, better organized, and more secure than email.", - "icon": "landing/integration_icons/slack.svg", - "alt": "Slack logo" - }, - { - "title": "LinkedIn", - "description": "LinkedIn is professional networking platform connecting individuals, fostering career development, and facilitating business connections for professionals worldwide.", - "icon": "landing/integration_icons/linkedin.svg", - "alt": "LinkedIn logo" - } - ] + "button": "View all services" }, "about-us": { "hero": { diff --git a/frontend/locales/fr.json b/frontend/locales/fr.json index e30095d5..f1fb768f 100644 --- a/frontend/locales/fr.json +++ b/frontend/locales/fr.json @@ -1,380 +1,428 @@ { - "locales": { - "en": "Anglais", - "fr": "Français", - "de": "Allemand", - "zh": "Chinois" - }, - "auth": { - "signIn": "Se connecter", - "signOut": "Créer un compte", - "button": { - "signIn": "Connexion", - "signUp": "Créer un compte", - "forgotPassword": "Mot de passe oublié", - "resetPassword": "Réinitialiser le mot de passe", - "next": "Suivant", - "back": "Retour" + "locales": { + "en": "Anglais", + "fr": "Français", + "de": "Allemand", + "zh": "Chinois", + "pr": "Portugais" }, - "form": { - "email": "Email", - "password": "Mot de passe", - "confirmPassword": "Confirmation du mot de passe", - "name": "Nom complet" - }, - "sso": { - "google": "Se connecter avec Google", - "github": "Se connecter avec GitHub", - "slack": "Se connecter avec Slack" - } - }, - "landing": { - "navbar": { - "home": "Accueil", - "pricing": "Tarification", - "aboutUs": "A propos", - "changelog": "Changelog", - "documentation": "Documentation", - "contact": "Contact" - }, - "footer": { - "poweredBy": "Propulsé par by Tux Inc.", - "publishedWith": "Publié sous licence MIT License" - }, - "home": { - "hero": { - "title": "Décuplez votre productivité avec les automatisations", - "description": "Tuxify est un outil d'automatisation qui vous permet de connecter vos applications et services préférés ensemble, pour automatiser des tâches répétitives et gagner du temps.", - "getStarted": "Commencer", - "viewOnGitHub": "Voir sur Github" - }, - "features": { - "title": "Le monde repose sur les automatisations, devenez en l'initiateur", - "ai": { - "title": "IA", - "description": "Tuxify utilise l'IA pour vous aider à créer des Flows plus facilement." - }, - "graphFlow": { - "title": "Flows graphiques", - "description": "Tuxify utilise un éditeur graphique pour vous permettre de créer des Flows visuellement." + "auth": { + "signIn": "Se connecter", + "signOut": "Créer un compte", + "goToApp": "Aller à l'application", + "button": { + "signIn": "Connexion", + "signUp": "Créer un compte", + "forgotPassword": "Mot de passe oublié", + "resetPassword": "Réinitialiser le mot de passe", + "next": "Suivant", + "back": "Retour" }, - "services": { - "title": "Tous vos services", - "description": "Tuxify vous permet de connecter tous vos services préférés ensemble, oui, tous." - } - } - }, - "pricing": { - "hero": { - "title": "Des prix simples, sans surprises", - "description": "Nous vous proposons des prix simples et transparents, sans frais cachés. Vous pouvez commencer gratuitement et passer à un plan payant quand vous le souhaitez.", - "free": { - "title": "Gratuit", - "description": "Pour de petits projets et utilisation personnelle", - "price": "0", - "features": [ - "Services illimités", - "Intégrations illimitées", - "10 Flows", - "1 Utilisateur" - ], - "button": "Commencer gratuitement" + "form": { + "email": "Email", + "password": "Mot de passe", + "confirmPassword": "Confirmation du mot de passe", + "confirmNewPassword": "Confirmation du nouveau mot de passe", + "name": "Nom complet" }, - "pro": { - "title": "Pro", - "description": "Pour les projets plus importants et les équipes", - "price": "9", - "features": [ - "Services illimités", - "Intégrations illimitées", - "200 Flows", - "5 Utilisateurs", - "1 Organisation" - ], - "button": "Commencer avec 14 jours gratuits" + "sso": { + "google": "Se connecter avec Google", + "github": "Se connecter avec GitHub", + "slack": "Se connecter avec Slack" }, - "enterprise": { - "title": "Entreprise", - "description": "Pour les grandes entreprises et les organisations", - "price": "99", - "features": [ - "Services illimités", - "Intégrations illimitées", - "Flows illimités", - "Utilisateurs illimités", - "Organisations illimitées", - "Bien plus encore..." - ], - "button": "Nous contacter" + "password": { + "new": "Nouveau mot de passe", + "confirm": "Confirmation du nouveau mot de passe" } - } }, - "integration": { - "title": "Se connecter à n'importe quel service", - "description": "Tuxify vous permet de vous connecter à n'importe quel service disposant d'une API. Vous pouvez vous connecter à un nombre illimité de service", - "button": "View all services", - "services": [ - { - "title": "GitHub", - "description": "GitHub est une plateforme de développement inspirée par votre façon de travailler. Vous pouvez héberger et réviser du code, gérer des projets utilisés par plus de 50 millions de développeurs.", - "icon": "landing/integration_icons/github.svg", - "alt": "GitHub logo" - }, - { - "title": "Gmail", - "description": "Gmail est un service de messagerie électronique intuitif, efficace et utile. 15 Go de stockage, moins de spam et un accès mobile.", - "icon": "landing/integration_icons/gmail.svg", - "alt": "Gmail logo" - }, - { - "title": "Google Calendar", - "description": "Google Agenda est un outil en ligne qui permet de planifier, d'organiser des événements et de gérer son temps de manière collaborative grâce à des rappels personnalisables.", - "icon": "landing/integration_icons/google-calendar.svg", - "alt": "Google Calendar logo" + "landing": { + "navbar": { + "home": "Accueil", + "pricing": "Tarification", + "aboutUs": "A propos", + "changelog": "Changelog", + "documentation": "Documentation", + "integration": "Intégrations", + "contact": "Contact" }, - { - "title": "Google Sheets", - "description": "Google Sheets est un logiciel de feuille de calcul basé sur le cloud pour l'analyse, la collaboration et la visualisation de données.", - "icon": "landing/integration_icons/google-sheets.svg", - "alt": "Google Sheets logo" + "footer": { + "poweredBy": "Propulsé par by Tux Inc.", + "publishedWith": "Publié sous licence MIT License" }, - { - "title": "Google Docs", - "description": "Google Docs est un traitement de texte collaboratif en ligne proposé par Google, qui permet d'éditer et de partager des documents en temps réel.", - "icon": "landing/integration_icons/google-docs.svg", - "alt": "Google Docs logo" + "home": { + "hero": { + "title": "Décuplez votre productivité avec les automatisations", + "description": "Tuxify est un outil d'automatisation qui vous permet de connecter vos applications et services préférés ensemble, pour automatiser des tâches répétitives et gagner du temps.", + "getStarted": "Commencer", + "viewOnGitHub": "Voir sur Github" + }, + "features": { + "title": "Le monde repose sur les automatisations, devenez en l'initiateur", + "ai": { + "title": "IA", + "description": "Tuxify utilise l'IA pour vous aider à créer des Flows plus facilement." + }, + "graphFlow": { + "title": "Flows graphiques", + "description": "Tuxify utilise un éditeur graphique pour vous permettre de créer des Flows visuellement." + }, + "services": { + "title": "Tous vos services", + "description": "Tuxify vous permet de connecter tous vos services préférés ensemble, oui, tous." + } + } }, - { - "title": "Google Drive", - "description": "Google Drive est un service de stockage en nuage de Google pour les fichiers, les documents et la collaboration, accessible depuis n'importe quel endroit en ligne.", - "icon": "landing/integration_icons/google-drive.svg", - "alt": "Google Drive logo" + "pricing": { + "hero": { + "title": "Des prix simples, sans surprises", + "description": "Nous vous proposons des prix simples et transparents, sans frais cachés. Vous pouvez commencer gratuitement et passer à un plan payant quand vous le souhaitez.", + "free": { + "title": "Gratuit", + "description": "Pour de petits projets et utilisation personnelle", + "price": "0", + "features": [ + "Services illimités", + "Intégrations illimitées", + "10 Flows", + "1 Utilisateur" + ], + "button": "Commencer gratuitement" + }, + "pro": { + "title": "Pro", + "description": "Pour les projets plus importants et les équipes", + "price": "9", + "features": [ + "Services illimités", + "Intégrations illimitées", + "200 Flows", + "5 Utilisateurs", + "1 Organisation" + ], + "button": "Commencer avec 14 jours gratuits" + }, + "enterprise": { + "title": "Entreprise", + "description": "Pour les grandes entreprises et les organisations", + "price": "99", + "features": [ + "Services illimités", + "Intégrations illimitées", + "Flows illimités", + "Utilisateurs illimités", + "Organisations illimitées", + "Bien plus encore..." + ], + "button": "Nous contacter" + } + } }, - { - "title": "Linear", - "description": "Linear aide à rationaliser les projets logiciels, les sprints, les tâches et le suivi des bogues. Il est conçu pour les équipes performantes.", - "icon": "landing/integration_icons/linear.svg", - "alt": "Linear logo" + "integration": { + "title": "Se connecter à n'importe quel service", + "description": "Tuxify vous permet de vous connecter à n'importe quel service disposant d'une API. Vous pouvez vous connecter à un nombre illimité de service", + "button": "View all services" }, - { - "title": "Slack", - "description": "Slack est une nouvelle façon de communiquer avec votre équipe. Il est plus rapide, mieux organisé et plus sûr que le courrier électronique.", - "icon": "landing/integration_icons/slack.svg", - "alt": "Slack logo" + "about-us": { + "hero": { + "title": "Un voyage sur le thème de la passion ", + "description": "Tuxify a été créé par une petite équipe de développeurs passionnés. Nous aimons construire des produits qui facilitent la vie des gens." + }, + "team": { + "members": [ + { + "image": "/landing/contributors/gwenael_hubler.jpg", + "alt": "Gwenaël Hubler profile picture", + "name": "Gwenaël Hubler", + "job": "CEO", + "description": "Gwenaël est le PDG de Tux Inc. Gwenaël est un entrepreneur passionné qui aime construire de beaux produits faciles à utiliser.", + "socials": [ + { + "icon": "twitter", + "name": "Twitter", + "link": "https://twitter.com" + }, + { + "icon": "linkedin", + "name": "LinkedIn", + "link": "https://linkedin.com" + }, + { + "icon": "github", + "name": "Github", + "link": "https://github.com" + }, + { + "icon": "web", + "name": "Website", + "link": "http://honixsystems.com/" + }, + { + "icon": "mail", + "name": "Email", + "link": "mailto:gwenael.hublert@tuxify.fr" + } + ] + }, + { + "image": "/landing/contributors/alexandre-kevin_de_freitas_martins.jpg", + "alt": "Alexandre De Freitas Martins profile picture", + "name": "Alexandre De Freitas Martins", + "job": "Développeur", + "description": "Etudiant à Epitech Nice en 3ème année, Alexandre est un développeur passionné et aime construire des produits qui facilitent la vie des gens.", + "socials": [ + { + "icon": "twitter", + "name": "Twitter", + "link": "https://twitter.com" + }, + { + "icon": "linkedin", + "name": "LinkedIn", + "link": "https://linkedin.com" + }, + { + "icon": "github", + "name": "Github", + "link": "https://github.com" + }, + { + "icon": "email", + "name": "Email", + "link": "mailto:alexandre.de-freitas-martins@tuxify.fr" + } + ] + }, + { + "image": "/landing/contributors/roman_lopes.jpg", + "alt": "Roman Lopes profile picture", + "name": "Roman Lopes", + "job": "Développeur", + "description": "Etudiant à Epitech Nice en 3ème année, Roman est un développeur passionné qui sait gérer une équipe.", + "socials": [ + { + "icon": "twitter", + "name": "Twitter", + "link": "https://twitter.com" + }, + { + "icon": "linkedin", + "name": "LinkedIn", + "link": "https://linkedin.com" + }, + { + "icon": "github", + "name": "Github", + "link": "https://github.com" + }, + { + "icon": "email", + "name": "Email", + "link": "mailto:roman.lopes@tuxify.fr" + } + ] + }, + { + "image": "/landing/contributors/stephane_fievez.jpg", + "alt": "Stéphane Fievez profile picture", + "name": "Stéphane Fievez", + "job": "Développeur", + "description": "Etudiant à Epitech Nice en 3ème année, Stéphane est un développeur qui sait stimuler le plaisir et la motivation au sein d'une équipe.", + "socials": [ + { + "icon": "twitter", + "name": "Twitter", + "link": "https://twitter.com" + }, + { + "icon": "linkedin", + "name": "LinkedIn", + "link": "https://linkedin.com" + }, + { + "icon": "github", + "name": "Github", + "link": "https://github.com" + }, + { + "icon": "email", + "name": "Email", + "link": "mailto:stephane.fievez@tuxify.fr" + } + ] + }, + { + "image": "/landing/contributors/bouna_diallo.jpg", + "alt": "Bouna Diallo profile picture", + "name": "Bouna Diallo", + "job": "Développeur", + "description": "Etudiant à Epitech Nice en 3ème année, Bouna est un développeur qui monte en puissance très rapidement.", + "socials": [ + { + "icon": "twitter", + "name": "Twitter", + "link": "https://twitter.com" + }, + { + "icon": "linkedin", + "name": "LinkedIn", + "link": "https://linkedin.com" + }, + { + "icon": "github", + "name": "Github", + "link": "https://github.com" + }, + { + "icon": "email", + "name": "Email", + "link": "mailto:bouna.diallo@tuxify.fr" + } + ] + } + ] + } }, - { - "title": "LinkedIn", - "description": "LinkedIn est une plateforme de réseautage professionnel qui met en relation des individus, favorise le développement de carrière et facilite les relations d'affaires pour les professionnels du monde entier.", - "icon": "landing/integration_icons/linkedin.svg", - "alt": "LinkedIn logo" + "contact": { + "hero": { + "title": "Prenez contact avec nous", + "description": "Nous sommes toujours heureux d'avoir de vos nouvelles. Si vous avez des questions ou des commentaires, n'hésitez pas à nous contacter." + }, + "form": { + "title": "Contactez nous", + "description": "Vous avez une question ? Une idée ? Une demande de fonctionnalité ? Un bug à signaler ? Une autre raison ?\nN'hésitez pas à nous contacter !\nNous vous répondrons dans les plus brefs délais.", + "address": "131 Boulevard René Cassin, 06200 Nice, France", + "labels": { + "name": "Nom", + "email": "Email", + "phone": "Téléphone", + "message": "Message", + "reason": "Raison", + "submit": "Soumettre" + }, + "placeholders": { + "name": "Nom", + "email": "Email", + "phone": "Téléphone", + "message": "Message", + "reason": "Raison", + "submit": "Soumettre" + }, + "reasons": { + "sales": "Vente", + "support": "Support", + "feedback": "Feedback", + "other": "Autre" + }, + "messages": { + "success": "Votre message a été envoyé avec succès.", + "error": "Une erreur s'est produite lors de l'envoi de votre message. Veuillez réessayer plus tard." + } + } } - ] }, - "about-us": { - "hero": { - "title": "Un voyage sur le thème de la passion ", - "description": "Tuxify a été créé par une petite équipe de développeurs passionnés. Nous aimons construire des produits qui facilitent la vie des gens." - }, - "team": { - "members": [ - { - "image": "/landing/contributors/gwenael_hubler.jpg", - "alt": "Gwenaël Hubler profile picture", - "name": "Gwenaël Hubler", - "job": "CEO", - "description": "Gwenaël est le PDG de Tux Inc. Gwenaël est un entrepreneur passionné qui aime construire de beaux produits faciles à utiliser.", - "socials": [ - { - "icon": "twitter", - "name": "Twitter", - "link": "https://twitter.com" - }, - { - "icon": "linkedin", - "name": "LinkedIn", - "link": "https://linkedin.com" - }, - { - "icon": "github", - "name": "Github", - "link": "https://github.com" - }, - { - "icon": "web", - "name": "Website", - "link": "http://honixsystems.com/" - }, - { - "icon": "mail", - "name": "Email", - "link": "mailto:gwenael.hublert@tuxify.fr" - } - ] - }, - { - "image": "/landing/contributors/alexandre-kevin_de_freitas_martins.jpg", - "alt": "Alexandre De Freitas Martins profile picture", - "name": "Alexandre De Freitas Martins", - "job": "Développeur", - "description": "Etudiant à Epitech Nice en 3ème année, Alexandre est un développeur passionné et aime construire des produits qui facilitent la vie des gens.", - "socials": [ - { - "icon": "twitter", - "name": "Twitter", - "link": "https://twitter.com" - }, - { - "icon": "linkedin", - "name": "LinkedIn", - "link": "https://linkedin.com" - }, - { - "icon": "github", - "name": "Github", - "link": "https://github.com" - }, - { - "icon": "email", - "name": "Email", - "link": "mailto:alexandre.de-freitas-martins@tuxify.fr" - } - ] - }, - { - "image": "/landing/contributors/roman_lopes.jpg", - "alt": "Roman Lopes profile picture", - "name": "Roman Lopes", - "job": "Développeur", - "description": "Etudiant à Epitech Nice en 3ème année, Roman est un développeur passionné qui sait gérer une équipe.", - "socials": [ - { - "icon": "twitter", - "name": "Twitter", - "link": "https://twitter.com" - }, - { - "icon": "linkedin", - "name": "LinkedIn", - "link": "https://linkedin.com" - }, - { - "icon": "github", - "name": "Github", - "link": "https://github.com" - }, - { - "icon": "email", - "name": "Email", - "link": "mailto:roman.lopes@tuxify.fr" - } - ] - }, - { - "image": "/landing/contributors/stephane_fievez.jpg", - "alt": "Stéphane Fievez profile picture", - "name": "Stéphane Fievez", - "job": "Développeur", - "description": "Etudiant à Epitech Nice en 3ème année, Stéphane est un développeur qui sait stimuler le plaisir et la motivation au sein d'une équipe.", - "socials": [ - { - "icon": "twitter", - "name": "Twitter", - "link": "https://twitter.com" - }, - { - "icon": "linkedin", - "name": "LinkedIn", - "link": "https://linkedin.com" - }, - { - "icon": "github", - "name": "Github", - "link": "https://github.com" - }, - { - "icon": "email", - "name": "Email", - "link": "mailto:stephane.fievez@tuxify.fr" - } - ] - }, - { - "image": "/landing/contributors/bouna_diallo.jpg", - "alt": "Bouna Diallo profile picture", - "name": "Bouna Diallo", - "job": "Développeur", - "description": "Etudiant à Epitech Nice en 3ème année, Bouna est un développeur qui monte en puissance très rapidement.", - "socials": [ - { - "icon": "twitter", - "name": "Twitter", - "link": "https://twitter.com" - }, - { - "icon": "linkedin", - "name": "LinkedIn", - "link": "https://linkedin.com" - }, - { - "icon": "github", - "name": "Github", - "link": "https://github.com" - }, - { - "icon": "email", - "name": "Email", - "link": "mailto:bouna.diallo@tuxify.fr" - } - ] - } - ] - } - }, - "contact": { - "hero": { - "title": "Prenez contact avec nous", - "description": "Nous sommes toujours heureux d'avoir de vos nouvelles. Si vous avez des questions ou des commentaires, n'hésitez pas à nous contacter." - }, - "form": { - "title": "Contactez nous", - "description": "Vous avez une question ? Une idée ? Une demande de fonctionnalité ? Un bug à signaler ? Une autre raison ?\nN'hésitez pas à nous contacter !\nNous vous répondrons dans les plus brefs délais.", - "address": "131 Boulevard René Cassin, 06200 Nice, France", - "labels": { - "name": "Nom", - "email": "Email", - "phone": "Téléphone", - "message": "Message", - "reason": "Raison", - "submit": "Soumettre" - }, - "placeholders": { - "name": "Nom", - "email": "Email", - "phone": "Téléphone", - "message": "Message", - "reason": "Raison", - "submit": "Soumettre" + "app": { + "sidebar": { + "newFlow": "Nouveau Flow", + "home": "Accueil", + "flows": "Flows", + "services": "Services", + "settings": "Paramètres" }, - "reasons": { - "sales": "Vente", - "support": "Support", - "feedback": "Feedback", - "other": "Autre" + "flows": { + "title": "Flows", + "description": "Sur cette page vous pouvez voir tous vos flows, les flows sont des automatisations qui vous permettent de connecter vos services ensemble.", + "boutons": { + "create": "Créer un flow" + }, + "tooltip": { + "new": "Créer un nouveau flow", + "edit": "Editer le flow", + "delete": "Supprimer le flow" + } }, - "messages": { - "success": "Votre message a été envoyé avec succès.", - "error": "Une erreur s'est produite lors de l'envoi de votre message. Veuillez réessayer plus tard." + "settings": { + "title": "Settings", + "description": "Controller les paramètres de votre compte.", + "profile": { + "title": "Profile", + "description": "Gérer les informations de votre profile.", + "labels": { + "name": "Nom", + "email": "Email", + "avatar": "Avatar" + }, + "placeholders": { + "name": "Nom", + "email": "Email", + "avatar": "Avatar" + }, + "messages": { + "success": "Votre profile a été mis à jour avec succès.", + "error": "Une erreur s'est produite lors de la mise à jour de votre profile. Veuillez réessayer plus tard." + } + }, + "account": { + "title": "Account", + "description": "Gérer les informations de votre profile.", + "labels": { + "name": "Nom", + "email": "Email", + "password": "Mot de passe", + "newPassword": "Nouveau mot de passe", + "confirmNewPassword": "Confirmation du nouveau mot de passe" + }, + "placeholders": { + "name": "John Doe", + "email": "john.doe@tuxify.fr", + "password": "Mot de passe", + "newPassword": "Nouveau mot de passe", + "confirmNewPassword": "Confirmation du nouveau mot de passe" + }, + "messages": { + "success": "Votre compte a été mis à jour avec succès.", + "error": "Une erreur s'est produite lors de la mise à jour de votre compte. Veuillez réessayer plus tard." + } + }, + "billing": { + "title": "Facturation", + "description": "Gérer vos paramètres de facturation.", + "labels": { + "card": "Carte", + "cardName": "Nom de la carte", + "cardNumber": "Numéro de la carte", + "cardExpiry": "Date d'expiration de la carte", + "cardCvc": "CVC de la carte", + "cardPostalCode": "Code postal de la carte" + }, + "placeholders": { + "card": "Carte", + "cardName": "Nom de la carte", + "cardNumber": "Numéro de la carte", + "cardExpiry": "Date d'expiration de la carte", + "cardCvc": "CVC de la carte", + "cardPostalCode": "Code postal de la carte" + }, + "messages": { + "success": "Vos informations de facturation ont été mises à jour avec succès.", + "error": "Une erreur s'est produite lors de la mise à jour de vos informations de facturation. Veuillez réessayer plus tard." + } + }, + "preferences": { + "title": "Préférences", + "description": "Gérer vos préférences.", + "labels": { + "language": "Language", + "darkMode": "Dark Mode" + }, + "placeholders": { + "language": "Language", + "darkMode": "Dark Mode" + }, + "messages": { + "success": "Vos préférences ont été mises à jour avec succès.", + "error": "Une erreur s'est produite lors de la mise à jour de vos préférences. Veuillez réessayer plus tard." + } + } } - } - } - }, - "app": { - "sidebar": { - "newFlow": "Nouveau Flow", - "home": "Accueil", - "flows": "Flows", - "services": "Services", - "settings": "Paramètres" } - } }