<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mouna</title>
    <description>The latest articles on DEV Community by Mouna (@mounab3).</description>
    <link>https://dev.to/mounab3</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F99mvlsfu5tfj9m7ku25d.png</url>
      <title>DEV Community: Mouna</title>
      <link>https://dev.to/mounab3</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mounab3"/>
    <language>en</language>
    <item>
      <title>French language learning companion</title>
      <dc:creator>Mouna</dc:creator>
      <pubDate>Mon, 05 Oct 2026 00:56:24 +0000</pubDate>
      <link>https://dev.to/mounab3/french-language-learning-companion-3dhf</link>
      <guid>https://dev.to/mounab3/french-language-learning-companion-3dhf</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built French Language Companion, a small AI-powered French learning tool for my younger brother, who struggles with French grammar and spelling.&lt;/p&gt;

&lt;p&gt;The idea is to make practice more personal and interactive. Instead of only giving static exercises, the application uses AI to generate French practice based on the learner's level, check answers, and provide explanations and rules.&lt;/p&gt;

&lt;p&gt;The current interface lets the learner choose a level and a practice area such as Grammar or Orthography.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://drive.google.com/file/d/1lPskLFIQmT4xRXiZY6MKK8bxu_cx4AGV/view?usp=sharing" rel="noopener noreferrer" class="c-link"&gt;
            demo french language companion.mp4 - Google Drive
          &lt;/a&gt;
        &lt;/h2&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fssl.gstatic.com%2Fdocs%2Fdoclist%2Fimages%2Fdrive_favicon_2026_32dp.png" width="32" height="32"&gt;
          drive.google.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
The application uses Gemma 3 4B locally through Ollama to generate and evaluate French exercises. Gemma is currently running slowly on my machine, but the local AI integration is implemented in the project.
&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/mounab3" rel="noopener noreferrer"&gt;
        mounab3
      &lt;/a&gt; / &lt;a href="https://github.com/mounab3/french-language-companion" rel="noopener noreferrer"&gt;
        french-language-companion
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      AI-powered French grammar and orthography practice companion built with Streamlit, Ollama, and Gemma.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/9afa46ead6a144b0f1eed3a5afedb82376ebe77597bfee9b62d1e59affa98762/68747470733a2f2f726561646d652d747970696e672d7376672e6865726f6b756170702e636f6d3f666f6e743d47656f726769612673697a653d3332266475726174696f6e3d3330303026636f6c6f723d3742314641322663656e7465723d74727565267643656e7465723d747275652677696474683d383030266c696e65733df09f87abf09f87b72b4672656e63682b4c616e67756167652b436f6d70616e696f6e3bf09fa4962b41492d506f77657265642b4672656e63682b50726163746963653bf09f939a2b4c6561726e2b4672656e63682b776974682b47656d6d613bf09f929c2b4275696c742b666f722b612b467269656e64"&gt;&lt;img src="https://camo.githubusercontent.com/9afa46ead6a144b0f1eed3a5afedb82376ebe77597bfee9b62d1e59affa98762/68747470733a2f2f726561646d652d747970696e672d7376672e6865726f6b756170702e636f6d3f666f6e743d47656f726769612673697a653d3332266475726174696f6e3d3330303026636f6c6f723d3742314641322663656e7465723d74727565267643656e7465723d747275652677696474683d383030266c696e65733df09f87abf09f87b72b4672656e63682b4c616e67756167652b436f6d70616e696f6e3bf09fa4962b41492d506f77657265642b4672656e63682b50726163746963653bf09f939a2b4c6561726e2b4672656e63682b776974682b47656d6d613bf09f929c2b4275696c742b666f722b612b467269656e64" alt="French Language Companion"&gt;&lt;/a&gt;
&lt;br&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/a3e886f3729395497c1aede4341b5051f2f32758aebff312c1df9462d076c649/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f507974686f6e2d332e31342d3337373641423f7374796c653d666f722d7468652d6261646765266c6f676f3d707974686f6e266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/a3e886f3729395497c1aede4341b5051f2f32758aebff312c1df9462d076c649/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f507974686f6e2d332e31342d3337373641423f7374796c653d666f722d7468652d6261646765266c6f676f3d707974686f6e266c6f676f436f6c6f723d7768697465" alt="Python"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/3cf6728f2051ffe610033a65d599eaedf762beabccb1f35e7ddb613cf2008faa/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f53747265616d6c69742d4170702d4646344234423f7374796c653d666f722d7468652d6261646765266c6f676f3d73747265616d6c6974266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/3cf6728f2051ffe610033a65d599eaedf762beabccb1f35e7ddb613cf2008faa/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f53747265616d6c69742d4170702d4646344234423f7374796c653d666f722d7468652d6261646765266c6f676f3d73747265616d6c6974266c6f676f436f6c6f723d7768697465" alt="Streamlit"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/2f8730874e2cd6826d5ed1c9fb92ce60da5968fa3c0c6e4a9fe7df702b037b7c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4f6c6c616d612d4c6f63616c25323041492d626c61636b3f7374796c653d666f722d7468652d6261646765"&gt;&lt;img src="https://camo.githubusercontent.com/2f8730874e2cd6826d5ed1c9fb92ce60da5968fa3c0c6e4a9fe7df702b037b7c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4f6c6c616d612d4c6f63616c25323041492d626c61636b3f7374796c653d666f722d7468652d6261646765" alt="Ollama"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/7008bb11a26fe9371f10ed83ddc11c1069bca0f44e46aade1674fb2b8dfccdc9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f47656d6d612d4f70656e2532304d6f64656c2d3845343441443f7374796c653d666f722d7468652d6261646765"&gt;&lt;img src="https://camo.githubusercontent.com/7008bb11a26fe9371f10ed83ddc11c1069bca0f44e46aade1674fb2b8dfccdc9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f47656d6d612d4f70656e2532304d6f64656c2d3845343441443f7374796c653d666f722d7468652d6261646765" alt="Gemma"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/7033a7605d78de6e247739e7d7b0787f86c6ee2fc8b262baea8a7cbce7c9c272/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4769742d56657273696f6e253230436f6e74726f6c2d4630353033323f7374796c653d666f722d7468652d6261646765266c6f676f3d676974266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/7033a7605d78de6e247739e7d7b0787f86c6ee2fc8b262baea8a7cbce7c9c272/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4769742d56657273696f6e253230436f6e74726f6c2d4630353033323f7374796c653d666f722d7468652d6261646765266c6f676f3d676974266c6f676f436f6c6f723d7768697465" alt="Git"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/e5e9c02ca7bdde1278e63e2d0c128b30ccecc2afb5bc2328e77e9a5a6d25ba98/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4769744875622d5265706f7369746f72792d3138313731373f7374796c653d666f722d7468652d6261646765266c6f676f3d676974687562266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/e5e9c02ca7bdde1278e63e2d0c128b30ccecc2afb5bc2328e77e9a5a6d25ba98/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4769744875622d5265706f7369746f72792d3138313731373f7374796c653d666f722d7468652d6261646765266c6f676f3d676974687562266c6f676f436f6c6f723d7768697465" alt="GitHub"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;i&gt;🌱 A simple AI-powered French learning companion for grammar and orthography practice.&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hacktoberfest 2026 — Weekend Challenge: Build for a Friend 💜&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;div&gt;
&lt;p&gt;&lt;strong&gt;📋 Description&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;French Language Companion&lt;/strong&gt; is an AI-powered learning application designed to help a French learner practice grammar and orthography
&lt;/p&gt;

&lt;p&gt;
I built it for my younger brother, who struggles with French grammar and spelling
The goal is to create a simple learning tool where &lt;strong&gt;AI generates exercises, checks answers, and explains mistakes.&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;🤖 The AI runs locally using &lt;strong&gt;Ollama&lt;/strong&gt; and &lt;strong&gt;Gemma&lt;/strong&gt;.&lt;/p&gt;


&lt;/div&gt;
&lt;br&gt;


&lt;div&gt;
&lt;p&gt;&lt;strong&gt;💡 Why I Built It&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
Traditional exercises do not always explain &lt;strong&gt;why&lt;/strong&gt; an answer is wrong
I wanted to create a more personal practice tool that gives useful feedback instead of only showing correct or incorrect.
&lt;/p&gt;
&lt;/div&gt;




&lt;div&gt;
&lt;p&gt;&lt;strong&gt;🎯 Main Objectives&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;📚 Practice French grammar and orthography&lt;/li&gt;
&lt;li&gt;🤖 Use open AI technology for learning&lt;/li&gt;
&lt;li&gt;🎯 Generate exercises adapted to the learner's level&lt;/li&gt;
&lt;li&gt;💡 Explain mistakes and relevant rules&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/mounab3/french-language-companion" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;I built the project with Python and Streamlit, using Ollama to run Google's Gemma 3 4B model locally.&lt;br&gt;
The application is structured around a simple learning flow:&lt;/p&gt;

&lt;p&gt;Choose level → Choose practice → Generate exercise → Answer → Check → Explanation&lt;/p&gt;

&lt;p&gt;Gemma is integrated into the Python application through Ollama's local API. I separated the AI logic into ai.py and the Streamlit interface into app.py.&lt;br&gt;
One of the things I liked about this approach is that the AI does not sit beside the application as a generic chatbot. It is intended to be part of the actual learning process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;Open innovation made it possible for me, as a student, to experiment with AI locally and build around an open-weight model without depending entirely on a closed API.&lt;/p&gt;

&lt;p&gt;With Gemma and Ollama, the model can run on the user's own computer, which can be useful for learning tools where keeping data local matters.&lt;/p&gt;

&lt;p&gt;It also gives me the freedom to experiment with different Gemma model sizes and change how the AI is used inside the application.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;I did not use DevRelay for this project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Best Use of Gemma
&lt;/h2&gt;

&lt;p&gt;I am entering this category because the project uses Google's Gemma 3 4B locally through Ollama as the AI model behind the language learning experience.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
  </channel>
</rss>
