Eventime-app

Eventime App is an event management platform using Angular, Spring Boot, Flask, and PostgreSQL. It offers AI-powered event recommendations, social features, and secure authentication. Users can manage events, chat with a chatbot, and view their calendar.

Stars
3
Committers
2

Eventime App

Overview

This project is an AI-enhanced web application designed for organising and recommending events. The system leverages Natural Language Processing (NLP) techniques for text processing and provides functionalities for creating, editing, and viewing events from a database. The application features a calendar for event management and includes a robust backend for authentication and data handling.

Features

  • Event Management: Users can create, edit, and view events.
  • Calendar Integration: A calendar view to manage events efficiently.
  • NLP Processing: Utilises various NLP techniques such as NLTK WordNet for dictionary-based approaches, lemmatisation, and synonyms.
  • Authentication: Secure login and signup functionalities.
  • AI-Powered Recommendations: Events are recommended based on text processing using NLP techniques.
  • Testing: Postman used for testing API endpoints.
  • Chatbot: Chat with a chatbot to get event recommendations.

Technologies Used

Frontend

  • Angular: Framework for building the user interface.
  • Angular Material: UI components for Angular.
  • Bootstrap/NGX-Bootstrap: For responsive design and additional UI components.
  • Angular OAuth2 OIDC: For handling authentication.
  • Date-Fns: Library for date manipulation.
  • JWT-Decode: Library for decoding JSON Web Tokens.

Backend

  • Spring Boot: Framework for building the backend application.
  • Spring Security: For authentication and authorisation.
  • PostgreSQL: Database for storing user and event data.
  • HikariCP: Connection pooling for PostgreSQL.
  • Lombok: For reducing boilerplate code.
  • JJWT: For JWT creation and parsing.
  • Commons Validator: For data validation.

NLP and AI

  • SpaCy: Library for advanced NLP in Python.
  • NLTK WordNet: For dictionary-based approaches and synonyms.
  • Lemmatisation: Reducing words to their base or root form.

Chatbot

  • Flask: Python framework for the chatbot.
  • SpaCy: For NLP in chatbot.
  • NLTK: For additional NLP tasks.

Application Structure

Backend

  • Spring Boot Application: Manages the business logic, data access, and authentication.
  • Repositories: Interfaces for data access using Spring Data JPA.
  • Services: Business logic for handling event and user operations.
  • Controllers: RESTful endpoints for frontend communication.
  • Security: Configured using Spring Security for login and signup processes.

Frontend

  • Angular Application: Manages the user interface and communicates with the backend via RESTful APIs.
  • Components: Modular UI components for managing events and user interactions.
  • Services: Angular services for handling API calls and business logic on the client side.
  • Routing: Configured for navigating between different views within the application.

Chatbot

  • Flask Application: Manages the chatbot interactions.
  • Endpoints: RESTful endpoints for chatbot communication.
  • NLP Processing: Uses SpaCy and NLTK for processing user input.

Getting Started

Prerequisites

  • Node.js: Required for running Angular.
  • Java: Required for running Spring Boot.
  • Python 3.9: Required for running NLP tasks with SpaCy and Flask.
  • PostgreSQL: Database setup.
  • Flask: Required for running the chatbot.

Installation

  1. Clone the Repository:

    git clone https://github.com/teakulo/ETfrontend.git
    
  2. Backend Setup:

    • Navigate to the backend directory.
    • Configure the database settings in application.yml.
    • Run the Spring Boot application:
      ./mvnw spring-boot:run
      
  3. Frontend Setup:

    • Navigate to the frontend directory.
    • Install dependencies:
      npm install
      
    • Run the Angular application:
      ng serve
      
  4. Chatbot Setup:

    • Navigate to the chatbot directory.
    • Install Python dependencies:
      pip install -r requirements.txt
      
    • Run the Flask application:
      flask run
      

Usage

  • Access the application at http://localhost:4200.
  • Sign up or log in to start managing your events.
  • Chat with the chatbot to get event recommendations.
  • See who is attending events and add friends.
  • Edit your profile information.
  • View events you are attending on your calendar.
  • Scroll through the homepage to see various events.
Related Projects