Latest commit

History

87 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

LinguaConnect

LinguaConnect is a premier social networking platform designed to connect language learners across the globe. It offers an interactive environment where users can document their language learning journeys, engage with native speakers, and participate in meaningful conversations, all enhanced by AI-powered language learning features.

🌟 Key Features

  • 👤 Comprehensive User Profiles: Customize profiles with language preferences and learning objectives.
  • 📝 Multilingual Post Sharing: Share posts with support for multiple languages.
  • 💬 Real-Time Messaging: Engage in live conversations for effective language practice.
  • 🗣️ Topic-Based Discussions and Communities: Join and participate in discussions centered around specific language topics and interests.
  • 🤝 Follow System: Connect and follow other learners to build a supportive learning network.
  • 🎨 Avatar Customization and Profile Management: Personalize avatars and manage profile settings seamlessly.
  • 🤖 AI-Powered Assistance: Receive language learning assistance and corrections driven by artificial intelligence.
  • 🗣️ Intelligent Conversation Practice: Utilize LangChain for advanced and interactive conversation practice.

🛠️ Technology Stack

Frontend

ReactViteZustandReact RouterTailwindCSSShadcn/UISocket.IOChart.js

Backend (Node.js)

Node.jsExpress.jsMongoDBMongooseJWTSocket.IOCloudinaryRedisPassportMulter

AI/ML Service (Flask)

FlaskLangChainTogether AIMongoDBPython

Real-time Features

Socket.IOWebRTCStringee

Cloud Services

MongoDB AtlasRedis CloudCloudinaryTogether AI

The platform is engineered to enhance the language learning experience by fostering engagement and social interaction among learners with shared interests and objectives. Leveraging advanced AI technology, LinguaConnect provides personalized learning pathways and intelligent language assistance to facilitate effective and enjoyable language acquisition.

🏗️ Architecture

  • 🖥️ Frontend: Single Page Application (SPA)
  • ⚙️ Backend: RESTful API and WebSocket integration
  • 🤖 AI Service: Microservice Architecture
  • 🗄️ Database: Document-based NoSQL
  • ⚡ Cache: In-memory data store
  • ☁️ Storage: Cloud-based object storage

👥 Demo Accounts

Use the following pre-configured accounts to explore the application:

EmailUsernamePasswordRole
24283032@hulas.coadmin1234567aBAdmin
swalker@yahoo.comlinda261234567aBUser
john63@hotmail.comdavid551234567aBUser
williamspamela@gmail.comcrystal131234567aBUser

Note: These accounts are intended for demonstration purposes only. Please use your own credentials in a production environment.

🚀 Getting Started

Clone the Repository

  1. Clone the repository and navigate to the project directory:
    git clone https://github.com/koding88/LinguaConnect
    cd LinguaConnect

Backend Setup

  1. Navigate to the backend directory:
    cd backend
  2. Create the .env file:
    touch .env
  3. Populate the .env file with the following environment variables:
    # Server Configuration
    PORT=3000
    BASE_URL=http://localhost:3000
    CLIENT_URL=http://localhost:5173
    FLASK_APP_URL=http://localhost:5555
    # Database Configuration
    MONGO_URI=your_key
    REDIS_URL=your_key
    # Authentication
    JWT_SECRET=your_key
    REFRESH_TOKEN_SECRET=your_key
    # Google OAuth Configuration
    GOOGLE_CLIENT_ID=your_key
    GOOGLE_CLIENT_SECRET=your_key
    GOOGLE_CALLBACK_URL=your_key
    # Google Mail Configuration
    GOOGLE_CLIENT_ID_MAIL=your_key
    GOOGLE_CLIENT_SECRET_MAIL=your_key
    GOOGLE_REFRESH_TOKEN_MAIL=your_key
    SEND_MAIL_ACCOUNT=your_key
    # Cloudinary Configuration
    CLOUDINARY_CLOUD_NAME=your_key
    CLOUDINARY_API_KEY=your_key
    CLOUDINARY_API_SECRET=your_key
    # Stringee Configuration
    STRINGEE_API_KEY_SID=your_key
    STRINGEE_API_KEY_SECRET=your_key
    # Environment
    NODE_ENV=production
    
  4. Install the necessary dependencies:
    npm install
  5. Build the backend project:
    npm run build
  6. Start the backend in production mode:
    npm run prod

Flask App Setup

  1. Navigate to the flask_app directory:
    cd ../flask_app
  2. Create a virtual environment:
    python -m venv venv
  3. Activate the virtual environment:
    • Windows:
      venv\Scripts\activate
    • Linux/Mac:
      source venv/bin/activate
  4. Create the .env file:
    touch .env
  5. Add the following environment variables to the .env file:
    FLASK_APP=app
    FLASK_ENV=development
    BACKEND_URL=http://localhost:3000
    MONGO_URI=your_key
    TOGETHER_API_KEY=your_key
    TOGETHER_MODEL=meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo
    
  6. Install the required dependencies:
    pip install -r requirements.txt
  7. Launch the Flask application:
    python run.py

Frontend Setup

  1. Navigate to the frontend directory:
    cd ../frontend
  2. Create the .env file:
    touch .env
  3. Add the following environment variables to the .env file:
    VITE_API_BACKEND_URL=http://localhost:3000
    VITE_AI_URL=http://localhost:5555
    
  4. Install frontend dependencies:
    npm install
  5. Build the frontend project:
    npm run build
  6. Serve the production build:
    serve -s dist -l 5173

🤝 Contributing

We welcome and appreciate contributions to this project! To get started, please follow these guidelines:

  1. Fork the Repository: Click the "Fork" button at the top right of the repository page to create your own copy of the project.
  2. Clone Your Fork: Use the following command to clone your forked repository to your local machine:
    git clone https://github.com/your-username/repository-name.git
  3. Create a Branch: Before making any changes, create a new branch for your feature or bug fix:
    git checkout -b your-feature-branch
  4. Implement Your Changes: Develop your feature or fix the bug, ensuring that your code adheres to the project's coding standards.
  5. Commit Your Changes: Commit your changes with a descriptive message:
    git commit -m "Add a brief description of your changes"
  6. Push to Your Fork: Push your changes to your forked repository:
    git push origin your-feature-branch
  7. Create a Pull Request: Navigate to the original repository and click on "New Pull Request". Select your branch and submit the pull request for review.

Thank you for contributing to LinguaConnect! Your efforts help make our platform better for everyone.

📄 License

This project is licensed under the MIT License. For more details, please refer to the LICENSE file.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

87 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

LinguaConnect

LinguaConnect is a premier social networking platform designed to connect language learners across the globe. It offers an interactive environment where users can document their language learning journeys, engage with native speakers, and participate in meaningful conversations, all enhanced by AI-powered language learning features.

🌟 Key Features

  • 👤 Comprehensive User Profiles: Customize profiles with language preferences and learning objectives.
  • 📝 Multilingual Post Sharing: Share posts with support for multiple languages.
  • 💬 Real-Time Messaging: Engage in live conversations for effective language practice.
  • 🗣️ Topic-Based Discussions and Communities: Join and participate in discussions centered around specific language topics and interests.
  • 🤝 Follow System: Connect and follow other learners to build a supportive learning network.
  • 🎨 Avatar Customization and Profile Management: Personalize avatars and manage profile settings seamlessly.
  • 🤖 AI-Powered Assistance: Receive language learning assistance and corrections driven by artificial intelligence.
  • 🗣️ Intelligent Conversation Practice: Utilize LangChain for advanced and interactive conversation practice.

🛠️ Technology Stack

Frontend

ReactViteZustandReact RouterTailwindCSSShadcn/UISocket.IOChart.js

Backend (Node.js)

Node.jsExpress.jsMongoDBMongooseJWTSocket.IOCloudinaryRedisPassportMulter

AI/ML Service (Flask)

FlaskLangChainTogether AIMongoDBPython

Real-time Features

Socket.IOWebRTCStringee

Cloud Services

MongoDB AtlasRedis CloudCloudinaryTogether AI

The platform is engineered to enhance the language learning experience by fostering engagement and social interaction among learners with shared interests and objectives. Leveraging advanced AI technology, LinguaConnect provides personalized learning pathways and intelligent language assistance to facilitate effective and enjoyable language acquisition.

🏗️ Architecture

  • 🖥️ Frontend: Single Page Application (SPA)
  • ⚙️ Backend: RESTful API and WebSocket integration
  • 🤖 AI Service: Microservice Architecture
  • 🗄️ Database: Document-based NoSQL
  • ⚡ Cache: In-memory data store
  • ☁️ Storage: Cloud-based object storage

👥 Demo Accounts

Use the following pre-configured accounts to explore the application:

EmailUsernamePasswordRole
24283032@hulas.coadmin1234567aBAdmin
swalker@yahoo.comlinda261234567aBUser
john63@hotmail.comdavid551234567aBUser
williamspamela@gmail.comcrystal131234567aBUser

Note: These accounts are intended for demonstration purposes only. Please use your own credentials in a production environment.

🚀 Getting Started

Clone the Repository

  1. Clone the repository and navigate to the project directory:
    git clone https://github.com/koding88/LinguaConnect
    cd LinguaConnect

Backend Setup

  1. Navigate to the backend directory:
    cd backend
  2. Create the .env file:
    touch .env
  3. Populate the .env file with the following environment variables:
    # Server Configuration
    PORT=3000
    BASE_URL=http://localhost:3000
    CLIENT_URL=http://localhost:5173
    FLASK_APP_URL=http://localhost:5555
    # Database Configuration
    MONGO_URI=your_key
    REDIS_URL=your_key
    # Authentication
    JWT_SECRET=your_key
    REFRESH_TOKEN_SECRET=your_key
    # Google OAuth Configuration
    GOOGLE_CLIENT_ID=your_key
    GOOGLE_CLIENT_SECRET=your_key
    GOOGLE_CALLBACK_URL=your_key
    # Google Mail Configuration
    GOOGLE_CLIENT_ID_MAIL=your_key
    GOOGLE_CLIENT_SECRET_MAIL=your_key
    GOOGLE_REFRESH_TOKEN_MAIL=your_key
    SEND_MAIL_ACCOUNT=your_key
    # Cloudinary Configuration
    CLOUDINARY_CLOUD_NAME=your_key
    CLOUDINARY_API_KEY=your_key
    CLOUDINARY_API_SECRET=your_key
    # Stringee Configuration
    STRINGEE_API_KEY_SID=your_key
    STRINGEE_API_KEY_SECRET=your_key
    # Environment
    NODE_ENV=production
    
  4. Install the necessary dependencies:
    npm install
  5. Build the backend project:
    npm run build
  6. Start the backend in production mode:
    npm run prod

Flask App Setup

  1. Navigate to the flask_app directory:
    cd ../flask_app
  2. Create a virtual environment:
    python -m venv venv
  3. Activate the virtual environment:
    • Windows:
      venv\Scripts\activate
    • Linux/Mac:
      source venv/bin/activate
  4. Create the .env file:
    touch .env
  5. Add the following environment variables to the .env file:
    FLASK_APP=app
    FLASK_ENV=development
    BACKEND_URL=http://localhost:3000
    MONGO_URI=your_key
    TOGETHER_API_KEY=your_key
    TOGETHER_MODEL=meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo
    
  6. Install the required dependencies:
    pip install -r requirements.txt
  7. Launch the Flask application:
    python run.py

Frontend Setup

  1. Navigate to the frontend directory:
    cd ../frontend
  2. Create the .env file:
    touch .env
  3. Add the following environment variables to the .env file:
    VITE_API_BACKEND_URL=http://localhost:3000
    VITE_AI_URL=http://localhost:5555
    
  4. Install frontend dependencies:
    npm install
  5. Build the frontend project:
    npm run build
  6. Serve the production build:
    serve -s dist -l 5173

🤝 Contributing

We welcome and appreciate contributions to this project! To get started, please follow these guidelines:

  1. Fork the Repository: Click the "Fork" button at the top right of the repository page to create your own copy of the project.
  2. Clone Your Fork: Use the following command to clone your forked repository to your local machine:
    git clone https://github.com/your-username/repository-name.git
  3. Create a Branch: Before making any changes, create a new branch for your feature or bug fix:
    git checkout -b your-feature-branch
  4. Implement Your Changes: Develop your feature or fix the bug, ensuring that your code adheres to the project's coding standards.
  5. Commit Your Changes: Commit your changes with a descriptive message:
    git commit -m "Add a brief description of your changes"
  6. Push to Your Fork: Push your changes to your forked repository:
    git push origin your-feature-branch
  7. Create a Pull Request: Navigate to the original repository and click on "New Pull Request". Select your branch and submit the pull request for review.

Thank you for contributing to LinguaConnect! Your efforts help make our platform better for everyone.

📄 License

This project is licensed under the MIT License. For more details, please refer to the LICENSE file.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

87 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

LinguaConnect

LinguaConnect is a premier social networking platform designed to connect language learners across the globe. It offers an interactive environment where users can document their language learning journeys, engage with native speakers, and participate in meaningful conversations, all enhanced by AI-powered language learning features.

🌟 Key Features

  • 👤 Comprehensive User Profiles: Customize profiles with language preferences and learning objectives.
  • 📝 Multilingual Post Sharing: Share posts with support for multiple languages.
  • 💬 Real-Time Messaging: Engage in live conversations for effective language practice.
  • 🗣️ Topic-Based Discussions and Communities: Join and participate in discussions centered around specific language topics and interests.
  • 🤝 Follow System: Connect and follow other learners to build a supportive learning network.
  • 🎨 Avatar Customization and Profile Management: Personalize avatars and manage profile settings seamlessly.
  • 🤖 AI-Powered Assistance: Receive language learning assistance and corrections driven by artificial intelligence.
  • 🗣️ Intelligent Conversation Practice: Utilize LangChain for advanced and interactive conversation practice.

🛠️ Technology Stack

Frontend

ReactViteZustandReact RouterTailwindCSSShadcn/UISocket.IOChart.js

Backend (Node.js)

Node.jsExpress.jsMongoDBMongooseJWTSocket.IOCloudinaryRedisPassportMulter

AI/ML Service (Flask)

FlaskLangChainTogether AIMongoDBPython

Real-time Features

Socket.IOWebRTCStringee

Cloud Services

MongoDB AtlasRedis CloudCloudinaryTogether AI

The platform is engineered to enhance the language learning experience by fostering engagement and social interaction among learners with shared interests and objectives. Leveraging advanced AI technology, LinguaConnect provides personalized learning pathways and intelligent language assistance to facilitate effective and enjoyable language acquisition.

🏗️ Architecture

  • 🖥️ Frontend: Single Page Application (SPA)
  • ⚙️ Backend: RESTful API and WebSocket integration
  • 🤖 AI Service: Microservice Architecture
  • 🗄️ Database: Document-based NoSQL
  • ⚡ Cache: In-memory data store
  • ☁️ Storage: Cloud-based object storage

👥 Demo Accounts

Use the following pre-configured accounts to explore the application:

EmailUsernamePasswordRole
24283032@hulas.coadmin1234567aBAdmin
swalker@yahoo.comlinda261234567aBUser
john63@hotmail.comdavid551234567aBUser
williamspamela@gmail.comcrystal131234567aBUser

Note: These accounts are intended for demonstration purposes only. Please use your own credentials in a production environment.

🚀 Getting Started

Clone the Repository

  1. Clone the repository and navigate to the project directory:
    git clone https://github.com/koding88/LinguaConnect
    cd LinguaConnect

Backend Setup

  1. Navigate to the backend directory:
    cd backend
  2. Create the .env file:
    touch .env
  3. Populate the .env file with the following environment variables:
    # Server Configuration
    PORT=3000
    BASE_URL=http://localhost:3000
    CLIENT_URL=http://localhost:5173
    FLASK_APP_URL=http://localhost:5555
    # Database Configuration
    MONGO_URI=your_key
    REDIS_URL=your_key
    # Authentication
    JWT_SECRET=your_key
    REFRESH_TOKEN_SECRET=your_key
    # Google OAuth Configuration
    GOOGLE_CLIENT_ID=your_key
    GOOGLE_CLIENT_SECRET=your_key
    GOOGLE_CALLBACK_URL=your_key
    # Google Mail Configuration
    GOOGLE_CLIENT_ID_MAIL=your_key
    GOOGLE_CLIENT_SECRET_MAIL=your_key
    GOOGLE_REFRESH_TOKEN_MAIL=your_key
    SEND_MAIL_ACCOUNT=your_key
    # Cloudinary Configuration
    CLOUDINARY_CLOUD_NAME=your_key
    CLOUDINARY_API_KEY=your_key
    CLOUDINARY_API_SECRET=your_key
    # Stringee Configuration
    STRINGEE_API_KEY_SID=your_key
    STRINGEE_API_KEY_SECRET=your_key
    # Environment
    NODE_ENV=production
    
  4. Install the necessary dependencies:
    npm install
  5. Build the backend project:
    npm run build
  6. Start the backend in production mode:
    npm run prod

Flask App Setup

  1. Navigate to the flask_app directory:
    cd ../flask_app
  2. Create a virtual environment:
    python -m venv venv
  3. Activate the virtual environment:
    • Windows:
      venv\Scripts\activate
    • Linux/Mac:
      source venv/bin/activate
  4. Create the .env file:
    touch .env
  5. Add the following environment variables to the .env file:
    FLASK_APP=app
    FLASK_ENV=development
    BACKEND_URL=http://localhost:3000
    MONGO_URI=your_key
    TOGETHER_API_KEY=your_key
    TOGETHER_MODEL=meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo
    
  6. Install the required dependencies:
    pip install -r requirements.txt
  7. Launch the Flask application:
    python run.py

Frontend Setup

  1. Navigate to the frontend directory:
    cd ../frontend
  2. Create the .env file:
    touch .env
  3. Add the following environment variables to the .env file:
    VITE_API_BACKEND_URL=http://localhost:3000
    VITE_AI_URL=http://localhost:5555
    
  4. Install frontend dependencies:
    npm install
  5. Build the frontend project:
    npm run build
  6. Serve the production build:
    serve -s dist -l 5173

🤝 Contributing

We welcome and appreciate contributions to this project! To get started, please follow these guidelines:

  1. Fork the Repository: Click the "Fork" button at the top right of the repository page to create your own copy of the project.
  2. Clone Your Fork: Use the following command to clone your forked repository to your local machine:
    git clone https://github.com/your-username/repository-name.git
  3. Create a Branch: Before making any changes, create a new branch for your feature or bug fix:
    git checkout -b your-feature-branch
  4. Implement Your Changes: Develop your feature or fix the bug, ensuring that your code adheres to the project's coding standards.
  5. Commit Your Changes: Commit your changes with a descriptive message:
    git commit -m "Add a brief description of your changes"
  6. Push to Your Fork: Push your changes to your forked repository:
    git push origin your-feature-branch
  7. Create a Pull Request: Navigate to the original repository and click on "New Pull Request". Select your branch and submit the pull request for review.

Thank you for contributing to LinguaConnect! Your efforts help make our platform better for everyone.

📄 License

This project is licensed under the MIT License. For more details, please refer to the LICENSE file.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

87 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

LinguaConnect

LinguaConnect is a premier social networking platform designed to connect language learners across the globe. It offers an interactive environment where users can document their language learning journeys, engage with native speakers, and participate in meaningful conversations, all enhanced by AI-powered language learning features.

🌟 Key Features

  • 👤 Comprehensive User Profiles: Customize profiles with language preferences and learning objectives.
  • 📝 Multilingual Post Sharing: Share posts with support for multiple languages.
  • 💬 Real-Time Messaging: Engage in live conversations for effective language practice.
  • 🗣️ Topic-Based Discussions and Communities: Join and participate in discussions centered around specific language topics and interests.
  • 🤝 Follow System: Connect and follow other learners to build a supportive learning network.
  • 🎨 Avatar Customization and Profile Management: Personalize avatars and manage profile settings seamlessly.
  • 🤖 AI-Powered Assistance: Receive language learning assistance and corrections driven by artificial intelligence.
  • 🗣️ Intelligent Conversation Practice: Utilize LangChain for advanced and interactive conversation practice.

🛠️ Technology Stack

Frontend

ReactViteZustandReact RouterTailwindCSSShadcn/UISocket.IOChart.js

Backend (Node.js)

Node.jsExpress.jsMongoDBMongooseJWTSocket.IOCloudinaryRedisPassportMulter

AI/ML Service (Flask)

FlaskLangChainTogether AIMongoDBPython

Real-time Features

Socket.IOWebRTCStringee

Cloud Services

MongoDB AtlasRedis CloudCloudinaryTogether AI

The platform is engineered to enhance the language learning experience by fostering engagement and social interaction among learners with shared interests and objectives. Leveraging advanced AI technology, LinguaConnect provides personalized learning pathways and intelligent language assistance to facilitate effective and enjoyable language acquisition.

🏗️ Architecture

  • 🖥️ Frontend: Single Page Application (SPA)
  • ⚙️ Backend: RESTful API and WebSocket integration
  • 🤖 AI Service: Microservice Architecture
  • 🗄️ Database: Document-based NoSQL
  • ⚡ Cache: In-memory data store
  • ☁️ Storage: Cloud-based object storage

👥 Demo Accounts

Use the following pre-configured accounts to explore the application:

EmailUsernamePasswordRole
24283032@hulas.coadmin1234567aBAdmin
swalker@yahoo.comlinda261234567aBUser
john63@hotmail.comdavid551234567aBUser
williamspamela@gmail.comcrystal131234567aBUser

Note: These accounts are intended for demonstration purposes only. Please use your own credentials in a production environment.

🚀 Getting Started

Clone the Repository

  1. Clone the repository and navigate to the project directory:
    git clone https://github.com/koding88/LinguaConnect
    cd LinguaConnect

Backend Setup

  1. Navigate to the backend directory:
    cd backend
  2. Create the .env file:
    touch .env
  3. Populate the .env file with the following environment variables:
    # Server Configuration
    PORT=3000
    BASE_URL=http://localhost:3000
    CLIENT_URL=http://localhost:5173
    FLASK_APP_URL=http://localhost:5555
    # Database Configuration
    MONGO_URI=your_key
    REDIS_URL=your_key
    # Authentication
    JWT_SECRET=your_key
    REFRESH_TOKEN_SECRET=your_key
    # Google OAuth Configuration
    GOOGLE_CLIENT_ID=your_key
    GOOGLE_CLIENT_SECRET=your_key
    GOOGLE_CALLBACK_URL=your_key
    # Google Mail Configuration
    GOOGLE_CLIENT_ID_MAIL=your_key
    GOOGLE_CLIENT_SECRET_MAIL=your_key
    GOOGLE_REFRESH_TOKEN_MAIL=your_key
    SEND_MAIL_ACCOUNT=your_key
    # Cloudinary Configuration
    CLOUDINARY_CLOUD_NAME=your_key
    CLOUDINARY_API_KEY=your_key
    CLOUDINARY_API_SECRET=your_key
    # Stringee Configuration
    STRINGEE_API_KEY_SID=your_key
    STRINGEE_API_KEY_SECRET=your_key
    # Environment
    NODE_ENV=production
    
  4. Install the necessary dependencies:
    npm install
  5. Build the backend project:
    npm run build
  6. Start the backend in production mode:
    npm run prod

Flask App Setup

  1. Navigate to the flask_app directory:
    cd ../flask_app
  2. Create a virtual environment:
    python -m venv venv
  3. Activate the virtual environment:
    • Windows:
      venv\Scripts\activate
    • Linux/Mac:
      source venv/bin/activate
  4. Create the .env file:
    touch .env
  5. Add the following environment variables to the .env file:
    FLASK_APP=app
    FLASK_ENV=development
    BACKEND_URL=http://localhost:3000
    MONGO_URI=your_key
    TOGETHER_API_KEY=your_key
    TOGETHER_MODEL=meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo
    
  6. Install the required dependencies:
    pip install -r requirements.txt
  7. Launch the Flask application:
    python run.py

Frontend Setup

  1. Navigate to the frontend directory:
    cd ../frontend
  2. Create the .env file:
    touch .env
  3. Add the following environment variables to the .env file:
    VITE_API_BACKEND_URL=http://localhost:3000
    VITE_AI_URL=http://localhost:5555
    
  4. Install frontend dependencies:
    npm install
  5. Build the frontend project:
    npm run build
  6. Serve the production build:
    serve -s dist -l 5173

🤝 Contributing

We welcome and appreciate contributions to this project! To get started, please follow these guidelines:

  1. Fork the Repository: Click the "Fork" button at the top right of the repository page to create your own copy of the project.
  2. Clone Your Fork: Use the following command to clone your forked repository to your local machine:
    git clone https://github.com/your-username/repository-name.git
  3. Create a Branch: Before making any changes, create a new branch for your feature or bug fix:
    git checkout -b your-feature-branch
  4. Implement Your Changes: Develop your feature or fix the bug, ensuring that your code adheres to the project's coding standards.
  5. Commit Your Changes: Commit your changes with a descriptive message:
    git commit -m "Add a brief description of your changes"
  6. Push to Your Fork: Push your changes to your forked repository:
    git push origin your-feature-branch
  7. Create a Pull Request: Navigate to the original repository and click on "New Pull Request". Select your branch and submit the pull request for review.

Thank you for contributing to LinguaConnect! Your efforts help make our platform better for everyone.

📄 License

This project is licensed under the MIT License. For more details, please refer to the LICENSE file.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

87 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

LinguaConnect

LinguaConnect is a premier social networking platform designed to connect language learners across the globe. It offers an interactive environment where users can document their language learning journeys, engage with native speakers, and participate in meaningful conversations, all enhanced by AI-powered language learning features.

🌟 Key Features

  • 👤 Comprehensive User Profiles: Customize profiles with language preferences and learning objectives.
  • 📝 Multilingual Post Sharing: Share posts with support for multiple languages.
  • 💬 Real-Time Messaging: Engage in live conversations for effective language practice.
  • 🗣️ Topic-Based Discussions and Communities: Join and participate in discussions centered around specific language topics and interests.
  • 🤝 Follow System: Connect and follow other learners to build a supportive learning network.
  • 🎨 Avatar Customization and Profile Management: Personalize avatars and manage profile settings seamlessly.
  • 🤖 AI-Powered Assistance: Receive language learning assistance and corrections driven by artificial intelligence.
  • 🗣️ Intelligent Conversation Practice: Utilize LangChain for advanced and interactive conversation practice.

🛠️ Technology Stack

Frontend

ReactViteZustandReact RouterTailwindCSSShadcn/UISocket.IOChart.js

Backend (Node.js)

Node.jsExpress.jsMongoDBMongooseJWTSocket.IOCloudinaryRedisPassportMulter

AI/ML Service (Flask)

FlaskLangChainTogether AIMongoDBPython

Real-time Features

Socket.IOWebRTCStringee

Cloud Services

MongoDB AtlasRedis CloudCloudinaryTogether AI

The platform is engineered to enhance the language learning experience by fostering engagement and social interaction among learners with shared interests and objectives. Leveraging advanced AI technology, LinguaConnect provides personalized learning pathways and intelligent language assistance to facilitate effective and enjoyable language acquisition.

🏗️ Architecture

  • 🖥️ Frontend: Single Page Application (SPA)
  • ⚙️ Backend: RESTful API and WebSocket integration
  • 🤖 AI Service: Microservice Architecture
  • 🗄️ Database: Document-based NoSQL
  • ⚡ Cache: In-memory data store
  • ☁️ Storage: Cloud-based object storage

👥 Demo Accounts

Use the following pre-configured accounts to explore the application:

EmailUsernamePasswordRole
24283032@hulas.coadmin1234567aBAdmin
swalker@yahoo.comlinda261234567aBUser
john63@hotmail.comdavid551234567aBUser
williamspamela@gmail.comcrystal131234567aBUser

Note: These accounts are intended for demonstration purposes only. Please use your own credentials in a production environment.

🚀 Getting Started

Clone the Repository

  1. Clone the repository and navigate to the project directory:
    git clone https://github.com/koding88/LinguaConnect
    cd LinguaConnect

Backend Setup

  1. Navigate to the backend directory:
    cd backend
  2. Create the .env file:
    touch .env
  3. Populate the .env file with the following environment variables:
    # Server Configuration
    PORT=3000
    BASE_URL=http://localhost:3000
    CLIENT_URL=http://localhost:5173
    FLASK_APP_URL=http://localhost:5555
    # Database Configuration
    MONGO_URI=your_key
    REDIS_URL=your_key
    # Authentication
    JWT_SECRET=your_key
    REFRESH_TOKEN_SECRET=your_key
    # Google OAuth Configuration
    GOOGLE_CLIENT_ID=your_key
    GOOGLE_CLIENT_SECRET=your_key
    GOOGLE_CALLBACK_URL=your_key
    # Google Mail Configuration
    GOOGLE_CLIENT_ID_MAIL=your_key
    GOOGLE_CLIENT_SECRET_MAIL=your_key
    GOOGLE_REFRESH_TOKEN_MAIL=your_key
    SEND_MAIL_ACCOUNT=your_key
    # Cloudinary Configuration
    CLOUDINARY_CLOUD_NAME=your_key
    CLOUDINARY_API_KEY=your_key
    CLOUDINARY_API_SECRET=your_key
    # Stringee Configuration
    STRINGEE_API_KEY_SID=your_key
    STRINGEE_API_KEY_SECRET=your_key
    # Environment
    NODE_ENV=production
    
  4. Install the necessary dependencies:
    npm install
  5. Build the backend project:
    npm run build
  6. Start the backend in production mode:
    npm run prod

Flask App Setup

  1. Navigate to the flask_app directory:
    cd ../flask_app
  2. Create a virtual environment:
    python -m venv venv
  3. Activate the virtual environment:
    • Windows:
      venv\Scripts\activate
    • Linux/Mac:
      source venv/bin/activate
  4. Create the .env file:
    touch .env
  5. Add the following environment variables to the .env file:
    FLASK_APP=app
    FLASK_ENV=development
    BACKEND_URL=http://localhost:3000
    MONGO_URI=your_key
    TOGETHER_API_KEY=your_key
    TOGETHER_MODEL=meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo
    
  6. Install the required dependencies:
    pip install -r requirements.txt
  7. Launch the Flask application:
    python run.py

Frontend Setup

  1. Navigate to the frontend directory:
    cd ../frontend
  2. Create the .env file:
    touch .env
  3. Add the following environment variables to the .env file:
    VITE_API_BACKEND_URL=http://localhost:3000
    VITE_AI_URL=http://localhost:5555
    
  4. Install frontend dependencies:
    npm install
  5. Build the frontend project:
    npm run build
  6. Serve the production build:
    serve -s dist -l 5173

🤝 Contributing

We welcome and appreciate contributions to this project! To get started, please follow these guidelines:

  1. Fork the Repository: Click the "Fork" button at the top right of the repository page to create your own copy of the project.
  2. Clone Your Fork: Use the following command to clone your forked repository to your local machine:
    git clone https://github.com/your-username/repository-name.git
  3. Create a Branch: Before making any changes, create a new branch for your feature or bug fix:
    git checkout -b your-feature-branch
  4. Implement Your Changes: Develop your feature or fix the bug, ensuring that your code adheres to the project's coding standards.
  5. Commit Your Changes: Commit your changes with a descriptive message:
    git commit -m "Add a brief description of your changes"
  6. Push to Your Fork: Push your changes to your forked repository:
    git push origin your-feature-branch
  7. Create a Pull Request: Navigate to the original repository and click on "New Pull Request". Select your branch and submit the pull request for review.

Thank you for contributing to LinguaConnect! Your efforts help make our platform better for everyone.

📄 License

This project is licensed under the MIT License. For more details, please refer to the LICENSE file.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

87 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

LinguaConnect

LinguaConnect is a premier social networking platform designed to connect language learners across the globe. It offers an interactive environment where users can document their language learning journeys, engage with native speakers, and participate in meaningful conversations, all enhanced by AI-powered language learning features.

🌟 Key Features

  • 👤 Comprehensive User Profiles: Customize profiles with language preferences and learning objectives.
  • 📝 Multilingual Post Sharing: Share posts with support for multiple languages.
  • 💬 Real-Time Messaging: Engage in live conversations for effective language practice.
  • 🗣️ Topic-Based Discussions and Communities: Join and participate in discussions centered around specific language topics and interests.
  • 🤝 Follow System: Connect and follow other learners to build a supportive learning network.
  • 🎨 Avatar Customization and Profile Management: Personalize avatars and manage profile settings seamlessly.
  • 🤖 AI-Powered Assistance: Receive language learning assistance and corrections driven by artificial intelligence.
  • 🗣️ Intelligent Conversation Practice: Utilize LangChain for advanced and interactive conversation practice.

🛠️ Technology Stack

Frontend

ReactViteZustandReact RouterTailwindCSSShadcn/UISocket.IOChart.js

Backend (Node.js)

Node.jsExpress.jsMongoDBMongooseJWTSocket.IOCloudinaryRedisPassportMulter

AI/ML Service (Flask)

FlaskLangChainTogether AIMongoDBPython

Real-time Features

Socket.IOWebRTCStringee

Cloud Services

MongoDB AtlasRedis CloudCloudinaryTogether AI

The platform is engineered to enhance the language learning experience by fostering engagement and social interaction among learners with shared interests and objectives. Leveraging advanced AI technology, LinguaConnect provides personalized learning pathways and intelligent language assistance to facilitate effective and enjoyable language acquisition.

🏗️ Architecture

  • 🖥️ Frontend: Single Page Application (SPA)
  • ⚙️ Backend: RESTful API and WebSocket integration
  • 🤖 AI Service: Microservice Architecture
  • 🗄️ Database: Document-based NoSQL
  • ⚡ Cache: In-memory data store
  • ☁️ Storage: Cloud-based object storage

👥 Demo Accounts

Use the following pre-configured accounts to explore the application:

EmailUsernamePasswordRole
24283032@hulas.coadmin1234567aBAdmin
swalker@yahoo.comlinda261234567aBUser
john63@hotmail.comdavid551234567aBUser
williamspamela@gmail.comcrystal131234567aBUser

Note: These accounts are intended for demonstration purposes only. Please use your own credentials in a production environment.

🚀 Getting Started

Clone the Repository

  1. Clone the repository and navigate to the project directory:
    git clone https://github.com/koding88/LinguaConnect
    cd LinguaConnect

Backend Setup

  1. Navigate to the backend directory:
    cd backend
  2. Create the .env file:
    touch .env
  3. Populate the .env file with the following environment variables:
    # Server Configuration
    PORT=3000
    BASE_URL=http://localhost:3000
    CLIENT_URL=http://localhost:5173
    FLASK_APP_URL=http://localhost:5555
    # Database Configuration
    MONGO_URI=your_key
    REDIS_URL=your_key
    # Authentication
    JWT_SECRET=your_key
    REFRESH_TOKEN_SECRET=your_key
    # Google OAuth Configuration
    GOOGLE_CLIENT_ID=your_key
    GOOGLE_CLIENT_SECRET=your_key
    GOOGLE_CALLBACK_URL=your_key
    # Google Mail Configuration
    GOOGLE_CLIENT_ID_MAIL=your_key
    GOOGLE_CLIENT_SECRET_MAIL=your_key
    GOOGLE_REFRESH_TOKEN_MAIL=your_key
    SEND_MAIL_ACCOUNT=your_key
    # Cloudinary Configuration
    CLOUDINARY_CLOUD_NAME=your_key
    CLOUDINARY_API_KEY=your_key
    CLOUDINARY_API_SECRET=your_key
    # Stringee Configuration
    STRINGEE_API_KEY_SID=your_key
    STRINGEE_API_KEY_SECRET=your_key
    # Environment
    NODE_ENV=production
    
  4. Install the necessary dependencies:
    npm install
  5. Build the backend project:
    npm run build
  6. Start the backend in production mode:
    npm run prod

Flask App Setup

  1. Navigate to the flask_app directory:
    cd ../flask_app
  2. Create a virtual environment:
    python -m venv venv
  3. Activate the virtual environment:
    • Windows:
      venv\Scripts\activate
    • Linux/Mac:
      source venv/bin/activate
  4. Create the .env file:
    touch .env
  5. Add the following environment variables to the .env file:
    FLASK_APP=app
    FLASK_ENV=development
    BACKEND_URL=http://localhost:3000
    MONGO_URI=your_key
    TOGETHER_API_KEY=your_key
    TOGETHER_MODEL=meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo
    
  6. Install the required dependencies:
    pip install -r requirements.txt
  7. Launch the Flask application:
    python run.py

Frontend Setup

  1. Navigate to the frontend directory:
    cd ../frontend
  2. Create the .env file:
    touch .env
  3. Add the following environment variables to the .env file:
    VITE_API_BACKEND_URL=http://localhost:3000
    VITE_AI_URL=http://localhost:5555
    
  4. Install frontend dependencies:
    npm install
  5. Build the frontend project:
    npm run build
  6. Serve the production build:
    serve -s dist -l 5173

🤝 Contributing

We welcome and appreciate contributions to this project! To get started, please follow these guidelines:

  1. Fork the Repository: Click the "Fork" button at the top right of the repository page to create your own copy of the project.
  2. Clone Your Fork: Use the following command to clone your forked repository to your local machine:
    git clone https://github.com/your-username/repository-name.git
  3. Create a Branch: Before making any changes, create a new branch for your feature or bug fix:
    git checkout -b your-feature-branch
  4. Implement Your Changes: Develop your feature or fix the bug, ensuring that your code adheres to the project's coding standards.
  5. Commit Your Changes: Commit your changes with a descriptive message:
    git commit -m "Add a brief description of your changes"
  6. Push to Your Fork: Push your changes to your forked repository:
    git push origin your-feature-branch
  7. Create a Pull Request: Navigate to the original repository and click on "New Pull Request". Select your branch and submit the pull request for review.

Thank you for contributing to LinguaConnect! Your efforts help make our platform better for everyone.

📄 License

This project is licensed under the MIT License. For more details, please refer to the LICENSE file.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

87 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

LinguaConnect

LinguaConnect is a premier social networking platform designed to connect language learners across the globe. It offers an interactive environment where users can document their language learning journeys, engage with native speakers, and participate in meaningful conversations, all enhanced by AI-powered language learning features.

🌟 Key Features

  • 👤 Comprehensive User Profiles: Customize profiles with language preferences and learning objectives.
  • 📝 Multilingual Post Sharing: Share posts with support for multiple languages.
  • 💬 Real-Time Messaging: Engage in live conversations for effective language practice.
  • 🗣️ Topic-Based Discussions and Communities: Join and participate in discussions centered around specific language topics and interests.
  • 🤝 Follow System: Connect and follow other learners to build a supportive learning network.
  • 🎨 Avatar Customization and Profile Management: Personalize avatars and manage profile settings seamlessly.
  • 🤖 AI-Powered Assistance: Receive language learning assistance and corrections driven by artificial intelligence.
  • 🗣️ Intelligent Conversation Practice: Utilize LangChain for advanced and interactive conversation practice.

🛠️ Technology Stack

Frontend

ReactViteZustandReact RouterTailwindCSSShadcn/UISocket.IOChart.js

Backend (Node.js)

Node.jsExpress.jsMongoDBMongooseJWTSocket.IOCloudinaryRedisPassportMulter

AI/ML Service (Flask)

FlaskLangChainTogether AIMongoDBPython

Real-time Features

Socket.IOWebRTCStringee

Cloud Services

MongoDB AtlasRedis CloudCloudinaryTogether AI

The platform is engineered to enhance the language learning experience by fostering engagement and social interaction among learners with shared interests and objectives. Leveraging advanced AI technology, LinguaConnect provides personalized learning pathways and intelligent language assistance to facilitate effective and enjoyable language acquisition.

🏗️ Architecture

  • 🖥️ Frontend: Single Page Application (SPA)
  • ⚙️ Backend: RESTful API and WebSocket integration
  • 🤖 AI Service: Microservice Architecture
  • 🗄️ Database: Document-based NoSQL
  • ⚡ Cache: In-memory data store
  • ☁️ Storage: Cloud-based object storage

👥 Demo Accounts

Use the following pre-configured accounts to explore the application:

EmailUsernamePasswordRole
24283032@hulas.coadmin1234567aBAdmin
swalker@yahoo.comlinda261234567aBUser
john63@hotmail.comdavid551234567aBUser
williamspamela@gmail.comcrystal131234567aBUser

Note: These accounts are intended for demonstration purposes only. Please use your own credentials in a production environment.

🚀 Getting Started

Clone the Repository

  1. Clone the repository and navigate to the project directory:
    git clone https://github.com/koding88/LinguaConnect
    cd LinguaConnect

Backend Setup

  1. Navigate to the backend directory:
    cd backend
  2. Create the .env file:
    touch .env
  3. Populate the .env file with the following environment variables:
    # Server Configuration
    PORT=3000
    BASE_URL=http://localhost:3000
    CLIENT_URL=http://localhost:5173
    FLASK_APP_URL=http://localhost:5555
    # Database Configuration
    MONGO_URI=your_key
    REDIS_URL=your_key
    # Authentication
    JWT_SECRET=your_key
    REFRESH_TOKEN_SECRET=your_key
    # Google OAuth Configuration
    GOOGLE_CLIENT_ID=your_key
    GOOGLE_CLIENT_SECRET=your_key
    GOOGLE_CALLBACK_URL=your_key
    # Google Mail Configuration
    GOOGLE_CLIENT_ID_MAIL=your_key
    GOOGLE_CLIENT_SECRET_MAIL=your_key
    GOOGLE_REFRESH_TOKEN_MAIL=your_key
    SEND_MAIL_ACCOUNT=your_key
    # Cloudinary Configuration
    CLOUDINARY_CLOUD_NAME=your_key
    CLOUDINARY_API_KEY=your_key
    CLOUDINARY_API_SECRET=your_key
    # Stringee Configuration
    STRINGEE_API_KEY_SID=your_key
    STRINGEE_API_KEY_SECRET=your_key
    # Environment
    NODE_ENV=production
    
  4. Install the necessary dependencies:
    npm install
  5. Build the backend project:
    npm run build
  6. Start the backend in production mode:
    npm run prod

Flask App Setup

  1. Navigate to the flask_app directory:
    cd ../flask_app
  2. Create a virtual environment:
    python -m venv venv
  3. Activate the virtual environment:
    • Windows:
      venv\Scripts\activate
    • Linux/Mac:
      source venv/bin/activate
  4. Create the .env file:
    touch .env
  5. Add the following environment variables to the .env file:
    FLASK_APP=app
    FLASK_ENV=development
    BACKEND_URL=http://localhost:3000
    MONGO_URI=your_key
    TOGETHER_API_KEY=your_key
    TOGETHER_MODEL=meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo
    
  6. Install the required dependencies:
    pip install -r requirements.txt
  7. Launch the Flask application:
    python run.py

Frontend Setup

  1. Navigate to the frontend directory:
    cd ../frontend
  2. Create the .env file:
    touch .env
  3. Add the following environment variables to the .env file:
    VITE_API_BACKEND_URL=http://localhost:3000
    VITE_AI_URL=http://localhost:5555
    
  4. Install frontend dependencies:
    npm install
  5. Build the frontend project:
    npm run build
  6. Serve the production build:
    serve -s dist -l 5173

🤝 Contributing

We welcome and appreciate contributions to this project! To get started, please follow these guidelines:

  1. Fork the Repository: Click the "Fork" button at the top right of the repository page to create your own copy of the project.
  2. Clone Your Fork: Use the following command to clone your forked repository to your local machine:
    git clone https://github.com/your-username/repository-name.git
  3. Create a Branch: Before making any changes, create a new branch for your feature or bug fix:
    git checkout -b your-feature-branch
  4. Implement Your Changes: Develop your feature or fix the bug, ensuring that your code adheres to the project's coding standards.
  5. Commit Your Changes: Commit your changes with a descriptive message:
    git commit -m "Add a brief description of your changes"
  6. Push to Your Fork: Push your changes to your forked repository:
    git push origin your-feature-branch
  7. Create a Pull Request: Navigate to the original repository and click on "New Pull Request". Select your branch and submit the pull request for review.

Thank you for contributing to LinguaConnect! Your efforts help make our platform better for everyone.

📄 License

This project is licensed under the MIT License. For more details, please refer to the LICENSE file.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

87 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

LinguaConnect

LinguaConnect is a premier social networking platform designed to connect language learners across the globe. It offers an interactive environment where users can document their language learning journeys, engage with native speakers, and participate in meaningful conversations, all enhanced by AI-powered language learning features.

🌟 Key Features

  • 👤 Comprehensive User Profiles: Customize profiles with language preferences and learning objectives.
  • 📝 Multilingual Post Sharing: Share posts with support for multiple languages.
  • 💬 Real-Time Messaging: Engage in live conversations for effective language practice.
  • 🗣️ Topic-Based Discussions and Communities: Join and participate in discussions centered around specific language topics and interests.
  • 🤝 Follow System: Connect and follow other learners to build a supportive learning network.
  • 🎨 Avatar Customization and Profile Management: Personalize avatars and manage profile settings seamlessly.
  • 🤖 AI-Powered Assistance: Receive language learning assistance and corrections driven by artificial intelligence.
  • 🗣️ Intelligent Conversation Practice: Utilize LangChain for advanced and interactive conversation practice.

🛠️ Technology Stack

Frontend

ReactViteZustandReact RouterTailwindCSSShadcn/UISocket.IOChart.js

Backend (Node.js)

Node.jsExpress.jsMongoDBMongooseJWTSocket.IOCloudinaryRedisPassportMulter

AI/ML Service (Flask)

FlaskLangChainTogether AIMongoDBPython

Real-time Features

Socket.IOWebRTCStringee

Cloud Services

MongoDB AtlasRedis CloudCloudinaryTogether AI

The platform is engineered to enhance the language learning experience by fostering engagement and social interaction among learners with shared interests and objectives. Leveraging advanced AI technology, LinguaConnect provides personalized learning pathways and intelligent language assistance to facilitate effective and enjoyable language acquisition.

🏗️ Architecture

  • 🖥️ Frontend: Single Page Application (SPA)
  • ⚙️ Backend: RESTful API and WebSocket integration
  • 🤖 AI Service: Microservice Architecture
  • 🗄️ Database: Document-based NoSQL
  • ⚡ Cache: In-memory data store
  • ☁️ Storage: Cloud-based object storage

👥 Demo Accounts

Use the following pre-configured accounts to explore the application:

EmailUsernamePasswordRole
24283032@hulas.coadmin1234567aBAdmin
swalker@yahoo.comlinda261234567aBUser
john63@hotmail.comdavid551234567aBUser
williamspamela@gmail.comcrystal131234567aBUser

Note: These accounts are intended for demonstration purposes only. Please use your own credentials in a production environment.

🚀 Getting Started

Clone the Repository

  1. Clone the repository and navigate to the project directory:
    git clone https://github.com/koding88/LinguaConnect
    cd LinguaConnect

Backend Setup

  1. Navigate to the backend directory:
    cd backend
  2. Create the .env file:
    touch .env
  3. Populate the .env file with the following environment variables:
    # Server Configuration
    PORT=3000
    BASE_URL=http://localhost:3000
    CLIENT_URL=http://localhost:5173
    FLASK_APP_URL=http://localhost:5555
    # Database Configuration
    MONGO_URI=your_key
    REDIS_URL=your_key
    # Authentication
    JWT_SECRET=your_key
    REFRESH_TOKEN_SECRET=your_key
    # Google OAuth Configuration
    GOOGLE_CLIENT_ID=your_key
    GOOGLE_CLIENT_SECRET=your_key
    GOOGLE_CALLBACK_URL=your_key
    # Google Mail Configuration
    GOOGLE_CLIENT_ID_MAIL=your_key
    GOOGLE_CLIENT_SECRET_MAIL=your_key
    GOOGLE_REFRESH_TOKEN_MAIL=your_key
    SEND_MAIL_ACCOUNT=your_key
    # Cloudinary Configuration
    CLOUDINARY_CLOUD_NAME=your_key
    CLOUDINARY_API_KEY=your_key
    CLOUDINARY_API_SECRET=your_key
    # Stringee Configuration
    STRINGEE_API_KEY_SID=your_key
    STRINGEE_API_KEY_SECRET=your_key
    # Environment
    NODE_ENV=production
    
  4. Install the necessary dependencies:
    npm install
  5. Build the backend project:
    npm run build
  6. Start the backend in production mode:
    npm run prod

Flask App Setup

  1. Navigate to the flask_app directory:
    cd ../flask_app
  2. Create a virtual environment:
    python -m venv venv
  3. Activate the virtual environment:
    • Windows:
      venv\Scripts\activate
    • Linux/Mac:
      source venv/bin/activate
  4. Create the .env file:
    touch .env
  5. Add the following environment variables to the .env file:
    FLASK_APP=app
    FLASK_ENV=development
    BACKEND_URL=http://localhost:3000
    MONGO_URI=your_key
    TOGETHER_API_KEY=your_key
    TOGETHER_MODEL=meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo
    
  6. Install the required dependencies:
    pip install -r requirements.txt
  7. Launch the Flask application:
    python run.py

Frontend Setup

  1. Navigate to the frontend directory:
    cd ../frontend
  2. Create the .env file:
    touch .env
  3. Add the following environment variables to the .env file:
    VITE_API_BACKEND_URL=http://localhost:3000
    VITE_AI_URL=http://localhost:5555
    
  4. Install frontend dependencies:
    npm install
  5. Build the frontend project:
    npm run build
  6. Serve the production build:
    serve -s dist -l 5173

🤝 Contributing

We welcome and appreciate contributions to this project! To get started, please follow these guidelines:

  1. Fork the Repository: Click the "Fork" button at the top right of the repository page to create your own copy of the project.
  2. Clone Your Fork: Use the following command to clone your forked repository to your local machine:
    git clone https://github.com/your-username/repository-name.git
  3. Create a Branch: Before making any changes, create a new branch for your feature or bug fix:
    git checkout -b your-feature-branch
  4. Implement Your Changes: Develop your feature or fix the bug, ensuring that your code adheres to the project's coding standards.
  5. Commit Your Changes: Commit your changes with a descriptive message:
    git commit -m "Add a brief description of your changes"
  6. Push to Your Fork: Push your changes to your forked repository:
    git push origin your-feature-branch
  7. Create a Pull Request: Navigate to the original repository and click on "New Pull Request". Select your branch and submit the pull request for review.

Thank you for contributing to LinguaConnect! Your efforts help make our platform better for everyone.

📄 License

This project is licensed under the MIT License. For more details, please refer to the LICENSE file.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages