feat: Add HomeSync policies page and integrate legal section in HomeSync component

This commit is contained in:
Van Leemput Dayron
2026-02-13 14:00:34 +01:00
parent bf87b9c218
commit 70653b769b
6 changed files with 417 additions and 31 deletions

View File

@@ -0,0 +1,12 @@
[
{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "be.devdayronvl.family_organizer",
"sha256_cert_fingerprints": [
"17:C9:6F:AA:BB:3C:25:9B:AA:FD:59:BA:E5:D7:CA:76:BF:5E:1C:4C:23:A1:BA:E2:75:2E:35:EB:9F:72:4B:04"
]
}
}
]

View File

@@ -9,6 +9,7 @@ import TravelMate from './components/TravelMate';
import EraseData from './components/TravelMate/EraseData';
import Support from './components/TravelMate/Support';
import HomeSync from './components/HomeSync';
import HomeSyncPolicies from './components/HomeSyncPolicies';
import ScrollToTop from './components/ScrollToTop';
import RootRedirect from './components/RootRedirect';
import './styles/main.scss';
@@ -76,6 +77,7 @@ function AppContent() {
<Route path="/travelmate/policies" element={<Policies />} />
<Route path="/travelmate/erasedata" element={<EraseData />} />
<Route path="/homesync" element={<HomeSync />} />
<Route path="/homesync/policies" element={<HomeSyncPolicies />} />
<Route path="/policies" element={<Policies />} />
<Route path="/travelmate/support" element={<Support />} />
</Routes>

View File

@@ -1,7 +1,8 @@
import { useEffect } from 'react';
import { motion } from 'framer-motion';
import { useLanguage } from '../contexts/LanguageContext';
import { Smartphone, Calendar, ShoppingCart, Users, Lock, Code, Database } from 'lucide-react';
import { Smartphone, Calendar, ShoppingCart, Users, Lock, Code, Database, FileText, ArrowLeft } from 'lucide-react';
import { Link } from 'react-router-dom';
// import appIcon from '../assets/app_icon.png'; // Using same icon as placeholder if no specific HomeSync icon
const itemVariants = {
@@ -63,7 +64,7 @@ const FeatureCard = ({ title, icon: Icon, description }: { title: string, icon:
);
const HomeSync = () => {
const { t } = useLanguage();
const { t, language } = useLanguage();
const containerVariants = {
hidden: { opacity: 0 },
@@ -252,6 +253,47 @@ const HomeSync = () => {
</div>
</motion.div>
{/* Legal Section */}
<motion.div variants={itemVariants} style={{ marginBottom: '6rem' }}>
<h2 style={{
textAlign: 'center',
marginBottom: '4rem',
fontSize: '2.5rem',
fontWeight: '700',
color: 'var(--text-color)'
}}>{t('travelmate.legal.title')}</h2>
<div style={{ display: 'flex', justifyContent: 'center' }}>
<Link to={`/${language}/homesync/policies`} style={{ textDecoration: 'none', color: 'inherit', maxWidth: '500px', width: '100%' }}>
<motion.div
whileHover={{ y: -5, boxShadow: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)', borderColor: 'var(--primary-color)' }}
style={{
background: 'var(--card-bg, rgba(255, 255, 255, 0.03))',
backdropFilter: 'blur(10px)',
padding: '2rem',
borderRadius: '1.5rem',
border: '1px solid var(--border-color, rgba(255, 255, 255, 0.08))',
height: '100%',
display: 'flex',
flexDirection: 'column',
alignItems: 'center',
textAlign: 'center',
transition: 'all 0.3s ease'
}}
>
<FileText size={32} style={{ color: 'var(--primary-color)', marginBottom: '1.5rem' }} />
<h3 style={{ fontSize: '1.25rem', fontWeight: '600', marginBottom: '1rem' }}>{t('homesync.legal.link')}</h3>
<p style={{ opacity: 0.7, marginBottom: '2rem', flex: 1, lineHeight: '1.6' }}>
{t('policies.intro')}
</p>
<span style={{ color: 'var(--primary-color)', fontWeight: '500', display: 'flex', alignItems: 'center', gap: '8px' }}>
{t('travelmate.policies.link')} <ArrowLeft size={16} style={{ rotate: '180deg' }} />
</span>
</motion.div>
</Link>
</div>
</motion.div>
</motion.div>
</div>
</div>

View File

@@ -0,0 +1,326 @@
import { motion } from 'framer-motion';
import { useLanguage } from '../contexts/LanguageContext';
import { Link } from 'react-router-dom';
import { ArrowLeft, Shield } from 'lucide-react';
const HomeSyncPolicies = () => {
const { language, t } = useLanguage();
const containerVariants = {
hidden: { opacity: 0 },
visible: {
opacity: 1,
transition: {
staggerChildren: 0.1
}
}
};
const sectionVariants = {
hidden: { opacity: 0, y: 20 },
visible: { opacity: 1, y: 0 }
};
// Helper to render specific style for headers
const H2 = ({ children }: { children: React.ReactNode }) => (
<h2 style={{ fontSize: '1.8rem', marginTop: '3rem', marginBottom: '1.5rem', fontWeight: '700', color: 'var(--primary-color)' }}>{children}</h2>
);
const H3 = ({ children }: { children: React.ReactNode }) => (
<h3 style={{ fontSize: '1.4rem', marginTop: '2rem', marginBottom: '1rem', fontWeight: '600', color: 'var(--text-color)' }}>{children}</h3>
);
const P = ({ children }: { children: React.ReactNode }) => (
<p style={{ lineHeight: '1.8', opacity: 0.9, marginBottom: '1rem', fontSize: '1rem' }}>{children}</p>
);
const List = ({ items }: { items: string[] }) => (
<ul style={{ listStyle: 'none', paddingLeft: '1rem', marginBottom: '1.5rem' }}>
{items.map((item, idx) => (
<li key={idx} style={{ marginBottom: '0.5rem', display: 'flex', alignItems: 'flex-start', gap: '10px' }}>
<span style={{ color: 'var(--primary-color)', marginTop: '5px' }}></span>
<span style={{ lineHeight: '1.6', opacity: 0.9 }}>{item}</span>
</li>
))}
</ul>
);
return (
<div className="homesync-policies-page" style={{ paddingTop: '100px', minHeight: '100vh', paddingBottom: '50px' }}>
<div className="container" style={{ maxWidth: '900px', margin: '0 auto', padding: '0 20px' }}>
<Link
to={`/${language}/homesync`}
style={{
display: 'inline-flex',
alignItems: 'center',
gap: '8px',
marginBottom: '40px',
color: 'var(--text-color)',
textDecoration: 'none',
fontSize: '1rem',
opacity: 0.8
}}
>
<ArrowLeft size={18} />
{t('policies.back')}
</Link>
<motion.div
variants={containerVariants}
initial="hidden"
animate="visible"
>
{/* Header */}
<motion.div variants={sectionVariants} style={{ marginBottom: '4rem', textAlign: 'center' }}>
<div style={{ display: 'inline-flex', padding: '1rem', background: 'rgba(79, 70, 229, 0.1)', borderRadius: '50%', marginBottom: '1.5rem' }}>
<Shield size={48} color="var(--primary-color)" />
</div>
<h1 style={{ fontSize: '2.5rem', marginBottom: '1rem', fontWeight: '800' }}>
FAMILY ORGANIZER / HOME SYNC
</h1>
<p style={{ fontSize: '1.2rem', opacity: 0.7, maxWidth: '700px', margin: '0 auto' }}>
Documentation du Projet & Politique de Confidentialité
</p>
<p style={{ fontSize: '0.9rem', opacity: 0.5, marginTop: '1rem' }}>
Dernière mise à jour : 12 février 2026 | Version : 2026.2.8
</p>
</motion.div>
{/* CONTENT START */}
<div style={{
background: 'var(--card-bg, rgba(255, 255, 255, 0.03))',
padding: '3rem',
borderRadius: '1.5rem',
border: '1px solid var(--border-color, rgba(255, 255, 255, 0.08))'
}}>
{/* PARTIE 1 */}
<motion.div variants={sectionVariants}>
<h1 style={{ fontSize: '2rem', borderBottom: '2px solid var(--primary-color)', paddingBottom: '1rem', marginBottom: '2rem' }}>
PARTIE 1 : DESCRIPTION DU PROJET
</h1>
<H2>1.1 PRÉSENTATION GÉNÉRALE</H2>
<P>
Family Organizer est une application mobile développée avec Flutter qui permet aux familles de simplifier et centraliser la gestion quotidienne de leur foyer.
</P>
<P>
L'application offre une plateforme collaborative où tous les membres d'une famille peuvent :
</P>
<List items={[
"Synchroniser leurs emplois du temps",
"Gérer des listes de courses partagées",
"Organiser des événements et rappels",
"Rester connectés en temps réel"
]} />
<H2>1.2 FONCTIONNALITÉS PRINCIPALES</H2>
<H3>📅 CALENDRIER PARTAGÉ & INTELLIGENT</H3>
<List items={[
"Vue centralisée de tous les événements familiaux",
"Trois modes d'affichage : Mois, Semaine, Jour",
"Synchronisation bidirectionnelle avec Google Agenda (optionnelle)",
"Import et export d'événements avec Google Calendar",
"Types d'événements personnalisés avec code couleur et icônes",
"Catégories : Sport, École, Repas, Travail, Loisirs, etc.",
"Ajout de détails riches : lieu, description, priorité",
"Liens automatiques vers Waze/Google Maps pour la navigation",
"Gestion de la visibilité (privé/partagé)",
"Notifications et rappels paramétrables"
]} />
<H3>🛒 LISTES DE COURSES COLLABORATIVES</H3>
<List items={[
"Ajout et modification en temps réel",
"Synchronisation instantanée entre tous les membres",
"Organisation par état (à acheter / acheté)",
"Gestion collaborative : toute modification est visible immédiatement",
"Réorganisation possible des articles"
]} />
<H3>👥 GESTION DE FAMILLE (HOUSEHOLD)</H3>
<List items={[
"Création de nouvelles familles",
"Système de rejoindre une famille via ID unique",
"Gestion des profils utilisateurs",
"Administration des membres de la famille",
"Plusieurs foyers possibles par utilisateur"
]} />
<H3>🔐 SÉCURITÉ & AUTHENTIFICATION</H3>
<List items={[
"Connexion par email et mot de passe",
"Connexion via Google Sign-In",
"Sécurisation des données utilisateur",
"Gestion des sessions et tokens d'authentification"
]} />
<H3>🎨 PERSONNALISATION</H3>
<List items={[
"Thèmes personnalisables (clair/sombre)",
"Préférences sauvegardées par utilisateur",
"Interface adaptative et responsive"
]} />
<H2>1.3 STACK TECHNIQUE</H2>
<H3>Frontend</H3>
<List items={[
"Framework : Flutter (Dart 3.9.2)",
"State Management : BLoC (Business Logic Component)",
"UI : Material Design avec thèmes personnalisés"
]} />
<H3>Backend & Services</H3>
<List items={[
"Firebase Core (authentification, base de données, stockage)",
"Cloud Firestore (base de données en temps réel)",
"Firebase Authentication (gestion des utilisateurs)",
"Firebase Cloud Messaging (notifications push)",
"Firebase Storage (stockage des fichiers et images)"
]} />
<H2>1.4 ARCHITECTURE DE L'APPLICATION</H2>
<P>L'application suit l'architecture BLoC (Business Logic Component) favorisant la séparation des responsabilités et la testabilité.</P>
</motion.div>
<div style={{ height: '3rem' }}></div>
{/* PARTIE 2 */}
<motion.div variants={sectionVariants}>
<h1 style={{ fontSize: '2rem', borderBottom: '2px solid var(--primary-color)', paddingBottom: '1rem', marginBottom: '2rem' }}>
PARTIE 2 : POLITIQUE DE CONFIDENTIALITÉ
</h1>
<P>
Cette Politique de Confidentialité décrit comment Family Organizer ("nous", "notre" ou "l'application") collecte, utilise et protège vos informations personnelles.
</P>
<H2>2.1 INFORMATIONS COLLECTÉES</H2>
<P>Nous collectons différents types d'informations pour fournir et améliorer nos services :</P>
<H3>A) INFORMATIONS D'IDENTIFICATION PERSONNELLE</H3>
<List items={[
"Prénom et nom",
"Adresse e-mail",
"Mot de passe (stocké de manière chiffrée via Firebase Authentication)",
"Photo de profil (optionnelle)",
"Plateforme d'authentification utilisée (Email ou Google)",
"Date de création du compte"
]} />
<H3>B) INFORMATIONS DE CONNEXION GOOGLE</H3>
<P>Si vous choisissez de vous connecter via Google Sign-In :</P>
<List items={[
"ID utilisateur Google",
"Nom et prénom associés au compte Google",
"Adresse e-mail Google",
"Photo de profil Google",
"Token d'accès Google (pour la synchronisation Google Calendar)"
]} />
<H3>C) DONNÉES D'UTILISATION DE L'APPLICATION</H3>
<List items={[
"Événements du calendrier (titre, description, date, heure, lieu, priorité)",
"Listes de courses (articles, statuts)",
"Informations de famille/foyer (nom, membres, code d'invitation)",
"Préférences de notifications",
"Paramètres de l'application"
]} />
<H3>D) DONNÉES GOOGLE CALENDAR (SI SYNCHRONISATION ACTIVÉE)</H3>
<List items={[
"Événements de votre Google Calendar",
"Métadonnées des événements (titre, date, heure, lieu, description)",
"Permissions d'accès en lecture et écriture à votre Google Calendar"
]} />
<H2>2.2 COMMENT NOUS UTILISONS VOS INFORMATIONS</H2>
<H3>A) FOURNITURE DES SERVICES</H3>
<List items={[
"Créer et gérer votre compte utilisateur",
"Authentifier votre identité lors de la connexion",
"Synchroniser vos données entre appareils",
"Permettre la collaboration avec les membres de votre famille",
"Afficher et gérer vos événements du calendrier",
"Gérer vos listes de courses partagées",
"Envoyer des notifications et rappels"
]} />
<H3>B) SYNCHRONISATION GOOGLE CALENDAR</H3>
<List items={[
"Importer des événements depuis Google Calendar",
"Exporter des événements vers Google Calendar",
"Maintenir la synchronisation bidirectionnelle"
]} />
<H2>2.3 PARTAGE DE VOS INFORMATIONS</H2>
<H3>A) PARTAGE AU SEIN DE VOTRE FAMILLE/FOYER</H3>
<P>Les informations suivantes sont partagées avec les membres de votre famille :</P>
<List items={[
"Votre nom et photo de profil",
"Les événements que vous marquez comme \"partagés\"",
"Les listes de courses de la famille",
"Les rappels familiaux"
]} />
<P><em>Les événements marqués comme "privés" ne sont <strong>PAS</strong> visibles par les autres membres.</em></P>
<H3>B) PARTAGE AVEC DES TIERS</H3>
<P>Nous partageons vos informations avec les services tiers suivants :</P>
<ul style={{ listStyle: 'none', paddingLeft: '1rem' }}>
<li style={{ marginBottom: '1rem' }}>
<strong>• FIREBASE (GOOGLE)</strong><br />
Authentification, Base de données, Stockage, Notifications.<br />
<a href="https://firebase.google.com/support/privacy" target="_blank" rel="noopener noreferrer" style={{ color: 'var(--primary-color)' }}>Politique de confidentialité Firebase</a>
</li>
<li style={{ marginBottom: '1rem' }}>
<strong>• GOOGLE APIS</strong><br />
Synchronisation Google Calendar, Google Sign-In.<br />
<a href="https://policies.google.com/privacy" target="_blank" rel="noopener noreferrer" style={{ color: 'var(--primary-color)' }}>Politique de confidentialité Google</a>
</li>
</ul>
<H2>2.4 SÉCURITÉ DES DONNÉES</H2>
<P>Nous prenons la sécurité de vos données très au sérieux :</P>
<List items={[
"Chiffrement des mots de passe via Firebase Authentication",
"Communication sécurisée HTTPS/TLS",
"Stockage sécurisé des tokens d'authentification",
"Règles de sécurité Firestore pour protéger l'accès aux données"
]} />
<H2>2.6 VOS DROITS</H2>
<P>Conformément aux réglementations sur la protection des données (RGPD), vous disposez des droits suivants :</P>
<List items={[
"Droit d'accès",
"Droit de rectification",
"Droit à l'effacement",
"Droit à la portabilité",
"Droit d'opposition",
"Droit de retirer votre consentement"
]} />
<H2>2.7 GOOGLE CALENDAR - INFORMATIONS SPÉCIFIQUES</H2>
<P>La synchronisation avec Google Calendar est <strong>OPTIONNELLE</strong> et nécessite votre consentement explicite.</P>
<P>Les données de votre Google Calendar sont utilisées UNIQUEMENT pour :</P>
<List items={[
"Importer vos événements Google dans Family Organizer",
"Exporter vos événements Family Organizer vers Google Calendar",
"Maintenir la synchronisation bidirectionnelle"
]} />
<H2>2.16 CONTACT</H2>
<P>Pour toute question concernant cette Politique de Confidentialité ou vos données personnelles, vous pouvez nous contacter via les paramètres de l'application.</P>
</motion.div>
</div>
</motion.div>
</div>
</div>
);
};
export default HomeSyncPolicies;

View File

@@ -262,31 +262,33 @@ const translations = {
// Home Sync Page
'homesync.page.mainTitle': 'Home Sync 👨‍👩‍👧‍👦',
'homesync.page.subtitle': 'L\'organisateur familial ultime',
'homesync.page.intro': 'Bienvenue dans Home Sync, l\'application conçue pour simplifier la gestion quotidienne de votre foyer ! Synchronisez vos emplois du temps, gérez des listes de courses partagées et restez organisés, le tout en temps réel. (Projet privé)',
'homesync.page.intro': 'Family Organizer est une application mobile développée avec Flutter qui permet aux familles de simplifier et centraliser la gestion quotidienne de leur foyer. Synchronisez vos emplois du temps, gérez des listes de courses partagées et restez connectés en temps réel.',
'homesync.highlights.title': '✨ Fonctionnalités Principales',
'homesync.highlight.1.title': 'Calendrier Partagé & Intelligent',
'homesync.highlight.1.desc': 'Vue centralisée de tous les événements de la famille. Synchronisation Google Agenda bidirectionnelle (import/export) avec indicateurs visuels.',
'homesync.highlight.1.desc': 'Vue centralisée de tous les événements familiaux (Mois, Semaine, Jour). Synchronisation bidirectionnelle avec Google Agenda, catégories personnalisées et rappels intelligents.',
'homesync.highlight.2.title': 'Listes de Courses Collaboratives',
'homesync.highlight.2.desc': 'Ajoutez et cochez des articles en temps réel. Organisation par état et bientôt fonction glisser-déposer pour le parcours en magasin.',
'homesync.highlight.3.title': 'Gestion de Foyer',
'homesync.highlight.3.desc': 'Créez un foyer ou rejoignez-en un existant via un ID unique. Gestion simple des profils utilisateurs.',
'homesync.highlight.4.title': 'Sécurité & Authentification',
'homesync.highlight.4.desc': 'Connexion sécurisée via Email ou Google. Vos données familiales restent privées et protégées.',
'homesync.highlight.2.desc': 'Ajout et modification en temps réel. Organisation par état (à acheter / acheté) et synchronisation instantanée entre tous les membres du foyer.',
'homesync.highlight.3.title': 'Gestion de Famille (Household)',
'homesync.highlight.3.desc': 'Système de rejoindre une famille via ID unique, gestion des profils et administration des membres. Plusieurs foyers possibles.',
'homesync.highlight.4.title': 'Sécurité & Personnalisation',
'homesync.highlight.4.desc': 'Connexion sécurisée (Email/Google), thèmes personnalisables (clair/sombre) et gestion fine des notifications push.',
'homesync.page.conclusion': 'Reprenez le contrôle de votre organisation familiale avec Home Sync.',
'homesync.tech.title': '🛠️ Stack Technique',
'homesync.tech.frontend': 'Frontend (Flutter)',
'homesync.tech.frontend.1': 'Interface utilisateur moderne et réactive',
'homesync.tech.frontend.2': 'Gestion d\'état avec BLoC',
'homesync.tech.backend': 'Backend / Database (Firebase)',
'homesync.tech.backend.1': 'Firestore pour les données temps réel',
'homesync.tech.backend.2': 'Authentication (Email, Google)',
'homesync.tech.api': 'APIs',
'homesync.tech.api.1': 'Google Calendar API',
'homesync.tech.frontend': 'Frontend',
'homesync.tech.frontend.1': 'Flutter (Dart 3.9.2) & BLoC Pattern',
'homesync.tech.frontend.2': 'Material Design avec thèmes personnalisés',
'homesync.tech.backend': 'Backend & Services',
'homesync.tech.backend.1': 'Firebase Core, Auth, Firestore & Storage',
'homesync.tech.backend.2': 'Firebase Cloud Messaging (Notifications)',
'homesync.tech.api': 'APIs & Intégrations',
'homesync.tech.api.1': 'Google Calendar API & Google Sign-In',
'homesync.viewCode': 'Code source (Privé)',
'homesync.legal.link': 'Documentation & Politique de Confidentialité',
// Contact
'contact.title': 'Contactez-moi',
'contact.subtitle': 'Une question, un projet ou simplement envie de discuter ? N\'hésitez pas à me contacter !',
@@ -548,31 +550,33 @@ const translations = {
// Home Sync Page
'homesync.page.mainTitle': 'Home Sync 👨‍👩‍👧‍👦',
'homesync.page.subtitle': 'The ultimate family organizer',
'homesync.page.intro': 'Welcome to Home Sync, the app designed to simplify your household\'s daily management! Sync schedules, manage shared shopping lists, and stay organized, all in real-time. (Private Project)',
'homesync.page.intro': 'Family Organizer is a mobile application developed with Flutter that allows families to simplify and centralize the daily management of their household. Synchronize your schedules, manage shared shopping lists, and stay connected in real-time.',
'homesync.highlights.title': '✨ Main Features',
'homesync.highlight.1.title': 'Shared & Smart Calendar',
'homesync.highlight.1.desc': 'Centralized view of all family events. Bidirectional Google Calendar synchronization (import/export) with visual indicators.',
'homesync.highlight.1.desc': 'Centralized view of all family events (Month, Week, Day). Bidirectional synchronization with Google Calendar, custom categories, and smart reminders.',
'homesync.highlight.2.title': 'Collaborative Shopping Lists',
'homesync.highlight.2.desc': 'Add and check off items in real-time. Organized by status and coming soon: drag-and-drop for store routing.',
'homesync.highlight.2.desc': 'Real-time addition and modification. Organization by status (to buy / bought) and instant synchronization between all household members.',
'homesync.highlight.3.title': 'Household Management',
'homesync.highlight.3.desc': 'Create a new household or join an existing one via a unique ID. Simple user profile management.',
'homesync.highlight.4.title': 'Security & Authentication',
'homesync.highlight.4.desc': 'Secure login via Email or Google. Your family data remains private and protected.',
'homesync.highlight.3.desc': 'System to join a family via unique ID, profile management, and member administration. Multiple households possible.',
'homesync.highlight.4.title': 'Security & Customization',
'homesync.highlight.4.desc': 'Secure login (Email/Google), customizable themes (light/dark), and fine-grained push notification management.',
'homesync.page.conclusion': 'Take back control of your family organization with Home Sync.',
'homesync.tech.title': '🛠️ Tech Stack',
'homesync.tech.frontend': 'Frontend (Flutter)',
'homesync.tech.frontend.1': 'Modern and responsive user interface',
'homesync.tech.frontend.2': 'State Management with BLoC',
'homesync.tech.backend': 'Backend / Database (Firebase)',
'homesync.tech.backend.1': 'Firestore for real-time data',
'homesync.tech.backend.2': 'Authentication (Email, Google)',
'homesync.tech.api': 'APIs',
'homesync.tech.api.1': 'Google Calendar API',
'homesync.tech.frontend': 'Frontend',
'homesync.tech.frontend.1': 'Flutter (Dart 3.9.2) & BLoC Pattern',
'homesync.tech.frontend.2': 'Material Design with custom themes',
'homesync.tech.backend': 'Backend & Services',
'homesync.tech.backend.1': 'Firebase Core, Auth, Firestore & Storage',
'homesync.tech.backend.2': 'Firebase Cloud Messaging (Notifications)',
'homesync.tech.api': 'APIs & Integrations',
'homesync.tech.api.1': 'Google Calendar API & Google Sign-In',
'homesync.viewCode': 'Source Code (Private)',
'homesync.legal.link': 'Documentation & Privacy Policy',
// Contact
'contact.title': 'Contact me',
'contact.subtitle': 'A question, a project or just want to chat? Feel free to contact me!',