Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

πŸŽ‰ It's a Date! React & node.js app where users can match on date ideas. Like bumble but for making plans!

Notifications You must be signed in to change notification settings

CodeOp-tech/its-a-date

Repository files navigation

It's a Date!

Table of Contents

App Overview

"It's a Date!" – The Ultimate Connection App for Unforgettable Experiences Together

"It's a Date!" is the app that simplifies planning and brings you closer to your friends and partners. Say goodbye to endless messaging and indecisiveness, and hello to seamless coordination for your perfect date! Our app simplifies the process by offering 30 exciting date ideas for you to select from. Whether you're looking for a romantic dinner, an adventurous outdoor escapade, or a cozy movie night, we've got you covered. Invite your friend or partner to a date and they receive an instant, real-time notification. When both users choose the same plan, they instantly match and unlock a dedicated page with a detailed description, helpful suggestions, and a map of convenient locations. Users also have access to their notifications and personal profile to review pending invitations and reset their details.

System Components

1. Frontend

  • ReactJS: We will utilize ReactJS to develop a responsive and user-friendly frontend interface. It will handle user interactions, display date ideas, date matches, and provide a seamless experience for our users.

2. Backend

  • Node.js: We will use Node.js for the backend to handle the logic of our application.

3. Database & ORM

  • MySQL & Sequelize: We will utilize MySQL as the database management system to store information about users, plans, events and selections. We will utilize Sequelize as the ORM to manage our interactions with the database.

Database schema

4. External API Usage

Google Maps

The Google Maps API is leveraged to display a map on each "match page" with the intention of adding Google Places pins on this map to suggest useful places related ot the chosen date idea.

Installation and Setup

Required downloads

  • React.js
  • MySQL
  • Node.js
  • NPM

Clone the Repository

git clone https://github.com/codeop/fs26-group-B.git

Navigate to the Project Directory

cd group-b-project

Database Setup

Before you start, make sure you have MySQL installed on your system. If not, download and install it from the official MySQL site.

To set up the MySQL database, follow these steps:

  1. Open your command line interface and start MySQL with this command:

    mysql -u root -p
    
  2. Create the "planner" database with this command:

    CREATE DATABASE planner;
    
  3. Connect to the new database with this command:

    use planner;
    

Now, you're ready to use your "planner" database.

Setting up your .env

Open up the repository in your preferred code editor and create a .env file in the project root directory. In this .env file add the following:

DB_HOST=localhost
DB_USER=root
DB_NAME=planner
DB_PASS= [your db password]
SUPER_SECRET=shhhhh
PUSHER_APP_ID=
PUSHER_KEY=
PUSHER_SECRET=
cluster=

Now create a .env file in the project root directory. In this .env file add the following:

VITE_PUSHER_KEY=

Don't forget to create your .gitignore file and add .env (in both the root directory and client directory)!

Adding Pusher

To populate the Pusher details in your .env files:

  1. Navigate to Pusher and create an account.
  2. Once logged in you should see your Pusher dashboard. Here you need to click "manage" on the channels card.
  3. Now you can click "Create app" in the top right of the page and fill in the form:
    • Fill in a name for the app (we used "its-a-date")
    • Select a cluster (we used eu)
    • You don't need to tick the box for "Create apps for multiple environments?"
    • Frontend: React
    • Backend: Node.js
  4. Navigate to "App Keys" in the left nav and copy the keys you have generated into the .env files that you've just created.

Running the Backend

  1. Open a new terminal
  2. Navigate to the project directory in the terminal and run the following command to install dependencies:
cd group-b-project
npm install
  1. Set up the database:
npm run migrate
npm run seed
  1. Start the application:
npm start

Running the Frontend

  1. Open a new terminal (do not close the terminal running the backend)
  2. Navigate to frontend directory:
cd client
  1. Install dependencies:
npm install
  1. Start the application:
npm run dev

Getting Started

Now It's a Date! should be accessible from http://localhost:5173 The backend will be running on port 4000

Internal API Documentation

Here is a brief overview of the API endpoints available:

Method URL Description
POST /auth/register Register user
POST /auth/login Login user
GET /auth/profile Access logged in user info
GET /users All registered users
GET /users/{id} Get user by ID
GET /users/username/{username} Get user by username
DELETE /users Delete all users
POST /events Create new event
GET /events Get all events
GET /events/{eventId} Get event by ID
GET /events/private/hash Get event by hash
GET /events/user Get open events by user ID
GET /events/user/{eventId} Get unlogged user by event ID
DELETE /events Delete all events
GET /plans Get all plans
GET /plans/{planId} Get plan by ID
POST /selections Create a selection assigning a plan for the user1 then check if the same plan is already in the table for user 2 to response with a match
GET /selections Get all selections
GET /selections/{userId}/{eventId} Get selection by user ID in given event ID
DELETE /selections Delete all selections

About

πŸŽ‰ It's a Date! React & node.js app where users can match on date ideas. Like bumble but for making plans!

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /