---
# System prepended metadata

title: Language Exchange Platform

---

---
title: 'Language Exchange Platform'
disqus: hackmd
---

Project Titlesadas
===

## Table of Contents

[TOC] 

## Overview

In a world where language barriers can hinder communication and cultural understanding, individuals are constantly seeking ways to learn new languages in a free and enjoyable manner while also connecting with language partners. However, finding accessible resources and suitable language exchange opportunities can be a daunting task, leading to frustration and a lack of progress in language acquisition.

The language exchange website aims to revolutionize the language learning experience by providing a comprehensive and user-centric platform that caters to the needs of language enthusiasts. It offers an innovative approach to language learning, facilitating connections with language partners, and fostering a vibrant community dedicated to linguistic growth and cultural exchange.


## Problem Statement 

In today's interconnected world, language learning has become increasingly important. People from different countries and cultures are eager to learn new languages to enhance their communication skills, academic opportunities, career prospects, and cultural understanding. However, finding suitable language exchange partners and maintaining consistent language practice can be challenging.

* Limited User Base: It's difficult for learners to find compatible language partners or access a wide range of languages because of most language exchange platforms have a limited number of users.

* Inconsistent Engagement: Users often face issues with low user activity and lack of commitment, resulting in irregular language practice sessions and reduced motivation to continue using the platform.

* Language Learning Resources: While language exchange primarily focuses on conversation practice, learners often require additional resources such as learning videos and tutorials, interactive quizzes, and  vocabulary lists specific to their target language.

* Limited Interaction Features: Some platforms lack interactive features such as video calls and voice messages, or chat translation.

## Solution Statement

Our proposed solution is to develop a robust Language Exchange Platform that addresses the challenges faced by language learners in finding suitable language partners, maintaining consistent practice, accessing comprehensive learning resources, and engaging in interactive language practice.

* Our platform focuses on user acquisition and community growth by implementing many strategies such as extensive marketing and Outreach and collaboration with other platforms.

* Foster consistent engagement among users, our platform will provide various features and incentives to promote active participation and motivation such as personalized notifications and reminders.

* Our platform will offer a comprehensive range of language learning resources to supplement conversation practice such ass learning videos and tutorials, interactive quizzes and vocabulary lists.

* To enhance immersive language practice and effective communication, our platform will provide many interactive features such as video calls and voice messages, chat translation and more

## User Journey

#### User Discovery
- User becomes aware of the system and its services through marketing efforts, recommendations, or other means.
- User decides to explore the system further.

#### Signup Process
- User visits the system's website or app.
- User navigates to the signup page.
- User provides required information (e.g., name, email, password) to create an account.
- User submits the signup form.
- System validates the information and creates a new user account.
- User receives a confirmation email or notification to verify their account.

#### Login Process
- User returns to the system's website or app.
- User navigates to the login page.
- User enters their login credentials (email and password).
- User submits the login form.
- System verifies the credentials and grants access to the user.

#### Exploring the System
- User is redirected to the system's homepage after successful login.
- User can access various sections and features of the system, such as site services, about us, and testimonials.
- User clicks on the "Site Services" section to view the available services.
- User clicks on the "About Us" section to learn more about the company or organization.
- User navigates to the testimonials section to read reviews and experiences shared by other users.

#### Finding Potential Partners
- User accesses the "Possible Partners" section.
- User can view a list of potential partners.
- User can search for specific partners using search functionality.
- User can apply filters to refine the list of potential partners based on specific criteria.

#### Communication and Interaction
- User selects a partner from the list.
- User can view the partner's information.
- User can send messages to the partner to initiate contact and discuss further.
- User can review the partner's profile, ratings, and reviews submitted by other users.
- User can view their own chat history with partners.

#### Text Messaging and Translation
- User can send and receive text messages within the chat interface.
- User can choose to translate received messages to their preferred language if needed.
- User can convert text messages to voice using the system's voice conversion feature.

#### Video Call
- User has the option to start a video call with a partner for a more interactive communication experience.

#### Personal Information
- User can access their own personal information within the system.
- User can edit and update their personal details, such as name, contact information, or profile picture.

#### Continuous Access to Site Services
- User can revisit the "Site Services" section at any time to explore other available services.





## User story

* The system shall allow the user to signup.
* The system shall allow the user to login.
* The system shall allow the user to see site services.
* The system shall allow the user to see about us section.
* The system shall allow the user to see testimonials section.
* The system shall allow the user to show possible parteners.
* The system shall allow the user to search for possible parteners.
* The system shall allow the user to filter possible parteners.
* The system shall allow the user to send message.
* The system shall allow the user to see users information.
* The system shall allow the user to edit his own personal information.
* The system shall allow the user to review the partner.
* The system shall allow the user to see his own chats.
* The system shall allow the user to send text message.
* The system shall allow the user to receive text message.
* The system shall allow the user to translate receive massage.
* The system shall allow the user to convert massage to voice. 
* The system shall allow the user to start video call.
* The system shall allow the user to see site services.


## Design
## Tools & Technologies
## semi
* HelloTalk:
        
* Conversation Exchange
* Duolingo
* Speaky
* Mondly



-----------------------
## Database

EndPoints
---
```txt
POST:

	/login
	/signup
	/message/:user_id
	/review/:user_id
	/profile/:user_id
	/chat/:user_id

PUT:
	 /profile/:user_id
	 /review/:user_id

GET:
	 /users
	 /profile/user_id
	 /reviews/user_id
	 /chats/user_id
	 /messages

DELETE:
	 /user
	/review

```
Components & Pages
---
* landing page
*  login-signup
*  community
*  profile
*  edit profile
*  chat

Templates
--
```javascript 
{
    msg: "User Not Found",
    status: 404,    
}

{
    msg: "Unauthrized",
    status: 401,
}

{
    msg: "Bad Requset",
    status: 400,
    data: error.message 
}

{
    msg: "Created Successfully",
    status: 201,
    data?: []
}

{
    msg: "Deleted Successfully",
    status: 200,
    data?: []
}

{
    msg: "Internal Server Error",
    status: 500,
}

{
    msg: "{Data} Returned Successfully",
    status: 200, 
    data : [],    
}


```


Generals
---
- github
- variables
* camel case
* arrow function
* async/await

Tasks
---
- mhani custumize navbar
    - create layaut component 
    - use contex to store profile data 
    - create logo
    - make all nav links work 

- basel chat conversation 
    - backend: create a function to returns the users that the logged user has previously communicated with
    - for each use return the last sent message
    - frontend: use the backend endpoint in the chat page to show all chats 

- aya uploade profile image 
    - i will create s3 puket and give you credentials
    - create uploade image function and put the recived url on profile image inpormation 

- abdullah error handling 
    - Take a tour of the project files and handle the errors
    - creata 404 & 500 frontend pages and use it in the frontend 
    - **important** prepare to project to deploy it 
        - make sure that we dont use local code or links 
     


#### Backend:

* create server file structuer
* create express server 
* setup database
* create login function 
* create signup step1 function 
* create signup step2 function 
* create auth & oauth middleware
* create user feadback 
* create user profile 
* craete languages table [ 9pm to 2am  ]
* 


## TODO
- create layout compnent 
- custumize login button 
- 








languages
---
name 
shortcut 
flag 









<!-- # for example #  -->



User story
---

```gherkin=
Feature: Guess the word

  # The first example has two steps
  Scenario: Maker starts a game
    When the Maker starts a game
    Then the Maker waits for a Breaker to join

  # The second example has three steps
  Scenario: Breaker joins a game
    Given the Maker has started a game with the word "silky"
    When the Breaker joins the Maker's game
    Then the Breaker must guess a word with 5 characters
```
> I choose a lazy person to do a hard job. Because a lazy person will find an easy way to do it. [name=Bill Gates]


```gherkin=
Feature: Shopping Cart
  As a Shopper
  I want to put items in my shopping cart
  Because I want to manage items before I check out

  Scenario: User adds item to cart
    Given I'm a logged-in User
    When I go to the Item page
    And I click "Add item to cart"
    Then the quantity of items in my cart should go up
    And my subtotal should increment
    And the warehouse inventory should decrement
```
