diff --git a/README.md b/README.md
index 3a653dde..34df587d 100644
--- a/README.md
+++ b/README.md
@@ -19,6 +19,7 @@ Data structure and Algorithm (DSA)
- [Turkish](./docs/tr)
- [繁體中文](./docs/zh-tw)
- [日本語](./docs/ja)
+- [বাংলা](./docs/bn)
## Contribution Guidelines
diff --git a/README.md.bak b/README.md.bak
new file mode 100644
index 00000000..3a653dde
--- /dev/null
+++ b/README.md.bak
@@ -0,0 +1,143 @@
+[![.NET](https://github.com/MakeContributions/DSA/actions/workflows/dotnet.yml/badge.svg)](https://github.com/MakeContributions/DSA/actions/workflows/dotnet.yml)
+[![C++](https://github.com/MakeContributions/DSA/actions/workflows/cpp.yml/badge.svg)](https://github.com/MakeContributions/DSA/actions/workflows/cpp.yml)
+[![Go](https://github.com/MakeContributions/DSA/actions/workflows/go.yml/badge.svg)](https://github.com/MakeContributions/DSA/actions/workflows/go.yml)
+[![Node.js CI](https://github.com/MakeContributions/DSA/actions/workflows/node.js.yml/badge.svg)](https://github.com/MakeContributions/DSA/actions/workflows/node.js.yml)
+[![Python](https://github.com/MakeContributions/DSA/actions/workflows/python.yml/badge.svg)](https://github.com/MakeContributions/DSA/actions/workflows/python.yml)
+[![codespell](https://github.com/MakeContributions/DSA/actions/workflows/codespell.yml/badge.svg)](https://github.com/MakeContributions/DSA/actions/workflows/codespell.yml)
+[![CodeQL](https://github.com/MakeContributions/DSA/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/MakeContributions/DSA/actions/workflows/codeql-analysis.yml)
+[![Discord](https://img.shields.io/discord/863049619734790185?color=7389D8&logo=discord&logoColor=ffffff&label=&labelColor=6A7EC2)](https://discord.gg/ydWxdqbTyK)
+
+# Data Structures and Algorithm
+
+Data structure and Algorithm (DSA)
+
+## Explanations
+
+- [English](./docs/en)
+- [Español](./docs/es)
+- [Português](./docs/pt)
+- [Turkish](./docs/tr)
+- [繁體中文](./docs/zh-tw)
+- [日本語](./docs/ja)
+
+## Contribution Guidelines
+
+### 1. Contribution Specifications
+
+The problem being contributed must either be a simple **file** (**Eg.** [`kruskal-algorithm.cpp`](./algorithms/CPlusPlus/Graphs/kruskal-algorithm.cpp), [`linear-search.java`](./algorithms/Java/searching/linear-search.java)) or a more complex **directory** ([`palindrome/`](./algorithms/Rust/strings/palindrome)). This is a unit `problem`.
+
+The directory tree has the following convention of `algorithms/{language}/{category}/{problem}`, where `{language}` represents the language code of the problem (**Eg.** `CPlusPlus` for C++, `CSharp` for C# etc.), `{category}` is the topic or category of the problem being contributed (**Eg.** `strings`, `sorting`, `linked-lists` etc.), and `{problem}` is a conforming name to the problem (**Eg.** `linear-search.cpp`, `palindrome`, `queue-linked-list.cpp` etc.)
+
+A unit `problem` must conform to the following specifications:
+
+- The name should be in lowercase. (**Eg.** `palindrome/`, `binary-search.cpp` etc.).
+- Each word must be separated by a **dash** or a **hyphen** (`-`).
+
+**If you have a problem that belongs to a new _topic_ or _category_ than one which are present:**
+
+1. Create a new folder and an index for it inside (a readme, `README.md` file).
+2. To each new index file, write the readme with your `problem` in it ([Markdown Documentation](https://guides.github.com/features/mastering-markdown/)).
+3. The folder name can also only contain **lowercase characters** and **dashes** or **hyphens** (`-`) (Eg. `strings` `sorting` etc.)
+
+#### Simple (File) Contributions
+
+The file should conform to the `problem` specification, and the extension (**Eg.** `linear-search.java`, `kruskal-algorithm.cpp`, `count-inversions.js` etc.)
+
+#### Project/Folder-based Contributions
+
+The project and folder-based contributions have a bit more stricter contribution contribution specifications.
+
+The folder should conform to the `problem` specification, along with the following specifications
+
+**Folder Structure**
+
+```bash
+problem-name\
+| - .gitignore
+| - README.md
+| - Makefile # or the specific specification/requirements/configuration file
+| - src\
+ | - main.ext
+```
+
+#### `README.md` Specification / Template
+
+````markdown
+#
+
+< description of the problem >
+
+## Prerequisites
+
+- prerequisite library or package
+- [prerequisite library](https://www.example.com/link-to-official-library)
+
+## Instructions
+
+- instructions to run the project
+- < Simple and reproducible commands to execute the project >
+ ```bash
+ make # or 'cargo run', or 'dotnet run' or 'mvn exec:java' etc.
+ ```
+
+## Test Cases & Output < if exists>
+
+< If you can provide test cases, describe it here, else remove this section >
+````
+
+#### `.gitignore` File
+
+```gitignore
+# add all output files and build files to be excluded from git tracking
+main # executable file also must have the project name
+target/ # the build file, for example for rust
+```
+
+#### Build File / Specification File / Configuration File
+
+It can be any of the following ones
+
+- **C/C++**: `Makefile`
+- **Python**: `requirements.txt`
+- **JavaScript**: `package.json` and `package-lock.json`
+- **Rust**: `Cargo.toml` and `Cargo.lock`
+- **Go**: `go.mod`
+
+#### Source Code File
+
+The source code files, should either be in `src/` folder (**Eg.** `src/main.cpp` or `src/main.js`) or the root folder (**Eg.** `palindrome.go` or `App.java`) where `ext` is the file extension for the specific programming language.
+
+Again, the source codes must conform to a valid file structure convention that the programming language enforces.
+
+### 2. Naming Convention
+
+The programming should keep the naming convention rule of each programming language.
+
+### Other topic
+
+- [First-time contribution](CONTRIBUTING.md)
+
+## Reviewers
+
+| Programming Language | Users |
+| -------------------- | ----------------------------------------------------------- |
+| C or C++ | @Arsenic-ATG, @UG-SEP, @aayushjain7, @Ashborn-SM, @Ashad001 |
+| Java | @TawfikYasser, @aayushjain7, @mohitchakraverty |
+| C# | @ming-tsai, @Waqar-107 |
+| Go | @ayo-ajayi |
+| Python | @Arsenic-ATG, @sridhar-5 |
+| JavaScript | @ming-tsai |
+
+## Contributors
+
+
+
+
+
+## Open Graph
+
+
+
+## License
+
+[MIT](./LICENSE)
diff --git a/docs/bn/CONTRIBUTING.md b/docs/bn/CONTRIBUTING.md
new file mode 100644
index 00000000..3d895f01
--- /dev/null
+++ b/docs/bn/CONTRIBUTING.md
@@ -0,0 +1,27 @@
+# অ্যালগরিদমের নাম
+
+অ্যালগরিদমের একটি সংক্ষিপ্ত বিবরণ লিখুন যেমন:
+১) সময়ের জটিলতা
+২) স্থান জটিলতা
+৩) অ্যাপ্লিকেশন
+৪) প্রতিষ্ঠাতার নাম
+৫) ইত্যাদি...
+
+## ধাপ
+অ্যালগরিদমটি পরিষ্কার, সহজ এবং বোধগম্য ধাপে বর্ণনা করুন।
+
+## উদাহরণ
+নমুনা ইনপুট ডেটা সহ অ্যালগরিদম ট্রেস করুন।
+
+## বাস্তবায়ন
+
+প্রোগ্রামিং ভাষায় তাদের বাস্তবায়নের লিঙ্ক।
+দ্রষ্টব্য: লিঙ্কটি শুধুমাত্র অ্যালগরিদম ফোল্ডারের মধ্যে থাকা উচিত।
+
+## ভিডিও URL
+
+অ্যালগরিদম ব্যাখ্যা করে এমন একটি ভিডিওর URL সংযুক্ত করুন৷
+
+## অন্যান্য
+
+অন্য কোন তথ্য সবসময় স্বাগত জানাই এবং এই বিভাগে অন্তর্ভুক্ত করা উচিত।
\ No newline at end of file
diff --git a/docs/bn/CONTRIBUTING.md.bak b/docs/bn/CONTRIBUTING.md.bak
new file mode 100644
index 00000000..665a4641
--- /dev/null
+++ b/docs/bn/CONTRIBUTING.md.bak
@@ -0,0 +1,27 @@
+# Algorithm Name
+
+Write a short description of the algorithm like:
+1. Time Complexity
+2. Space Complexity
+3. Applications
+4. Founder's Name
+5. etc...
+
+## Steps
+Describe the algorithm in clear, simple, and understandable steps.
+
+## Example
+Trace the algorithm with sample input data.
+
+## Implementation
+
+Links to their implementation in programming languages.
+NOTE: The link should be within the algorithms folder only.
+
+## Video URL
+
+Attach a URL of a video that explains the algorithm.
+
+## Others
+
+Any other information is always welcome and should be included in this section.
diff --git a/docs/bn/README.md b/docs/bn/README.md
new file mode 100644
index 00000000..770c05eb
--- /dev/null
+++ b/docs/bn/README.md
@@ -0,0 +1,9 @@
+# অ্যালগরিদম
+
+## স্ট্রিং
+
+- [প্যালিনড্রোম](./Strings/Palindrome.md)
+
+## অন্যান্য
+
+[কিভাবে নতুন অ্যালগরিদম ডকুমেন্টেশন যোগ করতে হয়?](./CONTRIBUTING.md)
diff --git a/docs/bn/README.md.bak b/docs/bn/README.md.bak
new file mode 100644
index 00000000..65b4a7cf
--- /dev/null
+++ b/docs/bn/README.md.bak
@@ -0,0 +1,28 @@
+# Algorithms
+
+## Lists
+- [Singly linked list](./Lists/singly-linked-list.md)
+- [Doubly linked list](./Lists/doubly-linked-list.md)
+
+## Sorting
+
+- [Bubble Sort](./Sorting/Bubble-Sort.md)
+- [Merge Sort](./Sorting/Merge-Sort.md)
+- [Selection Sort](./Sorting/Selection-Sort.md)
+- [Insertion Sort](./Sorting/Insertion-Sort.md)
+- [Heap Sort](./Sorting/Heap-Sort.md)
+- [Quick Sort](./Sorting/Quick-Sort.md)
+- [Cycle Sort](./Sorting/Cycle-Sort.md)
+
+## Strings
+
+- [Palindrome](./Strings/Palindrome.md)
+
+## Searching
+
+- [Binary Search](./Searching/Binary-Search.MD)
+- [Linear Search](./Searching/Linear-Search.md)
+
+## Others
+
+[How to add new algorithm documentation?](./CONTRIBUTING.md)
diff --git a/docs/bn/Strings/Palindrome.md b/docs/bn/Strings/Palindrome.md
new file mode 100644
index 00000000..22f824eb
--- /dev/null
+++ b/docs/bn/Strings/Palindrome.md
@@ -0,0 +1,36 @@
+# প্যালিন্ড্রোম
+প্যালিন্ড্রোম হল একটি শব্দ, শব্দগুচ্ছ, সংখ্যা বা শব্দের ক্রম যা সামনের মতো পিছনের দিকে পড়ে। শব্দ বা অক্ষরের মধ্যে বিরাম চিহ্ন এবং স্পেস অনুমোদিত।
+## ধাপ
+১) সমস্ত বিরাম চিহ্ন এবং হোয়াইটস্পেস মুছে এবং সমস্ত অক্ষরকে ছোট হাতের অক্ষরে রূপান্তর করে স্ট্রিংটি পরিষ্কার করুন।
+২) পরিষ্কার স্ট্রিং বিপরীত.
+৩) যদি পরিষ্কার স্ট্রিং বিপরীত স্ট্রিং এর মত হয় তাহলে আমাদের একটি প্যালিনড্রোম আছে।
+
+## উদাহরণ
+
+### একক শব্দ প্যালিনড্রোম
+- নাগরিক
+- স্তর
+- ম্যাডাম
+- রাডার
+
+### একাধিক শব্দ প্যালিনড্রোম
+- মাথা নাড়বেন না।
+- আমি করেছি, তাই না?
+- আমার জিম
+- একজন মানুষ, একটি পরিকল্পনা, একটি খাল - পানামা
+
+## বাস্তবায়ন
+- [C](../../../algorithms/C/strings/palindrome.c)
+- [C++](../../../algorithms/CPlusPlus/Maths/palindrome.cpp)
+- [C#](../../../algorithms/CSharp/src/Strings/palindrome.cs)
+- [Haskell](../../../algorithms/Haskell/strings/palindrome.hs)
+- [Java](../../../algorithms/Java/strings/palindrome.java)
+- [JavaScript](../../../algorithms/JavaScript/src/strings/palindrome.js)
+- [Python](../../../algorithms/Python/strings/palindrome.py)
+- [Rust](../../../algorithms/Rust/strings/palindrome/src/main.rs)
+
+## ভিডিও URL
+[A coursera video explaining the palindrome Algorithm](https://www.coursera.org/lecture/program-code/palindrome-algorithm-1-zzQqs)
+
+## অন্যান্য
+[Wikipedia](https://en.wikipedia.org/wiki/Palindrome)
diff --git a/docs/bn/Strings/Palindrome.md.bak b/docs/bn/Strings/Palindrome.md.bak
new file mode 100644
index 00000000..ac1325ab
--- /dev/null
+++ b/docs/bn/Strings/Palindrome.md.bak
@@ -0,0 +1,36 @@
+# প্যালিন্ড্রোম
+প্যালিন্ড্রোম হল একটি শব্দ, শব্দগুচ্ছ, সংখ্যা বা শব্দের ক্রম যা সামনের মতো পিছনের দিকে পড়ে। শব্দ বা অক্ষরের মধ্যে বিরাম চিহ্ন এবং স্পেস অনুমোদিত।
+## ধাপ
+১) সমস্ত বিরাম চিহ্ন এবং হোয়াইটস্পেস মুছে এবং সমস্ত অক্ষরকে ছোট হাতের অক্ষরে রূপান্তর করে স্ট্রিংটি পরিষ্কার করুন।
+২) পরিষ্কার স্ট্রিং বিপরীত.
+৩) যদি পরিষ্কার স্ট্রিং বিপরীত স্ট্রিং এর মত হয় তাহলে আমাদের একটি প্যালিনড্রোম আছে।
+
+## উদাহরণ
+
+### একক শব্দ প্যালিনড্রোম
+- নাগরিক
+- স্তর
+- ম্যাডাম
+- রাডার
+
+### একাধিক শব্দ প্যালিনড্রোম
+- মাথা নাড়বেন না।
+- আমি করেছি, তাই না?
+- আমার জিম
+- একজন মানুষ, একটি পরিকল্পনা, একটি খাল - পানামা
+
+## Implementation
+- [C](../../../algorithms/C/strings/palindrome.c)
+- [C++](../../../algorithms/CPlusPlus/Maths/palindrome.cpp)
+- [C#](../../../algorithms/CSharp/src/Strings/palindrome.cs)
+- [Haskell](../../../algorithms/Haskell/strings/palindrome.hs)
+- [Java](../../../algorithms/Java/strings/palindrome.java)
+- [JavaScript](../../../algorithms/JavaScript/src/strings/palindrome.js)
+- [Python](../../../algorithms/Python/strings/palindrome.py)
+- [Rust](../../../algorithms/Rust/strings/palindrome/src/main.rs)
+
+## Video URL
+[A coursera video explaining the palindrome Algorithm](https://www.coursera.org/lecture/program-code/palindrome-algorithm-1-zzQqs)
+
+## Others
+[Wikipedia](https://en.wikipedia.org/wiki/Palindrome)