67 |
68 | );
69 | };
70 |
71 | export default ActivitySection;
72 |
--------------------------------------------------------------------------------
/locales/en/conduct.json:
--------------------------------------------------------------------------------
1 | {
2 | "conductPage": {
3 | "tag": "galsen.dev/code-of-conduct",
4 | "title": "Code of Conduct",
5 | "description": "At Galsen DEV, we are committed to building an inclusive, supportive, and respectful community that is open to everyone, regardless of experience level, background, religion, or personal circumstances.",
6 | "description2": "We do not tolerate any form of harassment or abusive behavior towards members of the community, whether during our events, online (Discord, Telegram, social media), or in any interaction related to Galsen DEV.",
7 | "step1": "🙌 What We Expect",
8 | "desc1": "All participants in Galsen DEV activities — including members, ambassadors, speakers, volunteers, and organizers — are expected to follow these rules:",
9 | "addS1-1": "- Be respectful in your words and behavior.",
10 | "addS1-2": "- Be kind: help, encourage, and support others.",
11 | "addS1-3": "- Sexist, racist, discriminatory, or offensive language will not be tolerated.",
12 | "addS1-4": "- Do not use sexual or inappropriate language or imagery.",
13 | "addS1-5": "- Do not post photos of people without their consent.",
14 | "addS1-6": "- Be considerate of those for whom French is not their first language.",
15 | "end1": "We are a pan-African community: please keep in mind that everyone brings different cultural sensitivities.",
16 | "step2": "🚫 What Is Considered Harassment",
17 | "desc2": "Harassment includes (but is not limited to):",
18 | "addS2-1": "- Offensive or discriminatory remarks (online or in person).",
19 | "addS2-2": "- Intimidation, threats, or repeated harassment.",
20 | "addS2-3": "- Unwanted photography or recordings.",
21 | "addS2-4": "- Intentional disruption of workshops, discussions, or chat channels.",
22 | "end2": "Anyone asked to stop inappropriate behavior must comply immediately.",
23 | "step3": "⚠️ If a Problem Arises",
24 | "desc3": "If you witness or experience inappropriate behavior or have any concerns, contact a member of the Galsen DEV team right away (Discord moderators, admins, event staff). We are here to listen, support you, and take appropriate action.",
25 | "desc4": "Actions may include a warning, temporary or permanent removal from an event, the Discord server, or the community as a whole, depending on the severity of the situation.",
26 | "final": "Last updated: 28/06/2025"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/locales/fr/home.json:
--------------------------------------------------------------------------------
1 | {
2 | "hero": {
3 | "firstHeading": "Renforcer la scène tech sénégalaise,",
4 | "secondHeading": "connecter les développeurs,",
5 | "thirdHeading": "partager et offrir un soutien communautaire.",
6 | "text": "Galsen DEV est une communauté qui regroupe les développeurs sénégalais dans le but de mettre en place un écosystème favorable à la création et au partage entre développeurs et de vulgariser la programmation partout au Sénégal."
7 | },
8 | "stats": {
9 | "title": "Une grande famille",
10 | "description": "Créée en 2018, Galsen DEV accueille chaque jours de nouveaux membres.",
11 | "events": {
12 | "title": "Événements",
13 | "count": "+100"
14 | },
15 | "members": {
16 | "title": "Membres",
17 | "count": "+2.5K"
18 | },
19 | "commits": {
20 | "title": "Commits",
21 | "count": "+500"
22 | }
23 | },
24 | "activity": {
25 | "first": {
26 | "heading": {
27 | "first": "Vous avez un",
28 | "second": "problème",
29 | "third": "nous avons la",
30 | "fourth": "solution"
31 | },
32 | "text": "Quelque soit votre problème, ensemble nous trouverons une solution. Que ce soit un oubli de point-virgule ou bien comment centrer une div avec CSS, la communauté est là pour vous."
33 | },
34 | "second": {
35 | "heading": {
36 | "first": "Des",
37 | "second": "événements",
38 | "third": "pour tout le monde"
39 | },
40 | "text": "La communauté organise constamment des sessions de partage et de découverte en ligne avec ses membres, connectez-vous avec nous pour suivre nos activités."
41 | }
42 | },
43 | "lastEvent": {
44 | "heading": {
45 | "first": "Notre dernier event :",
46 | "second": "Hacktoberfest 2025"
47 | },
48 | "text": "Le Hacktoberfest 2025 a une fois de plus célébré l’open source de la plus belle des manières. Cette 5ᵉ édition a été marquée par une série de conférences enrichissantes, un panel inspirant et des échanges dynamiques entre passionnés, étudiants et professionnels. Une journée rythmée par le partage, l’apprentissage et la collaboration, qui a renforcé l’esprit communautaire et l’engagement autour de la culture open source au Sénégal.",
49 | "button": "En savoir plus",
50 | "photos": "Voir les photos"
51 | },
52 | "partners": {
53 | "title": {
54 | "first": "Ils nous ont fait",
55 | "second": "confiance",
56 | "third": ".. et partagent",
57 | "fourth": "nos valeurs"
58 | }
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/src/components/LanguageSelector.tsx:
--------------------------------------------------------------------------------
1 | import { Fragment } from 'react';
2 | import { Listbox, Transition } from '@headlessui/react';
3 | import setLanguage from 'next-translate/setLanguage';
4 | import useTranslation from 'next-translate/useTranslation';
5 |
6 | import { Icon } from './ui/icon';
7 | import { cn } from '@utils/cn';
8 |
9 | const LanguageSelector = () => {
10 | const { lang } = useTranslation('common');
11 | const languages = [
12 | { name: 'Français', code: 'fr' },
13 | { name: 'English', code: 'en' },
14 | ];
15 |
16 | return (
17 | code === lang)?.code}
19 | onChange={async (code) => await setLanguage(code)}
20 | >
21 |
63 |
64 | );
65 | };
66 |
67 | export default EventSection;
68 |
--------------------------------------------------------------------------------
/locales/fr/conduct.json:
--------------------------------------------------------------------------------
1 | {
2 | "conductPage": {
3 | "tag": "galsen.dev/code-de-conduite",
4 | "title": "Code de Conduite",
5 | "description": "Chez Galsen DEV, nous nous engageons à bâtir une communauté inclusive, bienveillante et respectueuse, ouverte à toutes et à tous, quel que soit le niveau d'expérience, l’origine, la religion ou la situation personnelle.",
6 | "description2": "Nous ne tolérons aucune forme de harcèlement ou de comportement abusif envers les membres de la communauté, que ce soit lors de nos événements, en ligne (Discord, Telegram, réseaux sociaux) ou dans toute interaction liée à Galsen DEV.",
7 | "step1": "🙌 Ce que nous attendons",
8 | "desc1": "Tous les participants aux activités de Galsen DEV — qu’ils soient membres, ambassadeurs, intervenants, bénévoles ou organisateurs — sont tenus de respecter les règles suivantes :",
9 | "addS1-1": "- Soyez respectueux dans vos propos et vos comportements.",
10 | "addS1-2": "- Soyez bienveillants : aidez, encouragez et soutenez les autres.",
11 | "addS1-3": "- Aucun propos sexiste, raciste, discriminatoire ou offensant ne sera toléré.",
12 | "addS1-4": "- N’utilisez pas de langage ou d’images à caractère sexuel ou inapproprié.",
13 | "addS1-5": "- Ne publiez pas de photos de personnes sans leur consentement.",
14 | "addS1-6": "- Respectez les personnes pour qui le français n’est pas la langue principale.",
15 | "end1": "Nous sommes une communauté panafricaine : merci de garder à l’esprit que chacun vient avec une sensibilité culturelle différente.",
16 | "step2": "🚫 Ce qui est considéré comme du harcèlement",
17 | "desc2": "Le harcèlement inclut (sans s’y limiter) :",
18 | "addS2-1": "- Propos offensants ou discriminatoires (en ligne ou en personne).",
19 | "addS2-2": "- Intimidation, menaces ou harcèlement répété.",
20 | "addS2-3": "- Photographies ou enregistrements non désirés.",
21 | "addS2-4": "- Perturbation intentionnelle d’ateliers, discussions ou canaux de discussion.",
22 | "end2": "Toute personne invitée à cesser un comportement jugé inapproprié doit se conformer immédiatement.",
23 | "step3": "⚠️ En cas de problème",
24 | "desc3": "Si vous êtes témoin ou victime d’un comportement déplacé ou avez une préoccupation, contactez immédiatement un membre de l’équipe Galsen DEV (modérateurs Discord, admins, staff événementiel). Nous sommes là pour vous écouter, vous soutenir et agir de manière appropriée.",
25 | "desc4": "Des mesures pourront être prises selon la gravité, incluant un avertissement, l’exclusion temporaire ou définitive d’un événement, du serveur Discord, ou de la communauté dans son ensemble.",
26 | "final": "Dernière mise à jour : 28/06/2025"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/components/Navbar.tsx:
--------------------------------------------------------------------------------
1 | import Link from 'next/link';
2 | import { useRouter } from 'next/router';
3 | import useTranslation from 'next-translate/useTranslation';
4 |
5 | import Donation from './announcements/Donation';
6 | import GalsenDevLogo from './svg/GalsenDevLogo';
7 | import { SocialLink } from './SocialLink';
8 |
9 | import { cn } from '@utils/cn';
10 | import LanguageSelector from './LanguageSelector';
11 | import MobileMenu from './MobileMenu';
12 |
13 | // TODO: refactor this component, there's much things going on here
14 | const Navbar = () => {
15 | const { t } = useTranslation('common');
16 | const { asPath } = useRouter();
17 |
18 | const links = [
19 | { name: t('navbar.home'), path: '/' },
20 | { name: t('navbar.events'), path: '/events' },
21 | { name: t('navbar.gallery'), path: '/gallery' },
22 | {
23 | name: 'Blog ↗',
24 | path: 'https://medium.com/@galsendev221',
25 | target: '_blank',
26 | },
27 | { name: t('navbar.about'), path: '/about' },
28 | { name: t('navbar.conduct'), path: '/conduct' },
29 | ];
30 |
31 | return (
32 |
72 | >
73 | );
74 | }
75 |
--------------------------------------------------------------------------------
/other/svg-icons/whatsapp.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/locales/en/terms.json:
--------------------------------------------------------------------------------
1 | {
2 | "termsPage": {
3 | "tag": "galsen.dev/terms-of-use",
4 | "title": "Terms of Use",
5 | "description": "Welcome to Galsen DEV's terms of use page. These terms govern your use of our website www.galsen.dev and the related services we provide. By accessing and using this website, you agree to these terms in full. If you do not agree to these terms, please do not use this website.",
6 | "step1": "Website Use",
7 | "desc1": "You agree to use this website only for lawful purposes and in accordance with these terms of use. You agree not to use this website in any way that violates applicable local, national, or international laws.",
8 | "step2": "Intellectual Property",
9 | "desc2": "The content, features, and design of this website are protected by copyright laws and other intellectual property laws. You agree to respect all intellectual property rights and not reproduce, distribute, modify, or create derivative works based on the content of this website without our prior written permission.",
10 | "step3": "Use of Third-Party Services",
11 | "desc3": "To provide a better user experience and ensure the proper functioning of our site, we use the following third-party services:",
12 | "addS3-1": "1. Cloudinary:",
13 | "addS3-2": "Used for hosting and displaying images on our site. This service helps us ensure that images are loaded quickly and efficiently.",
14 | "addS3-3": "2. Beamanalytics:",
15 | "addS3-4": "Used to collect analytical data on user navigation. This data is used to generate reports and analyses on our dashboard, enabling us to improve the user experience.",
16 | "addS3-5": "3. OpenStatus:",
17 | "addS3-6": "Used for real-time monitoring of website status and collecting data on performance and errors. This helps us ensure the reliability and availability of our site.",
18 | "step4": "Limitation of Liability",
19 | "desc4": "This website and its content are provided 'as is' without any warranty of any kind, express or implied. We do not warrant the accuracy, completeness, or reliability of the content of this website. To the fullest extent permitted by applicable law, we disclaim all liability for any damages or harm arising from your use of this website.",
20 | "step5": "Changes to the Terms",
21 | "desc5": "We reserve the right to modify these terms of use at any time. Any modification will be effective immediately upon posting on this page. By continuing to use this website after the modifications are posted, you agree to these changes.",
22 | "step6": "Links to Third-Party Sites",
23 | "desc6": "Our website may contain links to third-party websites. Please note that we are not responsible for the privacy practices of these other sites. We encourage you to read the privacy statements of each website you visit.",
24 | "step7": "Contact Us",
25 | "desc7": "If you have any questions or concerns about these terms of use, please contact us at galsendev221@gmail.com",
26 | "final": "Last updated: 15/06/2024"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/components/legal/LegalTerms.tsx:
--------------------------------------------------------------------------------
1 | import useTranslation from 'next-translate/useTranslation';
2 |
3 | export default function LegalTerms() {
4 | const { t, lang } = useTranslation('terms');
5 | return (
6 | <>
7 |
8 |
9 |
10 |
11 | {t('termsPage.tag')}
12 |
13 |
{t('termsPage.title')}
14 |
{t('termsPage.description')}
15 |
16 |
17 |
18 |
{t('termsPage.step1')}
19 |
{t('termsPage.desc1')}
20 |
21 |
22 |
23 |
{t('termsPage.step2')}
24 |
{t('termsPage.desc2')}
25 |
26 |
27 |
28 |
{t('termsPage.step3')}
29 |
{t('termsPage.desc3')}
30 |
31 | {t('termsPage.addS3-1')}
32 |
33 |
{t('termsPage.addS3-2')}
34 |
35 | {t('termsPage.addS3-3')}
36 |
37 |
{t('termsPage.addS3-4')}
38 |
39 | {t('termsPage.addS3-5')}
40 |
41 |
{t('termsPage.addS3-6')}
42 |
43 |
44 |
45 |
{t('termsPage.step4')}
46 |
{t('termsPage.desc4')}
47 |
48 |
49 |
50 |
{t('termsPage.step5')}
51 |
{t('termsPage.desc5')}
52 |
53 |
54 |
55 |
{t('termsPage.step6')}
56 |
{t('termsPage.desc6')}
57 |
58 |
59 |
60 |
{t('termsPage.step7')}
61 |
{t('termsPage.desc7')}
62 |
63 |
64 |
65 |
66 | {t('termsPage.final')}
67 |
68 |
69 |
70 |
71 | >
72 | );
73 | }
74 |
--------------------------------------------------------------------------------
/locales/en/privacy.json:
--------------------------------------------------------------------------------
1 | {
2 | "privacyPage": {
3 | "tag": "galsen.dev/privacy-compliance",
4 | "title": "Privacy Compliance",
5 | "description": "Welcome to Galsen DEV's privacy page. We are committed to protecting your online privacy while providing you with a pleasant and enriching experience on our website www.galsen.dev",
6 | "step1": "Information Collection",
7 | "desc1": "When you visit our website, we do not collect personally identifiable information unless you choose to provide it voluntarily, such as by filling out a contact form. We respect your right to privacy and only collect information necessary to respond to your requests or provide the services you have requested.",
8 | "step2": "Use of Information",
9 | "desc2": "The information you provide to us is used only for the specific purpose for which it was provided. We do not use it for any other purposes without your explicit consent. We do not sell, rent, or share your personal information with third parties, except for third-party services we use to enhance your user experience.",
10 | "addS2": "We use the following services:",
11 | "addS2-1": "1. Cloudinary:",
12 | "addS2-2": "- Use: For hosting and displaying images on our site, ensuring fast and efficient image loading.",
13 | "addS2-3": "- Data collected: Metadata associated with images (e.g., file types, image sizes).",
14 | "addS2-4": "2. Beamanalytics:",
15 | "addS2-5": "- Use: To collect user navigation data to better understand user behavior and improve user experience.",
16 | "addS2-6": "- Data collected: Information such as IP addresses, visited pages, session durations, and other browsing-related data.",
17 | "addS2-7": "3. OpenStatus:",
18 | "addS2-8": "- Use: To monitor real-time website status and collect data on performance and errors.",
19 | "addS2-9": "- Data collected: Information about page load times, site errors, and other performance data.",
20 | "step3": "Cookies",
21 | "desc3": "We use cookies to enhance your browsing experience on our website. Cookies are small text files stored on your computer that help us analyze site usage trends, personalize content, and provide features such as language preferences. You can choose to accept or decline cookies through your web browser settings.",
22 | "step4": "Data Security",
23 | "desc4": "We take reasonable security measures to protect the information you provide to us against unauthorized access, disclosure, alteration, or destruction.",
24 | "step5": "Links to Third-Party Sites",
25 | "desc5": "Our website may contain links to third-party websites. Please note that we are not responsible for the privacy practices of these other sites. We encourage you to read the privacy statements of each website you visit.",
26 | "step6": "Changes to Privacy Policy",
27 | "desc6": "We reserve the right to modify this privacy policy at any time. Any changes will be posted on this page.",
28 | "step7": "Contact Us",
29 | "desc7": "If you have any questions or concerns about our privacy policy, please contact us at galsendev221@gmail.com",
30 | "final": "Last updated: 15/06/2024"
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/locales/en/policy.json:
--------------------------------------------------------------------------------
1 | {
2 | "policyPage": {
3 | "tag": "galsen.dev/privacy-policy",
4 | "title": "Privacy Policy",
5 | "description": "At Galsen DEV, we value the privacy of our visitors. This privacy policy describes how we collect, use, and protect information you provide to us when visiting our website www.galsen.dev",
6 | "step1": "Collection and Use of Information",
7 | "desc1": "We do not collect personally identifiable information when you visit our website unless you voluntarily provide it to us (e.g., by contacting us through the contact form). In such cases, the information you provide will only be used to respond to your specific request.",
8 | "addS1": "We use the following services to enhance user experience and ensure the proper functioning of our site:",
9 | "addS1-1": "1. Cloudinary:",
10 | "addS1-2": "- Use: We use Cloudinary for hosting and displaying images on our site, ensuring fast and efficient image loading.",
11 | "addS1-3": "- Data collected: Cloudinary may collect metadata associated with images (e.g., file types, image sizes).",
12 | "addS1-4": "2. Beamanalytics:",
13 | "addS1-5": "- Use: Beamanalytics is used to collect user navigation data on our site, helping us understand user behavior and improve user experience.",
14 | "addS1-6": "- Data collected: Beamanalytics may collect information such as IP addresses, visited pages, session durations, and other browsing-related data.",
15 | "addS1-7": "3. OpenStatus:",
16 | "addS1-8": "- Use: OpenStatus monitors real-time website status and collects data on site performance and errors.",
17 | "addS1-9": "- Data collected: OpenStatus may collect information about page load times, site errors, and other performance data.",
18 | "addS1-10": "We also use cookies to enhance visitor browsing experience. Cookies are small text files stored on your computer that help us analyze site usage trends, personalize content, and provide features such as language preferences. You can choose to accept or decline cookies through your web browser settings.",
19 | "step2": "Sharing of Information",
20 | "desc2": "We do not share, rent, or sell your personal information to third parties. The information you provide to us is strictly confidential and is only used for our internal activities and the purposes of the services mentioned above.",
21 | "step3": "Links to Third-Party Sites",
22 | "desc3": "Our website may contain links to third-party websites. Please note that we are not responsible for the privacy practices of these other sites. We encourage you to read the privacy statements of each website you visit.",
23 | "step4": "Information Security",
24 | "desc4": "We take reasonable measures to protect the information you provide to us against unauthorized access, disclosure, alteration, or destruction.",
25 | "step5": "Changes to Our Privacy Policy",
26 | "desc5": "We reserve the right to modify this privacy policy at any time. Any changes will be posted on this page.",
27 | "step6": "Contact Us",
28 | "desc6": "If you have any questions or concerns about our privacy policy, please contact us at galsendev221@gmail.com",
29 | "final": "Last updated: 15/06/2024"
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/components/legal/LegalPrivacy.tsx:
--------------------------------------------------------------------------------
1 | import useTranslation from 'next-translate/useTranslation';
2 |
3 | export default function LegalPrivacy() {
4 | const { t, lang } = useTranslation('privacy');
5 | return (
6 | <>
7 |
69 |
70 | );
71 | };
72 |
73 | interface PartnerProps {
74 | url: string;
75 | img: string;
76 | name: string;
77 | }
78 |
79 | const Partner = ({ url: link, img, name }: PartnerProps) => (
80 |
86 |
93 |
94 | );
95 |
96 | export default PartnersSection;
97 |
--------------------------------------------------------------------------------
/locales/fr/terms.json:
--------------------------------------------------------------------------------
1 | {
2 | "termsPage": {
3 | "tag": "galsen.dev/conditions-d-utilisation",
4 | "title": "Conditions d'Utilisation",
5 | "description": "Bienvenue sur la page des conditions d'utilisation de Galsen DEV. Ces conditions régissent votre utilisation de notre site web www.galsen.dev et les services connexes que nous fournissons. En accédant à ce site web et en l'utilisant, vous acceptez ces conditions dans leur intégralité. Si vous n'acceptez pas ces conditions, veuillez ne pas utiliser ce site web.",
6 | "step1": "Utilisation du Site",
7 | "desc1": "Vous acceptez d'utiliser ce site web uniquement à des fins légales et conformément à ces conditions d'utilisation. Vous acceptez de ne pas utiliser ce site web de manière à violer les lois locales, nationales ou internationales applicables.",
8 | "step2": "Propriété Intellectuelle",
9 | "desc2": "Le contenu, les fonctionnalités et la conception de ce site web sont protégés par les lois sur le droit d'auteur et autres lois relatives à la propriété intellectuelle. Vous acceptez de respecter tous les droits de propriété intellectuelle et de ne pas reproduire, distribuer, modifier ou créer des œuvres dérivées basées sur le contenu de ce site web sans notre autorisation écrite préalable.",
10 | "step3": "Utilisation des Services Tiers",
11 | "desc3": "Pour offrir une meilleure expérience utilisateur et assurer le bon fonctionnement de notre site, nous utilisons les services tiers suivants :",
12 | "addS3-1": "1. Cloudinary :",
13 | "addS3-2": "Utilisé pour l'hébergement et l'affichage des images sur notre site. Ce service nous aide à garantir que les images sont chargées de manière rapide et efficace.",
14 | "addS3-3": "2. Beamanalytics :",
15 | "addS3-4": "Utilisé pour collecter des données analytiques sur la navigation des utilisateurs. Ces données sont utilisées pour générer des rapports et des analyses sur notre tableau de bord, nous permettant d'améliorer l'expérience utilisateur.",
16 | "addS3-5": "3. OpenStatus :",
17 | "addS3-6": "Utilisé pour la surveillance en temps réel de l'état du site web et pour collecter des données sur les performances et les erreurs. Cela nous aide à assurer la fiabilité et la disponibilité de notre site.",
18 | "step4": "Limitation de Responsabilité",
19 | "desc4": "Ce site web et son contenu sont fournis 'tels quels' sans garantie d'aucune sorte, expresse ou implicite. Nous ne garantissons pas l'exactitude, l'exhaustivité ou la fiabilité du contenu de ce site web. Dans toute la mesure permise par la loi applicable, nous déclinons toute responsabilité pour tout dommage ou préjudice résultant de votre utilisation de ce site web.",
20 | "step5": "Modifications des Conditions",
21 | "desc5": "Nous nous réservons le droit de modifier ces conditions d'utilisation à tout moment. Toute modification prendra effet immédiatement après sa publication sur cette page. En continuant à utiliser ce site web après la publication des modifications, vous acceptez ces modifications.",
22 | "step6": "Liens vers des Sites Tiers",
23 | "desc6": "Notre site web peut contenir des liens vers des sites web tiers. Veuillez noter que nous ne sommes pas responsables des pratiques de confidentialité de ces autres sites. Nous vous encourageons à lire les déclarations de confidentialité de chaque site web que vous visitez.",
24 | "step7": "Contactez-nous",
25 | "desc7": "Si vous avez des questions ou des préoccupations concernant ces conditions d'utilisation, veuillez nous contacter à l'adresse galsendev221@gmail.com",
26 | "final": "Dernière mise à jour : 15/06/2024"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/components/MobileMenu.tsx:
--------------------------------------------------------------------------------
1 | import { Fragment, useEffect, useState } from 'react';
2 | import Link from 'next/link';
3 | import { useRouter } from 'next/router';
4 | import { Dialog, Transition } from '@headlessui/react';
5 |
6 | import LanguageSelector from './LanguageSelector';
7 | import { SocialLink } from './SocialLink';
8 | import { Icon } from './ui/icon';
9 |
10 | import { Space_Grotesk } from 'next/font/google';
11 | const grotesk = Space_Grotesk({ subsets: ['latin'] });
12 |
13 | interface MobileMenuProps {
14 | links: {
15 | name: string;
16 | path: string;
17 | }[];
18 | }
19 |
20 | const MobileMenu = ({ links }: MobileMenuProps) => {
21 | const [isOpen, setIsOpen] = useState(false);
22 | const { pathname } = useRouter();
23 | useEffect(() => setIsOpen(false), [pathname]);
24 |
25 | return (
26 | <>
27 |
35 |
36 |
37 |
98 |
99 | >
100 | );
101 | };
102 |
103 | export default MobileMenu;
104 |
--------------------------------------------------------------------------------
/src/components/Footer.tsx:
--------------------------------------------------------------------------------
1 | import Link from 'next/link';
2 | import useTranslation from 'next-translate/useTranslation';
3 |
4 | import { SocialLink } from './SocialLink';
5 | import GalsenDevLogo from './svg/GalsenDevLogo';
6 |
7 | const Footer = () => {
8 | const { t } = useTranslation('common');
9 |
10 | const links = [
11 | { name: t('navbar.policy'), path: '/policy' },
12 | { name: t('navbar.privacy'), path: '/privacy' },
13 | { name: t('navbar.terms'), path: '/terms' },
14 | ];
15 |
16 | return (
17 |
109 | );
110 | };
111 |
112 | export default Footer;
113 |
--------------------------------------------------------------------------------
/locales/fr/privacy.json:
--------------------------------------------------------------------------------
1 | {
2 | "privacyPage": {
3 | "tag": "galsen.dev/vie-privee",
4 | "title": "Respect de la Vie Privée",
5 | "description": "Bienvenue sur la page de vie privée de Galsen DEV. Nous sommes déterminés à protéger votre vie privée en ligne tout en vous fournissant une expérience agréable et enrichissante sur notre site web www.galsen.dev",
6 | "step1": "Collecte d'Informations",
7 | "desc1": "Lorsque vous visitez notre site web, nous ne collectons pas de données personnelles identifiables à moins que vous ne choisissiez de nous les fournir volontairement, par exemple en remplissant un formulaire de contact. Nous respectons votre droit à la confidentialité et ne collectons que les informations nécessaires pour répondre à vos demandes ou vous fournir les services que vous avez demandés.",
8 | "step2": "Utilisation des Informations",
9 | "desc2": "Les informations que vous nous fournissez sont utilisées uniquement dans le but spécifique pour lequel elles ont été fournies. Nous ne les utilisons pas à d'autres fins sans votre consentement explicite. Nous ne vendons, ne louons ni ne partageons vos informations personnelles avec des tiers, à l'exception des services tiers que nous utilisons pour améliorer votre expérience utilisateur.",
10 | "addS2": "Nous utilisons les services suivants :",
11 | "addS2-1": "1. Cloudinary :",
12 | "addS2-2": "- Utilisation : Pour l'hébergement et l'affichage des images sur notre site. Cela garantit que les images sont chargées rapidement et efficacement.",
13 | "addS2-3": "- Données collectées : Métadonnées associées aux images (par exemple, types de fichiers, tailles d'images).",
14 | "addS2-4": "2. Beamanalytics :",
15 | "addS2-5": "- Utilisation : Pour collecter des données sur la navigation des utilisateurs afin de mieux comprendre leur comportement et améliorer l'expérience utilisateur.",
16 | "addS2-6": "- Données collectées : Informations telles que les adresses IP, les pages visitées, la durée des sessions, et d'autres données relatives à la navigation.",
17 | "addS2-7": "3. OpenStatus :",
18 | "addS2-8": "- Utilisation : Pour surveiller l'état du site web en temps réel et collecter des données sur les performances et les erreurs.",
19 | "addS2-9": "- Données collectées : Informations sur les temps de chargement, les erreurs du site, et autres données de performance.",
20 | "step3": "Cookies",
21 | "desc3": "Nous utilisons des cookies pour améliorer votre expérience de navigation sur notre site web. Les cookies sont de petits fichiers texte stockés sur votre ordinateur qui nous aident à analyser les tendances d'utilisation du site, à personnaliser le contenu et à fournir des fonctionnalités telles que les préférences de langue. Vous pouvez choisir d'accepter ou de refuser les cookies via les paramètres de votre navigateur web.",
22 | "step4": "Sécurité des Données",
23 | "desc4": "Nous prenons des mesures de sécurité raisonnables pour protéger les informations que vous nous fournissez contre tout accès non autorisé, toute divulgation, toute altération ou toute destruction.",
24 | "step5": "Liens vers des Sites Tiers",
25 | "desc5": "Notre site web peut contenir des liens vers des sites web tiers. Veuillez noter que nous ne sommes pas responsables des pratiques de confidentialité de ces autres sites. Nous vous encourageons à lire les déclarations de confidentialité de chaque site web que vous visitez.",
26 | "step6": "Modifications de la Politique de Vie Privée",
27 | "desc6": "Nous nous réservons le droit de modifier cette politique de vie privée à tout moment. Toute modification sera publiée sur cette page.",
28 | "step7": "Contactez-nous",
29 | "desc7": "Si vous avez des questions ou des préoccupations concernant notre politique de vie privée, veuillez nous contacter à l'adresse galsendev221@gmail.com",
30 | "final": "Dernière mise à jour : 15/06/2024"
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/locales/fr/policy.json:
--------------------------------------------------------------------------------
1 | {
2 | "policyPage": {
3 | "tag": "galsen.dev/politique-de-confidentialite",
4 | "title": "Politique de Confidentialité",
5 | "description": "Nous, Galsen DEV, attachons une grande importance à la protection de la vie privée de nos visiteurs. Cette politique de confidentialité décrit comment nous recueillons, utilisons et protégeons les informations que vous nous fournissez lorsque vous visitez notre site web www.galsen.dev",
6 | "step1": "Collecte et Utilisation des Informations",
7 | "desc1": "Nous ne collectons pas de données personnelles identifiables lorsque vous visitez notre site web, sauf si vous choisissez de nous les fournir volontairement (par exemple, en nous contactant via le formulaire de contact). Dans ce cas, les informations que vous nous fournissez seront utilisées uniquement dans le but de répondre à votre demande spécifique.",
8 | "addS1": "Nous utilisons les services suivants pour améliorer l'expérience de nos utilisateurs et assurer le bon fonctionnement de notre site :",
9 | "addS1-1": "1. Cloudinary :",
10 | "addS1-2": "- Utilisation : Nous utilisons Cloudinary pour l'hébergement et l'affichage des images sur notre site. Cela nous permet de garantir que les images sont chargées rapidement et efficacement.",
11 | "addS1-3": "- Données collectées : Cloudinary peut collecter des métadonnées associées aux images (par exemple, types de fichiers, tailles d'images).",
12 | "addS1-4": "2. Beamanalytics :",
13 | "addS1-5": "- Utilisation : Beamanalytics est utilisé pour collecter des données sur la navigation des utilisateurs sur notre site. Ces données nous permettent de mieux comprendre le comportement des utilisateurs et d'améliorer l'expérience utilisateur.",
14 | "addS1-6": "- Données collectées : Beamanalytics peut collecter des informations telles que les adresses IP, les pages visitées, la durée des sessions, et d'autres données relatives à la navigation.",
15 | "addS1-7": "3. OpenStatus :",
16 | "addS1-8": "- Utilisation : OpenStatus est utilisé pour surveiller l'état du site web en temps réel et pour collecter des données sur les performances et les erreurs du site.",
17 | "addS1-9": "- Données collectées : OpenStatus peut collecter des informations sur les temps de chargement, les erreurs du site, et d'autres données relatives à la performance.",
18 | "addS1-10": "Nous utilisons également des cookies pour améliorer l'expérience de navigation de nos visiteurs. Les cookies sont de petits fichiers texte stockés sur votre ordinateur qui nous aident à analyser les tendances d'utilisation du site, à personnaliser le contenu et à fournir des fonctionnalités telles que les préférences de langue. Vous pouvez choisir d'accepter ou de refuser les cookies via les paramètres de votre navigateur web.",
19 | "step2": "Partage d'Informations",
20 | "desc2": "Nous ne partageons pas, ne louons pas et ne vendons pas vos informations personnelles à des tiers. Les informations que vous nous fournissez sont strictement confidentielles et ne sont utilisées que dans le cadre de nos activités internes et pour les besoins des services mentionnés ci-dessus.",
21 | "step3": "Liens vers des Sites Tiers",
22 | "desc3": "Notre site web peut contenir des liens vers des sites web tiers. Veuillez noter que nous ne sommes pas responsables des pratiques de confidentialité de ces autres sites. Nous vous encourageons à lire les déclarations de confidentialité de chaque site web que vous visitez.",
23 | "step4": "Sécurité des Informations",
24 | "desc4": "Nous prenons des mesures raisonnables pour protéger les informations que vous nous fournissez contre tout accès non autorisé, toute divulgation, toute altération ou toute destruction.",
25 | "step5": "Modification de notre Politique de Confidentialité",
26 | "desc5": "Nous nous réservons le droit de modifier cette politique de confidentialité à tout moment. Toute modification sera publiée sur cette page.",
27 | "step6": "Contactez-nous",
28 | "desc6": "Si vous avez des questions ou des préoccupations concernant notre politique de confidentialité, veuillez nous contacter à l'adresse galsendev221@gmail.com",
29 | "final": "Dernière mise à jour : 15/06/2024"
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/other/build-icons.mts:
--------------------------------------------------------------------------------
1 | import * as path from 'node:path';
2 | import { $ } from 'execa';
3 | import fsExtra from 'fs-extra';
4 | import { parse } from 'node-html-parser';
5 | import pkg from 'glob';
6 | const { glob } = pkg;
7 |
8 | const cwd = process.cwd();
9 | const inputDir = path.join(cwd, 'other', 'svg-icons');
10 | const inputDirRelative = path.relative(cwd, inputDir);
11 | const typeDir = path.join(cwd, 'types');
12 | const outputDir = path.join(cwd, 'public', 'icons');
13 |
14 | await fsExtra.ensureDir(typeDir);
15 | await fsExtra.ensureDir(outputDir);
16 |
17 | const files = glob
18 | .sync('**/*.svg', {
19 | cwd: inputDir,
20 | })
21 | .sort((a, b) => a.localeCompare(b));
22 |
23 | const shouldVerboseLog = process.argv.includes('--log=verbose');
24 | const logVerbose = shouldVerboseLog ? console.log : () => {};
25 |
26 | if (files.length === 0) {
27 | console.log(`Aucun fichier SVG trouvé dans ${inputDirRelative}`);
28 | } else {
29 | await generateIconFiles();
30 | }
31 |
32 | async function generateIconFiles() {
33 | const spriteFilepath = path.join(outputDir, 'sprite.svg');
34 | const typeOutputFilepath = path.join(typeDir, 'name.d.ts');
35 | const currentSprite = await fsExtra
36 | .readFile(spriteFilepath, 'utf8')
37 | .catch(() => '');
38 | const currentTypes = await fsExtra
39 | .readFile(typeOutputFilepath, 'utf8')
40 | .catch(() => '');
41 |
42 | const iconNames = files.map((file) => iconName(file));
43 |
44 | const spriteUpToDate = iconNames.every((name) =>
45 | currentSprite.includes(`id=${name}`)
46 | );
47 | const typesUpToDate = iconNames.every((name) =>
48 | currentTypes.includes(`"${name}"`)
49 | );
50 |
51 | if (spriteUpToDate && typesUpToDate) {
52 | logVerbose(`Les icônes sont à jour.`);
53 | return;
54 | }
55 |
56 | logVerbose(`Génération du sprite pour ${inputDirRelative}`);
57 |
58 | const spriteChanged = await generateSvgSprite({
59 | files,
60 | inputDir,
61 | outputPath: spriteFilepath,
62 | });
63 |
64 | for (const file of files) {
65 | logVerbose('✅', file);
66 | }
67 | logVerbose(`Saved to ${path.relative(cwd, spriteFilepath)}`);
68 |
69 | const stringifiedIconNames = iconNames.map((name) => JSON.stringify(name));
70 |
71 | const typeOutputContent = `// Ce fichier est généré par npm run build:icons
72 |
73 | export type IconName =
74 | \t| ${stringifiedIconNames.join('\n\t| ')};
75 | `;
76 | const typesChanged = await writeIfChanged(
77 | typeOutputFilepath,
78 | typeOutputContent
79 | );
80 |
81 | logVerbose(`Manifest saved to ${path.relative(cwd, typeOutputFilepath)}`);
82 |
83 | const readmeChanged = await writeIfChanged(
84 | path.join(outputDir, 'README.md'),
85 | `# Icons
86 |
87 | Cet annuaire contient des icônes SVG utilisées par l'application.
88 |
89 | Tout ce qui se trouve dans cet annuaire est généré par \`npm run build:icons\`.
90 | `
91 | );
92 |
93 | if (spriteChanged || typesChanged || readmeChanged) {
94 | console.log(`Icônes générées : ${files.length}`);
95 | }
96 | }
97 |
98 | function iconName(file) {
99 | return file.replace(/\.svg$/, '');
100 | }
101 |
102 | /**
103 | * Creates a single SVG file that contains all the icons
104 | */
105 | async function generateSvgSprite({ files, inputDir, outputPath }) {
106 | // Each SVG becomes a symbol and we wrap them all in a single SVG
107 | const symbols = await Promise.all(
108 | files.map(async (file) => {
109 | const input = await fsExtra.readFile(path.join(inputDir, file), 'utf8');
110 | const root = parse(input);
111 |
112 | const svg = root.querySelector('svg');
113 | if (!svg) throw new Error('No SVG element found');
114 |
115 | svg.tagName = 'symbol';
116 | svg.setAttribute('id', iconName(file));
117 | svg.removeAttribute('xmlns');
118 | svg.removeAttribute('xmlns:xlink');
119 | svg.removeAttribute('version');
120 | svg.removeAttribute('width');
121 | svg.removeAttribute('height');
122 |
123 | return svg.toString().trim();
124 | })
125 | );
126 |
127 | const output = [
128 | ``,
129 | ``,
130 | ``,
135 | '', // trailing newline
136 | ].join('\n');
137 |
138 | return writeIfChanged(outputPath, output);
139 | }
140 |
141 | async function writeIfChanged(filepath, newContent) {
142 | const currentContent = await fsExtra
143 | .readFile(filepath, 'utf8')
144 | .catch(() => '');
145 | if (currentContent === newContent) return false;
146 | await fsExtra.writeFile(filepath, newContent, 'utf8');
147 | await $`prettier --write ${filepath} --ignore-unknown`;
148 | return true;
149 | }
150 |
--------------------------------------------------------------------------------
/src/components/gallery/EventsGallery.tsx:
--------------------------------------------------------------------------------
1 | import Image, { StaticImageData } from 'next/image';
2 | import Link from 'next/link';
3 |
4 | import hf25 from '/public/gallery/hacktoberfest2025.jpg';
5 | import uam25 from '/public/gallery/uam2025.jpg';
6 | import icagi from '/public/gallery/icagi2024.jpg';
7 | import hof24 from '/public/gallery/hacktoberfest2024.jpg';
8 | import hf23 from '/public/gallery/hacktoberfest2023.jpg';
9 | import ciga from '/public/gallery/ciga2023.jpg';
10 | import hf22 from '/public/gallery/hacktoberfest2022.jpg';
11 | import hf21 from '/public/gallery/hacktoberfest2021.jpg';
12 | import xtdk21 from '/public/gallery/xaralatourdk2021.jpg';
13 |
14 | import useTranslation from 'next-translate/useTranslation';
15 | import { Icon } from '../ui/icon';
16 |
17 | const EventsGallery = () => {
18 | const { t } = useTranslation('gallery');
19 | return (
20 |
21 |
162 |
163 | );
164 | };
165 |
--------------------------------------------------------------------------------
/src/pages/api/events/data.ts:
--------------------------------------------------------------------------------
1 | import { Event } from './type';
2 |
3 | export const events: Event[] = [
4 | {
5 | name: 'Hacktoberfest 2025',
6 | description:
7 | 'The 5th edition of Hacktoberfest organized by the Galsen DEV community',
8 | date: '10/25/2025',
9 | type: 'previous',
10 | full: 'Full description here.',
11 | },
12 | {
13 | name: 'Hack Session #2 Hacktoberfest 2025',
14 | description:
15 | 'The practical foundations of open source contribution and getting ready to take part in Hacktoberfest.',
16 | date: '10/19/2025',
17 | type: 'previous',
18 | full: 'Full description here.',
19 | },
20 | {
21 | name: 'Hack Session #1 Hacktoberfest 2025',
22 | description:
23 | 'Understanding the importance of Hacktoberfest and learning how to contribute to open source projects.',
24 | date: '10/18/2025',
25 | type: 'previous',
26 | full: 'Full description here.',
27 | },
28 | {
29 | name: 'GalsenDEV Meetup #9',
30 | description:
31 | 'A talk to explore Jant Taf, an automatic API generator designed to speed up web application development.',
32 | date: '09/27/2025',
33 | type: 'previous',
34 | full: 'Full description here.',
35 | },
36 | {
37 | name: 'GalsenDEV Meetup #8',
38 | description:
39 | 'Discovering FlutterGigs, the platform connecting Flutter developers to new opportunities.',
40 | date: '07/27/2025',
41 | type: 'previous',
42 | full: 'Full description here.',
43 | },
44 | {
45 | name: 'GalsenDEV Meetup #7',
46 | description:
47 | 'A talk to discover Filament, a Laravel tool for building modern admin interfaces.',
48 | date: '06/28/2025',
49 | type: 'previous',
50 | full: 'Full description here.',
51 | },
52 | {
53 | name: 'Galsen DEV x UAM',
54 | description:
55 | 'An afternoon of discussions on development, Go, and the opportunities offered by Bitcoin.',
56 | date: '06/21/2025',
57 | type: 'previous',
58 | full: 'Full description here.',
59 | },
60 | {
61 | name: 'Weekend Code #4',
62 | description:
63 | 'Two days of technical talks and discussions around Flutter and Semantic Versioning.',
64 | date: '05/24/2025',
65 | type: 'previous',
66 | full: 'Full description here.',
67 | },
68 | {
69 | name: 'GalsenDEV Meetup #6',
70 | description:
71 | 'A focus on Flutter best practices and state management with BLoC.',
72 | date: '04/26/2025',
73 | type: 'previous',
74 | full: 'Full description here.',
75 | },
76 | {
77 | name: 'Live Koor 2025',
78 | description:
79 | 'An exciting deep dive into mobile game development at this 2025 edition.',
80 | date: '03/15/2025',
81 | type: 'previous',
82 | full: 'Full description here.',
83 | },
84 | {
85 | name: 'GalsenDEV Meetup #5',
86 | description:
87 | 'During this event, we explored the importance of Soft Skills for success in the professional world.',
88 | date: '02/23/2025',
89 | type: 'previous',
90 | full: 'Full description here.',
91 | },
92 | {
93 | name: 'ICAGI Student Dev Workshop',
94 | description: 'An enriching day of learning with the students of ICAGI !',
95 | date: '12/14/2024',
96 | type: 'previous',
97 | full: 'Full description here.',
98 | },
99 | {
100 | name: 'Hacktoberfest 2024',
101 | description:
102 | 'The 2024 edition of the Hacktoberfest by Galsen DEV community !',
103 | date: '10/26/2024',
104 | type: 'previous',
105 | full: 'Full description here.',
106 | },
107 | {
108 | name: 'GalsenDEV Meetup #4',
109 | description: 'Improving systems with observability.',
110 | date: '07/27/2024',
111 | type: 'previous',
112 | full: 'Full description here.',
113 | },
114 | {
115 | name: 'GalsenDEV Meetup #3',
116 | description:
117 | 'GitLab CI : Develop, Test, Build and Deploy your app with Ibrahima TIMERA.',
118 | date: '05/18/2024',
119 | type: 'previous',
120 | full: 'Full description here.',
121 | },
122 | {
123 | name: 'Weekend Code #3',
124 | description: 'Third edition of the Code Weekend.',
125 | date: '12/16/2023',
126 | type: 'previous',
127 | full: 'Full description here.',
128 | },
129 | {
130 | name: 'Hacktoberfest 2023',
131 | description:
132 | 'Third edition of the Hacktoberfest, celebrating the open source world.',
133 | date: '10/23/2023',
134 | type: 'previous',
135 | full: 'Full description here.',
136 | },
137 | {
138 | name: 'GalsenDEV Meetup #2',
139 | description:
140 | 'BDD with Cucumber and Spring Boot presented by Ndongo (Tonux) SAMB.',
141 | date: '07/15/2023',
142 | type: 'previous',
143 | full: 'Full description here.',
144 | },
145 | {
146 | name: 'GalsenDEV Meetup #1',
147 | description:
148 | 'Generic and Reusable Service with Angular featuring Abdourahmane SOW.',
149 | date: '06/24/2023',
150 | type: 'previous',
151 | full: 'Full description here.',
152 | },
153 | {
154 | name: 'CIGA Student Dev Workshop',
155 | description: 'A great day of learning with CIGA students.',
156 | date: '05/27/2023',
157 | type: 'previous',
158 | full: 'Full description here.',
159 | },
160 | {
161 | name: 'Live Koor 2023',
162 | description: 'The 2023 edition of Live Koor during the month of Ramadan.',
163 | date: '04/01/2023',
164 | type: 'previous',
165 | full: 'Full description here.',
166 | },
167 | {
168 | name: 'Weekend Code #2',
169 | description: 'Second edition of the Code Weekend.',
170 | date: '02/18/2023',
171 | type: 'previous',
172 | full: 'Full description here.',
173 | },
174 | {
175 | name: 'Hacktoberfest 2022',
176 | description:
177 | 'Third edition of the Hacktoberfest, celebrating the open source world.',
178 | date: '10/15/2022',
179 | type: 'previous',
180 | full: 'Full description here.',
181 | },
182 | {
183 | name: 'Weekend Code #1',
184 | description: 'First edition of the Code Weekend.',
185 | date: '08/20/2022',
186 | type: 'previous',
187 | full: 'Full description here.',
188 | },
189 | {
190 | name: 'Hacktoberfest 2021',
191 | description:
192 | 'First edition of the Hacktoberfest, celebrating the open source world.',
193 | date: '10/23/2021',
194 | type: 'previous',
195 | full: 'Full description here.',
196 | },
197 | {
198 | name: 'Xarala Tour Dakar 2021',
199 | description:
200 | 'Closing of the 1st phase of the Xarala Tour 2021 with Galsen DEV.',
201 | date: '07/3/2021',
202 | type: 'previous',
203 | full: 'Full description here.',
204 | },
205 | {
206 | name: 'Webinar GalsenDEV #1',
207 | description: 'First webinar on Docker technology.',
208 | date: '06/27/2021',
209 | type: 'previous',
210 | full: 'Full description here.',
211 | },
212 | ];
213 |
--------------------------------------------------------------------------------
/public/svg/warning.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/svg/coding.svg:
--------------------------------------------------------------------------------
1 |
32 |
--------------------------------------------------------------------------------
/locales/en/events.json:
--------------------------------------------------------------------------------
1 | {
2 | "eventsPage": {
3 | "title": "Events",
4 | "titleDesc": "The list of all past and upcoming community events.",
5 | "upcoming": "Upcoming event",
6 | "previous": "Previous event",
7 | "events": {
8 | "hacktoberfest-2025": {
9 | "title": "Hacktoberfest 2025",
10 | "desc": "The 5th edition of Hacktoberfest organized by the Galsen DEV community.",
11 | "full": "On October 25, 2025, the Galsen DEV community celebrated Hacktoberfest with a day dedicated to sharing, learning, and open source. Participants attended inspiring talks, interactive demonstrations, and had the opportunity to connect with experts such as Souleymane Diallo, Mahamadou Kheraba Diaby, Ahmadou Waly Ndiaye, Mamadou Diagne, Elias Waly Ba, and Médoune Siby Georges Balde. The day featured technical presentations, panels, and discussions on innovation and open source contributions, followed by networking sessions and a group photo. The event took place at FST UCAD, behind the FST hall (Nouveau Bâtiment), in a friendly and enriching atmosphere for all attendees."
12 | },
13 | "hack-session-2-hacktoberfest-2025": {
14 | "title": "Hack Session #2 Hacktoberfest 2025",
15 | "desc": "The practical foundations of open source contribution and getting ready to take part in Hacktoberfest.",
16 | "full": "This interactive session, led by Mouhamadou Moustapha DIAGNE, Tech Manager at Galsen DEV, focused on the practical side of open source contribution. Participants learned how to fork a project, submit a pull request, and follow best practices for collaboration on GitHub. It was a collective learning experience that helped participants get ready to contribute effectively during Hacktoberfest and beyond."
17 | },
18 | "hack-session-1-hacktoberfest-2025": {
19 | "title": "Hack Session #1 Hacktoberfest 2025",
20 | "desc": "Understanding the importance of Hacktoberfest and learning how to contribute to open source projects.",
21 | "full": "This introductory session offered a deep dive into the world of Hacktoberfest, the global month dedicated to open source contributions. Led by Daouda BA, Lead of the Galsen DEV community, it helped participants understand the philosophy of Hacktoberfest, its value for developers, and the practical steps to get involved. It was an ideal event to discover how even first-time contributions can have a real impact in the open source ecosystem."
22 | },
23 | "galsendev-meetup-9": {
24 | "title": "GalsenDEV Meetup #9",
25 | "desc": "A talk to explore Jant Taf, an automatic API generator designed to speed up web application development.",
26 | "full": "The GalsenDEV Meetup #9 hosted Mouhamed AMAR, Chief Operations Officer at Jant Tech, lecturer (UCAD, UAHB), and web development trainer. He presented Jant Taf, a tool that automatically generates APIs from MySQL, PostgreSQL, or SQL Server databases, designed to accelerate development and simplify developers’ workflows. The session was both technical and inspiring, highlighting how local solutions can help automate and optimize web projects."
27 | },
28 | "galsendev-meetup-8": {
29 | "title": "GalsenDEV Meetup #8",
30 | "desc": "Discovering FlutterGigs, the platform connecting Flutter developers to new opportunities.",
31 | "full": "The GalsenDEV Meetup held on July 27 featured Ethiel ADIASSA, Google Developer Expert for Flutter & Dart, creator of FlutterGigs, and a well-known speaker in the international tech community. During the session, he presented FlutterGigs, an innovative platform designed to connect Flutter developers with professional opportunities. Participants also received practical advice on how to showcase their skills and seize opportunities within the Flutter ecosystem. It was a rich and inspiring moment of knowledge sharing, experience, and learning for the Galsen DEV community."
32 | },
33 | "galsendev-meetup-7": {
34 | "title": "GalsenDEV Meetup #7",
35 | "desc": "A talk to discover Filament, a Laravel tool for building modern admin interfaces.",
36 | "full": "This meetup was dedicated to Filament, a powerful and essential tool for quickly creating admin interfaces with Laravel. The event was led by Mahamadou Kheraba DIABY (aka Kepson DIAZ), Software Engineer at ALAL Technologies, who shared valuable and practical feedback on integrating Filament into production projects. This accessible, hands-on session allowed participants to explore how to fully leverage Filament to boost productivity, structure their projects, and efficiently modernize their Laravel back offices. An inspiring talk that highlighted the simplicity and power of this ecosystem."
37 | },
38 | "galsen-dev-x-uam": {
39 | "title": "Galsen DEV x UAM",
40 | "desc": "An afternoon of discussions on development, Go, and the opportunities offered by Bitcoin.",
41 | "full": "On June 21, 2025, in collaboration with Bitcoin Senegal, Galsen DEV hosted an event at Amadou Mahtar MBOW University as part of its Ambassador Program. This gathering, designed to spark curiosity and fuel the ambitions of students, featured both technical and inspiring talks. Attendees took part in a hands-on workshop led by Papa Elhadj Abdoulaye NDOYE, discovered the Go programming language through a clear and engaging introduction by Mouhamadou Moustapha DIAGNE, and explored the opportunities Bitcoin offers developers during an online session with Mouhamadou Kouta (Nourou). It was a great afternoon of learning, sharing, and connecting among tech enthusiasts."
42 | },
43 | "weekend-code-4": {
44 | "title": "Weekend Code #4",
45 | "desc": "Two days of technical talks and discussions around Flutter and Semantic Versioning.",
46 | "full": "The Weekend Code returned for a fourth intense edition. Over the course of two days, development enthusiasts gathered for insightful presentations and engaging exchanges. Kokou Bienvenu AGBAVON, visiting from Togo, introduced Mason and Bricks in Flutter — a tool that can save up to 70% of time when initializing projects. On Sunday, Souleymane, Fullstack Developer and Galsen DEV ambassador at UAMM, demystified Semantic Versioning through concrete examples in Java and Node.js. This edition was marked by knowledge sharing, skill building, and pure inspiration."
47 | },
48 | "galsendev-meetup-6": {
49 | "title": "GalsenDEV Meetup #6",
50 | "desc": "A focus on Flutter best practices and state management with BLoC.",
51 | "full": "An enriching workshop led by Saliou SECK, Mobile Developer at La Laiterie du Berger (Dolima), passionate about Flutter since 2020. Saliou guided us through the world of modern Flutter development, highlighting robust architectures used in production and the importance of effective state management with BLoC. Participants discovered practical tips for designing high-performance, maintainable, and user-centered applications."
52 | },
53 | "live-koor-2025": {
54 | "title": "Live Koor 2025",
55 | "desc": "An exciting deep dive into mobile game development at this 2025 edition.",
56 | "full": "We delved into the fascinating world of mobile game creation with Alpha Ousmane DIALLO, a specialist in the Godot engine. Alpha went over the different stages of game design, drawing on games he developed. A unique opportunity that allowed us to explore the world of game development."
57 | },
58 | "galsendev-meetup-5": {
59 | "title": "GalsenDEV Meetup #5",
60 | "desc": "During this event, we explored the importance of Soft Skills for success in the professional world.",
61 | "full": "An inspiring discussion with Cheikh Tidiane NDIAYE, Fullstack Developer at Socium. Knowing how to communicate effectively, collaborate with one's team, and manage interactions with clients was essential for smoothly evolving in the development world. Tidiane shared practical advice to avoid conflicts, foster a positive work atmosphere, and maximize one's impact within a team."
62 | },
63 | "icagi-student-dev-workshop": {
64 | "title": "ICAGI Student Dev Workshop",
65 | "desc": "An enriching day of learning with the students of ICAGI !",
66 | "full": "Galsen DEV, in collaboration with the ICAGI (Institut Communautaire Africain de Gestion et d’Ingénierie) - Amadou Mahtar MBOW computer club, organized a day full of learning, including two hands-on workshops on Java and Svelte. The presentations were led by Papa Elhadj Abdoulaye NDOYE and Médoune Siby Georges BALDE. This event provided a great opportunity to share knowledge with the students of the institution, who showed great enthusiasm and genuine motivation throughout the day."
67 | },
68 | "hacktoberfest-2024": {
69 | "title": "Hacktoberfest 2024",
70 | "desc": "The 2024 edition of the Hacktoberfest by Galsen DEV community !",
71 | "full": "We celebrated open source at Hacktoberfest 2024 at Impact Hub Dakar! The Galsen DEV community gathered its members on October 26 for a day of sharing, discovery, and learning. The event featured a series of engaging talks and interactive demonstrations presented by experts from various fields, making this day an unforgettable moment of inspiration and collaboration. We were proud to have Socium as our sponsor and Xarala as our partner."
72 | },
73 | "galsendev-meetup-4": {
74 | "title": "GalsenDEV Meetup #4",
75 | "desc": "During this meetup, we discussed how to improve systems with observability.",
76 | "full": "During this event, our guest Mamadou Lakhassane CISSÉ, Senior Software Engineer at Yelp with over 9 years of experience, explores in depth the concept of observability and its impact on system responsiveness. Also, how it facilitates real-time monitoring, proactive problem detection, and data-driven decision-making, as well as the tools and best practices adopted by large organizations to optimize their systems' performance and provide a smooth and reliable user experience."
77 | },
78 | "galsendev-meetup-3": {
79 | "title": "GalsenDEV Meetup #2",
80 | "desc": "The third edition of the GalsenDEV Meetup where we discussed about GitLab CI",
81 | "full": "For this new session, we had the honor of hosting Ibrahima TIMERA, a passionate and experienced Freelance Developer in the field of Java and Angular development. During this meeting, Ibrahima shared his in-depth knowledge of GitLab CI. The participants had the opportunity to discover the essential steps to optimize their development workflow using proven practices and tools."
82 | },
83 | "weekend-code-3": {
84 | "title": "Weekend Code #3",
85 | "desc": "Third edition of the Code Weekend.",
86 | "full": "The last event of the year 2023 with the community was a captivating experience. An exciting weekend focused on sharing, punctuated by high-quality talks. Participants had the opportunity to exchange enriching ideas, deepen their knowledge, and build connections within the community."
87 | },
88 | "hacktoberfest-2023": {
89 | "title": "Hacktoberfest 2023",
90 | "desc": "Third edition of Hacktoberfest, to celebrate open source.",
91 | "full": "Hacktoberfest 2023, a day dedicated to sharing and learning, within the framework of the third edition of Hacktoberfest that we organized to celebrate the ten years of this global event. This year, we had the privilege of receiving support from Bitcoin Senegal. Furthermore, our partnership with Xarala was renewed, greatly contributing to the success of the previous edition. This year, the celebration was beautiful, with a particularly enriching program filled with discoveries, and the community responded exceptionally well."
92 | },
93 | "galsendev-meetup-2": {
94 | "title": "GalsenDEV Meetup #2",
95 | "desc": "BDD with Cucumber and Spring Boot presented by Ndongo (Tonux) SAMB.",
96 | "full": "The second GalsenDEV Meetup of the Galsen DEV community was marked by a presentation by Master Ndongo (Tonux) SAMB on BDD with Cucumber and Spring Boot. It was a valuable opportunity to learn and improve in the field of Testing."
97 | },
98 | "galsendev-meetup-1": {
99 | "title": "GalsenDEV Meetup #1",
100 | "desc": "Generic and Reusable Service with Angular featuring Abdourahmane SOW.",
101 | "full": "During our first GalsenDEV Meetup, we saw the implementation of a generic and reusable service with Angular. Abdourahmane SOW, an experienced FullStack consultant specialized in Angular & Spring Boot, explored best practices and advanced techniques for developing flexible Angular services that can be used."
102 | },
103 | "ciga-student-dev-workshop": {
104 | "title": "CIGA Student Dev Workshop",
105 | "desc": "A great day of learning with CIGA students.",
106 | "full": "A day of sharing and learning with the students of CIGA (Centre d'informatique et de Gestion Appliquée) through workshops on Java & Flutter was a success, allowing students to explore development and, most importantly, the significance of the community. With the participation of our speakers: Daouda BA & Médoune Siby Georges BALDE, and the organizing team who facilitated this entire event."
107 | },
108 | "live-koor-2023": {
109 | "title": "Live Koor 2023",
110 | "desc": "The 2023 edition of Live Koor during the month of Ramadan.",
111 | "full": "The 2023 edition of Live Koor, the first one, organized during the month of Ramadan, added a unique touch to our community. We shared moments of discovery and learning."
112 | },
113 | "weekend-code-2": {
114 | "title": "Weekend Code #2",
115 | "desc": "Second edition of the Code Weekend.",
116 | "full": "The second edition of the Weekend Code brought together community developers for another exciting adventure of collaborative coding. It was also an exciting weekend."
117 | },
118 | "hacktoberfest-2022": {
119 | "title": "Hacktoberfest 2022",
120 | "desc": "Hacktoberfest 2022 Sharing and Learning Day.",
121 | "full": "Galsen DEV presented the 2nd edition of the Hackathon Session & Open-source Day as part of Hacktoberfest 2022. A golden opportunity to delve into open-source, building upon the success of the first edition. The community demonstrated its generosity by contributing to open-source projects, with the support of Xarala, our partner who provided their premises for hosting this event at Campus Xarala in Liberté 6."
122 | },
123 | "weekend-code-1": {
124 | "title": "Weekend Code #1",
125 | "desc": "First edition of the Code Weekend.",
126 | "full": "The first edition of the Weekend Code was a success, gathering a large part of the community on Discord throughout a weekend, with presentations in various technologies."
127 | },
128 | "hacktoberfest-2021": {
129 | "title": "Hacktoberfest 2021",
130 | "desc": "First edition of Hacktoberfest, to celebrate open source.",
131 | "full": "The Hacktoberfest was an opportunity to explore open-source. Galsen DEV and the Linux Senegal community, including Mamadou DIAGNE, succeeded in organizing the first edition of its kind in Senegal. Its primary goal was to encourage developers to contribute to open-source projects during the Hacktoberfest month and validate their contributions. This inaugural event was a great success at the Ofisini premises."
132 | },
133 | "xarala-tour-dakar-2021": {
134 | "title": "Xarala Tour Dakar 2021",
135 | "desc": "Closing of the 1st phase of the Xarala Tour 2021 with Galsen DEV.",
136 | "full": "The closure of the first phase of the Xarala Tour 2021 took place in Dakar, following the previous stops in Saint-Louis, Kaolack, and Thiès. The Galsen DEV community conducted a workshop on mobile development with Flutter, made possible through our collaboration with Xarala."
137 | },
138 | "webinar-galsendev-1": {
139 | "title": "Webinar GalsenDEV #1",
140 | "desc": "First webinar on Docker technology.",
141 | "full": "Our very first webinar allowed participants to acquire essential knowledge about Docker technology, strengthening their development skills. With Meïssa MBAYE and Alioune Badara DIAKHATÉ."
142 | }
143 | },
144 | "next": "Next",
145 | "prev": "Previous",
146 | "fail": "Failed to load",
147 | "load": "Loading...",
148 | "up": "upcoming",
149 | "pr": "previous"
150 | }
151 | }
152 |
--------------------------------------------------------------------------------
/locales/fr/events.json:
--------------------------------------------------------------------------------
1 | {
2 | "eventsPage": {
3 | "title": "Événements",
4 | "titleDesc": "La liste de tous les événements passés et à venir de la communauté.",
5 | "upcoming": "Évènement à venir",
6 | "previous": "Événement passé",
7 | "events": {
8 | "hacktoberfest-2025": {
9 | "title": "Hacktoberfest 2025",
10 | "desc": "La 5ᵉ édition du Hacktoberfest organisée par la communauté Galsen DEV.",
11 | "full": "Le 25 octobre 2025, la communauté Galsen DEV a célébré le Hacktoberfest avec une journée dédiée au partage, à l’apprentissage et à l’open source. Les participants ont pu assister à des talks inspirants, des démonstrations interactives et échanger avec des experts tels que Souleymane Diallo, Mahamadou Kheraba Diaby, Ahmadou Waly Ndiaye, Mamadou Diagne, Elias Waly Ba et Médoune Siby Georges Balde. La journée a été rythmée par des présentations techniques, des panels et des discussions autour de l’innovation et des contributions open source, suivies d’un moment de réseautage et de photo de famille. L’événement s’est tenu à la FST UCAD, derrière le hall de la FST (Nouveau Bâtiment), dans une ambiance conviviale et enrichissante pour tous les participants."
12 | },
13 | "hack-session-2-hacktoberfest-2025": {
14 | "title": "Hack Session #2 Hacktoberfest 2025",
15 | "desc": "Les bases pratiques de la contribution open source et se préparer à participer au Hacktoberfest.",
16 | "full": "Cette session interactive, animée par Mouhamadou Moustapha DIAGNE, Tech Manager de Galsen DEV, était dédiée à la pratique de la contribution open source. Les participants y ont appris à forker un projet, à proposer une pull request, et à respecter les bonnes pratiques de collaboration sur GitHub. Un moment d’apprentissage collectif qui a permis de mieux se préparer à contribuer efficacement lors du Hacktoberfest et au-delà."
17 | },
18 | "hack-session-1-hacktoberfest-2025": {
19 | "title": "Hack Session #1 Hacktoberfest 2025",
20 | "desc": "Comprendre l'importance du Hacktoberfest et apprendre comment contribuer à des projets open source.",
21 | "full": "Cette session d’introduction a permis de plonger dans l’univers du Hacktoberfest, le mois mondial de la contribution open source. Animée par Daouda BA, Lead de la communauté Galsen DEV, elle a permis aux participants de comprendre la philosophie du Hacktoberfest, ses enjeux pour les développeurs, et les étapes concrètes pour y participer. Ce fut un rendez-vous idéal pour découvrir comment les premières contributions peuvent avoir un impact réel dans l’écosystème open source."
22 | },
23 | "galsendev-meetup-9": {
24 | "title": "GalsenDEV Meetup #9",
25 | "desc": "Un talk pour explorer Jant Taf, un générateur automatique d’API conçu pour accélérer le développement d’applications web.",
26 | "full": "Le GalsenDEV Meetup #9 a eu pour invité Mouhamed AMAR, Directeur des Opérations chez Jant Tech, enseignant (UCAD, UAHB) et formateur en développement web. Il y a présenté Jant Taf, un outil de génération automatique d’API à partir de bases de données MySQL, PostgreSQL ou SQL Server, conçu pour accélérer le développement et simplifier le workflow des développeurs. Cette session, à la fois technique et inspirante, a mis en lumière les possibilités offertes par les solutions locales pour automatiser et optimiser les projets web."
27 | },
28 | "galsendev-meetup-8": {
29 | "title": "GalsenDEV Meetup #8",
30 | "desc": "À la découverte de FlutterGigs, la plateforme qui connecte les développeurs Flutter aux opportunités.",
31 | "full": "Le GalsenDEV Meetup du 27 juillet a accueilli Ethiel ADIASSA, Google Developer Expert Flutter & Dart, créateur de FlutterGigs et intervenant reconnu dans la communauté tech internationale. Lors de cet échange, il a présenté FlutterGigs, une plateforme innovante qui connecte les développeurs Flutter aux opportunités professionnelles. Les participants ont également bénéficié de conseils pratiques sur les meilleures approches pour valoriser leurs compétences et saisir des opportunités dans l’écosystème Flutter. Ce fut un moment riche en partage d’expériences, en inspiration et en apprentissage pour la communauté Galsen DEV."
32 | },
33 | "galsendev-meetup-7": {
34 | "title": "GalsenDEV Meetup #7",
35 | "desc": "Un talk pour découvrir Filament, un outil Laravel pour créer des interfaces d’administration modernes.",
36 | "full": "Ce meetup dédié à Filament, un outil puissant et incontournable pour créer rapidement des interfaces d’administration avec Laravel. L'événement a été animé par Mahamadou Kheraba DIABY (alias Kepson DIAZ), Ingénieur Logiciel chez ALAL Technologies, qui a partagé un retour d’expérience riche et concret sur l’intégration de Filament dans des projets en production. Ce talk accessible et orienté pratique a permis aux participants de découvrir comment tirer pleinement parti de Filament pour améliorer leur productivité, structurer leurs projets et moderniser efficacement leurs back-offices Laravel. Une session inspirante qui a mis en lumière la simplicité et la puissance de cet écosystème."
37 | },
38 | "galsen-dev-x-uam": {
39 | "title": "Galsen DEV x UAM",
40 | "desc": "Un après-midi d’échanges autour du développement, de Go et des opportunités offertes par le Bitcoin.",
41 | "full": "Le 21 juin 2025, en collaboration avec Bitcoin Sénégal, Galsen DEV a animé un événement à l’Université Amadou Mahtar MBOW dans le cadre de son Programme Ambassadeur. Cette rencontre, pensée pour éveiller la curiosité et nourrir les ambitions des étudiants, a été rythmée par des interventions à la fois techniques et inspirantes. Les participants ont pu assister à un atelier pratique animé par Papa Elhadj Abdoulaye NDOYE, découvrir le langage Go grâce à une introduction claire et engageante de Mouhamadou Moustapha DIAGNE, et explorer les opportunités offertes par le Bitcoin pour les développeurs à travers une session en ligne de Mouhamadou Kouta (Nourou). Un bel après-midi d’apprentissage, d’échanges et de connexions entre passionnés de tech."
42 | },
43 | "weekend-code-4": {
44 | "title": "Weekend du Code #4",
45 | "desc": "Deux jours de présentations techniques et d’échanges autour de Flutter et le Semantic Versioning.",
46 | "full": "Le Weekend du Code revient pour une 4ᵉ édition intense. Durant deux jours, les passionnés de développement se sont réunis autour de présentations enrichissantes et de moments d’échange. Kokou Bienvenu AGBAVON, venu du Togo, a présenté Mason et les Bricks dans Flutter, une solution permettant de gagner jusqu’à 70 % de temps lors de l’initialisation de projets. Le dimanche, Souleymane, développeur Fullstack et ambassadeur Galsen DEV à l’UAMM, a démystifié le Semantic Versioning à travers des exemples concrets en Java et Node.js. Une édition marquée par le partage, la montée en compétence et l'inspiration."
47 | },
48 | "galsendev-meetup-6": {
49 | "title": "GalsenDEV Meetup #6",
50 | "desc": "Un focus sur les bonnes pratiques Flutter et la gestion d’état avec BLoC.",
51 | "full": "Un atelier enrichissant animé par Saliou SECK, Mobile Developer chez La Laiterie du Berger (Dolima), passionné par Flutter depuis 2020. Saliou nous a guidés dans l’univers du développement Flutter moderne, en mettant en lumière les architectures robustes adoptées en production, ainsi que l’importance de la gestion d’état efficace avec BLoC. Les participants ont découvert des conseils pratiques pour concevoir des applications performantes, maintenables et centrées sur l’utilisateur."
52 | },
53 | "live-koor-2025": {
54 | "title": "Live Koor 2025",
55 | "desc": "Une immersion passionnante dans la création de jeux mobiles lors de cette édition 2025.",
56 | "full": "Nous avons plongé dans l’univers fascinant de la création de jeux vidéo mobiles avec Alpha Ousmane DIALLO, spécialiste du moteur Godot. Alpha a fait un tour sur les différentes étapes de la conception de jeux vidéo, en s’appuyant sur des jeux qu’il a développés. Une occasion unique qui nous a permis d’explorer l’univers du game development."
57 | },
58 | "galsendev-meetup-5": {
59 | "title": "GalsenDEV Meetup #5",
60 | "desc": "Durant cet événement, nous avons exploré l’importance des Soft Skills pour réussir dans le monde professionnel.",
61 | "full": "Un échange inspirant avec Cheikh Tidiane NDIAYE, Développeur Fullstack chez Socium. Pour savoir communiquer efficacement, collaborer avec son équipe et gérer les interactions avec les clients était essentiel pour évoluer sereinement dans l’univers du développement. Tidiane a partagé des conseils pratiques pour éviter les conflits, favoriser une atmosphère de travail positive et maximiser son impact au sein d’une équipe."
62 | },
63 | "icagi-student-dev-workshop": {
64 | "title": "Atelier Dev Étudiant ICAGI",
65 | "desc": "Une journée enrichissante d'apprentissage avec les étudiants de l'ICAGI !",
66 | "full": "Galsen DEV, en collaboration avec le club informatique de l'ICAGI (Institut Communautaire Africain de Gestion et d’Ingénierie) - Amadou Mahtar MBOW, a organisé une journée riche en apprentissage, comprenant deux ateliers pratiques sur Java et Svelte. Les présentations ont été animées par Papa Elhadj Abdoulaye NDOYE et Médoune Siby Georges BALDE. Cet événement a constitué une belle occasion de partager des connaissances avec les étudiants de l’établissement, qui ont montré un grand enthousiasme et une réelle motivation tout au long de la journée."
67 | },
68 | "hacktoberfest-2024": {
69 | "title": "Hacktoberfest 2024",
70 | "desc": "L'édition 2024 du Hacktoberfest de la communauté Galsen DEV !",
71 | "full": "Nous avons célébré l'open source lors du Hacktoberfest 2024 à l'Impact Hub Dakar ! La communauté Galsen DEV a rassemblé ses membres le 26 octobre pour une journée de partage, de découverte et d’apprentissage. L’événement a offert une série de conférences captivantes et de démonstrations interactives, présentées par des experts de différents domaines, faisant de cette journée un moment inoubliable d’inspiration et de collaboration. Nous étions fiers d'avoir Socium comme sponsor et Xarala comme partenaire."
72 | },
73 | "galsendev-meetup-4": {
74 | "title": "GalsenDEV Meetup #4",
75 | "desc": "Lors de ce meetup, nous avons parlé comment améliorer les systèmes avec l'observabilité.",
76 | "full": "Durant cet événement notre invité Mamadou Lakhassane CISSÉ, Ingénieur Logiciel Senior chez Yelp avec plus de 9 ans d'expérience, explore en profondeur le concept de l'observabilité et son impact sur la réactivité des systèmes. Aussi comment elle facilite la surveillance en temps réel, la détection proactive des problèmes et la prise de décisions basées sur les données, également les outils et les meilleures pratiques adoptés par les grandes organisations pour optimiser les performances de leurs systèmes et offrir une expérience utilisateur fluide et fiable."
77 | },
78 | "galsendev-meetup-3": {
79 | "title": "GalsenDEV Meetup #3",
80 | "desc": "Le troisième numéro du GalsenDEV Meetup où on a parlé de GitLab CI.",
81 | "full": "Pour cette nouvelle session, nous avons eu l'honneur d'accueillir Ibrahima TIMERA, un Développeur Freelance passionné et expérimenté dans le domaine du développement Java et Angular. Au cours de cette rencontre, Ibrahima a partagé ses connaissances approfondies sur GitLab CI. Les participants ont eu l'occasion de découvrir les étapes essentielles pour optimiser leur flux de travail de développement grâce à des pratiques et des outils éprouvés."
82 | },
83 | "weekend-code-3": {
84 | "title": "Weekend du Code #3",
85 | "desc": "Troisième édition du Weekend du Code.",
86 | "full": "Le dernier événement de l'année 2023 avec la communauté a été une expérience captivante. Un week-end passionnant axé sur le partage, ponctué de talks de grande qualité. Les participants ont eu l'occasion d'échanger des idées enrichissantes, d'approfondir leurs connaissances et de créer des liens au sein de la communauté."
87 | },
88 | "hacktoberfest-2023": {
89 | "title": "Hacktoberfest 2023",
90 | "desc": "Troisième édition du Hacktoberfest, pour célébrer l'open source.",
91 | "full": "Hacktoberfest 2023, une journée dédiée au partage et à l'apprentissage, dans le cadre de la troisième édition du Hacktoberfest que nous avons organisée pour célébrer les dix ans de cet événement mondial. Cette année, nous avons eu le privilège de bénéficier du soutien de Bitcoin Sénégal. De plus, notre partenariat avec Xarala a été renouvelé, ce qui a grandement contribué au succès de l'édition précédente. Cette année, la fête a été particulièrement belle, avec notamment un programme très enrichissant, rempli de découvertes, et la communauté a répondu présente de manière exceptionnelle."
92 | },
93 | "galsendev-meetup-2": {
94 | "title": "GalsenDEV Meetup #2",
95 | "desc": "Une séance avec Ndongo (Tonux) SAMB qui porte sur BDD avec Cucumber et Spring Boot.",
96 | "full": "Le deuxième GalsenDEV Meetup de la communauté Galsen DEV a été marqué par une présentation de Master Ndongo (Tonux) SAMB sur le BDD avec Cucumber et Spring Boot. C'était une occasion précieuse d'apprendre et de se perfectionner dans le domaine du Testing."
97 | },
98 | "galsendev-meetup-1": {
99 | "title": "GalsenDEV Meetup #1",
100 | "desc": "Service générique et réutilisable avec Angular, avec notre invité Abdourahmane SOW.",
101 | "full": "Lors de notre premier GalsenDEV Meetup, nous avons vu la mise en place d'un service générique et réutilisable avec Angular. Abdourahmane SOW, un consultant FullStack expérimenté et spécialisé en Angular & Spring Boot, a exploré les meilleures pratiques et les techniques avancées pour développer des services Angular flexibles, qui peuvent être utilisés."
102 | },
103 | "ciga-student-dev-workshop": {
104 | "title": "Atelier Dev Étudiant CIGA",
105 | "desc": "Une belle journée d'apprentissage avec les étudiants de CIGA.",
106 | "full": "Une journée de partage et d'apprentissage avec les étudiants du CIGA (Centre d'informatique et de Gestion Appliquée) à travers des ateliers sur Java & Flutter a été un succès, permettant aux étudiants de découvrir le développement et, surtout, l'importance de la communauté. Avec la participation de nos intervenants : Daouda BA & Médoune Siby Georges BALDE, ainsi que de l'équipe organisatrice qui a facilité tout cet événement."
107 | },
108 | "live-koor-2023": {
109 | "title": "Live Koor 2023",
110 | "desc": "L'édition 2023 du Live Koor durant le mois de Ramadan.",
111 | "full": "Le Live Koor 2023, la première, organisée pendant le mois de Ramadan, a apporté une touche unique à notre communauté. Nous avons partagé des moments de découverte et d'apprentissage."
112 | },
113 | "weekend-code-2": {
114 | "title": "Weekend du Code #2",
115 | "desc": "Deuxième édition du Weekend du Code.",
116 | "full": "La deuxième édition du Weekend Code a rassemblé les développeurs de la communauté pour une autre aventure passionnante de codage collaboratif. Un weekend qui a également été passionnant."
117 | },
118 | "hacktoberfest-2022": {
119 | "title": "Hacktoberfest 2022",
120 | "desc": "Journée de partage et d'apprentissage Hacktoberfest 2022.",
121 | "full": "Galsen DEV a présenté la 2ème édition du Hackathon Session & Open-source Day dans le cadre du Hacktoberfest 2022. Une opportunité en or pour plonger dans l'open-source, en prolongement de la première édition. La communauté a fait preuve de générosité en contribuant à des projets open source, notamment grâce au soutien de Xarala, notre partenaire qui a mis à notre disposition ses locaux pour la tenue de cet événement au Campus Xarala à Liberté 6."
122 | },
123 | "weekend-code-1": {
124 | "title": "Weekend du Code #1",
125 | "desc": "Première édition du Code du Weekend.",
126 | "full": "La première édition du Weekend Code a été un succès, réunissant une grande partie de la communauté sur Discord durant tout un weekend, en faisant des présentations dans diverses technologies."
127 | },
128 | "hacktoberfest-2021": {
129 | "title": "Hacktoberfest 2021",
130 | "desc": "Première édition du Hacktoberfest, pour célébrer l'open source.",
131 | "full": "Le Hacktoberfest était une opportunité d'explorer l'open-source. Galsen DEV et la communauté Linux Sénégal, notamment Mamadou DIAGNE, ont réussi à organiser la première édition de ce genre au Sénégal. Son objectif principal était de faire contribuer les développeurs aux projets open-source pendant le mois du Hacktoberfest et de valider leurs contributions. Cette première édition a été un grand succès dans les locaux de Ofisini."
132 | },
133 | "xarala-tour-dakar-2021": {
134 | "title": "Xarala Tour Dakar 2021",
135 | "desc": "Clôture de la 1ère phase du Xarala Tour 2021 avec Galsen DEV.",
136 | "full": "La clôture de la première phase du Xarala Tour 2021 a eu lieu à Dakar, après les étapes de Saint-Louis, Kaolack et Thiès. La communauté Galsen DEV a organisé un atelier sur le développement mobile avec Flutter, rendu possible grâce à notre collaboration avec Xarala."
137 | },
138 | "webinar-galsendev-1": {
139 | "title": "Webinar GalsenDEV #1",
140 | "desc": "Premier webinaire portant sur la technologie Docker.",
141 | "full": "Notre tout premier webinaire a permis aux participants d'acquérir des connaissances essentielles sur la technologie Docker, renforçant ainsi leurs compétences en développement. Avec la participation de Meïssa MBAYE et Alioune Badara DIAKHATÉ."
142 | }
143 | },
144 | "next": "Suivant",
145 | "prev": "Précédent",
146 | "fail": "Échec du chargement",
147 | "load": "Chargement...",
148 | "up": "à venir",
149 | "pr": "passé"
150 | }
151 | }
152 |
--------------------------------------------------------------------------------