Skip to content

CulmoneY/LinkUp

Repository files navigation

Message for TA: Please see config.properties in the MarkUs submission for the API keys that we have provided you with.

Table of Contents

  1. LinkUp
    1.1 Project Overview

  2. Features of LinkUp
    2.1 Create Account
    2.2 Login
    2.3 Change Language
    2.4 Add Friends
    2.5 Remove Friends
    2.6 Create Group
    2.7 Add Users to Group
    2.8 Remove Users from Group
    2.9 Select Group
    2.10 Chat/Send Messages
    2.11 Add Events
    2.12 Remove Events
    2.13 Select "LinkUp" Time in Group
    2.14 Export Events to Calendar (.ics) File

  3. Prerequisites

  4. Installation Steps

  5. Common Issues and Solutions

  6. Additional Resources

  7. How to Give Feedback on LinkUp

  8. How to Contribute to the LinkUp Project
    8.1 Instructions for Making a Fork of the Project
    8.2 Guidelines for Creating a Good Merge Request
    8.3 Protocols for Reviewing Contributions and Merging

  9. Credits: Team Members

This Table of Contents provides a structured guide for navigating the README document.

LinkUp

Project Overview

What This Project Does

LinkUp is a group chat application designed to seamlessly integrate scheduling and multilingual communication. It allows users to create a shared group calendar where individual schedules are combined. The app uses this data to generate a "time to LinkUp" that suits everyone's availability. Additionally, LinkUp enables users to participate in conversations in their preferred language, translating messages in real-time so each user reads messages in their own chosen language.

Why the Project Was Made

Inspired by our project team, in which we speak 7 different languages, LinkUp was created to address the challenges of coordinating group activities and overcoming language barriers in global communities. Many people struggle with finding mutual availability in group settings, and multilingual communication can create friction in diverse teams or friendships. LinkUp was designed to bridge these gaps by combining calendar synchronization and instant language translation into one unified platform.

What Problem This Project Solves

LinkUp solves two major issues:

  1. Group Scheduling Conflicts: By centralizing schedules and generating recommended meeting times, LinkUp simplifies the often-tedious process of finding a time that works for everyone.
  2. Language Barriers in Communication: With its real-time translation feature, LinkUp ensures that users can communicate freely in their native language, fostering better understanding and inclusivity.

Is This Useful for Users?

If you are part of a global or multilingual group looking for a more efficient way to communicate and coordinate events, LinkUp is an great tool! It combines practical scheduling with enhanced communication, making it particularly useful for friend groups, remote teams, and international communities.


Features of LinkUp

1. Create Account

Users can sign up for LinkUp by providing basic details such as their email, username, and password.
image


2. Login

Users can log in with their credentials to access their account and data.
image


3. Change Language

Each user can select their preferred language for the app's interface and for translating group messages.
image


4. Add Friends

Users can send friend requests and build their network by searching for others using their username or email.
image


5. Remove Friends

Users can manage their friend list by removing connections they no longer need.
image


6. Create Group

Users can create a group chat, naming it and optionally adding a description.
image


7. Add Users to Group

Invite friends to join your group by selecting them from your contact list.
image


8. Remove Users from Group

Admins can remove members from a group when necessary.
image


9. Select Group

Users can navigate between different groups they are a part of, with a simple list or menu.
image


10. Chat/Send Messages

Send messages to group members in your chosen language. Messages are automatically translated into the preferred language of each recipient.
image


11. Add Events

Users can add events to their personal or group calendar, specifying time, location, and details.
image


12. Remove Events

Users can delete events they created or that are no longer relevant.
image


13. Select “LinkUp” Time in Group

Generate a recommended meeting time based on all group members' availability.
image


14. Export Events to Calendar (.ics) File

Export scheduled events to your personal calendar application (e.g., Google Calendar, Outlook) in .ics format.
image


Prerequisites

Ensure your system meets the following requirements:

  • Operating System: Windows, macOS, or Linux
  • Java Development Kit (JDK): Version 17 or higher
  • Apache Maven: Version 3.6.0 or higher
  • MongoDB: Ensure you have access to a MongoDB instance

Installation Steps

  1. Clone the Repository

    Open your terminal or command prompt and execute:

    git clone https://github.com/CulmoneY/LinkUp.git

    This command clones the LinkUp repository to your local machine.

  2. Navigate to the Project Directory

    cd LinkUp
  3. Configure Application Properties

    The application requires specific configurations:

    • Locate the src/config.properties file.

    • Open it in a text editor.

    • Update the following placeholders with your actual credentials:

      mongodb.connectionString=mongodb+srv://YOUR_USERNAME:[email protected]/?retryWrites=true&w=majority&appName=LinkUp
      deepl.apiKey=your_deepl_api_key
      

    Note: To prevent accidental exposure of your credentials, run:

    git update-index --assume-unchanged src/config.properties

    This command ensures changes to config.properties are not tracked by Git.

  4. Build the Project

    Use Maven to build the project:

    mvn clean install

    This command compiles the project and resolves dependencies.

  5. Run the Application

    Execute the main class to start the application:

    java -cp target/LinkUp-1.0-SNAPSHOT.jar app.Main

Common Issues and Solutions

  • Issue: mvn: command not found

    • Solution: Ensure Maven is installed and added to your system's PATH.
  • Issue: java: command not found

    • Solution: Ensure JDK is installed and added to your system's PATH.
  • Issue: Authentication errors with MongoDB

    • Solution: Verify your MongoDB credentials in config.properties.
  • Issue: Invalid or missing DeepL API key

    • Solution: Ensure the deepl.apiKey in config.properties is correct and active.

Additional Resources

By following these steps, you should have LinkUp installed and running successfully.


How to Give Feedback on LinkUp

We value your feedback and want to hear your thoughts about your experience with LinkUp. Your input will help us improve the software and make it even more user-friendly.

How to Submit Feedback

Rules for Valid Feedback

  1. Be Specific: Provide clear and detailed feedback to help us understand your experience. For example:
    • Instead of "The app is slow," mention where it is slow (e.g., "The calendar takes a long time to load when switching dates").
  2. Be Constructive: Focus on actionable suggestions or observations rather than only criticism.
  3. Avoid Spam: Refrain from submitting duplicate entries or irrelevant information unrelated to LinkUp.

Guidelines for Submitting Feedback

  1. Expected Response Time: While we review all feedback, responses to individual submissions may not be immediate. Rest assured, your feedback will be considered in future updates.
  2. Feature Requests: If you have an idea for a new feature, describe how it would enhance the app and why it is important.
  3. Bug Reports: If reporting a bug, include steps to reproduce the issue, your operating system, and the device used.
  4. Privacy: Avoid sharing sensitive personal information in your feedback.

Thank you for taking the time to share your thoughts! Your feedback is essential in making LinkUp the best it can be.


How to Contribute to the LinkUp Project

We welcome contributions to the LinkUp project! Whether you’re fixing bugs, improving features, or adding new functionality, your input is highly valued.

How to Contribute

  1. Open Contributions: Contributions are open, and anyone is welcome to contribute.
  2. Repository Link: The project repository is hosted on GitHub: LinkUp GitHub Repository.

Instructions for Making a Fork of the Project

  1. Fork the Repository:

    • Go to the LinkUp GitHub Repository.
    • Click the "Fork" button in the top-right corner to create a copy of the repository under your account.
  2. Clone the Forked Repository:

    • Use the following command to clone your forked repository to your local machine:
      git clone https://github.com/<your-username>/LinkUp.git
    • Replace <your-username> with your GitHub username.
  3. Set Up the Remote:

    • Add the original repository as an upstream remote:
      git remote add upstream https://github.com/CulmoneY/LinkUp.git
  4. Pull the Latest Changes:

    • Regularly update your fork with the latest changes from the upstream repository:
      git fetch upstream
      git merge upstream/main

Guidelines for Creating a Good Merge Request

  1. Make Atomic Changes:

    • Focus on one feature, bug fix, or improvement per pull request to make it easier to review.
  2. Follow Code Standards:

    • Use consistent naming conventions, formatting, and adhere to the project's coding guidelines.
  3. Write Descriptive Commit Messages:

    • Use clear, concise commit messages that describe what the change does.
  4. Test Your Changes:

    • Ensure your changes are fully tested and do not break existing functionality.
  5. Submit the Pull Request:

    • Go to your forked repository on GitHub and navigate to the "Pull Requests" tab.
    • Click "New Pull Request" and select the main branch of the original repository as the base and your branch as the compare.
    • Add a title and description explaining your changes.

Protocols for Reviewing Contributions and Merging

  1. Initial Review:

    • All pull requests are reviewed by the maintainers or designated reviewers.
    • Feedback may be provided for improvements or required changes.
  2. Testing:

    • Contributions must pass all tests and integrate seamlessly with the existing codebase.
  3. Approval:

    • Once the review process is complete, and any requested changes are made, the pull request will be approved.
  4. Merging:

    • Only approved contributions will be merged into the main branch.
    • Contributors may be tagged in the release notes as a thank-you for their efforts.

Additional Notes

  • If you’re new to contributing, check out GitHub’s guide: How to Create a Pull Request.
  • For questions or discussions, feel free to open an issue in the GitHub repository.

We’re excited to have you contribute to LinkUp and help make it even better!

Credits: Team Members

  • Yianni Culmone - GitHub: culmoney
  • Omid Hemmati - GitHub: hemmatio
  • Neyl Nasr - GitHub: lakssito
  • Kevin Yeh - GitHub: kevinyyyeh
  • Samy Asnoun - GitHub: samyasnoun

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages