Problem Statement

There are a number of dating services available, but for a certain demographic, unsuitable. Developers are creatures deprived of social interaction with two primary traits: their ugliness and their loneliness. There is an inherent lack of services which pertain to them.

Solution

As such, Match.thon was developed with the goal of, not creating a social life for developers (that’s frankly impossible), but rather providing a temporary connection with another developer for hackathons. All a developer has to do is sign up, then start browsing the profiles of other developers. If they found one with the tech stack they like, they can send a request. If the developer who received the request accepted, then they have matched.

Dependencies

Match.thon utilized several technologies. First, it used the relational database management system (RDBMS) Postgresql to store the information of its users and their relationships to one another. On the backend, it used Express.js and Node.js to serve the static HTML, CSS, and Javascript files, as well as act as an API layer between the database and the client. While an HTML file was present on the frontend, the site was dynamically rendered with vanilla Javascript.

Future Scope

In the future, Match.thon can implement a chat feature using sockets. It would also be best to fix the cybersecurity flaws introduced with the use of vanilla javascript and an SQL-based database, as well as the time constraints of a hackathon. Considering the extensive use of innerHTML, it would be fairly easy to perform an HTML injection. Not only were database queries not sanitized (meaning it would be simple to perform an SQL injection), passwords were furthermore stored in plaintext, and potentially sent from server to client. Match.thon, while a fully functional service, is not ready for production. Bobby Tables.

Getting Started

MacOS

Requirements

  • yarn: brew install yarn
  • postgresql: brew install postgresql

Setting Up

Enter the project's directory. Then, enter the backend directory.

cd backend

Download the dependencies for the Node.js environment.

yarn

Start the Relational Database Management System (RDBMS).

brew services start postgresql

Access the RDBMS.

psql postgres

Add your profile to the RDBMS.

CREATE ROLE me WITH LOGIN PASSWORD 'password';
ALTER ROLE me CREATEDB;
\q

Once you've exited it, re-enter with your profile.

psql -d postgres -U me

Create the database structure.

CREATE DATABASE api;
\c api
CREATE TABLE users (
  ID SERIAL PRIMARY KEY,
  name VARCHAR(30),
  email VARCHAR(30),
  password VARCHAR(30),
  username VARCHAR(30),
  description VARCHAR(500),
  sex VARCHAR(10),
  languages VARCHAR(100),
  searching VARCHAR(5),
  github VARCHAR(30),
);
CREATE TABLE userconnections (
  ID SERIAL PRIMARY KEY,
  first_user INT REFERENCES users(id),
  second_user INT REFERENCES users(id),
);
\q

Reenter the project's main directory.

cd ../

Start the website.

node backend/app.js

You can now visit the website at localhost:3000!

Authors

Share this project:

Updates