Skip to content

Sri-Karthick-S/UniLifehub

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 

Repository files navigation

UniLifeHub

UniLifeHub is a comprehensive web application designed to enhance the student experience by providing a centralized platform for managing various academic and social activities. Whether you need help organizing your study schedule, finding study buddies, or staying updated on university events, UniLifeHub is here to assist.

Features

  • Digital Student Profile: Create and manage a personalized digital profile that stores academic, personal, and social details in one place for easy access.
  • Study Planner: A dedicated tool for planning your studies effectively, complete with scheduling features and reminders to keep you on track.
  • Study Buddies: Find and connect with like-minded study buddies based on courses, interests, or study habits to foster collaboration and improve learning.
  • University Events Forum: Discover and post events happening at your university, from academic workshops to social gatherings and student organization meetings.
  • Open Forum: A common platform to post and discuss what's happening on campus. Share your thoughts, ask questions, and stay updated on current events at your university.
  • Important Links: A convenient page with all the essential university-related links, such as learning portals, library resources, course registrations, and more for easy access.
  • FitU: Tailored workout plans for students to help you stay fit and active, with quick and efficient exercises that fit into a busy schedule.
  • Campus Resources: A gateway to essential resources such as the Career Centre, Global Opportunities, Job Shop, Student Life, and GradConnection. Each section navigates to the corresponding university websites for further exploration.

Tech Stack

  • Frontend: Built with React for a fast and responsive user experience, allowing dynamic interactions and real-time updates.
  • Backend: Developed using Node.js for server-side logic, APIs, and managing user sessions, ensuring a robust, scalable backend.
  • Flask: A lightweight Python-based framework used to run the recommendation model (Model.py) for predicting student buddy similarity.
  • Database: (Optional) Although this version of the app currently stores data in-memory, future updates will integrate a persistent database (e.g., MongoDB or PostgreSQL).

Libraries and Tools Used

  • React: For building the user interface and creating dynamic web pages.
  • Node.js: For handling server-side logic, REST APIs, and session management.
  • Flask: For running Python-based machine learning models and APIs.
  • npm: Used to manage JavaScript dependencies for both frontend and backend.
  • Python: Required for running Flask and the recommendation model.
  • Axios/Fetch: To make API requests between the frontend and backend.
  • CORS: Ensures smooth communication between the frontend and backend across different origins.

Getting Started

Prerequisites

Before you begin, ensure that you have the following software installed on your machine:

  • Node.js (v12 or higher) and npm (comes with Node.js)
  • React (included in project dependencies)
  • Git (optional, for cloning the repository)
  • Python (for using a Flask backend and additional scripts)
  • Flask (install via pip)

Installation

Follow these steps to get the project up and running locally:

  1. Clone the repository:

    git clone https://github.com/your-username/unilifehub.git
    cd unilifehub
  2. Install the dependencies for both the frontend and backend:

    • For the Backend:

      cd backend
      npm install
    • For the Frontend:

      cd frontend
      npm install
  3. Install Python dependencies:

    Install the required Flask libraries for running the Model.py file:

    pip install flask flask-cors
  4. Set up environment variables:

    Create a .env file in the backend directory to store sensitive data such as your session secret key.

    Example .env file:

    SECRET_KEY=your-secret-key

Running the Application

  1. Run the Flask Backend (Model.py):

    Navigate to the directory where Model.py is located and start the Flask server:

    cd backend
    python Model.py

    Flask will be running at http://localhost:5000, providing the API for recommendations.

  2. Start the Backend (Node.js):

    After the Flask server is running, start the Node.js backend:

    cd backend
    node server.js

    The backend will be running on http://localhost:5000.

  3. Start the Frontend:

    In a new terminal, start the React frontend:

    cd frontend
    npm start

    The frontend will be available at http://localhost:3000.

  4. Access the Application:

    Open your browser and go to http://localhost:3000 to access the UniLifeHub platform.

Developmental Solutions: B4

Example 1: Synthetic Data Generation and Modeling for Study Buddy Recommendations

During the development of the Study Buddy feature, we encountered difficulties in sourcing real-world data for the recommendation system. Due to these constraints, we generated synthetic dummy data to simulate user profiles, courses, learning styles, and subjects. This allowed us to proceed with the modeling phase while ensuring that the recommendation system functioned correctly.

To address the challenge of finding similar study buddies, we designed a Python-based recommendation model. The model compares various attributes, such as course enrollments, learning styles, and subjects, to identify users with the most similar profiles.

To optimize the process, we implemented a caching mechanism to store the results of recommendations for each user. This cache reduces redundant API calls and speeds up the user experience, ensuring that repeated requests for the same user result in instant responses, rather than recalculating the similarity each time. As the project progresses and real data becomes available, the synthetic data can be easily replaced without significant changes to the modeling approach, making the system scalable and adaptable.

API Call Complexity: Initially, the API call for finding similar study buddies has a time complexity of O(n), where n is the number of user profiles being compared. However, by using caching, subsequent requests are reduced to O(1), as the system retrieves precomputed recommendations without recalculating. This optimization minimizes the number of API calls and significantly enhances performance, particularly as the number of users increases.

The solution ensures that both memory usage and runtime remain efficient, balancing complexity while ensuring future expandability for more advanced features and datasets.

Example 2: Absence of Database for User Profile Storage

Due to time constraints, we were unable to set up a fully operational database to persist user profiles and other data. Instead of using a traditional database, we designed the backend to store user session data in memory. This allowed for the temporary storage of profile information, which is sufficient for the application's current scale during development.

This interim solution enabled us to maintain core functionalities, such as user session management and profile-based recommendations, without requiring the overhead of integrating and managing a database system. While not ideal for long-term scalability, this approach allowed for rapid iteration and testing of the core application features.

For future expansions, the system is designed to easily integrate with a database when time permits, ensuring a smooth transition without major architectural changes. This plan supports both immediate functionality and long-term scalability, while allowing us to deliver the project within the set timeline.

Additional Notes

  • CORS Issues: If you run into CORS issues when connecting the frontend and backend, make sure the backend has the necessary CORS configurations in place.
  • Database Setup: As the project grows, we will consider implementing a database to persistently manage data, such as student profiles and events.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 91.9%
  • Python 5.2%
  • HTML 1.9%
  • CSS 1.0%