# Nexus - Networking with Data-Driven Surveys | Appwrite  Hashnode Hackathon

## Introduction

Hey readers 👋,

Here is my entry for the [Appwrite](https://cloud.appwrite.io/) [Hashnode](https://hashnode.com/) hackathon; I hope you like what I was able to create over these two weeks.

Github - [https://github.com/manavendrasen/nexus](https://github.com/manavendrasen/nexus)

### Team Members

* Manavendra Sen - [@manavendrasen on Hashnode](https://hashnode.com/@manavendrasen), [Website](https://manavendrasen.com/)
    

## Project Description

### The Problem

What are we trying to solve?

Seeking like-minded individuals in conferences and communities can often resemble searching for a needle in a haystack. The vast number of participants makes it impossible to engage with everyone and identify the right connections.

Let's be real, It is not possible to talk to everyone and build your network. If only there was a way which would give me information about people who are similar or dissimilar to me and give me a starting point to build the connection.

### The Solution

Introducing Nexus, a solution that **empowers networking in conferences and communities**. Leveraging data from a simple survey, Nexus generates an **interactive social graph**, visually depicting all attendees. Within this graph, individuals with similar interests and characteristics are positioned closer together, facilitating effortless identification of potential connections.

Sounds interesting right? Nexus is just that!! 🤗

### Demo Video

A short 3 min video to showcase the product.

%[https://youtu.be/nx5RGF9URL4] 

### How to use Nexus? (It's easy!)

**Organizers/Community leads' POV**

In 3 easy steps, communities and conferences can be superpowered!

1. The organizers create an account on Nexus and create a new survey.
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1686652351789/0a9d0832-a123-4856-9bb8-a6c278ef24ed.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1686652412734/45736546-7534-46cc-9814-0e116fc7e1b5.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1686652262408/e89b5d17-f884-4b4f-ac2e-fc5fcb547e3d.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1686652821530/a4ba3018-42f5-4c8b-a884-326ebc25fd53.png align="center")

1. They add questions to the survey
    
    * Three fundamental questions that act as an introduction are included in each survey.
        
    * The survey can have objective questions added by the organisers; the visualisation needs at least three objective questions, but the more the better.
        
    * If necessary, they can alter the questions.
        
    * Finally, they hit the **Publish** button to make the survey live!  
        The generated link can be copied and shared.
        

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1686652774016/5d08210b-4401-427b-b703-09042c952c82.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1686652954581/61b3b475-13ba-4d3d-995b-9a928f8a67cf.png align="center")

1. Once the survey has been filled by the attendees/members the organizer can hit the "Complete" button to mark the survey as complete and generate the visualization.
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1686653183536/9227ade6-7eba-4838-a25f-52008305236d.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1686653304061/4a4d168d-cce4-47ce-81a6-b2bade231827.png align="center")

---

**Participants' POV**

1. Visit the survey link/code shared by the organizers
    
2. Fill out their email and complete the simple form, the progress bar at the top shows the progress.
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1686653548403/0dc84621-6421-4264-b6c9-92c9768c65a1.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1686653646709/bd80c26c-8886-4a8e-bde7-05a4791adb76.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1686653686409/5795e219-b49e-4120-b213-f78b37f28700.png align="center")

When the survey is finished, the participants can view the results on the survey link; the logged-in participant is indicated by a green dot.

From here, Participants can see other participants who are similar to them and get the link to connect with them and network.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1686653847075/2949c68e-d6bd-4fc9-9067-e52407552d4a.png align="center")

### Key Features

* Organizers can create surveys to understand and interact with the community/conference attendees.
    
* Participants can **network with like-minded people to collaborate and discuss**.
    
* The app is light mode and dark mode compatible and mobile responsive :)
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1686655726593/c60e6d1f-537f-4711-a837-88341a8f55e5.png align="center")

Nexus empowers communities by enhancing the networking and collaboration potential by using data visualization-driven surveys.

## Tech Stack

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1686651488499/94192d64-8af8-40e7-94e9-8349593458b8.png align="center")

* [NextJS](https://nextjs.org/) 13 (Typescript)
    
* Zustand
    
* Tailwind CSS
    
* react-hook-form
    
* Chart.js
    
* [Upstash](https://upstash.com/)
    
* AWS Lambda and API Gateway (Python)
    
* SkLearn [T-SNE](https://scikit-learn.org/stable/modules/generated/sklearn.manifold.TSNE.html) - Dimensionality Reduction while keeping similarities
    
* Appwrite - Auth, Database
    
    How Appwrite helped us?
    
    [Appwrite Cloud](https://cloud.appwrite.io/) serverless **Auth** (Email and Password) and **Database** made it easy and fast to build the application. Used the client-side SDK to connect to Appwrite directly from NextJS.
    

## Challenges

1. How do I visualize the data?
    
    I had no idea how to convert the survey responses into a graph. Research led me to Dimensionality Reduction - PCA and T-SNE. Other algorithms can be used as well, such as Cosine similarity etc.
    
2. Deploying the Python script.
    
    Initially, I planned on using Appwrite Functions to deploy the Python script as a simple serverless function. But, my script uses Numpy and Sklearn which are not supported by the runtime Appwrite uses. I would request the Appwrite team to allow custom container images to run the serverless functions. ([known issue](https://github.com/appwrite/appwrite/issues/1037))
    
    I went with AWS Lambda with a custom image on ECR.
    

## Future Plans

1. Improve the visualisation algorithm and incorporate text responses into the analysis.
    
2. Add more charts like - Most common responses from participants to improve analysis.
    

## **Contributing**

PRs are always welcome. If you would like to add some components that you think would be useful while writing docs, you can add/contribute [here](https://github.com/manavendrasen/nexus).

## References

Github - [https://github.com/manavendrasen/nexus](https://github.com/manavendrasen/nexus)

Demo - [Nexus - Networking with Data-Driven Surveys | Demo](https://youtu.be/nx5RGF9URL4)

T-SNE - [https://towardsdatascience.com](https://towardsdatascience.com/an-introduction-to-t-sne-with-python-example-5a3a293108d1#:~:text=The%20t%2DSNE%20algorithm%20calculates,measures%20using%20a%20cost%20function)

Inspired by - [Anson Yu on Twitter](https://twitter.com/ansonyuu/status/1661518548664041472)

Thank you! 🤍
