Message for TA: Please see config.properties
in the MarkUs submission for the API keys that we have provided you with.
-
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 -
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
This Table of Contents provides a structured guide for navigating the README document.
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.
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.
LinkUp solves two major issues:
- 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.
- 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.
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.
Users can sign up for LinkUp by providing basic details such as their email, username, and password.
Users can log in with their credentials to access their account and data.
Each user can select their preferred language for the app's interface and for translating group messages.
Users can send friend requests and build their network by searching for others using their username or email.
Users can manage their friend list by removing connections they no longer need.
Users can create a group chat, naming it and optionally adding a description.
Invite friends to join your group by selecting them from your contact list.
Admins can remove members from a group when necessary.
Users can navigate between different groups they are a part of, with a simple list or menu.
Send messages to group members in your chosen language. Messages are automatically translated into the preferred language of each recipient.
Users can add events to their personal or group calendar, specifying time, location, and details.
Users can delete events they created or that are no longer relevant.
Generate a recommended meeting time based on all group members' availability.
Export scheduled events to your personal calendar application (e.g., Google Calendar, Outlook) in .ics format.
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
-
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.
-
Navigate to the Project Directory
cd LinkUp
-
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. -
-
Build the Project
Use Maven to build the project:
mvn clean install
This command compiles the project and resolves dependencies.
-
Run the Application
Execute the main class to start the application:
java -cp target/LinkUp-1.0-SNAPSHOT.jar app.Main
-
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
.
- Solution: Verify your MongoDB credentials in
-
Issue: Invalid or missing DeepL API key
- Solution: Ensure the
deepl.apiKey
inconfig.properties
is correct and active.
- Solution: Ensure the
- GitHub Repository: LinkUp
- Maven Installation Guide: Install Maven
- Java JDK Downloads: Download JDK
- MongoDB Installation: Install MongoDB
By following these steps, you should have LinkUp installed and running successfully.
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.
- Google Form: Please use the following link to submit your feedback: LinkUp Feedback Form
- 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").
- Be Constructive: Focus on actionable suggestions or observations rather than only criticism.
- Avoid Spam: Refrain from submitting duplicate entries or irrelevant information unrelated to LinkUp.
- 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.
- Feature Requests: If you have an idea for a new feature, describe how it would enhance the app and why it is important.
- Bug Reports: If reporting a bug, include steps to reproduce the issue, your operating system, and the device used.
- 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.
We welcome contributions to the LinkUp project! Whether you’re fixing bugs, improving features, or adding new functionality, your input is highly valued.
- Open Contributions: Contributions are open, and anyone is welcome to contribute.
- Repository Link: The project repository is hosted on GitHub: LinkUp GitHub Repository.
-
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.
-
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.
- Use the following command to clone your forked repository to your local machine:
-
Set Up the Remote:
- Add the original repository as an upstream remote:
git remote add upstream https://github.com/CulmoneY/LinkUp.git
- Add the original repository as an upstream remote:
-
Pull the Latest Changes:
- Regularly update your fork with the latest changes from the upstream repository:
git fetch upstream git merge upstream/main
- Regularly update your fork with the latest changes from the upstream repository:
-
Make Atomic Changes:
- Focus on one feature, bug fix, or improvement per pull request to make it easier to review.
-
Follow Code Standards:
- Use consistent naming conventions, formatting, and adhere to the project's coding guidelines.
-
Write Descriptive Commit Messages:
- Use clear, concise commit messages that describe what the change does.
-
Test Your Changes:
- Ensure your changes are fully tested and do not break existing functionality.
-
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.
-
Initial Review:
- All pull requests are reviewed by the maintainers or designated reviewers.
- Feedback may be provided for improvements or required changes.
-
Testing:
- Contributions must pass all tests and integrate seamlessly with the existing codebase.
-
Approval:
- Once the review process is complete, and any requested changes are made, the pull request will be approved.
-
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.
- Only approved contributions will be merged into the
- 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!
- Yianni Culmone - GitHub: culmoney
- Omid Hemmati - GitHub: hemmatio
- Neyl Nasr - GitHub: lakssito
- Kevin Yeh - GitHub: kevinyyyeh
- Samy Asnoun - GitHub: samyasnoun