Nomen est omen: The app's name, frag.jetzt (German for "ask.now"), says it all—highlighting both its main purpose and its web address, https://frag.jetzt.
- 👨🏫 Mentoring & Support
- 📝 Introduction
- ⚙️ Core Functionalities
- 🏗️ Project Architecture
- 💻 Setting Up the Development Environment
- 🔍 Static Code Analysis of the Angular Frontend
- 💻 Understanding the Codebase
- 🤝 Contribution and Collaboration Guidelines
- ✅ Definition of Done Checklist
- 📜 Project History
- 📋 Project Documentation
- ❓ Troubleshooting FAQ
🎉 Welcome to the frag.jetzt dev community!
Your contributions are invaluable to continuously improving our interactive educational tools. Let's innovate together! 🎉 🌍 👩💻
We strongly believe in supporting new contributors through mentoring to facilitate an effective and welcoming onboarding experience.
-
Project Mentoring and General Guidance:
Prof. Dr. Klaus Quibeldey-Cirkel (Project Lead) – klaus.quibeldey@gmail.com -
Technical Mentoring and Chief Developer:
Ruben Bimberg (M.Sc.) – ruben.bimberg@mni.thm.de
If you need assistance, have technical questions, or require general support, please open an issue on our GitLab issue tracker.
Do not hesitate to reach out—we're happy to help!
frag.jetzt is an open-source Progressive Web Application (PWA) developed by Technische Hochschule Mittelhessen (THM) to facilitate interactive Q&A sessions and enhance audience engagement in educational settings. The platform supports collaborative educational interactions through moderated, real-time, multilingual dialogue and incorporates advanced AI-driven features. It adheres strictly to ethical frameworks and data protection standards, including GDPR compliance.
- Advanced moderation using AI and contextual pipelines, effectively managing inappropriate content.
- Real-time thematic visualizations using NLP technologies for improved navigation and interaction.
- Comprehensive multilingual functionality combined with stringent ethical and data protection compliance.
- Enhances AI-generated content, providing accurate and contextually relevant interactions.
frag.jetzt employs a modular architecture comprising:
- Frontend Layer: Developed using Angular and TypeScript, optimized as a Progressive Web Application (PWA) ensuring accessibility, cross-platform compatibility, and enhanced user experience.
- Backend Layer: Provides core functions such as managing Q&A sessions, moderating content, and supporting multilingual processing.
- AI Integration: Incorporates cutting-edge Natural Language Processing (NLP) technologies like GPT-based Large Language Models (LLMs), vector embeddings, and Retrieval-Augmented Generation (RAG), enhancing content moderation and user interactions.
Before starting, ensure the following software components are installed:
-
Node.js: Install Node.js, preferably managed via a version manager like NVM or NVM-windows when using windows.
-
Operating System (only when using docker): Recommended to use GNU/Linux distributions.
Note: Using Windows Subsystem for Linux 2 (WSL2) is possible but may have limitations, such as handling file events.
-
Docker and Docker Compose: Only required, when the full infrastructure is needed for development.
If Docker credential errors arise (ERROR: failed to solve: error getting credentials - err: exit status 1
), adjust your Docker configuration as follows:
nano ~/.docker/config.json
Change "credsStore": "desktop"
to "credsStore": "osxkeychain"
.
frag.jetzt consists of a large number of backend services. To simplify the process, a startup script is available via npm run app
.
When using docker, an admin account is available with email admin@admin
and password admin
.
If you only want to change something at the frontend or you dont have enough resources, you can run the app via staging or production. There is no admin account available and you must log in with a guest account. This process runs directly on your terminal, so you do not need to explicitly view the logs or terminate the process. You can simply cancel the process to end it (usually with Ctrl + C).
If you did not change any ports, the application is now available under localhost:4200.
When you started with docker, all emails from the system are intercepted and can be viewed in the Mailhog interface at localhost:8025.
To ensure high-quality code and maintainability, we use SonarQube for static code analysis of the Angular frontend:
To run a local analysis, follow these steps:
-
Navigate to the analysis directory:
cd analysis
-
Remove previously running containers and volumes:
sudo docker compose down -v
-
Pull the latest images and update built images:
sudo docker compose pull sudo docker compose build
-
Start the SonarQube server:
sudo docker compose up -d sonarqube
-
Run the analysis:
sudo docker compose run --rm analysis
-
Look at the results at http://localhost:9000
Our codebase is organized into several key components that work together to deliver the frag.jetzt experience:
- Core Module: Contains essential services, models, and utilities used throughout the application
- User Module: Handles authentication, user profiles, and session management
- Room Module: Manages the creation and configuration of Q&A sessions
- Question Module: Implements question creation, voting, and moderation features
- AI Module: Integrates NLP capabilities for content moderation and keyword extraction
app.module.ts
: Main application module that bootstraps the applicationapp-routing.module.ts
: Defines the application's route structureenvironment.ts
: Contains environment-specific configuration variablesservices/http.service.ts
: Central service for handling API communications
- Adding a New Feature: Start by creating a feature branch from
staging
, implement your changes, add tests, and submit a merge request - Fixing a Bug: Identify the root cause using the browser console and server logs, create a fix branch, implement and test your solution
- Modifying UI Components: Follow our component structure using Angular Material and ensure responsive design across all device sizes
- Issue Tracking: Document bugs or feature requests clearly in GitLab.
- Branch Management: Branch from the
staging
branch for features and bug fixes. - Commit Standards: Follow concise, descriptive commit messages in imperative mood and adhere to project style standards (ESLint, Prettier).
- Testing Protocol: Consistently write and run unit tests and end-to-end tests.
Ensure each completed User Story meets the following criteria:
-
Cross-browser Compatibility:
The feature is tested against all acceptance criteria in Chrome, Firefox, and Safari. -
Performance Analysis:
The feature does not regress in any category of the Lighthouse Analysis, except possibly »Performance«. -
Responsive Design:
The feature is fully responsive on all screens, from small smartphones to large 4K displays. -
Accessibility:
The feature is accessible and fully usable on all supported devices and screen sizes. -
Multilingual Support:
The feature is available in all supported languages (English, French, and German). Translations must be completed using DeepL. -
Tooltips:
All icons and toggle buttons include descriptive tooltips. -
Theme Compatibility:
The feature maintains visual consistency and usability across all available themes. -
Branch Integration:
The feature branch has been successfully merged with thestaging
branch. -
Merge Request:
A merge request to thestaging
branch has been created and clearly documented. -
Conflict Resolution:
The merge request has no conflicts and merges cleanly intostaging
. -
Peer Code Review:
The code has been reviewed and approved by at least one developer external to the original development team. -
Product Owner Approval:
The product owner has been assigned and has reviewed the merge request. -
Technical Debt Assessment:
Code quality and technical debt have been assessed with SonarQube. Ensure technical debt has not significantly increased due to recent commits.
AI-Enhanced Educational Interactions: Towards Next-Generation Learning
In 2024, we successfully built upon the robust foundation and widespread adoption of frag.jetzt as a premier interactive platform by leveraging cutting-edge AI technologies, including Retrieval-Augmented Generation (RAG) and advanced Large Language Models (LLMs). Our primary focus was integrating these technologies to transform frag.jetzt from a conventional interactive platform into a sophisticated intelligent assistant. We successfully facilitated deeply adaptive and individualized learning paths, significantly enhancing educational outcomes and accessibility on a global scale. Through these strategic innovations, frag.jetzt solidified its position at the forefront of intelligent educational technology.
Dual-Mode Learning Platform: The Evolution of frag.jetzt from ARS to PLE
In 2023, we set forth an ambitious plan to evolve frag.jetzt from its roots as a reliable Audience Response System (ARS) into an AI-supported Personal Learning Environment (PLE). Our goal was to attract a broader user base by offering customizable learning environments and seamless transitions between educator and learner roles. This transition significantly enriched user engagement, expanded our audience, and established a dynamic and diverse educational ecosystem.
Pioneering Audience Engagement through Interactive and Gamified Learning
In 2022, our goal with the innovative platform frag.jetzt was to lead the market of audience response systems specifically designed for educational environments. Our browser-based, GDPR-compliant Q&A platform leveraged gamified incentives, such as bonus points for quality questions, to foster interactive and anonymous participation. This unique approach significantly boosted classroom engagement, laying a strong foundation for future innovations and growth.
-
Glossary: PDF
-
Use Case Diagram: SVG
-
Domain Diagram: SVG
-
Activity Diagram for Bonus Awarding: SVG
-
Activity Diagram for Brainstorming: SVG
-
frag.jetzt Backend: Swagger
Issue | Possible Cause | Solution |
---|---|---|
Docker containers fail to start | Port conflicts with existing services | Check if ports 4200, 8080, or 27017 are already in use and stop those services |
Frontend compilation errors | Outdated Node.js version | Ensure you're using the recommended Node.js version (see Requirements section) |
Authentication fails in development | Email verification issues | Check Mailhog at localhost:8025 for verification emails |
Changes not reflecting in browser | Browser caching | Hard refresh (Ctrl+F5) or clear browser cache |
Database connection errors | PostgreSQL container not running | Run docker ps to check container status and restart if needed |
- Check the browser console (F12) for frontend errors
- Review Docker logs with
npm run docker
and selecting option 4 - For backend issues, check the Spring Boot logs in the terminal
- Enable verbose logging by setting
DEBUG=true
in your environment variables