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
- Lucas Sta Maria - sm49697
- Simon Huang - simonyellow
Log in or sign up for Devpost to join the conversation.