Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/sakeel-103/gssoc-24_project

GSSoC'24 Extd Project
https://github.com/sakeel-103/gssoc-24_project

angularjs hecktoberfest-accepted html5 localstorage nodejs python3 scss scss-framework typescript yml-configuration

Last synced: about 4 hours ago
JSON representation

GSSoC'24 Extd Project

Awesome Lists containing this project

README

        


๐Ÿงญ DFS-BFS Graph Traversal

This project implements **Depth-First Search (DFS)** and **Breadth-First Search (BFS)** algorithms for graph traversal. The backend includes user authentication functionality with a **Login** and **Signup** page. The project currently stores user data in **local storage**.

### ๐Ÿ”ฎ Future Upgrades Await
This is just the beginning! With plans to incorporate advanced algorithms (Dijkstra's, A*) ๐Ÿง , user dashboards ๐Ÿ“Š, and mobile-friendly features ๐Ÿ“ฑ, weโ€™re on the path to making this project an indispensable tool for graph lovers everywhere.



๐ŸŒŸ Stars
๐Ÿด Forks
๐Ÿ› Issues
๐Ÿ”” Open PRs
๐Ÿ”• Close PRs




Stars
Forks
Issues
Open Pull Requests
Close Pull Requests

### This project is now OFFICIALLY accepted for


GSSoC 2024 Extd


Hacktober fest 2024


## ๐Ÿ“‘ Table of Contents

1. ๐ŸŒŸ [Features](#-features)
2. ๐Ÿ› ๏ธ [Technical Stack](#-technical-stack)
3. ๐Ÿ“ [Changelog](#-changelog)
4. ๐Ÿ“‚ [Project Structure](#-project-structure)
5. โš™๏ธ [Prerequisites](#-prerequisites)
6. ๐Ÿš€ [How to Set Up and Run the Project](#-how-to-set-up-and-run-the-project)
7. ๐Ÿงช [Testing Instructions](#-testing-instructions)
8. ๐Ÿ” [Login and Signup Pages](#-login-and-signup-pages)
9. ๐Ÿ–ฅ๏ธ [How the Server Works](#-how-the-server-works)
10. ๐Ÿ“Š [Graph Feature](#-how-the-graph-feature-works)
11. ๐Ÿ—บ๏ธ [Roadmap](#-roadmap)
12. ๐Ÿค [Contribution Guide](#-contribution-guide)
13. ๐Ÿ‘ฅ [Our Contributors](#-our-contributors)
14. ๐Ÿ“œ [License](#-license)

## ๐ŸŒŸ Features

- ๐Ÿ”‘ User **Login** and **Signup** system
- ๐Ÿ” DFS and BFS graph traversal algorithms
- ๐Ÿ’พ Data persistence using **LocalStorage**
- ๐Ÿ–ฅ๏ธ Frontend built with **Angular**
- ๐Ÿ”ง Backend using **Node.js** with **Express.js**

---
## ๐Ÿ› ๏ธ Technical Stack

| **Component** | **Technology** |
|----------------------|-------------------------------------------------------------------------------|
| **Frontend** | Angular ๐Ÿ…ฐ๏ธ |
| **Backend** | Node.js ๐ŸŸข, Express.js โš™๏ธ |
| **Authentication** | LocalStorage ๐Ÿ”’ (with plans to integrate OAuth ๐Ÿ”‘) |
| **Database** | LocalStorage for user data ๐Ÿ’พ (future plans for database integration ๐Ÿ“Š) |
| **Graph Algorithms** | DFS and BFS implemented for traversal ๐Ÿ“ˆ |
| **Deployment** | Netlify configuration for frontend ๐ŸŒ
---

## ๐Ÿ“ Changelog

### Version 1.0.0 (Initial Release)
- Implemented **DFS** and **BFS** graph traversal algorithms. ๐Ÿ”
- Added **Login** and **Signup** pages with user data stored in **LocalStorage**. ๐Ÿ”‘
- Basic project structure setup with Angular for the frontend and Node.js/Express.js for the backend. ๐Ÿ—๏ธ

---

## ๐Ÿ“‚ Project Structure

```bash
.vscode/ # Contains workspace settings for VSCode
backend/ # Backend directory (Node.js/Express)
public/ # Public assets like images, logos, etc.
src/ # Angular application source code
.editorconfig # Editor configuration for consistent coding style
.gitignore # Git ignore file to exclude certain files from being committed
CODE_OF_CONDUCT.md # Code of conduct for contributors
CONTRIBUTING.md # Guidelines for contributing to the project
README.md # Project documentation file
angular.json # Angular workspace configuration
netlify.toml # Configuration for deploying to Netlify
package-lock.json # Locked versions of installed npm dependencies
package.json # Project metadata and npm dependencies
tsconfig.app.json # TypeScript configuration for the app
tsconfig.json # General TypeScript configuration
tsconfig.spec.json # TypeScript configuration for testing
```

---

## โš™๏ธ Prerequisites

Make sure you have the following installed before running the project:

- ๐ŸŸข [Node.js](https://nodejs.org/en/download/) (v14 or above)
- ๐Ÿ“ฆ npm (comes with Node.js)
- ๐Ÿ…ฐ๏ธ [Angular CLI](https://angular.io/cli) (globally installed)

---


๐Ÿš€ How to Set Up and Run the Project

### ๐Ÿ› ๏ธ Step 1: Clone the Repository

```bash
git clone https://github.com/yourusername/dfs-bfs-graph-traversal.git
cd GRAPH-TRAVERSAL
```

### ๐Ÿ› ๏ธ Step 2: Install Frontend Dependencies

```bash
npm install
```

### ๐Ÿ› ๏ธ Step 3: Navigate to Backend Directory and Install Backend Dependencies

```bash
cd backend
npm install
```

### ๐Ÿ› ๏ธ Step 4: Run the Backend Server

From the `backend` directory, start the backend:

```bash
node server.js
```

Alternatively, you can use **nodemon** for automatic restarts:

```bash
npm install -g nodemon
nodemon server.js
```

### ๐Ÿ› ๏ธ Step 5: Start the Frontend Server

Go back to the project root (`GRAPH-TRAVERSAL`) and run the Angular development server:

```bash
ng serve
```

Your frontend will be running at `http://localhost:5000` ๐ŸŒ.


๐Ÿงช Testing Instructions

To ensure the reliability and functionality of the project, follow these testing instructions:

### Unit Testing

1. **Navigate to the frontend directory**:
```bash
cd src
```
2. **Run the unit tests:**
```bash
ng test
```
### End-to-End Testing

1. **Install Protractor (if not already installed)**:
```bash
npm install -g protractor
```
2. **Start the Protractor server**:
```bash
webdriver-manager update
webdriver-manager start
```
3. **Run the end-to-end tests**:
```bash
ng e2e
```
### Manual Testing

- After running the application, perform manual testing by interacting with the **Login** and **Signup** pages to ensure functionality.
- Test the **graph traversal features** by creating graphs with various nodes and edges, checking for expected behavior.


## ๐Ÿ” Login and Signup Pages

- The **Signup Page** allows users to register by entering a username and password, which is stored in **LocalStorage**.
- The **Login Page** checks credentials against the data stored in LocalStorage.

### ๐Ÿ› ๏ธ How to Access Signup Details from LocalStorage

1. ๐Ÿ–ฑ๏ธ Right-click on the **Signup page** and select **Inspect**.
2. ๐Ÿงฐ Navigate to the **Application** tab in the developer tools.
3. ๐Ÿ“‚ Under **Storage**, expand **LocalStorage**.
4. ๐Ÿ” Youโ€™ll find the stored signup details there.

---

## ๐Ÿ–ฅ๏ธ How the Server Works

The backend server, built with **Node.js** and **Express.js**, handles:

- ๐Ÿ›ก๏ธ **User Authentication**: A basic registration and login system.
- ๐Ÿ”„ **Graph Traversal**: Provides APIs for DFS and BFS traversals.

## ๐Ÿ“Š How the Graph Feature Works

- Input your nodes. **Make sure it is in A,B,... format. Comma is necessary**
- Input your edges. **Make sure it is in the [to]-[from] format. Eg: 0-1**
- Click on **create custom graph** button ๐Ÿ”ต
- See how the magic happens

Example:

![alt text](image.png)

Output:

![alt text](image-1.png)


## ๐Ÿ—บ๏ธ Roadmap

| **Timeline** | **Milestone** | **Description** |
|----------------|--------------------------------|---------------------------------------------------------------------------------------------------------|
| **2024** | **Q4 2024** | ๐Ÿ” **Enhanced User Authentication**: Implement OAuth for third-party authentication (Google, Facebook) and improve security measures for password storage. |
| **2025** | **Q1 2025** | ๐Ÿ“ˆ **Advanced Graph Algorithms**: Integrate additional graph traversal algorithms (e.g., Dijkstra's and A*) and provide visualizations for different traversal methods. |
| | **Q2 2025** | ๐Ÿ–ฅ๏ธ **User Dashboard**: Develop a dashboard for users to view their traversal history and saved graphs. Enable features for users to share their graphs with others. |
| | **Q3 2025** | ๐Ÿ“ฑ **Mobile-Friendly Version**: Ensure the application is responsive and works well on mobile devices. Create a mobile application version for iOS and Android. |
| | **Q4 2025** | ๐ŸŒ **Multilingual Support**: Add support for multiple languages to enhance accessibility. Enable user-selectable language options in the application settings. |

## ๐Ÿค Contribution Guide

We welcome contributions of all kindsโ€”whether itโ€™s fixing bugs, adding new features, or improving documentation. Before you start contributing, please take a moment to review our guidelines to ensure smooth collaboration.

### Getting Started

To contribute to this project, follow these steps:

1. **Read the Contributing Guide**: Weโ€™ve provided a detailed guide to help you get started with contributing. It includes all the steps you need to follow, from setting up the repository to submitting a pull request.

๐Ÿ‘‰ **[Check out the Contributing Guide](./CONTRIBUTING.md)**

2. **Fork the Repository**: Fork the project repository to your GitHub account, so you can make changes without affecting the original project.

3. **Make Meaningful Changes**: Whether youโ€™re adding a new feature, fixing bugs, or improving documentation, ensure that your contributions are significant and add value to the project.

4. **Write Clean Code**: Follow the code style and best practices outlined in the project. Clean, readable, and well-documented code helps keep the project maintainable and easier to review.

5. **Testing**: If you're adding a feature or fixing a bug, ensure you write relevant tests to maintain the integrity of the projectโ€™s functionality.

### Submitting a Pull Request

Once your changes are ready, you can submit a pull request by following these steps:

1. **Commit Your Changes**: Write descriptive commit messages that explain the changes youโ€™ve made.

2. **Push to Your Fork**: Push the changes to your forked repository and create a new branch for your feature or fix.

3. **Open a Pull Request**: Navigate to the original repository and create a pull request, describing your changes in detail and why they are necessary.

By following these guidelines, youโ€™ll ensure that your contributions align with the projectโ€™s goals and maintain a high standard. We appreciate your efforts in making this project better! ๐Ÿ˜Š

For more detailed instructions, please refer to our full **[Contributing Guide](./CONTRIBUTING.md)**.


Our Contributors โค๏ธ

- We extend our heartfelt gratitude for your invaluable contribution to our project! Your efforts play a pivotal role in elevating this project to greater heights.
- Make sure you show some love by giving โญ to our repository.







![-----------------------------------------------------](https://raw.githubusercontent.com/andreasbm/readme/master/assets/lines/rainbow.png)

## Stargazers โค๏ธ

[![Stargazers repo roster for @sakeel-103/DFS-BFS-Graph-Travers](https://reporoster.com/stars/dark/sakeel-103/DFS-BFS-Graph-Travers)](https://github.com/sakeel-103/DFS-BFS-Graph-Travers/stargazers)

## Forkers โค๏ธ

[![Forkers repo roster for @sakeel-103/DFS-BFS-Graph-Travers](https://reporoster.com/forks/dark/sakeel-103/DFS-BFS-Graph-Travers)](https://github.com/sakeel-103/DFS-BFS-Graph-Travers/network/members)

![-----------------------------------------------------](https://raw.githubusercontent.com/andreasbm/readme/master/assets/lines/rainbow.png)

## ๐Ÿ“œ License

This project is licensed under the MIT License โ€“ see the [LICENSE](./LICENSE) file for details.

By contributing to this repository, you agree that your contributions will be licensed under its MIT License.
---

### ๐Ÿ“ฌ Feel free to contribute or open issues if you find any bugs!





Support



Don't forget to leave a star for this project!


Go to Top

## Connect with Me

Feel free to connect with me on social platforms:

[![LinkedIn](https://img.shields.io/badge/LinkedIn-Profile-blue?style=for-the-badge&logo=linkedin)](https://www.linkedin.com/in/mdsakeel103/)
[![LeetCode](https://img.shields.io/badge/LeetCode-Profile-orange?style=for-the-badge&logo=leetcode)](https://leetcode.com/u/mdsakeel-103/)
[![GitHub](https://img.shields.io/badge/GitHub-Profile-black?style=for-the-badge&logo=github)](https://github.com/sakeel-103/)