The FeedApp project implements a distributed polling platform designed to support real-time voting, personalized poll recommendations, and scalable event-driven communication. The system is built as a Model-View-Controller backend with a microservices-style architecture: Kotlin/Spring Boot services expose REST APIs and publish domain events, an Angular frontend provides a single-page user interface, and auxiliary services implement notification delivery and semantic recommendations in separate containers. Apache Kafka is used as the internal message broker and event log.
Contributers: Maren Franke, Fredric Hegland and Kamil Matyjaszczyk
GitHub: https://github.com/Maren24/DAT250-project
Docker Hub: https://hub.docker.com/r/fredrichegland/feedapp/tags
To execute the application, docker needs to be installed.
For development the following programs are required:
- Python
- Java SDK21
- npm
- Docker
Note: The application contains large images, especially the embedding-service image, due to its included LLM. The startup process and pulling might take a while.
docker login
docker compose -f docker-compose.dockerhub.yml up --build -dStart the application by executing the docker compose:
docker-compose up --build -dThis will start the entire application with all services.
Each service owns an individual folder:
- Backend: backend
- Frontend: frontend
- Notifcation Service: notification
- Recommendation Service: recommendation
- Recommendation-Kafka-Interface: kafka-consumer
- Embedding Service: embedding service
- Qdrant Service: qdrant service
- PostgreSQL Database: database
Additionally there are different folders for configurations and similar things:
- Bruno: Bruno-Files for testing the application and its environment
- Documentation: Documentation folder, containing pictures, decision making about frameworks, analysis (diagrams and requirements engineering) and the domain model
- TechnologyAssesment: Containing files for the technology assesment - configurations and files for the Benchmarking and for the scalability testing
- .github: Containing the workflows for GitHub
- Frontend: http://localhost:4210
- Backend: http://localhost:8421/ e.g. http://localhost:8421/users/login
- Notification: ws://localhost:8422/ws
- Recommendation:
- Qdrant:
localhost:6333andlocalhost:6334 - Qdrant service: http://localhost:8070
- Embedding service: http://localhost:8000
- Qdrant:
- PostgreSQL:
localhost:5432 - Kafka:
localhost:9092

