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.
- 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.
- 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.
- 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.
- SpaCy: Library for advanced NLP in Python.
- NLTK WordNet: For dictionary-based approaches and synonyms.
- Lemmatisation: Reducing words to their base or root form.
- Flask: Python framework for the chatbot.
- SpaCy: For NLP in chatbot.
- NLTK: For additional NLP tasks.
- 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.
- 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.
- Flask Application: Manages the chatbot interactions.
- Endpoints: RESTful endpoints for chatbot communication.
- NLP Processing: Uses SpaCy and NLTK for processing user input.
- 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.
-
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:
- Navigate to the chatbot directory.
- Install Python dependencies:
pip install -r requirements.txt
- Run the Flask application:
flask run
- 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.