Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (14.3%) to scientific vocabulary
Repository
Main Application of GitClassrooms.
Basic Info
- Host: GitHub
- Owner: git-classrooms
- License: mpl-2.0
- Language: TypeScript
- Default Branch: develop
- Homepage: https://git-classrooms.dev
- Size: 7.69 MB
Statistics
- Stars: 8
- Watchers: 1
- Forks: 1
- Open Issues: 4
- Releases: 1
Metadata Files
README.md
GitClassrooms
Version: v1.0.0
This project aims to develop a teaching tool integrated with GitLab to manage digital classrooms, distribute assignments, and automate the grading of students' work. Traditional learning management systems often lack integration with version control systems like Git, making it difficult to manage and evaluate programming tasks. This project addresses that gap by creating a standalone application that interacts with GitLab's API. The solution enables instructors to create and manage classrooms, assign programming tasks, and implement both manual and automated grading systems. Through features like OAuth-based authentication, team management, and GitLab repository integration, the tool facilitates efficient course management, offering both autonomy and data sovereignty to educational institutions.

Documents
Project Structure
The project has two parts:
- Golang with fiber as backend=>
/ - React with Typescript and vite as Frontend =>
/frontend/
The frontend proxies the requests for the path /api/* to the backend server.
Production
Docker Compose is used to deploy the application.
Steps for deployment
- Cloning the repository
Alternatively, you can directly use the docker-compose.yaml and .env.example files. - Configure environment variables
bash cp .env.example .env - Creating an application in GitLab
- Create a new application in GitLab with the following Redirect URI:
<PUBLIC_URL>/api/v1/auth/gitlab/callback - Set the application to confidential (Confidential: true) and select the scope "api". These are the default settings.
- Copy the
Application IDandSecretinto the.envfile and add the URLs forPUBLIC_URLandGITLAB_URL.
- Create a new application in GitLab with the following Redirect URI:
- SMTP configuration
Add SMTP credentials to send invitation emails. - Configure the database in the
.envfile. - Starting the application
To start the application and a PostgreSQL database using Docker Compose:bash docker compose -–env-file .env up -d
Alternatively, deployment can also take place with an already present PostgreSQL server by running only the application image
Create .env like specified above and add the database credentials of your existing database. and run the image like:
bash
docker run -d --env-file .env --name git-classrooms -p 3000:3000 ghcr.io/git-classrooms/git-classrooms:latest
Development
For development, we use the git flow branching model for simplicity.
Setup
The Setup for development is documented in the following file dev_setup.md
Code Generation
The following file-types in our repo are auto-generated: - mocks - gorm-gen queries - swagger documentation - swagger-client
The first three types are generated when running go generate which is automatically executed before each build when running the app through air.
To generate the frontend swagger-client after some changes to the docs the following script needs to be executed:
```bash
Linux / Mac / WSL
./script/swagger-codegen.sh
Windows
./script/swagger-codegen.ps1 ```
Run dev image locally
To test the completely build image locally you can use the following command:
bash
docker compose -f docker-compose.dev.yml up --build
And access the application via http://localhost:3000
Swagger-UI testing (recommended)
- Run the app described in Dev-Setup
- Add Swag comments directly above your endpoint
- Visit the page
http://localhost:5173/docs.html - Click on the
Sign-In-Button on the top-right - Get your csrf-token
- Test your endpoints
- Refresh page after swag-comments were edited
Postman testing (not recommended)
- Login via gitlab in the browser
- Copy the session_id cookie from the browser to your postman environment
- Copy the csrf_ cookie from the browser to your postman environment
- Add the following header to your
POST|PUT|PATCH|DELETErequests:X-CSRF-Token: {{csrf_}}
Writing Tests
...
To run the test simply exec the following script: ```bash
Linux / Mac / WSL
./script/testbackend.sh ./script/testfrontend.sh
Windows
./script/testbackend.ps1 ./script/testfrontend.ps1 ```
Environments
We have to environments:
- Staging:
https//staging.hs-flensburg.dev
Owner
- Name: GitClassrooms
- Login: git-classrooms
- Kind: organization
- Location: Germany
- Website: https://git-classrooms.dev
- Repositories: 1
- Profile: https://github.com/git-classrooms
Citation (CITATION.cff)
cff-version: 1.2.0
title: GitClassrooms
message: >-
This project is licensed under the MPL 2.0, if you use it
or parts of it, please cite us with this attribution.
type: software
authors:
- given-names: Philipp
family-names: Borucki
email: philipp.borucki@stud.hs-flensburg.de
affiliation: Flensburg University of Applied Sciences
- affiliation: Flensburg University of Applied Sciences
family-names: Friedrichsen
given-names: Pascal
email: pascal.friedrichsen@stud.hs-flensburg.de
- given-names: Dominik
family-names: Heckner
email: dominik.heckner@stud.hs-flensburg.de
affiliation: Flensburg University of Applied Sciences
- family-names: Ingwersen
given-names: Hauke
email: hauke.ingwersen@stud.hs-flensburg.de
affiliation: Flensburg University of Applied Sciences
- family-names: Klein
given-names: Claas Thore
email: claas.klein@stud.hs-flensburg.de
affiliation: Flensburg University of Applied Sciences
- email: jannes.nebendahl@stud.hs-flensburg.de
given-names: Jannes
family-names: Nebendahl
affiliation: Flensburg University of Applied Sciences
- family-names: Neufeldt
given-names: Stefan
email: stefan.neufeldt@stud.hs-flensburg.de
affiliation: Flensburg University of Applied Sciences
- family-names: Petersen
given-names: Fabian
email: fabian.petersen@stud.hs-flensburg.de
affiliation: Flensburg University of Applied Sciences
- family-names: Porsche
given-names: Nils
email: nils.porsche@stud.hs-flensburg.de
affiliation: Flensburg University of Applied Sciences
repository-code: 'https://github.com/GitClassrooms/git-classrooms'
abstract: >-
The "GitClassrooms" project aims to develop a teaching
tool integrated with GitLab to manage digital classrooms,
distribute assignments, and automate the grading of
students' work. Traditional learning management systems
often lack integration with version control systems like
Git, making it difficult to manage and evaluate
programming tasks. This project addresses that gap by
creating a standalone application that interacts with
GitLab's API. The solution enables instructors to create
and manage classrooms, assign programming tasks, and
implement both manual and automated grading systems.
Through features like OAuth-based authentication, team
management, and GitLab repository integration, the tool
facilitates efficient course management, offering both
autonomy and data sovereignty to educational
institutions.
license: MPL-2.0
version: 1.0.0
GitHub Events
Total
- Watch event: 2
- Delete event: 7
- Push event: 43
- Pull request review comment event: 2
- Pull request review event: 7
- Pull request event: 16
- Fork event: 1
- Create event: 9
Last Year
- Watch event: 2
- Delete event: 7
- Push event: 43
- Pull request review comment event: 2
- Pull request review event: 7
- Pull request event: 16
- Fork event: 1
- Create event: 9
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 0
- Total pull requests: 8
- Average time to close issues: N/A
- Average time to close pull requests: 15 days
- Total issue authors: 0
- Total pull request authors: 2
- Average comments per issue: 0
- Average comments per pull request: 0.0
- Merged pull requests: 7
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 0
- Pull requests: 8
- Average time to close issues: N/A
- Average time to close pull requests: 15 days
- Issue authors: 0
- Pull request authors: 2
- Average comments per issue: 0
- Average comments per pull request: 0.0
- Merged pull requests: 7
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- Onyxmoon (3)
Pull Request Authors
- akatranlp (7)
- choffmann (2)
- Onyxmoon (1)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- actions/checkout v4 composite
- docker/build-push-action v6 composite
- docker/login-action v3 composite
- docker/setup-buildx-action v3 composite
- docker/setup-qemu-action v3 composite
- actions/checkout v4 composite
- docker/build-push-action v5 composite
- docker/login-action v3 composite
- docker/setup-buildx-action v3 composite
- docker/setup-qemu-action v3 composite
- thomaseizinger/create-pull-request 1.0.0 composite
- thomaseizinger/create-release 1.0.0 composite
- actions/checkout v4 composite
- thomaseizinger/create-pull-request 1.0.0 composite
- alpine 3.18 build
- golang 1.22-alpine build
- node 20-alpine build
- preparer-go latest build
- swaggerapi/swagger-codegen-cli-v3 latest build
- dario.cat/mergo v1.0.0
- filippo.io/edwards25519 v1.1.0
- github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161
- github.com/KyleBanks/depth v1.2.1
- github.com/Microsoft/go-winio v0.6.2
- github.com/Microsoft/hcsshim v0.11.7
- github.com/andybalholm/brotli v1.1.0
- github.com/brianvoe/gofakeit/v7 v7.0.4
- github.com/caarlos0/env/v10 v10.0.0
- github.com/cenkalti/backoff/v4 v4.2.1
- github.com/containerd/containerd v1.7.21
- github.com/containerd/log v0.1.0
- github.com/containerd/platforms v0.2.1
- github.com/cpuguy83/dockercfg v0.3.1
- github.com/davecgh/go-spew v1.1.1
- github.com/distribution/reference v0.6.0
- github.com/docker/docker v27.2.1+incompatible
- github.com/docker/go-connections v0.5.0
- github.com/docker/go-units v0.5.0
- github.com/felixge/httpsnoop v1.0.4
- github.com/go-logr/logr v1.4.1
- github.com/go-logr/stdr v1.2.2
- github.com/go-ole/go-ole v1.3.0
- github.com/go-openapi/jsonpointer v0.21.0
- github.com/go-openapi/jsonreference v0.21.0
- github.com/go-openapi/spec v0.21.0
- github.com/go-openapi/swag v0.23.0
- github.com/go-sql-driver/mysql v1.8.1
- github.com/gofiber/fiber/v2 v2.52.4
- github.com/gofiber/storage/memory v1.3.4
- github.com/gofiber/storage/postgres v1.3.4
- github.com/gofiber/swagger v1.0.0
- github.com/gogo/protobuf v1.3.2
- github.com/golang/protobuf v1.5.4
- github.com/google/go-querystring v1.1.0
- github.com/google/uuid v1.6.0
- github.com/hashicorp/go-cleanhttp v0.5.2
- github.com/hashicorp/go-retryablehttp v0.7.7
- github.com/jackc/pgpassfile v1.0.0
- github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761
- github.com/jackc/pgx/v5 v5.7.1
- github.com/jackc/puddle/v2 v2.2.2
- github.com/jinzhu/inflection v1.0.0
- github.com/jinzhu/now v1.1.5
- github.com/joho/godotenv v1.5.1
- github.com/josharian/intern v1.0.0
- github.com/klauspost/compress v1.17.9
- github.com/lib/pq v1.10.9
- github.com/lufia/plan9stats v0.0.0-20231016141302-07b5767bb0ed
- github.com/magiconair/properties v1.8.7
- github.com/mailru/easyjson v0.7.7
- github.com/mattn/go-colorable v0.1.13
- github.com/mattn/go-isatty v0.0.20
- github.com/mattn/go-runewidth v0.0.15
- github.com/mfridman/interpolate v0.0.2
- github.com/moby/docker-image-spec v1.3.1
- github.com/moby/patternmatcher v0.6.0
- github.com/moby/sys/sequential v0.5.0
- github.com/moby/sys/user v0.3.0
- github.com/moby/sys/userns v0.1.0
- github.com/moby/term v0.5.0
- github.com/morikuni/aec v1.0.0
- github.com/opencontainers/go-digest v1.0.0
- github.com/opencontainers/image-spec v1.1.0
- github.com/philhofer/fwd v1.1.2
- github.com/pkg/errors v0.9.1
- github.com/pmezard/go-difflib v1.0.0
- github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b
- github.com/pressly/goose/v3 v3.22.1
- github.com/rivo/uniseg v0.4.7
- github.com/sethvargo/go-retry v0.3.0
- github.com/shirou/gopsutil/v3 v3.24.1
- github.com/shoenig/go-m1cpu v0.1.6
- github.com/sirupsen/logrus v1.9.3
- github.com/stretchr/objx v0.5.2
- github.com/stretchr/testify v1.9.0
- github.com/swaggo/files/v2 v2.0.0
- github.com/swaggo/swag v1.16.3
- github.com/testcontainers/testcontainers-go v0.32.0
- github.com/testcontainers/testcontainers-go/modules/postgres v0.32.0
- github.com/tinylib/msgp v1.1.8
- github.com/tklauser/go-sysconf v0.3.13
- github.com/tklauser/numcpus v0.7.0
- github.com/valyala/bytebufferpool v1.0.0
- github.com/valyala/fasthttp v1.52.0
- github.com/valyala/tcplisten v1.0.0
- github.com/xanzy/go-gitlab v0.93.2
- github.com/yusufpapurcu/wmi v1.2.4
- go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0
- go.opentelemetry.io/otel v1.26.0
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.21.0
- go.opentelemetry.io/otel/metric v1.26.0
- go.opentelemetry.io/otel/trace v1.26.0
- go.uber.org/multierr v1.11.0
- golang.org/x/crypto v0.27.0
- golang.org/x/mod v0.17.0
- golang.org/x/oauth2 v0.16.0
- golang.org/x/sync v0.8.0
- golang.org/x/sys v0.25.0
- golang.org/x/text v0.18.0
- golang.org/x/time v0.3.0
- golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d
- google.golang.org/appengine v1.6.8
- google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80
- google.golang.org/protobuf v1.33.0
- gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc
- gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
- gopkg.in/yaml.v3 v3.0.1
- gorm.io/datatypes v1.1.1-0.20230130040222-c43177d3cf8c
- gorm.io/driver/mysql v1.5.1-0.20230509030346-3715c134c25b
- gorm.io/driver/postgres v1.5.4
- gorm.io/gen v0.3.23
- gorm.io/gorm v1.25.5
- gorm.io/hints v1.1.0
- gorm.io/plugin/dbresolver v1.4.7
- 254 dependencies
- @tanstack/eslint-plugin-query ^5.17.22 development
- @tanstack/router-cli ^1.28.2 development
- @tanstack/router-devtools ^1.28.4 development
- @testing-library/react ^14.0.0 development
- @types/node ^20.11.10 development
- @types/react ^18.2.15 development
- @types/react-dom ^18.2.7 development
- @typescript-eslint/eslint-plugin ^6.0.0 development
- @typescript-eslint/parser ^6.0.0 development
- @vitejs/plugin-react ^4.3.1 development
- @vitest/coverage-v8 ^1.6.0 development
- autoprefixer ^10.4.17 development
- concurrently ^8.2.2 development
- eslint ^8.45.0 development
- eslint-plugin-react-hooks ^4.6.0 development
- eslint-plugin-react-refresh ^0.4.3 development
- postcss ^8.4.33 development
- prettier ^3.2.4 development
- tailwindcss ^3.4.1 development
- typescript ^5.0.2 development
- vite ^5.4.1 development
- vitest ^1.6.0 development
- @hookform/resolvers ^3.3.4
- @radix-ui/react-alert-dialog ^1.1.1
- @radix-ui/react-avatar ^1.0.4
- @radix-ui/react-checkbox ^1.1.1
- @radix-ui/react-dialog ^1.1.1
- @radix-ui/react-dropdown-menu ^2.0.6
- @radix-ui/react-hover-card ^1.0.7
- @radix-ui/react-label ^2.0.2
- @radix-ui/react-popover ^1.0.7
- @radix-ui/react-scroll-area ^1.1.0
- @radix-ui/react-select ^2.1.1
- @radix-ui/react-separator ^1.1.0
- @radix-ui/react-slot ^1.1.0
- @radix-ui/react-switch ^1.0.3
- @radix-ui/react-tabs ^1.1.0
- @radix-ui/react-tooltip ^1.1.2
- @tanstack/react-query ^5.17.19
- @tanstack/react-query-devtools ^5.17.21
- @tanstack/react-router ^1.28.4
- axios ^1.6.7
- class-variance-authority ^0.7.0
- clsx ^2.1.0
- cmdk ^0.2.1
- date-fns ^3.6.0
- lucide-react ^0.439.0
- react ^18.2.0
- react-day-picker 8.10.1
- react-dom ^18.2.0
- react-hook-form ^7.50.0
- sonner ^1.5.0
- tailwind-merge ^2.2.1
- tailwindcss-animate ^1.0.7
- vaul ^0.9.2
- zod ^3.22.4
- 673 dependencies