Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
527 commits
Select commit Hold shift + click to select a range
8bb4407
Implemented logging for 'View textual explanation of a recommended Co…
Nourhanbd Feb 13, 2025
30fc43c
Implemented logging for viewing full article from different KG levels
Nourhanbd Feb 14, 2025
ebe3857
Implemented logging for accessing the course KG
Nourhanbd Feb 15, 2025
7503cc2
Implemented logging for accessing material KG
Nourhanbd Feb 15, 2025
3f57a7d
edited the extension for the activity "User accessed the material KG"
Nourhanbd Feb 15, 2025
67cf058
Implemented logging for accessing the slide KG
Nourhanbd Feb 15, 2025
b2f5782
Implemented logging for viewing a concept from course or material KG
Nourhanbd Feb 16, 2025
5ab274d
Implemented logging for finalizing the material KG (It doesn't work)
Nourhanbd Feb 16, 2025
460350a
improved the generator
Nourhanbd Feb 16, 2025
2365e28
Improved verbs related to view more/less.
Nourhanbd Feb 16, 2025
b6a0ddb
Fix: Include missing implementation for the activity "User viewed Mai…
Nourhanbd Feb 16, 2025
c42ba04
Implemented activities logging related to Material KG
Nourhanbd Feb 17, 2025
55a637b
Implemented logging for adding/deleting a concept from the material K…
Nourhanbd Feb 17, 2025
9656b5a
Bump @babel/core from 7.26.8 to 7.26.9 in /webserver
dependabot[bot] Feb 17, 2025
c7a2d77
Bump mongoose from 8.10.0 to 8.10.1 in /webserver
dependabot[bot] Feb 17, 2025
64169de
Bump nginxinc/nginx-unprivileged in /webapp
dependabot[bot] Feb 17, 2025
90b364e
Bump @types/jasmine from 5.1.5 to 5.1.6 in /webapp
dependabot[bot] Feb 14, 2025
8f742ad
Bump neo4j-driver from 5.28.0 to 5.28.1 in /webserver
dependabot[bot] Feb 13, 2025
358f3d7
Bump nginxinc/nginx-unprivileged in /proxy
dependabot[bot] Feb 17, 2025
67cc3bf
Fix: Include missing data for the activity "User viewed concept from …
Nourhanbd Feb 18, 2025
5e3df5f
Prepared the logging for an activity
Nourhanbd Feb 18, 2025
acf329b
implemented the logging for marking a main/ recommended concept as ne…
Nourhanbd Feb 18, 2025
83b3041
fixed the logging implementation of the activity "User viewed a recom…
Nourhanbd Feb 19, 2025
851f9f2
Refactored logging for the activity "User viewed all notifications".
Nourhanbd Feb 19, 2025
46e8132
enhanced the logging by adding an annotation
Nourhanbd Feb 20, 2025
e6be7a3
Implemented the logging for the activity "User replied to a user"
Nourhanbd Feb 22, 2025
bd3b8f2
deactivation of factor and calculation of percentage
Boby024 Feb 22, 2025
d243e47
Implemented the logging for the activity "User hid/unhid annotations …
Nourhanbd Feb 22, 2025
28687b8
Implemented the logging for PDF related activities
Nourhanbd Feb 22, 2025
c191881
small changes
Nourhanbd Feb 23, 2025
71d0c4d
Implemented the logging for the activity "User filtered annotations i…
Nourhanbd Feb 23, 2025
9fbe762
Updated the object name of an activity
Nourhanbd Feb 25, 2025
543e50d
Added a middleware to log an activity
Nourhanbd Feb 25, 2025
29a3794
Finalized the activity "User viewed all notifications"
Nourhanbd Feb 25, 2025
b2dd88b
Finalized two activities
Nourhanbd Feb 25, 2025
254008e
textual changes
qurat08 Feb 25, 2025
4b95c85
Merge branch 'william-recommendations' of https://github.com/ude-soco…
qurat08 Feb 25, 2025
64934da
finalized the notification panel-related activities
Nourhanbd Feb 25, 2025
48b904a
fixed a bug in hiding annotations from a material
Nourhanbd Feb 25, 2025
6be9a95
Removed console logs
Nourhanbd Feb 25, 2025
b76564e
Finalized the logging of the annotations section
Nourhanbd Feb 25, 2025
8607350
Finalized accessing Knowledge Graph
Nourhanbd Feb 26, 2025
8ca6584
Verified the logging of sharing a course
Nourhanbd Feb 26, 2025
920d2ce
finalized the material section
Nourhanbd Feb 26, 2025
5750342
Fixed a bug related to material type
Nourhanbd Feb 26, 2025
1393309
finalized the material KG part
Nourhanbd Feb 26, 2025
fd8815a
Bump axios from 1.7.9 to 1.8.0 in /webserver
dependabot[bot] Feb 26, 2025
00eaeed
Bump mongoose from 8.10.1 to 8.10.2 in /webserver
dependabot[bot] Feb 26, 2025
9f095d8
Bump rxjs from 7.8.1 to 7.8.2 in /webapp
dependabot[bot] Feb 24, 2025
09e64c6
Bump @types/jasmine from 5.1.6 to 5.1.7 in /webapp
dependabot[bot] Feb 24, 2025
027a77d
Bump postcss from 8.5.2 to 8.5.3 in /webapp
dependabot[bot] Feb 20, 2025
ffff1f9
Bump @types/node from 22.13.1 to 22.13.5 in /webapp
dependabot[bot] Feb 24, 2025
2dc7990
Finalized the logging of CourseKg section
Nourhanbd Feb 26, 2025
8b0f0f9
Updated the objects of activities in Material Kg
Nourhanbd Feb 26, 2025
dd400f7
updated the error sections of the loggers
Nourhanbd Feb 26, 2025
0b4e4bb
Finalized the logging of Dashboard activities
Nourhanbd Feb 26, 2025
660e298
finalized the Indicators section of all type Dashboards
Nourhanbd Feb 26, 2025
ba4a353
finalized the logging for the tags-related activities
Nourhanbd Feb 26, 2025
070d198
Fixed the problem with concept type from the materials part.
Nourhanbd Feb 27, 2025
b59d9bd
Added materialPage to the data sent while logging the slideKg-related…
Nourhanbd Feb 28, 2025
1cad354
updated the objectType in annotation part
Nourhanbd Feb 28, 2025
4f5068d
updated the API endpoints for some related activities in recommended …
Nourhanbd Feb 28, 2025
cd74d62
Finalized the logging of the slide KG part.
Nourhanbd Feb 28, 2025
8a60ced
Bump mongoose from 8.10.2 to 8.11.0 in /webserver
dependabot[bot] Feb 27, 2025
c417b1d
Bump axios from 1.8.0 to 1.8.1 in /webserver
dependabot[bot] Feb 27, 2025
133fa9c
Updated the config file.
Nourhanbd Feb 28, 2025
211da16
finalized the activity "User replied to a user"
Nourhanbd Feb 28, 2025
ba43e9d
Finalized the notification related activities
Nourhanbd Feb 28, 2025
af48931
Bump mongoose from 8.11.0 to 8.12.0 in /webserver
dependabot[bot] Mar 4, 2025
0162529
Bump @types/node from 22.13.5 to 22.13.8 in /webapp
dependabot[bot] Mar 3, 2025
57a1bb7
Bump bcryptjs from 2.4.3 to 3.0.2 in /webserver
dependabot[bot] Feb 28, 2025
1e97612
solve edit and cancel
rawaa123 Mar 5, 2025
1983c66
Merge pull request #1462 from ude-soco/1300-ui-changes-in-add-a-new-c…
rawaa123 Mar 5, 2025
20e6115
Bump mongoose from 8.12.0 to 8.12.1 in /webserver
dependabot[bot] Mar 5, 2025
77d848a
Bump @types/node from 22.13.8 to 22.13.9 in /webapp
dependabot[bot] Mar 4, 2025
5247c69
Bump @babel/preset-env from 7.26.8 to 7.26.9 in /webserver
dependabot[bot] Mar 4, 2025
fb2e2bf
Bump axios from 1.8.1 to 1.8.2 in /webserver
dependabot[bot] Mar 7, 2025
7b8d26d
Bump autoprefixer from 10.4.20 to 10.4.21 in /webapp
dependabot[bot] Mar 10, 2025
fccd4b3
Bump @types/node from 22.13.9 to 22.13.10 in /webapp
dependabot[bot] Mar 10, 2025
b9c5181
UI changes in: Add a new concept or Edit a main concept
rawaa123 Mar 12, 2025
bdd85e4
Merge pull request #1471 from ude-soco/1299-changing-colors-of-the-ed…
rawaa123 Mar 12, 2025
08ac6aa
Bump axios from 1.8.2 to 1.8.3 in /webserver
dependabot[bot] Mar 12, 2025
d84fd74
Bump @babel/core from 7.26.9 to 7.26.10 in /webserver
dependabot[bot] Mar 12, 2025
17da4b3
Selected node should appear with a border color.
rawaa123 Mar 13, 2025
95c9bdb
Merge pull request #1472 from ude-soco/1298-selected-and-the-last-edi…
rawaa123 Mar 13, 2025
98abe1a
Selected and the last edited node in material KG should appear highli…
rawaa123 Mar 14, 2025
7b34940
Merge pull request #1473 from ude-soco/1298-selected-and-the-last-edi…
rawaa123 Mar 14, 2025
0edff4e
Edit course page #1258
rawaa123 Mar 15, 2025
5f055a0
Merge pull request #1474 from ude-soco/1258-edit-course-page
rawaa123 Mar 15, 2025
f21f3ad
Teacher must be able to upload/update the picture of the course #1107
rawaa123 Mar 15, 2025
942df14
Merge pull request #1475 from ude-soco/1107-teacher-must-be-able-to-u…
rawaa123 Mar 15, 2025
74a18cd
removed console logs
Nourhanbd Mar 15, 2025
f5e8797
finalized the logging of the annotation section
Nourhanbd Mar 15, 2025
a020738
added comment in the comment generator section to be considered
Nourhanbd Mar 15, 2025
342fca0
finalized the logging of the channel section
Nourhanbd Mar 15, 2025
629f506
finalized the logging of the course section
Nourhanbd Mar 15, 2025
c095345
finalized the controller of the Knowledge Graph section
Nourhanbd Mar 15, 2025
f603e52
finalized the logging of the knowledge Graph section
Nourhanbd Mar 15, 2025
ce12315
finalized the logging of the notifications section
Nourhanbd Mar 15, 2025
4b9a4b6
finalized the logging of the reply- related activities
Nourhanbd Mar 15, 2025
7f22696
finalized the logging of the material section
Nourhanbd Mar 15, 2025
2324c3c
finalized the logging of the tag section
Nourhanbd Mar 15, 2025
8c01a50
finalized the logging of the topic section
Nourhanbd Mar 15, 2025
822843e
finalized the logging of the personal indicator related activities
Nourhanbd Mar 15, 2025
2a5e046
deleted unuseful Logger
Nourhanbd Mar 15, 2025
9d66701
fix click on 'dont show this again' the pdf and video uploading butto…
rawaa123 Mar 16, 2025
2f13b54
- Textual UI changes for kg generation
mohabdelmagied Mar 17, 2025
6396266
Merge pull request #1478 from ude-soco/1292-textual-ui-changes
mohabdelmagied Mar 17, 2025
b11ebfc
- Fixes for #1292 and #1293
mohabdelmagied Mar 17, 2025
f94cf41
- button alignment
mohabdelmagied Mar 17, 2025
3526f9a
Merge pull request #1480 from ude-soco/#1293-concept-editing-success-…
mohabdelmagied Mar 17, 2025
27aa976
Bump axios from 1.8.3 to 1.8.4 in /webserver
dependabot[bot] Mar 20, 2025
8fa9305
Main concpets from the slides do not appear after clicking on DNU button
rawaa123 Mar 20, 2025
7f0278a
Merge pull request #1484 from ude-soco/1483-main-concpets-from-the-sl…
rawaa123 Mar 20, 2025
9010eec
edit course page
rawaa123 Mar 21, 2025
cc1f63c
Merge pull request #1489 from ude-soco/1258-edit-course-page
rawaa123 Mar 21, 2025
7b95ec9
Slides text and preview
rawaa123 Mar 22, 2025
f0ba65a
Merge pull request #1491 from ude-soco/1300-ui-changes-in-add-a-new-c…
rawaa123 Mar 22, 2025
360385f
mark 'a newly added' or 'edited concept' as not relevant, its not tur…
rawaa123 Mar 24, 2025
99586e5
Bump @babel/cli from 7.26.4 to 7.27.0 in /webserver
dependabot[bot] Mar 25, 2025
103ace6
Bump mongoose from 8.12.1 to 8.13.0 in /webserver
dependabot[bot] Mar 25, 2025
02bef92
Bump @types/node from 22.13.10 to 22.13.13 in /webapp
dependabot[bot] Mar 25, 2025
f7ab0ad
fix placement of the delete button+ evert back to new' the button doe…
rawaa123 Mar 25, 2025
76ac03f
Merge pull request #1497 from ude-soco/1295-selection-of-multiple-mai…
rawaa123 Mar 25, 2025
140f996
fix redirection problem
rawaa123 Mar 25, 2025
9d67877
fix KG icon with the learning material name to guide the teacher
rawaa123 Mar 25, 2025
fb9ec38
delete the file
rawaa123 Mar 25, 2025
b612ec6
random imgs file
rawaa123 Mar 25, 2025
872d749
fix course creation on dev
rawaa123 Mar 25, 2025
f8a4e12
fix course creation on dev1
rawaa123 Mar 25, 2025
5e353d6
checking images directory
rawaa123 Mar 26, 2025
50b27f0
Bump multer from 1.4.5-lts.1 to 1.4.5-lts.2 in /webserver
dependabot[bot] Mar 25, 2025
956e600
Clean up /webserver/public/uploads
ralf-berger Mar 26, 2025
b1cbd73
Add /webserver/public/uploads/images storage location
ralf-berger Mar 26, 2025
d59dfc3
fix random imgs issue
rawaa123 Mar 26, 2025
27f5c62
Add randomImgs files to webserver container image
ralf-berger Mar 26, 2025
c16abfc
issues (1, 2 and 3) fixed
Boby024 Mar 26, 2025
642ad59
Merge branch 'william-recommendations' of https://github.com/ude-soco…
Boby024 Mar 26, 2025
1f79acf
Bump @types/node from 22.13.13 to 22.13.14 in /webapp
dependabot[bot] Mar 27, 2025
6dba8c8
Format/clean up code
ralf-berger Mar 27, 2025
3afcfd4
Format/clean up code
ralf-berger Mar 27, 2025
01c9dc6
Format/clean up code
ralf-berger Mar 27, 2025
b51194d
Format/clean up code
ralf-berger Mar 27, 2025
52c9f3f
Format/clean up code
ralf-berger Mar 27, 2025
71b467c
Format/clean up code
ralf-berger Mar 27, 2025
8a0c4f9
Revert "Format/clean up code"
ralf-berger Mar 27, 2025
9c00d72
Edit course page #1258
rawaa123 Mar 29, 2025
36855cb
Renaming a course, removes the course picture #1507
rawaa123 Mar 29, 2025
8a84a77
'Course Description' formatting issue #1508
rawaa123 Mar 29, 2025
5bbbf39
KG Creation: Adding a new concept without slide selection #1509
rawaa123 Apr 1, 2025
c137c9a
clicking on eye icon in slide preview does not show slide preview #1300
rawaa123 Apr 1, 2025
1a9c6e2
Changes in privacy policy and addressign youtube API violations
qurat08 Apr 1, 2025
fb0828f
Merge branch 'dev' of https://github.com/ude-soco/CourseMapper-webser…
qurat08 Apr 1, 2025
e96095b
Bump @types/node from 22.13.14 to 22.13.15 in /webapp
dependabot[bot] Apr 1, 2025
2b7a993
Bump mongoose from 8.13.0 to 8.13.1 in /webserver
dependabot[bot] Mar 31, 2025
bce68b0
Textual and UI changes in material KG generation #1292
rawaa123 Apr 1, 2025
0f39b12
add hover to the closing button
rawaa123 Apr 1, 2025
0232cf2
issues (1389 and 1388) fixed
Boby024 Apr 1, 2025
f5c5c98
UI changes needed in 'Expand and Publish' the material KG #1294
rawaa123 Apr 2, 2025
5853f7d
Success messages missing when material KG is being edited #1293
rawaa123 Apr 2, 2025
937c235
Popup to prompt KG generation needed for PDF materials only #1514
rawaa123 Apr 2, 2025
49cfb44
adding missing files videos and images with ignore
rawaa123 Apr 2, 2025
e85b9de
Merge branch 'dev' into feature/1333-enhancing-xapi-based-data-collec…
shoebjoarder Apr 2, 2025
ab240ae
Textual and UI changes in material KG generation #1292 + Course Descr…
rawaa123 Apr 3, 2025
6253b1e
Bump @types/node from 22.13.15 to 22.14.0 in /webapp
dependabot[bot] Apr 3, 2025
15fbffd
Bump mongoose from 8.13.1 to 8.13.2 in /webserver
dependabot[bot] Apr 4, 2025
d371fd1
Merge branch 'dev' into feature/1333-enhancing-xapi-based-data-collec…
shoebjoarder Apr 8, 2025
0847845
edit course page #1258
rawaa123 Apr 8, 2025
0b46c0c
Merge remote-tracking branch 'origin/feature/1333-enhancing-xapi-base…
rawaa123 Apr 8, 2025
ba97d92
Merge branch 'main' into william-recommendations
Boby024 Apr 8, 2025
375ab30
fix showDialg doesn't disappear when don't show again is clicked
rawaa123 Apr 8, 2025
79d8d75
Increase webserver-web memory limit
ralf-berger Apr 9, 2025
543401b
Merge branch 'main' into dev
rawaa123 Apr 9, 2025
5c36abc
Temp fix disable direction
shoebjoarder Apr 10, 2025
f39405a
Increase webserver-web resource limits
ralf-berger Apr 10, 2025
edaedfb
Temp fix disable redirection 2
shoebjoarder Apr 10, 2025
4fd6dcc
Do not recycle transaction in get_or_create_resoures_relationships
jeanqussa Apr 29, 2025
b8fe8c3
Merge pull request #1557 from ude-soco/dev-recommendation-possible-fix
rawaa123 Apr 30, 2025
4bbf743
Bump nginxinc/nginx-unprivileged in /webapp
dependabot[bot] Apr 28, 2025
014ae45
Bump nginxinc/nginx-unprivileged in /proxy
dependabot[bot] Apr 28, 2025
21aeeda
Merge branch 'main' into dev
ralf-berger Apr 30, 2025
98719bc
fitting space of cro with knowledgeGraph
Boby024 May 15, 2025
73e80f8
Bump node from 22-slim to 24-slim in /webserver
dependabot[bot] May 19, 2025
1e3a9db
Bump node from 22-slim to 24-slim in /webapp
dependabot[bot] May 19, 2025
7b2779a
Merge branch 'dev' into william-recommendations
Boby024 May 21, 2025
be424d9
remove pdf folder
Boby024 May 21, 2025
0e16428
Increase resource limits according to observed usage
ralf-berger May 22, 2025
4e984ba
Configure Node runtime according to Pod memory limit
ralf-berger May 26, 2025
de11d4a
Fix/refactor Docker build
ralf-berger May 26, 2025
574734b
Merge branch 'main' into dev
ralf-berger May 26, 2025
4c87fb6
Do not cache Pip download
ralf-berger May 26, 2025
9e6d273
Fix Makefile inconsistency
ralf-berger May 27, 2025
a60c832
Improve Docker version compatibility
ralf-berger May 28, 2025
656613a
Feature/1333 enhancing xapi based data collection (#1597)
shoebjoarder Jun 2, 2025
2a4b567
refactored the frontend and backend node.js code in landing Page, Hom…
rawaa123 Jun 2, 2025
778eecf
Fix .gitignore pattern for uploads
ralf-berger Jun 2, 2025
304bde2
issues 1,2,3,4,5 and 6 fixed
Boby024 Jul 8, 2025
ef3ca28
Update ArgoCD host name
ralf-berger Jul 10, 2025
ca75bc7
Bump nginxinc/nginx-unprivileged in /proxy
dependabot[bot] Jun 30, 2025
01d58e1
Bump nginxinc/nginx-unprivileged in /webapp
dependabot[bot] Jun 30, 2025
c622d2b
Increase timeoutSeconds for webserver/web livenessProbe
ralf-berger Jul 18, 2025
3bf0576
features fixed or added: rating, filtering, url parsing
Boby024 Jul 18, 2025
31f8815
features fixed or added: rating, filtering, url parsing v2
Boby024 Jul 18, 2025
3b878cb
Merge branch 'dev' into william-recommendations
Boby024 Jul 18, 2025
5c93e7b
Increase timeoutSeconds for webserver/web livenessProbe (2)
ralf-berger Jul 19, 2025
200edb1
Disable webserver/web livenessProbe
ralf-berger Jul 19, 2025
b9f0f86
Increase memory limit for webserver/web
ralf-berger Jul 21, 2025
6384cd0
Revert "Disable webserver/web livenessProbe"
ralf-berger Jul 21, 2025
7647b1a
Fix Kustomize deprecations
ralf-berger Jul 21, 2025
7a154f5
Remove outdated Traefik middleware
ralf-berger Jul 21, 2025
8cc3fa2
Fix Kustomize deprecations (2)
ralf-berger Jul 21, 2025
5682f90
Update badges in README
ralf-berger Jul 21, 2025
9aaf0c4
Merge pull request #1653 from ude-soco/1652-webserverweb-liveness-pro…
rawaa123 Jul 21, 2025
daa6826
update wikipedia url+ footer
rawaa123 Jul 21, 2025
f6fdf89
Fix indentation
ralf-berger Jul 21, 2025
614168a
Pass memory limit to Node.js in MiB
ralf-berger Jul 21, 2025
3256da0
Increase memory limit for webserver/web
ralf-berger Jul 21, 2025
a97715f
Leave memory buffer for Node.js overhead
ralf-berger Jul 21, 2025
81a4455
Increase memory limit for webserver/web
ralf-berger Jul 22, 2025
c3311a7
Adjust MongoDB CPU resources
ralf-berger Jul 22, 2025
24baa90
Add dbpedia-spotlight configMap
ralf-berger Jul 18, 2025
e5308ef
Remove hardcoded DBPEDIA_SPOTLIGHT_URL fallback value
ralf-berger Jul 18, 2025
802d381
Add DBPEDIA_SPOTLIGHT_URL to example.env
ralf-berger Jul 18, 2025
60164c1
Add DBPEDIA_SPOTLIGHT_URL env var to Compose config
ralf-berger Jul 18, 2025
e14b994
Adjust MongoDB CPU resources (2)
ralf-berger Jul 23, 2025
0f01a29
Merge pull request #1655 from ude-soco/1648-dbpedia-spotlight-url
rawaa123 Jul 29, 2025
ebb1b59
KG generation UI fixed
Boby024 Jul 29, 2025
703e1bd
Merge branch 'dev' into william-recommendations
Boby024 Jul 29, 2025
ec379fd
Problem with material pdf is not shown #1674
rawaa123 Aug 2, 2025
e1719eb
fix bug Problem with material pdf is not shown #1674
rawaa123 Aug 4, 2025
66ad3f7
starter tab and filtering fixed
Boby024 Aug 5, 2025
a066803
Merge branch 'dev' into william-recommendations
Boby024 Aug 5, 2025
096cc1e
fix deployement issue, filtering removed by tab saved and decreasing …
Boby024 Aug 8, 2025
859a305
crawling number reduced
Boby024 Aug 8, 2025
34b3221
textual change in recommendation
qurat08 Aug 8, 2025
3590dee
sidebar.component.css exceeded maximum budget.
rawaa123 Aug 9, 2025
175489b
Merge pull request #1680 from ude-soco/william-recommendations
rawaa123 Aug 9, 2025
43b537e
Bump nginxinc/nginx-unprivileged in /proxy
dependabot[bot] Aug 25, 2025
75a511b
hide recommended concept tab
rawaa123 Aug 25, 2025
322d644
Update package installation to Debian Bookworm
ralf-berger Aug 26, 2025
f0a31a0
Update package installation to Debian Bookworm
ralf-berger Aug 26, 2025
e35ebf1
Merge pull request #1689 from ude-soco/hide-recommended-concept-tab
rawaa123 Aug 27, 2025
63591bd
William recommendations (#1692)
rawaa123 Aug 28, 2025
4b97a54
Update youtube_service.py (#1696)
qurat08 Sep 1, 2025
508ee8c
fix divide-by-zero error (#1701)
rawaa123 Sep 10, 2025
be368af
Bump nginxinc/nginx-unprivileged in /proxy
dependabot[bot] Dec 8, 2025
2784a8e
Bump nginxinc/nginx-unprivileged in /webapp
dependabot[bot] Dec 8, 2025
1f5b060
Bump actions/checkout from 4 to 6
dependabot[bot] Nov 24, 2025
2e9eb15
Update dbpedia-spotlight DNS and URL APIs
rawaa123 Apr 21, 2026
1343bc7
revert back DNS+session.execute_write
rawaa123 Apr 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .env.dist
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Use the Official DBpedia Spotlight API ...
DBPEDIA_SPOTLIGHT_URL="https://api.dbpedia-spotlight.org/en/annotate"

# ... or a custom DBpedia Spotlight API endpoint
#DBPEDIA_SPOTLIGHT_URL="https://example.org/rest/annotate"
Comment on lines +2 to +5
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

Remove quotes to satisfy dotenv linters and avoid accidental quoting at runtime

Most dotenv parsers (including python-dotenv) treat surrounding quotes as part of the value, so the URL may become "https://api.dbpedia-spotlight.org/en/annotate" (quotes included) and HTTP clients will choke.
The static-analysis warning flags exactly that.

-DBPEDIA_SPOTLIGHT_URL="https://api.dbpedia-spotlight.org/en/annotate"
+# Do **not** wrap values in quotes – they will be interpreted literally
+DBPEDIA_SPOTLIGHT_URL=https://api.dbpedia-spotlight.org/en/annotate
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
DBPEDIA_SPOTLIGHT_URL="https://api.dbpedia-spotlight.org/en/annotate"
# ... or a custom DBpedia Spotlight API endpoint
#DBPEDIA_SPOTLIGHT_URL="https://example.org/rest/annotate"
# Do **not** wrap values in quotes – they will be interpreted literally
DBPEDIA_SPOTLIGHT_URL=https://api.dbpedia-spotlight.org/en/annotate
# ... or a custom DBpedia Spotlight API endpoint
#DBPEDIA_SPOTLIGHT_URL="https://example.org/rest/annotate"
🧰 Tools
🪛 dotenv-linter (3.3.0)

[warning] 2-2: [QuoteCharacter] The value has quote characters (', ")

🤖 Prompt for AI Agents
In the .env.dist file around lines 2 to 5, remove the surrounding double quotes
from the DBPEDIA_SPOTLIGHT_URL value to prevent dotenv parsers from including
the quotes as part of the URL string. This will ensure the URL is correctly
interpreted at runtime and avoid issues with HTTP clients failing due to
malformed URLs.

2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: Set up QEMU
uses: docker/setup-qemu-action@v3
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify that v6 exists and retrieve the exact commit SHA to pin.
# Read-only commands only.

set -euo pipefail

echo "Latest checkout tags (top 20):"
curl -fsSL "https://api.github.com/repos/actions/checkout/tags?per_page=20" | jq -r '.[].name'

echo
echo "Resolve v6 to commit SHA:"
curl -fsSL "https://api.github.com/repos/actions/checkout/git/ref/tags/v6" | jq -r '.object.sha'

Repository: ude-soco/CourseMapper-webserver

Length of output: 172


🏁 Script executed:

#!/bin/bash

# Check if the workflow file exists and examine line 14 and surrounding context
if [ -f ".github/workflows/release.yml" ]; then
  echo "=== Workflow file found ==="
  echo "Lines 1-20 of .github/workflows/release.yml:"
  head -20 ".github/workflows/release.yml" | cat -n
  echo
  echo "=== Full file (checking for permissions declarations) ==="
  cat ".github/workflows/release.yml"
else
  echo "Workflow file not found at .github/workflows/release.yml"
  # List what's in .github/workflows if it exists
  if [ -d ".github/workflows" ]; then
    echo "Contents of .github/workflows/:"
    ls -la ".github/workflows/"
  fi
fi

Repository: ude-soco/CourseMapper-webserver

Length of output: 1626


🌐 Web query:

actions/checkout v6 GitHub Actions tag

💡 Result:

The GitHub Actions actions/checkout v6 tag refers to the major version 6 of the official checkout action, used to check out repositories in workflows. The latest release under v6 is v6.0.2, released on January 9, 2026. Key details: - Tag: actions/checkout@v6 or specifically actions/checkout@v6.0.2 - Main changes in v6.0.0: Improved credential security by storing persist-credentials in $RUNNER_TEMP instead of .git/config (requires Actions Runner v2.329.0+ for Docker containers). No workflow changes needed for most users; git commands like fetch/push still work. - Usage example: - uses: actions/checkout@v6 with: repository: 'owner/repo' # optional ref: 'branch-or-tag' # optional - Requires Node.js 24 runtime support. - Official repository: https://github.com/actions/checkout (50 releases total, latest v6.0.2). As of 2026-04-21, v6 is the current major version.

Citations:


🌐 Web query:

GitHub Actions security best practices pin commit SHA mutable version tags

💡 Result:

GitHub Actions security best practices emphasize pinning actions to full-length commit SHAs instead of mutable version tags (like @v4 or @main) to prevent supply chain attacks where tags can be force-pushed to malicious commits. Key practices: - Use full 40-character SHA: - uses: actions/checkout@11bd719 # v4.2.2 Avoid: - uses: actions/checkout@v4 (mutable tag) - Verify SHA from original repository, not forks. - Add version comment for readability. - Prioritize high-risk/third-party actions. - Use Dependabot/Renovate for automated SHA updates on new releases. - Enable organization/enterprise policies to enforce SHA pinning (fails unpinned workflows). - Pin sub-actions in custom actions. - Combine with least-privilege GITHUB_TOKEN, OIDC for cloud access, code scanning. This ensures immutability: SHAs cannot change without content alteration, mitigating risks shown in real attacks like tj-actions/changed-files (CVE-2025-30066). Official GitHub Docs: Pinning to full SHA is the only immutable reference method.

Citations:


Pin actions/checkout to an immutable commit SHA, not a floating major tag.

Line 14 uses @v6, a mutable major version tag. In workflows with contents: write permissions, this creates supply-chain risk—tags can be force-pushed to malicious commits. Pin to the full commit SHA of the v6 release and include the version in a comment for maintainability.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/release.yml at line 14, The workflow uses the mutable tag
actions/checkout@v6 which is a supply-chain risk; replace that tag with the full
immutable commit SHA for the v6 release (i.e., change uses: actions/checkout@v6
to uses: actions/checkout@<FULL_COMMIT_SHA>) and add a trailing comment with the
human-friendly tag/version (e.g., # v6.x.y) for maintainability so reviewers can
see which release the SHA corresponds to.


- name: Check for stable semver
id: semver
Expand Down
8 changes: 7 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ pids
*.pid
*.seed
*.pid.lock
public/uploads
/webserver/public/uploads
Comment thread
ralf-berger marked this conversation as resolved.

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
Expand Down Expand Up @@ -266,3 +266,9 @@ ser_data.txt
coursemapper-kg/app/algorithms/elmo_2x4096_512_2048cnn_2xhighway_options.json
coursemapper-kg/app/algorithms/elmo_2x4096_512_2048cnn_2xhighway_weights.hdf5

coursemapper-kg/=2.2.2
venv*
.DS_Store

coursemapper-kg/app
webserver/public/uploads/pdfs
3 changes: 3 additions & 0 deletions .k8s/base/coursemapper-kg/concept-map/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ spec:
value: postgres://postgres:password@$(WP_PG_SERVICE):5432
- name: WIKIPEDIA_FALLBACK
value: "false"
envFrom:
- configMapRef:
name: dbpedia-spotlight
Comment on lines +35 to +37
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

YAML indentation breaks manifest – envFrom rendered as list item of env

envFrom must be a sibling of env, not a child of the last list element.
Current indentation (envFrom starts two spaces too far left) yields an
invalid spec and kubectl apply fails.

-        - name: WIKIPEDIA_FALLBACK
-          value: "false"
-        envFrom:
-        - configMapRef:
-            name: dbpedia-spotlight
+        - name: WIKIPEDIA_FALLBACK
+          value: "false"
+
+        envFrom:
+          - configMapRef:
+              name: dbpedia-spotlight
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
envFrom:
- configMapRef:
name: dbpedia-spotlight
- name: WIKIPEDIA_FALLBACK
value: "false"
envFrom:
- configMapRef:
name: dbpedia-spotlight
🧰 Tools
🪛 YAMLlint (1.37.1)

[error] 36-36: wrong indentation: expected 10 but found 8

(indentation)

🤖 Prompt for AI Agents
In .k8s/base/coursemapper-kg/concept-map/deployment.yaml around lines 35 to 37,
the envFrom field is incorrectly indented as a child of the last env list item,
causing an invalid Kubernetes manifest. Adjust the indentation so that envFrom
is aligned as a sibling of env, not nested under any list item, ensuring it is
properly recognized as a separate field in the container spec.

resources:
requests:
cpu: 100m
Expand Down
6 changes: 4 additions & 2 deletions .k8s/base/coursemapper-kg/concept-map/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

commonLabels:
app.kubernetes.io/component: coursemapper-kg-concept-map
labels:
- includeSelectors: true
pairs:
app.kubernetes.io/component: coursemapper-kg-concept-map

resources:
- deployment.yaml
1 change: 0 additions & 1 deletion .k8s/base/coursemapper-kg/pgadmin/ingress.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ metadata:
annotations:
kubernetes.io/tls-acme: "true"
cert-manager.io/cluster-issuer: letsencrypt-prod
traefik.ingress.kubernetes.io/router.middlewares: default-headers@kubernetescrd
spec:
rules:
- host: pgadmin.$(FQDN)
Expand Down
6 changes: 4 additions & 2 deletions .k8s/base/coursemapper-kg/pgadmin/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

commonLabels:
app.kubernetes.io/component: coursemapper-kg-pgadmin
labels:
- includeSelectors: true
pairs:
app.kubernetes.io/component: coursemapper-kg-pgadmin
Comment thread
ralf-berger marked this conversation as resolved.

resources:
- deployment.yaml
Expand Down
6 changes: 4 additions & 2 deletions .k8s/base/coursemapper-kg/recommendation/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

commonLabels:
app.kubernetes.io/component: coursemapper-kg-recommendation
labels:
- includeSelectors: true
pairs:
app.kubernetes.io/component: coursemapper-kg-recommendation
Comment thread
ralf-berger marked this conversation as resolved.

resources:
- deployment.yaml
6 changes: 4 additions & 2 deletions .k8s/base/coursemapper-kg/wp-pg/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

commonLabels:
app.kubernetes.io/component: coursemapper-kg-wp-pg
labels:
- includeSelectors: true
pairs:
app.kubernetes.io/component: coursemapper-kg-wp-pg
Comment thread
ralf-berger marked this conversation as resolved.

resources:
- deployment.yaml
Expand Down
1 change: 0 additions & 1 deletion .k8s/base/ingress.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ metadata:
description: CourseMapper-webserver
kubernetes.io/tls-acme: "true"
cert-manager.io/cluster-issuer: letsencrypt-prod
traefik.ingress.kubernetes.io/router.middlewares: default-headers@kubernetescrd
spec:
rules:
- host: $(FQDN)
Expand Down
3 changes: 3 additions & 0 deletions .k8s/base/kustomization.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ configMapGenerator:
- name: ingress
literals:
- host=example.org
- name: dbpedia-spotlight
literals: []
# - DBPEDIA_SPOTLIGHT_URL=https://example.org/rest/annotate

images:
- name: coursemapper-kg-concept-map
Expand Down
4 changes: 2 additions & 2 deletions .k8s/base/mongodb/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,10 @@ spec:
resources:
requests:
memory: 128Mi
cpu: 10m
cpu: 500m
limits:
memory: 512Mi
cpu: 2
cpu: 1150m
ephemeral-storage: 1Gi
containers:
- name: mongodb
Expand Down
4 changes: 2 additions & 2 deletions .k8s/base/webserver/neo4j/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ spec:
resources:
requests:
cpu: 12m
memory: 800Mi
memory: 1100Mi
limits:
cpu: 4
memory: 1.2Gi
memory: 1.5Gi
volumeMounts:
- name: data
mountPath: "/data"
Expand Down
6 changes: 4 additions & 2 deletions .k8s/base/webserver/neo4j/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

commonLabels:
app.kubernetes.io/component: webserver-neo4j
labels:
- includeSelectors: true
pairs:
app.kubernetes.io/component: webserver-neo4j
Comment thread
ralf-berger marked this conversation as resolved.

resources:
- deployment.yaml
Expand Down
6 changes: 4 additions & 2 deletions .k8s/base/webserver/redis/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

commonLabels:
app.kubernetes.io/component: webserver-redis
labels:
- includeSelectors: true
pairs:
app.kubernetes.io/component: webserver-redis
Comment thread
ralf-berger marked this conversation as resolved.

resources:
- deployment.yaml
Expand Down
16 changes: 13 additions & 3 deletions .k8s/base/webserver/web/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ spec:
httpGet:
path: /api/healthz
port: 8080
timeoutSeconds: 30
failureThreshold: 5
periodSeconds: 60
Comment on lines +31 to +33
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Probe timings might delay failure detection by ~5 min

timeoutSeconds: 30, periodSeconds: 60, and failureThreshold: 5 mean the pod could remain unhealthy for up to five minutes before a restart is triggered.
If the web container is stateless and expected to recover quickly, consider shorter values (e.g. timeoutSeconds: 5, periodSeconds: 10–20, failureThreshold: 3) to improve availability.


🏁 Script executed:

#!/bin/bash
# Show probe context around the timeoutSeconds setting
rg -nC3 'timeoutSeconds' .k8s/base/webserver/web/deployment.yaml

Length of output: 258


Probe timings might delay failure detection by ~5 minutes

The current livenessProbe settings in .k8s/base/webserver/web/deployment.yaml:

timeoutSeconds: 30
periodSeconds: 60
failureThreshold: 5

These values can delay marking the pod as unhealthy—and triggering a restart—by up to 5 minutes (5 × 60 s). If your web container is stateless and expected to recover quickly, consider more aggressive timings, for example:

timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
  • File: .k8s/base/webserver/web/deployment.yaml (livenessProbe)
🤖 Prompt for AI Agents
In .k8s/base/webserver/web/deployment.yaml around lines 31 to 33, the
livenessProbe timings are set with timeoutSeconds: 30, periodSeconds: 60, and
failureThreshold: 5, which can delay failure detection by up to 5 minutes. To
fix this, update these values to more aggressive settings such as
timeoutSeconds: 5, periodSeconds: 10, and failureThreshold: 3 to enable faster
detection and restart of unhealthy pods.

env:
- name: PORT
value: "8080"
Expand All @@ -39,6 +42,13 @@ spec:
value: $(REDIS_SERVICE)
- name: REDIS_PORT
value: "6379"
- name: MEMORY_REQUEST
valueFrom:
resourceFieldRef:
divisor: "1Mi"
resource: requests.memory
- name: NODE_OPTIONS
value: "--max-old-space-size=$(MEMORY_REQUEST)"
Comment thread
ralf-berger marked this conversation as resolved.
envFrom:
- secretRef:
name: webserver
Expand All @@ -54,11 +64,11 @@ spec:
subPath: videos
resources:
requests:
memory: 360Mi
memory: 2Gi
cpu: 100m
limits:
memory: 1Gi
cpu: "1"
memory: 2.5Gi
cpu: "1.15"
ephemeral-storage: 1Gi
volumes:
- name: webserver-uploads
Expand Down
6 changes: 4 additions & 2 deletions .k8s/base/webserver/web/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

commonLabels:
app.kubernetes.io/component: webserver-web
labels:
- includeSelectors: true
pairs:
app.kubernetes.io/component: webserver-web
Comment thread
ralf-berger marked this conversation as resolved.

resources:
- deployment.yaml
Expand Down
3 changes: 2 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
help:
@cat $(MAKEFILE_LIST) | docker run --rm -i --platform linux/amd64 xanders/make-help

export COMPOSE_BAKE=1
compose = docker compose -f compose.yaml

all: clean build run
Expand Down Expand Up @@ -32,7 +33,7 @@ build:

# Push container images to remote registry
push:
@docker compose push
@$(compose) push

# Start all services for development using Tilt for live container updates
tilt:
Expand Down
20 changes: 10 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,27 +6,27 @@ CourseMapper is a collaborative course annotation and analytics platform that fo

## 🚀 Get Started

#### Live instances
#### 🌎 Live instances

Comment on lines +9 to 10
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Fix heading level jump (#######)

## 🚀 Get Started is an h2.
Using h4 here skips h3 and violates Markdown-lint rule MD001.

-#### 🌎 Live instances
+### 🌎 Live instances
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
#### 🌎 Live instances
### 🌎 Live instances
🧰 Tools
🪛 LanguageTool

[grammar] ~9-~9: Use correct spacing
Context: ...ytics. ## 🚀 Get Started #### 🌎 Live instances - Production: [coursemapper.de](https://...

(QB_NEW_EN_OTHER_ERROR_IDS_5)

🪛 markdownlint-cli2 (0.17.2)

9-9: Heading levels should only increment by one level at a time
Expected: h3; Actual: h4

(MD001, heading-increment)

🤖 Prompt for AI Agents
In README.md around lines 9 to 10, the heading level jumps from h2 to h4, which
violates Markdown-lint rule MD001. Change the heading from `#### 🌎 Live
instances` to `### 🌎 Live instances` to maintain proper heading hierarchy and
fix the level jump.

- Production:
[coursemapper.de](https://coursemapper.de/)
([branch `main`](https://github.com/ude-soco/CourseMapper-webserver/tree/main))
![status](https://argocd.cluster.soco.inko.cloud/api/badge?name=cmw-prod)
![production status](https://argocd.soco.ude.systems/api/badge?name=cmw-prod)
- Preview:
[br-dev.coursemapper.de](https://br-dev.coursemapper.de/)
([branch `dev`](https://github.com/ude-soco/CourseMapper-webserver/tree/dev))
![status](https://argocd.cluster.soco.inko.cloud/api/badge?name=cmw-br-dev)
![branch preview status](https://argocd.soco.ude.systems/api/badge?name=cmw-br-dev)

*Note:* Stable [releases](https://github.com/ude-soco/CourseMapper-webserver/releases) are currently not running in production.

#### Build and run
#### 🐳 Compose

- `make up` to run the application using _Docker Compose_
- `make tilt` to automatically rebuild during development using _Tilt_
- `make mounted` to run processes using _Docker Compose_, but mount source code from host machine
- see the manual below to install dependencies and run processes _locally, without containers_

Visit the [proxy service on port 8000](http://localhost:8000/) to use the application.
1. Set up `.env` file (see `.env.dist`)
2. Build and run
- `make up` to run the application using _Docker Compose_
- `make tilt` to automatically rebuild during development using _Tilt_
- `make mounted` to run processes using _Docker Compose_, but mount source code from host machine
3. Visit the [proxy service on port 8000](http://localhost:8000/) to use the application.
Comment on lines +22 to +29
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

Heading level & emphasis style inconsistencies

  1. Same heading-level jump occurs for “Compose”.
  2. _italic_ underscores diverge from the asterisk style used elsewhere and trip MD049.
-#### 🐳 Compose
+### 🐳 Compose

-   - `make up` to run the application using _Docker Compose_
+   - `make up` to run the application using *Docker Compose*

Adopting consistent heading hierarchy and emphasis style keeps the README lint-clean.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
#### 🐳 Compose
- `make up` to run the application using _Docker Compose_
- `make tilt` to automatically rebuild during development using _Tilt_
- `make mounted` to run processes using _Docker Compose_, but mount source code from host machine
- see the manual below to install dependencies and run processes _locally, without containers_
Visit the [proxy service on port 8000](http://localhost:8000/) to use the application.
1. Set up `.env` file (see `.env.dist`)
2. Build and run
- `make up` to run the application using _Docker Compose_
- `make tilt` to automatically rebuild during development using _Tilt_
- `make mounted` to run processes using _Docker Compose_, but mount source code from host machine
3. Visit the [proxy service on port 8000](http://localhost:8000/) to use the application.
### 🐳 Compose
1. Set up `.env` file (see `.env.dist`)
2. Build and run
- `make up` to run the application using *Docker Compose*
- `make tilt` to automatically rebuild during development using _Tilt_
- `make mounted` to run processes using _Docker Compose_, but mount source code from host machine
3. Visit the [proxy service on port 8000](http://localhost:8000/) to use the application.
🧰 Tools
🪛 LanguageTool

[grammar] ~22-~22: Use correct spacing
Context: ...tly not running in production. #### 🐳 Compose 1. Set up .env file (see .env.dist) 2. ...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~24-~24: Use articles correctly
Context: ...in production. #### 🐳 Compose 1. Set up .env file (see .env.dist) 2. Build ...

(QB_NEW_EN_OTHER_ERROR_IDS_11)


[grammar] ~24-~24: There might be a mistake here.
Context: ... 🐳 Compose 1. Set up .env file (see .env.dist) 2. Build and run - make up to run the ...

(QB_NEW_EN_OTHER)


[grammar] ~25-~25: Use correct spacing
Context: ...nvfile (see.env.dist) 2. Build and run - make up` to run the application using _Docker Compo...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~26-~26: There might be a mistake here.
Context: ...pto run the application using _Docker Compose_ -make tilt` to automatically rebuild during develop...

(QB_NEW_EN_OTHER)


[grammar] ~27-~27: Avoid presenting a sentence fragment as a complete sentence
Context: ...utomatically rebuild during development using Tilt - make mounted to run processes using Docker Compose...

(QB_NEW_EN_OTHER_ERROR_IDS_27)


[grammar] ~28-~28: There might be a problem here.
Context: ...er Compose_, but mount source code from host machine 3. Visit the [proxy service on port 8000](h...

(QB_NEW_EN_MERGED_MATCH)


[grammar] ~29-~29: Use correct spacing
Context: ...000](http://localhost:8000/) to use the application. ## 🖥️ Application stack The services maki...

(QB_NEW_EN_OTHER_ERROR_IDS_5)

🪛 markdownlint-cli2 (0.17.2)

26-26: Emphasis style
Expected: asterisk; Actual: underscore

(MD049, emphasis-style)


26-26: Emphasis style
Expected: asterisk; Actual: underscore

(MD049, emphasis-style)


27-27: Emphasis style
Expected: asterisk; Actual: underscore

(MD049, emphasis-style)


27-27: Emphasis style
Expected: asterisk; Actual: underscore

(MD049, emphasis-style)


28-28: Emphasis style
Expected: asterisk; Actual: underscore

(MD049, emphasis-style)


28-28: Emphasis style
Expected: asterisk; Actual: underscore

(MD049, emphasis-style)

🤖 Prompt for AI Agents
In README.md around lines 22 to 29, the heading level for "Compose" should be
adjusted to maintain consistent hierarchy with other headings, and the emphasis
style should be unified by replacing underscore-based italics with
asterisk-based italics to match the rest of the document and avoid markdown lint
errors. Update the heading level accordingly and change all instances of
_italic_ to *italic*.


## 🖥️ Application stack

Expand Down
16 changes: 8 additions & 8 deletions coursemapper-kg/concept-map/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# syntax=docker/dockerfile:1.6
# syntax=docker/dockerfile:1.15
FROM alpine as MODELS
WORKDIR /download

Expand All @@ -7,7 +7,7 @@ ADD https://uni-duisburg-essen.sciebo.de/s/nO06q2wY0t5h8SO/download stanford-cor
RUN unzip stanford-corenlp-full-2018-02-27.zip -d stanford-corenlp-full-2018-02-27 && rm stanford-corenlp-full-2018-02-27.zip


from python:3.11.5
FROM python:3.11.5

# APT requires archive URLs
COPY debian/sources.list /etc/apt/sources.list
Expand All @@ -30,10 +30,10 @@ USER 1000
WORKDIR /home/app

# Configure Python environment
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
ENV PIPENV_VENV_IN_PROJECT 1
ENV PIPENV_VERBOSITY -1
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
ENV PIPENV_VENV_IN_PROJECT=1
ENV PIPENV_VERBOSITY=-1
ENV VIRTUAL_ENV=/home/app/.venv
RUN python -m venv $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
Expand All @@ -42,7 +42,7 @@ ENV PATH="$VIRTUAL_ENV/bin:$PATH"
COPY --chown=app:app Pipfile* ./
RUN --mount=type=cache,sharing=private,target=/home/app/.cache/pip,uid=1000 \
--mount=type=cache,sharing=private,target=/home/app/.cache/pypoetry,uid=1000 <<EOF
pip install --no-color pipenv
pip install --no-color --disable-pip-version-check pipenv
Comment thread
ralf-berger marked this conversation as resolved.
pipenv install --deploy
EOF

Expand All @@ -63,6 +63,6 @@ COPY --from=MODELS --chown=app /download/* .
# Add source code
COPY . .

ENV OMP_NUM_THREADS 1
ENV OMP_NUM_THREADS=1
Comment thread
ralf-berger marked this conversation as resolved.
EXPOSE $PORT
CMD [ "bin/worker" ]
1 change: 1 addition & 0 deletions coursemapper-kg/concept-map/compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ services:
PIPELINES: concept-map
WIKIPEDIA_DATABASE_CONNECTION_STRING: "postgres://postgres:password@wp-pg:5432/"
WIKIPEDIA_FALLBACK: false
DBPEDIA_SPOTLIGHT_URL: ${DBPEDIA_SPOTLIGHT_URL}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

Propagate variable safely – fallback to a sensible default

If the host does not export DBPEDIA_SPOTLIGHT_URL, the compose file passes an
empty string, which the worker will treat as None. Consider an explicit
default (same as .env.dist) to prevent hard-to-trace failures:

-      DBPEDIA_SPOTLIGHT_URL: ${DBPEDIA_SPOTLIGHT_URL}
+      DBPEDIA_SPOTLIGHT_URL: ${DBPEDIA_SPOTLIGHT_URL:-https://api.dbpedia-spotlight.org/en/annotate}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
DBPEDIA_SPOTLIGHT_URL: ${DBPEDIA_SPOTLIGHT_URL}
DBPEDIA_SPOTLIGHT_URL: ${DBPEDIA_SPOTLIGHT_URL:-https://api.dbpedia-spotlight.org/en/annotate}
🤖 Prompt for AI Agents
In coursemapper-kg/concept-map/compose.yaml at line 17, the environment variable
DBPEDIA_SPOTLIGHT_URL is passed without a fallback, which can lead to an empty
string if not set. Modify the compose file to provide a default value for
DBPEDIA_SPOTLIGHT_URL, matching the default in .env.dist, by using the syntax
for environment variable defaults to ensure the worker receives a valid URL even
if the variable is not exported.

depends_on:
neo4j:
condition: service_healthy
Expand Down
10 changes: 8 additions & 2 deletions coursemapper-kg/concept-map/example.env
Original file line number Diff line number Diff line change
@@ -1,9 +1,15 @@
WIKIPEDIA_DATABASE_CONNECTION_STRING=
PIPELINES=concept-map,modify-graph,expand-material

NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=1234qwer!

REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_DATABASE=0
REDIS_PASSWORD=
PIPELINES=concept-map,modify-graph,expand-material

WIKIPEDIA_DATABASE_CONNECTION_STRING=

DBPEDIA_SPOTLIGHT_URL="https://api.dbpedia-spotlight.org/en/annotate" # official DBpedia Spotlight API ...
#DBPEDIA_SPOTLIGHT_URL="https://example.org/rest/annotate" # ... or custom instance
Comment on lines +14 to +15
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

Inconsistent quoting may break some .env parsers

All other variables are unquoted, yet DBPEDIA_SPOTLIGHT_URL is enclosed in quotes.
Several dotenv implementations include the quotes in the value when mixed styles are used, leading to an invalid URL during HTTP requests.

-DBPEDIA_SPOTLIGHT_URL="https://api.dbpedia-spotlight.org/en/annotate" # official DBpedia Spotlight API ...
+DBPEDIA_SPOTLIGHT_URL=https://api.dbpedia-spotlight.org/en/annotate # official DBpedia Spotlight API ...

Apply the same change to the commented custom instance line for consistency.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
DBPEDIA_SPOTLIGHT_URL="https://api.dbpedia-spotlight.org/en/annotate" # official DBpedia Spotlight API ...
#DBPEDIA_SPOTLIGHT_URL="https://example.org/rest/annotate" # ... or custom instance
DBPEDIA_SPOTLIGHT_URL=https://api.dbpedia-spotlight.org/en/annotate # official DBpedia Spotlight API ...
#DBPEDIA_SPOTLIGHT_URL="https://example.org/rest/annotate" # ... or custom instance
🤖 Prompt for AI Agents
In coursemapper-kg/concept-map/example.env at lines 14 to 15, the
DBPEDIA_SPOTLIGHT_URL variable is enclosed in quotes while other variables are
unquoted, which can cause some dotenv parsers to include the quotes in the value
and break URL usage. Remove the quotes around the URL in both the active and
commented DBPEDIA_SPOTLIGHT_URL lines to ensure consistent unquoted style and
prevent invalid URL issues.

4 changes: 1 addition & 3 deletions coursemapper-kg/concept-map/src/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,7 @@ class Config:
NEO4J_PASSWORD = os.getenv('NEO4J_PASSWORD', 'password')
NEO4J_SAVE_TO_DB = os.getenv('NEO4J_SAVE_TO_DB', 'true').lower() == 'true'

DBPEDIA_SPOTLIGHT_URL = os.getenv('DBPEDIA_SPOTLIGHT_URL', 'https://dbpedia-spotlight-en.soco.inko.cloud/rest/annotate')
# Uncomment the line below to use the official DBpedia Spotlight API
# DBPEDIA_SPOTLIGHT_URL = os.getenv('DBPEDIA_SPOTLIGHT_URL', 'https://api.dbpedia-spotlight.org/en/annotate')
DBPEDIA_SPOTLIGHT_URL = os.getenv('DBPEDIA_SPOTLIGHT_URL')
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Missing fallback will set DBPEDIA_SPOTLIGHT_URL to None

With the default removed, every runtime environment must provide the
variable or the worker will build requests with None and fail early. Ensure
the Kubernetes base and compose file supply the value, or keep a sane default.

If the intention is to make the value mandatory, raise early:

-    DBPEDIA_SPOTLIGHT_URL = os.getenv('DBPEDIA_SPOTLIGHT_URL')
+    DBPEDIA_SPOTLIGHT_URL = os.getenv('DBPEDIA_SPOTLIGHT_URL')
+    if not DBPEDIA_SPOTLIGHT_URL:
+        raise RuntimeError("DBPEDIA_SPOTLIGHT_URL must be set")
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
DBPEDIA_SPOTLIGHT_URL = os.getenv('DBPEDIA_SPOTLIGHT_URL')
DBPEDIA_SPOTLIGHT_URL = os.getenv('DBPEDIA_SPOTLIGHT_URL')
if not DBPEDIA_SPOTLIGHT_URL:
raise RuntimeError("DBPEDIA_SPOTLIGHT_URL must be set")
🤖 Prompt for AI Agents
In coursemapper-kg/concept-map/src/config.py at line 22, the environment
variable DBPEDIA_SPOTLIGHT_URL is fetched without a fallback, which can lead to
it being None and causing failures. To fix this, either provide a sensible
default value in os.getenv or explicitly check if the variable is None and raise
an error early to enforce that it must be set. Additionally, ensure that the
deployment configurations like Kubernetes and Docker Compose supply this
environment variable if no default is used.

DBPEDIA_SPOTLIGHT_CONFIDENCE = float(os.getenv('DBPEDIA_SPOTLIGHT_CONFIDENCE', '0.35'))
DBPEDIA_SPOTLIGHT_SUPPORT = int(os.getenv('DBPEDIA_SPOTLIGHT_SUPPORT', '5'))

Expand Down
1 change: 1 addition & 0 deletions coursemapper-kg/concept-map/src/graph_db.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ def load_graph(self, material_id: str):

def save_graph(self, graph: Graph):
with self.driver.session() as session:
# session.execute_write(_save_graph, graph),
session.write_transaction(_save_graph, graph)

def get_node(self, material_id: str, node_id: str):
Expand Down
Loading
Loading