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
-
Clone the Repository:
git clone https://github.com/teakulo/ETfrontend.git
-
Backend Setup:
- Navigate to the backend directory.
- Configure the database settings in
application.yml
.
- Run the Spring Boot application:
./mvnw spring-boot:run
-
Frontend Setup:
- Navigate to the frontend directory.
- Install dependencies:
npm install
- Run the Angular application:
ng serve
-
Chatbot Setup:
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.