findmyroomie

FindMyRoomie is a Web Application that provides a platform for lonely wolves (NC State students) to find roommates of their preference.

https://github.com/rohitgeddam/findmyroomie

Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 3 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.0%) to scientific vocabulary
Last synced: 9 months ago · JSON representation ·

Repository

FindMyRoomie is a Web Application that provides a platform for lonely wolves (NC State students) to find roommates of their preference.

Basic Info
Statistics
  • Stars: 5
  • Watchers: 1
  • Forks: 6
  • Open Issues: 3
  • Releases: 7
Created almost 4 years ago · Last pushed over 3 years ago
Metadata Files
Readme Contributing License Code of conduct Citation Support

README.md

Test codecov Test CodeQL code_size repo_size DOI License: MIT GitHub issues GitHub issues-closed GitHub version Code style: black

fmr

FindMyRoomie

FindMyRoomie is a Web Application that provides a platform for lonely wolves (NC State students) to find roommates of their preference. The stakes are high when it comes to finding your best roommate because this relationship starts with a living relationship :sweat_smile:. We understand how stressful this can be, especially if you are moving to a new city or country. FindMyRoomie is a one-stop solution to your roommate finding needs. Our software has functionalities that allow you to filter and choose your ideal roommate. But if that is too much work for you, we also provide roommate suggestions based on your preferences! Any NC State student could sign up with their NC State Email address from any corner of the world on our website and begin searching for roommates.

GIF from Tenor.

The software is free for use by anyone, and we also welcome any contributions to improve our software. Please read our CONTRIBUTING.md file for more details). If you would like to cite our repository, please check our CITATION.cff file.

Features of our software

1. Homepage:

The homepage contains the 'Sign in' and 'Sign up' buttons, along with the number of users that have registered.

2. SignUp:

Allows new users to register to our roommate finding portal. The 'Sign up' page asks to enter an NCSU email id and a suitable password which should be strong enogugh.

3. Email Confirmation:

After entering the credentials for signup, a confirmation email is sent to the registered mail id, asking to confirm the resgistration. Upon clicking the link provided in the mail, the account gets confirmed and the user is directly redirected to the welcome page.

4. SignIn:

Allows existing users to login to our website using their credentials.

3. Resetting your password:

In case the user forgets the password, they can enter their registered email id in the 'Forgot your passoword?' tab. An email with a link to set a new password will be sent to the email. Clicking the link will redirect the user to reset their password, and, tada! Password reset!!!


3. Welcome page:

A page with happy Mr. and Mrs. Wolf enjoying each other's company in the background, just like you and your roommates would be :heartonfire:.

4. My Profile:

Allows you to introduce whom you are to your future roommate! You are given the opportunity to tell others a little bit about yourself and your preferences. The "Visibility" checkbox in your profile allows you to choose whether you want to be visible to others. If you are looking for roommates, you can toggle it on, and if you have found one (Congratulations :partying_face: :partying_face:), you can toggle it off. It's that easy!

#### 5. Find people: Lists the people looking for roommates just like you. Our "Wolf Filter" lets you filter candidates based on your preferences :wolf:. Be choosy!!

#### 6. My room: Lists your roommates (feature not available yet) and provides roommate suggestions based on your preferences. The similarity scores with other roommate seekers are calculated based on Manhattan Distance, and the people with the top scores are shown as suggestions.

#### 7. About Elaborates about the project and provides details about the contributors along with a link to our documentation.

### The website flow is depicted in the below video: #### Sign up: https://user-images.githubusercontent.com/73664200/194796584-5f1fea3f-9e45-4e7b-b69a-0e3b0b100b91.mp4 ### Functionalities post sign up: #### Resetting password: https://user-images.githubusercontent.com/73664200/194796923-61d96045-04f9-4e2d-a524-546f8b7ee34e.mp4 ## Steps to set up the project on your local machine #### 1. Clone the repository: `git clone https://github.com/rohitgeddam/FindMyRoomie.git` #### 2. Setup the virtual environment: `python -m venv venv` #### 3. Activate the virtual environment: * On Mac/Linux: `source venv/bin/activate` * On Windows: `venv\Scripts\activate` #### 3. Install required modules and libraries: `pip install -r requirements.txt` #### 4. Create .env file at ./src/config/

To setup Gmail to send emails to users, first create a new Gmail account. Under 'Manage your Google Account', enable 2-Step Verification and select suitable app and device under 'App passwords'. Copy the key that is generated and paste it under tha EMAIL_HOST_PASSWORD. Enter the email in EMAIL_HOST_USER.

Paste this in the .env file. ``` SECRET_KEY=@dr11(7h4n=#@8juk63y(-#bqicdl$9f2okpr@#564=a+-f&*8 DEBUG=True EMAIL_BACKEND="django.core.mail.backends.smtp.EmailBackend" EMAIL_HOST=smtp.gmail.com EMAIL_USE_TLS=True EMAIL_PORT=587 EMAIL_HOST_USER= EMAIL_HOST_PASSWORD= ``` Fill the above field and save. #### 5. Run the application: ``` cd src python manage.py migrate python manage.py runserver ``` ## After adding another field to Model Django's way of propagating changes you make to your models (adding a field, deleting a model, etc.) into your database schema. ``` python manage.py makemigrations python manage.py migrate ``` ## Populate fake data for testing ``` python manage.py seed_users # creates ten fake users python manage.py seed_users 10 ``` ## Automatic tools - GitHub Actions We use GitHub actions to automate tasks of linting, code coverage, build, tests, and security checks. The codes that perform these actions are stored as `.yml` files in the `.github/workflows` directory. The GitHub actions are triggered whenever something is pushed (or pulled) into the remote repository. The results of these automated tasks are shown as badges at the top of this README.md file. ### Unit tests: Unit test are performed everytime there is a push or pull into the repository. For more information about Unit test visit [Test README](https://github.com/rohitgeddam/FindMyRoomie/blob/main/src/tests/README.md) ### How to build docs `sphinx-build -b html docs/ docs/build ` ### Code Coverage: Code Coverage is an important metric that allows us to understand how much of the codebase is tested. `Code_Cov.yml` performs this task. For more information about Code Coverage, please visit this [link](https://www.atlassian.com/continuous-delivery/software-testing/code-coverage). ### Flake8 - Code Linting: We are using Flake8 for linting and syntax checking, and it is performed by `Linting.yml`. For more information about Flake8, please visit this [link](https://medium.com/python-pandemonium/what-is-flake8-and-why-we-should-use-it-b89bd78073f2). Use flake8 before you push code to GitHub.
Config file present in `setup.cfg`. ``` flake8 ``` ### Black - Code Formatter We are using the Black code formatter to format our code before pushing it to GitHub. For more information about Black, please visit this [link](https://black.readthedocs.io/en/stable/). Run the line below everytime you push to GitHub.
Config file present in `pyproject.toml` ``` black --line-length 120 ``` If you prefer using Black in VSCode, you can add the below settings in your vscode settings: ``` { "python.formatting.provider": "black", "python.formatting.blackArgs": ["--line-length", "120"], "python.linting.enabled": true } ``` ### Pre Commit Hooks for Black Code formatting and Flake8 Linting * run `pre-commit install` * Now everytime you commit, Black and Flake8 will run automatically and will not allow you to push if the code standards are not met. Screenshot 2022-10-07 at 11 35 40 AM Image from [Ji Miranda](https://ljvmiranda921.github.io/assets/png/tuts/precommit_pipeline.png). ### CodeQL `CodeQL.yml` performs automated security checks on the codebase and scans it for any vulnerabilities and bugs. For more information about CodeQL, please visit this [link](https://codeql.github.com/docs/codeql-overview/about-codeql/). ## Privacy Notice #### 1. What personal details of yours would you be sharing with us and why?

To aid you in your roommate search, to help others find you, and also to provide you with relevant roommate suggestions, you will be asked to share your "Name", "Email", "Date of Birth", "Gender", "Diet", "Hometown", "Degree and Course", "Country of Origin". You are free to include anything in your bio (which could include your Instagram ID and other social media handles). #### 2. Will we be storing your details, and how will we use them? Yes, we will be storing them in our database. We will ONLY use this to match you with potential roommates and improve our software. #### 3. Will we share it with any third-party institutions? NO. Your data is safe with us :slightly_smiling_face:. We will not share/lend/rent your data to any outside institutions/personnel. #### 4. How long will you store my data? We retain your information as long as needed to provide you with our services. #### 5. How to remove my data from the website? Our current release does not provide you with a mechanism to remove your data directly from our website. You are always free to turn off your visibility. If you still feel the need to remove your data from our website, kindly email one of the contributors from your registered Email ID, and we will take care of the rest!

Technology Used

  • Python 3.7+
  • Django 4.1.2
  • HTML5
  • CSS3
  • BootStrap v5.2

Roadmap

3 months milestone:

  1. Include apartment details in the profile section. The details could include (but are not restricted to) the address of the apartment, the apartment BHK and size, and rent. Users who have already secured a property and are looking for roommates to occupy them could use this functionality.
  2. Provide an update for the 'My Room' page, giving users the option to include and display their finalized roommates.
  3. Create a platform within the website that allows homeowners to lease or sublease their apartments.
  4. Suggest properties based on user filters by scraping it from the web and update the matching algorithm.
  5. Implement a chat room that allows users to chat with one another in-webapp.

6 months milestone:

  1. Create a mobile application and publish it on App Store and Google Play Store
  2. Implement a subleasing option.
  3. Improve the matching algorithm.

9 months milestone:

  1. Partner with local property agents like Wilson Properties, Trinity Properties, etc. to list their properties on our website.

Contact us:

Rohit Geddam: sgeddam2@ncsu.edu
Arun Kumar Ramesh - arames25@ncsu.edu
Kiron Jayesh - kjayesh@ncsu.edu
Sai Krishna Teja Varma - smanthe@ncsu.edu
Shandler Mason - samason4@ncsu.edu

License:

Distributed under the MIT License. See LICENSE for more information

GIF from Tenor.

Support:

Questions about the software? Kindly contact us through one of the following routes. We are happy to answer all your questions regarding the software.

Feel free to reach out to us in case you encounter issues in the software, for example, issues in signing up, logging in, or any othe features.


           
          

Owner

  • Login: rohitgeddam
  • Kind: user

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Geddam"
  given-names: "Rohit"
  orcid: "https://orcid.org/0000-0002-1010-1070"
- family-names: "Ramesh"
  given-names: "Arun Kumar"
  orcid: "https://orcid.org/0000-0002-1949-5926"
- family-names: "Jayesh"
  given-names: "Kiron"
  orcid: "https://orcid.org/0000-0003-4527-0568" 
- family-names: "Manthena"
  given-names: "Sai Krishna Teja Varma"
  orcid: "https://orcid.org/0000-0002-4511-6934"
- family-names: "Mason"
  given-names: "Shandler"
  orcid: "https://orcid.org/0000-0003-0587-4527"
title: "FindMyRoomie"
version: 3.0
doi: 10.5281/zenodo.1234
date-released: 2022-10-04
url: "https://github.com/rohitgeddam/FindMyRoomie"

GitHub Events

Total
Last Year

Dependencies

.github/workflows/CodeQL.yml actions
  • actions/checkout v3 composite
  • github/codeql-action/analyze v2 composite
  • github/codeql-action/autobuild v2 composite
  • github/codeql-action/init v2 composite
.github/workflows/Code_Cov.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v3 composite
.github/workflows/Linting.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
.github/workflows/Unit_Tests.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v3 composite
requirements.txt pypi
  • Babel ==2.10.3
  • Django ==4.1.1
  • Faker ==15.0.0
  • Jinja2 ==3.1.2
  • MarkupSafe ==2.1.1
  • Pillow ==9.2.0
  • PySocks ==1.7.1
  • PyYAML ==6.0
  • Pygments ==2.13.0
  • Sphinx ==5.2.3
  • Unidecode ==1.3.6
  • alabaster ==0.7.12
  • asgiref ==3.5.2
  • astroid ==2.12.10
  • async-generator ==1.10
  • attrs ==22.1.0
  • autopep8 ==1.7.0
  • black ==21.12b0
  • brunette ==0.2.7
  • certifi ==2022.9.24
  • cfgv ==3.3.1
  • charset-normalizer ==2.1.1
  • click ==8.1.3
  • distlib ==0.3.6
  • dj-database-url ==1.0.0
  • django-countries ==7.3.2
  • django-crispy-forms ==1.14.0
  • django-environ ==0.9.0
  • django-filter ==22.1
  • django-heroku ==0.3.1
  • django-seed ==0.3.1
  • django-sphinx-autodoc ==0.2
  • django-utils-six ==2.0
  • docutils ==0.19
  • exceptiongroup ==1.0.0rc9
  • factory-boy ==3.2.1
  • filelock ==3.8.0
  • flake8 ==5.0.4
  • h11 ==0.14.0
  • identify ==2.5.6
  • idna ==3.4
  • imagesize ==1.4.1
  • importlib-metadata ==5.0.0
  • jsonschema ==4.16.0
  • lazy-object-proxy ==1.7.1
  • m2r ==0.2.1
  • m2r2 ==0.3.3
  • mccabe ==0.7.0
  • mistune ==0.8.4
  • mypy-extensions ==0.4.3
  • nodeenv ==1.7.0
  • outcome ==1.2.0
  • packaging ==21.3
  • pathspec ==0.10.1
  • platformdirs ==2.5.2
  • pre-commit ==2.20.0
  • psycopg2 ==2.9.3
  • pycodestyle ==2.9.1
  • pyflakes ==2.5.0
  • pyparsing ==3.0.9
  • pyrsistent ==0.18.1
  • python-dateutil ==2.8.2
  • python-dotenv ==0.21.0
  • pytz ==2022.4
  • requests ==2.28.1
  • selenium ==4.5.0
  • six ==1.16.0
  • sniffio ==1.3.0
  • snowballstemmer ==2.2.0
  • sortedcontainers ==2.4.0
  • sphinx-autoapi ==2.0.0
  • sphinx-autopackagesummary ==1.3
  • sphinx-rtd-theme ==0.5.1
  • sphinxcontrib-applehelp ==1.0.2
  • sphinxcontrib-devhelp ==1.0.2
  • sphinxcontrib-htmlhelp ==2.0.0
  • sphinxcontrib-httpdomain ==1.8.0
  • sphinxcontrib-jsmath ==1.0.1
  • sphinxcontrib-openapi ==0.7.0
  • sphinxcontrib-qthelp ==1.0.3
  • sphinxcontrib-serializinghtml ==1.1.5
  • sqlparse ==0.4.2
  • toml ==0.10.2
  • tomli ==1.2.3
  • toposort ==1.7
  • tqdm ==4.64.1
  • trio ==0.22.0
  • trio-websocket ==0.9.2
  • typing_extensions ==4.3.0
  • urllib3 ==1.26.12
  • virtualenv ==20.16.5
  • webdriver-manager ==3.8.3
  • whitenoise ==6.2.0
  • wrapt ==1.14.1
  • wsproto ==1.2.0
  • zipp ==3.8.1