bootstrap-academy / bootstrap-academy Goto Github PK
View Code? Open in Web Editor NEWHome Page: https://bootstrap.academy
License: Other
Home Page: https://bootstrap.academy
License: Other
For the sake of validation and credibility, users need a public profile that showcases their skills and associated time investments. This public profile should be easily accessible via a unique URL and should be linked through the QR code in the PDF, serving as proof of their skill levels.
This service is responsible for orchestrating the creation, deletion, and updating of public profiles. These profiles serve as a validation page for a user's skills and are linked via the QR code embedded in the PDF.
Morpheus
Chrome
Users are encountering difficulties when attempting to rate quiz questions. Specifically, they must either re-click on the quiz question or refresh the page to access the rating option. Additionally, if a question has a multitude of answers, reporting it becomes prohibitively expensive in terms of morphcoin. This issue can be circumvented if users are permitted to report questions prior to answering them.
Chrome
Profile: The course name overlaps with the skills in the skill points list.
Morpheus
Users need a tangible, professional document that encapsulates their skill levels and the corresponding time investments. This document should be easily shareable, and for validation purposes, it must contain a QR code linking to a public profile.
This service is tasked with generating a comprehensive PDF document of the user's profile. The PDF will detail the user's skills and the corresponding time investments, and it will include a QR code for validation purposes.
Data Retrieval: Interface with the User Profile Microservice to fetch the user's skill data and the associated time investment metrics.
PDF Creation: Develop a function to produce a polished, professional-grade PDF. The document should feature the platform's logo, the date of export, the user's public username, a list of skills, and the time investment for each skill. Optionally, based on user preferences, the PDF can also display the user's full name.
QR Code Generation: Implement a function to generate a unique QR code for each user. Scanning this QR code should direct the viewer to a page that validates the user's skills. This QR code must be incorporated into the generated PDF.
Download Function: Allow users to effortlessly download the crafted PDF by clicking on a "Download" button.
Performance: The process of PDF generation and download should be swift to ensure a fluid user experience.
Reliability: The generated PDF should be accurate, consistent, and free of errors.
Security: Given that the service handles sensitive user information, it's imperative to adhere to stringent security protocols to thwart unauthorized access.
Accurately retrieve and format all pertinent user profile data for the PDF.
Successfully generate a well-structured, professional-looking PDF that encompasses all relevant user details.
Each user should have a distinct QR code embedded in their PDF. This QR code should correctly point to the user's public profile page for validation.
Users should have the autonomy to decide which data (e.g., full name) they wish to include in the PDF.
The PDF must visibly display the platform logo and the precise date of export.
The process of creating the PDF should be efficient, and users should face no hindrances when downloading the PDF.
Subsequent discussions and approvals on this issue will pave the way for designers to draft the necessary mockups.
All interactions or modifications should be in line with the pre-established database schemas.
Morpheus
No response
Chrome
Our website facilitates user-generated quizzes and challenges. To maintain content quality, we allow users to report inappropriate or incorrect tasks. Admins then review these reports via the admin dashboard.
In the admin dashboard, under the "Reported Tasks" section, while I can view details about the report itself (Reported By, Reason, Comment, Reported At, Actions), the information about the task's creator (the user who was reported) is missing.
The creator of the reported task should be prominently displayed within the "Reported Tasks" section to identify the user in question.
Upon navigating to the details of a specific report, the information displayed seems incomplete and incorrect.
Currently, after taking action on a report (Correct/Incorrect), the report disappears from the dashboard, making it inaccessible for future reference.
Processed reports should not be deleted. Instead, they should be archived and displayed in a greyed-out format at the bottom of the "Reported Tasks" section. Admins should also have the option to filter and view either fresh reports or all reports, including the archived ones.
Chrome
There is a problem that existing quizzes are not displayed in the "Watch Courses" view under the "Quiz" tab. I will clarify this using the video below.
Note that the quiz shown in the video does not seem to exist anymore. For a different example, see issue #83 by @RLeo
Joshiy13
No response
Firefox, Chrome, Safari, Microsoft Edge
If you open the dropdown menu of the FAQ you can't close it again. Video showcasing the bug is linked below.
Fix and improve the user administration page on https://bootstrap-academy-admin.pages.dev/dashboard/users.
Currently it is only possible to search by email, not by username. There is also a bug which causes the same users to appear more than once when searching repeatedly using the same search term.
Replace the "load more" button with a pagination menu. Pagination works by splitting the list of users into smaller chunks (pages), all of the same size. For example, if the page size is 20, the first 20 users (user 1-20) are on the first page, user 21-40 on the second page, user 41-60 on the third, and so on. There should be a pagination menu, consisting of buttons to allow navigation between the different pages.
An example for a pagination menu:
It is already possible to filter the user list, to display for example only users with 2FA enabled, but the current implementation is very limiting, since it allows only one filter at once. This should be changed to allow more complex queries, for example to only display enabled user accounts, that also have admin privileges, but do not have 2FA enabled (this kind of query is not possible with the current implementation).
To provide users with an immediate visual representation of their progress and opportunities across different learning modes (courses, webinars, coachings, and tasks), the skill icons in both the root and sub-trees need to be enhanced. By doing so, users can quickly identify their current standing and what further actions they can take for each skill.
The skill icons in both the root tree and sub-trees will display four dots. Each dot represents one of the learning modes: courses, webinars, coachings, and tasks. The color of these dots will be determined by the user's interaction and availability in each respective learning mode.
Skill Icon Update: Each skill icon, located in the root or sub-tree, will feature four dots. These dots correspond to courses, webinars, coachings, and tasks.
Courses Dot Logic: If the user has unfinished courses related to a skill, the courses dot will adopt the appropriate color. If there are no ongoing courses for the user, the dot turns grey.
Webinar Dot Logic: If webinars are available for the user to enroll in (ones they haven't yet joined), the webinar dot assumes its specific color. Otherwise, it becomes grey.
Coaching Dot Logic: If coaching opportunities are available for the user, the coaching dot takes on its designated color. If no such opportunities exist, it should be grey.
Tasks Dot Logic: If there are tasks (like Quizzes or Challenges) available for the user, the tasks dot should show its assigned color. In the absence of available tasks, it becomes grey.
Performance:
Reliability: The color determination logic for the dots should be accurate, giving users a correct representation of their interactions and opportunities.
UI Consistency: The dots within the skill icons should maintain a consistent appearance and behavior throughout the platform.
Skill icons in both root and sub-trees should display four dots, each symbolizing courses, webinars, coachings, and tasks.
The courses dot's color should reflect the user's unfinished courses status. If none are ongoing, it should be grey.
The webinar dot should change its color based on available webinars for the user to enroll in. If none exist, it turns grey.
The coaching dot's color should indicate available coaching opportunities. If none are present, it becomes grey.
The tasks dot should change color based on available tasks for the user. If no tasks are present, it turns grey.
Add descriptions for skills and subskills.
7heProtagonist
There is a description at the "Sub Skill Information" with requirements, how/when I can make Webinars/Coachings.
We should have the same description for Quizzes.
Maybe the description should be a bit more precise too. Because i.e.:
Is "Web Developer" a Skill and "Html und Css" a Sub Skill?
But underneath "Web Developer" I can read, that I gathered "x/13 Skills". So x/13 Skills means actually "Sub Skills"?
Maybe we could also add a further Information, how I can gather enough XP to get the necessary Level. Because just marking the Videos of a Sub Skill with "als erledigt markieren" isnt (so far as I can see) enough for that.
DragonDev1906
Above a Video there are always the Video, Quiz and Challenge tabs, even if there is no Quiz or Challenge. This makes it a bit difficult to see at a glance whether there are Quizzes/Challenges.
It would be nice if the respective button is hidden (or disabled) and maybe even shows a number indicating how many Quizzes/Questions there are if it is > 0.
BromiesTM
This issue aims to improve the project by adding support for containerized development using Podman. Currently, the project uses a Node.js development environment, and this enhancement will allow developers to set up a development environment within a Podman container, improving isolation and reproducibility by providing a unified development environment.
The container can be controlled by a Makefile for easier management.
FROM node:18.18
ENV NODE_ENV=development
WORKDIR /app
CMD ["sleep", "infinity"]
IMAGE_NAME = node18-dev-env
CONTAINER_NAME = bootstrap-academy-frontend-dev
build:
podman build -t $(IMAGE_NAME) .
start: build
podman rm -f $(CONTAINER_NAME) || true
podman run -d --network=host -v .:/app:z --name $(CONTAINER_NAME) localhost/$(IMAGE_NAME):latest
run-dev: install
podman exec -it ${CONTAINER_NAME} /bin/bash -c "npm run dev"
install: start
podman exec -it ${CONTAINER_NAME} /bin/bash -c "npm install"
To diversify the learning experience on bootstrap.academy, we aim to introduce an interactive "matchings" exercise as an alternative to the traditional Multiple Choice Questions (MCQs). The functionality is already supported by the backend and can be implemented using the API.
To enhance user engagement and provide a tangible representation of progress, we aim to introduce a visual enhancement to the skill tree nodes. This visual representation will provide clear cues on the user's progress in each skill without relying on colors, which are already reserved for bookmarks.
Visually represent the user's progression in the skill tree for each node and sub-node without interfering with the existing skill tree structure or functionality.
Default State: Each skill and subskill node should have a regular icon with a single border, representing no XP gained or level 0.
Progressive States: As the user gains XP and progresses in levels, the node's visual representation should evolve based on the described levels (25, 42, and 50).
Flame Animation: Upon reaching Level 50, which is the maximum level, a subtle 2D burning flame effect should emerge behind the node and its borders. This flame should be colored identically to the borders and should symbolize the user's mastery over the skill.
Subtlety: The flame effect should be gentle and continuous, without being too animated or disturbing.
Responsive Design: Ensure that these visual modifications are adaptive and render correctly across varied screen sizes and devices. Additionally, conduct tests for appearance and animations across different browsers to ensure universal compatibility.
Performance Optimization:
The primary goal is to provide an engaging visual feedback mechanism without altering the core functionalities or the data structure of the skill tree.
All modifications should adhere to the current database schemas and the existing skill tree structure.
Change the german translations to consistently use the "Du-Form" instead of the "Sie-Form" (https://github.com/orgs/Bootstrap-Academy/discussions/39#discussioncomment-7219595).
On the profile page, when clicking on a course, redirect to the first video which has not yet been watched.
API endpoint to get the relevant video: GET /skills/courses/{course_id}/next_unseen
sensi
No response
No response
https://bootstrap-academy-frontend.pages.dev/
I hope I am posting this at the right place. If not, I am sorry ^^'
7heProtagonist
no response
No response
Should we change the Question "Wie würde man einen String erzeugen, der den Text Sie sagte: "Hallo!" enthält? text = ?" to something like "Wie würde man einen String in der Variable text erzeugen, der wie folgt lautet: Sie sagte: "Hallo!" ". Or something else, which makes the operated String clearer.
Or is the current formulation intentionally to be a bit more fuzzy and there is no bug?
Add meta tags so e.g. Discord will have embeds
Joshiy13
No response
No response
If you go to your profile page and you haven't watched any courses on that account, it shows empty boxes (Probably thumbsnails).
Remove the empty boxes/thumbsnails from the page if the user hasn't watched any videos yet.
JL97
No response
Chrome, Microsoft Edge
If you scroll down the Website having the Modal for an upcoming Event opened (using the Booking Button), the Footer overlaps the Modal at the Screen Width of >= 1440px.
Joshiy13
No response
No response
The top menu that is there on all the pages (Logo, Calendar, Skill tree, Profile picture etc.) is not on the leaderboard page.
For consistency it should probably be added.
Morpheus
Introduce a dynamic seasonal leaderboard system that tracks and showcases user XP over 3-month intervals, incentivizing top performers with badges and MorphCoin.
Seasonal Duration Configuration:
Leaderboard Display Enhancements:
Leaderboard Layout Adjustments:
Leaderboard Update Mechanism:
Season Transition Logic:
User Profile Integration:
Users should be able to seamlessly switch between the "Seasonal" and "All-time" leaderboards.
The leaderboard should consistently update in real-time, capturing the latest XP gains.
At the conclusion of every season, theleaderboard should reset, and top performers must be rewarded according to the specified criteria.
Each user's name on the leaderboard should serve as an interactive link, redirecting viewers to their individual profiles where comprehensive achievements, badges, and XP details are displayed.
The seasonal leaderboard, by default, should showcase XP earned during the current season, while the all-time leaderboard should reflect the total XP accumulated over time.
Users securing the top three positions on the overall seasonal leaderboard should receive their respective MorphCoin rewards automatically.
Users ranked first in both the overall and individual skill leaderboards should be awarded the designated badge for their achievement.
Morpheus
The goal is to enhance the admin dashboard by integrating a moderation system for reported matchings. This addition should blend seamlessly with the existing MCQ moderation process, ensuring a consistent and straightforward experience for admins.
Dashboard Interface:
Review & Action:
Design & Styling:
Admins can access the dashboard after logging in.
The dashboard should list all reported tasks for review.
Using the "view" function under the "Actions" column, admins should be able to delve into the details of a reported matching.
Post-review, admins should have clear options to "Approve", "Delete", "Edit", or "Ban User" based on their assessment. The actions should NOT be implemented anew, rather use existing implementations that are used for MCQs.
Lauritz
Microsoft Edge (Version 117.0)
To enhance user experience and provide tangible metrics for their skill levels, we aim to convert user skill levels into an estimated time investment. This would allow users to visualize their proficiency in terms of time spent, which can be invaluable for job applications or personal progress tracking.
Joshiy13
No response
Chrome, Safari
If you press on your profile and then press on the menu on the side, the menu on the side gets overlayed by the menu of the profile. I have only been able to test this on safari and chrome, but I‘m pretty sure it will happen on any mobile device.
There is not enough space on some mobile screens
Making the profile menu close when pressing on another menu would fix this issue.
Joshiy13
No response
No response
The "Mehr folgt bald" or "More coming soon" button on https://bootstrap.academy/morphcoins is not clickable/does nothing.
Video linked below.
Make it not be a clickable button anymore if it does nothing.
Morpheus
Chrome
Issue with Job Details Text Wrapping
In the Job Details section, the text wrapping of the descriptions is not functioning correctly. The text breaks in the middle of words.
I would expect the text to wrap after a word, similar to how it functions on https://bootstrap.academy/morphcoins.
Error URL: https://bootstrap.academy/jobs/f6dd7748-38e5-4792-b762-2df57005a1f9
Forest
Chrome
I created an account and was redirected to the E-Mail confirmation page to enter the token.
After clicking on back i am suddently loggedin and beeing able to change my account details.
Tried to add my VAT Id and there is an small icon:
DragonDev1906
No response
Other (please specify below)
Browser: Brave Version 1.58.137 Chromium: 117.0.5938.153 (Official Build) (64-bit)
I just created an account on https://bootstrap.academy/auth/signup and after clicking the create account button ("Account Erdstellen") it briefly turned into a loading icon but afterwards it just turned back to its original form, as if something went wrong.
I don't have a recording or console logs of the first attempt, but when trying a second time I'm getting a 409 (Conflict) error in the console. Apparently the account creation was successful but a lack of indication or redirect made this difficult to tell.
For a normal user this is (probably) confusing and it isn't clear where to go next (I was logged in automatically, so manually going to the profile page worked.
It looks identical, regardless of whether the account creation was successful or returned an error (besides the error in the dev-console).
Change the author
attribute in courses to a list of author objects to allow more than one author. An author object always contains at least a name
field (which corresponds to the name displayed in the frontend) and optionally a url
field to link to an external resource.
authors: [{"name": "Foo"}, {"name": "Bar", "url: "https://github.com/Bar"}, {"name": "Baz", "url": "https://youtube.com/@Baz"}]
display Created by Foo, Bar and Baz
).url
of this author. In the above example, clicking on "Bar" should redirect to https://github.com/Bar
and clicking on "Baz" should redirect to https://youtube.com/@Baz
.Morpheus
Firefox, Chrome, Safari, Microsoft Edge
Months are not translated in the profile page https://bootstrap.academy/profile
maximgofman
Title for the Landing Page Instead of "bootstrap.academy > Bootstrap Academy"
Morpheus
To democratize content creation on bootstrap.academy, we aim to enable users (meeting the level requirement) to craft matchings for specific lectures or skills. This feature would be in line with the existing ability to create Multiple Choice Questions. The backend APIs are already in place for this.
Creation Interface:
Database Integration:
Design & Styling:
Upon navigating to a particular lecture or skill, users should find and be able to click the "Create Task" button.
Within the "Create Task" options, users should spot and be able to select the "Matching" option.
A user-friendly interface should allow users to input items and their corresponding matches for the matching exercise.
Post the addition of all required pairs, users should have a clear method to submit the matching.
Once submitted, the database should store the matching, making it accessible for the wider user base to engage with and solve.
Firefox, Chrome
The calendar does not display weekdays as shown in the picture. Instead, it just displays "Day" – even though it should show Monday through Sunday. This issue arises when the browser width is too narrow to display the content adequately. The font size should be adjusted accordingly.
This service is responsible for converting the skill level of the user into an estimated time investment for each skill.
DragonDev1906
No response
Firefox, Other (please specify below)
Firefox:
Warnung für quellübergreifende (Cross-Origin) Anfrage: Die Gleiche-Quelle-Regel wird das Lesen der externen Ressource auf https://api.bootstrap.academy/shop/premium/94f1ad92-99ec-4572-8954-61792ea75f80 bald verbieten. (Grund: Wenn 'Access-Control-Allow-Headers' den Wert '*' hat, wird die 'Authorization'-Kopfzeile nicht eingeschlossen. Um die 'Authorization'-Kopfzeile einzuschließen, muss sie explizit in der CORS-Kopfzeile 'Access-Control-Allow-Headers' aufgeführt werden).
As far as I know this is not a problem, yet, but will likely result in the API requests and thus the entire website might not be working once this change is implemented in the respective browsers.
To facilitate users in their learning journey, we aim to introduce a bookmarking feature for skills and subskills within the Skilltree. This feature would enable users to prioritize specific skills and revisit them with ease.
DragonDev1906
No response
Other (please specify below)
Browser: Brave Version 1.58.137 Chromium: 117.0.5938.153 (Official Build) (64-bit)
When clicking the profile icon (top right, blue/white circle) the navigation dropdown is not visible. The same happens on smaller screens with the burger menu.
Note that there are other things that don't work correctly or differ between the two browsers:
Bestätige deine E-Mail-Adresse, um auf die Bestenliste zuzugreifen
when visiting the leader-board, Brave does not.Firefox: Shows dropdown with 6 entries on click
Brave: Nothing visible happens but a new element is created in the DOM (see screenshots)
Both browsers should display the dropdown, without it navigating the site becomes difficult.
Left: Brave
Right: Firefox
Currently only the frontend is aware of the language and timezone of the user. The problem here is that sometimes the backend also needs to know this information, for example in emails (at the moment emails are always in german and timestamps in emails are always in utc, which confuses some users).
The user should be able to configure their preferred language and timezone in their account settings. When sending an email, the backend should use the configured language and timezone. When creating an account, the language and timezone are automatically set to the values known to the browser.
Europe/Berlin
.Some of the self-hosted videos don't seem to work properly in all browsers. Maybe this has been fixed lately by converting all videos to h264, but this definetly needs more testing and debugging.
This is a list of courses which contain self-hosted videos:
For everyone who has intel on this issue - if it works or if the issue persists, please comment down below, so we can gather more info on what this is all about. We can award you for that with small amounts of MorphCoin and can get a better grasp on the problem.
Currently we are using Gravatar to allow users to set a profile picture / avatar. The aim of this ticket is to allow users to upload their desired avatar directly in their profile settings. The image is then uploaded and stored on the server and can be retrieved by anyone using the id of the corresponding user. Only the last uploaded image is stored on the server, so if a user uploads a new avatar, the old one is deleted from the server. If a user has not uploaded a profile picture or has deleted a previously uploaded one, then a default profile picture based on the user id is generated locally in the frontend (for example by using something like jdenticon).
Webinar entries in the calendar are currently lacking a lot of information (even the description is not displayed). When clicking on the event summary on the bottom right of the page under "Upcoming Events", a dialog should open which contains all relevant information about the webinar.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.