Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
f0b6fc2
feat!: add design tokens support (#470)
brian-smith-tcril Jun 18, 2025
42dbbee
chore: update browserslist DB (#480)
edx-requirements-bot Jun 30, 2025
a4d1fb2
build(deps): bump dawidd6/action-send-mail from 4 to 6
dependabot[bot] Jul 6, 2025
a960814
chore: update browserslist DB (#482)
edx-requirements-bot Jul 7, 2025
427907f
chore: Delete CODEOWNERS (#493)
kdmccormick Jul 31, 2025
b88969c
chore: update browserslist DB (#495)
edx-requirements-bot Aug 4, 2025
76104f6
chore: update dependency related things
holaontiveros Aug 8, 2025
e58c571
chore: clena gitignore
holaontiveros Aug 8, 2025
6e54e3e
chore: add main ts configs
holaontiveros Aug 8, 2025
03c4142
chore: update main configs related with testing
holaontiveros Aug 8, 2025
e33f8f9
chore: update eslint rules
holaontiveros Aug 8, 2025
84dbf6f
chore: remove old webpack config files
holaontiveros Aug 8, 2025
98bb0f8
chore: update i18n related things
holaontiveros Aug 8, 2025
8ac15f3
chore: update getConfig
holaontiveros Aug 8, 2025
23997c6
chore: replace all imports from @edx/frontend-platform and small lint…
holaontiveros Aug 8, 2025
9d29e62
chore: delete .env and add new site.config and related files
holaontiveros Aug 8, 2025
ff0ed5c
chore: remove initialization
holaontiveros Aug 8, 2025
0932418
chore: migrate / remove header footer dependencies
holaontiveros Aug 8, 2025
693f0bd
chore: export the modules of your app in your index.ts file
holaontiveros Aug 8, 2025
51408dd
chore: app.scss updates
holaontiveros Aug 8, 2025
5c0c461
chore: remove use of process.env
holaontiveros Aug 8, 2025
8e7386e
chore: convert @import to @use in SCSS files
holaontiveros Aug 8, 2025
1d4fcd3
chore: refactor slots
holaontiveros Aug 11, 2025
6e9af53
chore: remove build from CI
holaontiveros Aug 11, 2025
e0d17b9
chore: updated import paths
holaontiveros Aug 11, 2025
e8b25b7
chore: update main component for better compatibility (HOC to hooks)
holaontiveros Aug 11, 2025
d917612
chore: main renames to match other apps
holaontiveros Aug 11, 2025
6b9dd97
chore: updated fa icons to prevent problems of icons not showing
holaontiveros Aug 11, 2025
4368864
chore: remove undesired features
holaontiveros Aug 11, 2025
3938cd6
chore: small readme updates
holaontiveros Aug 13, 2025
f1abed8
chore: fixed comments
holaontiveros Sep 29, 2025
683dba5
chore: comment fixes
holaontiveros Sep 29, 2025
1e13b4d
chore: added right URL for courses menu item
holaontiveros Sep 29, 2025
2572629
chore: fixed eslint config name
holaontiveros Sep 30, 2025
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
36 changes: 0 additions & 36 deletions .env

This file was deleted.

42 changes: 0 additions & 42 deletions .env.development

This file was deleted.

5 changes: 0 additions & 5 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -1,6 +1 @@
coverage/*
dist/
node_modules/
src/postcss.config.js
src/segment.js
src/lightning.js
30 changes: 0 additions & 30 deletions .eslintrc.js

This file was deleted.

2 changes: 1 addition & 1 deletion .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
# These owners will be the default owners for everything in
# the repo. Unless a later match takes precedence, they will
# be requested for review when someone opens a pull request.
* @openedx/content-aurora
* @openedx/content-aurora
5 changes: 1 addition & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,6 @@ jobs:
- name: Run Test
run: npm run test

- name: Run Build
run: npm run build

- name: Run Coverage
uses: codecov/codecov-action@v5
with:
Expand All @@ -47,7 +44,7 @@ jobs:

- name: Send failure notification
if: ${{ failure() }}
uses: dawidd6/action-send-mail@v4
uses: dawidd6/action-send-mail@v6
with:
server_address: email-smtp.us-east-1.amazonaws.com
server_port: 465
Expand Down
28 changes: 8 additions & 20 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,27 +1,15 @@
.DS_Store
.eslintcache
node_modules
npm-debug.log
coverage

module.config.js
dist/
src/i18n/transifex_input.json
temp/babel-plugin-react-intl
/*.tgz

### pyenv ###
.python-version

### Emacs ###
*~
*.swo
*.swp

### Development environments ###
.idea
.vscode

### transifex ###
### i18n ###
src/i18n/transifex_input.json
temp

src/i18n/messages/
### Editors ###
.DS_Store
*~
/temp
/.vscode
16 changes: 5 additions & 11 deletions .npmignore
Original file line number Diff line number Diff line change
@@ -1,12 +1,6 @@
.eslintignore
.eslintrc.json
.gitignore
docker-compose.yml
Dockerfile
Makefile
npm-debug.log

config
coverage
__mocks__
node_modules
public
*.test.js
*.test.jsx
*.test.ts
*.test.tsx
19 changes: 8 additions & 11 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ transifex_input = $(i18n)/transifex_input.json
# This directory must match .babelrc .
transifex_temp = ./temp/babel-plugin-formatjs

NPM_TESTS=build i18n_extract lint test is-es5
NPM_TESTS=build i18n_extract lint test

.PHONY: test
test: $(addprefix test.npm.,$(NPM_TESTS)) ## validate ci suite
Expand All @@ -36,19 +36,16 @@ i18n.concat:
extract_translations: | requirements i18n.extract i18n.concat


# Experimental: OEP-58 Pulls translations using atlas
# Pulls translations using atlas.
pull_translations:
rm -rf src/i18n/messages
mkdir src/i18n/messages
cd src/i18n/messages \
&& atlas pull $(ATLAS_OPTIONS) \
translations/frontend-component-footer/src/i18n/messages:frontend-component-footer \
translations/frontend-component-header/src/i18n/messages:frontend-component-header \
translations/frontend-platform/src/i18n/messages:frontend-platform \
translations/paragon/src/i18n/messages:paragon \
translations/frontend-app-gradebook/src/i18n/messages:frontend-app-gradebook

$(intl_imports) frontend-platform paragon frontend-component-header frontend-component-footer frontend-app-gradebook
&& atlas pull $(ATLAS_OPTIONS) \
translations/frontend-base/src/i18n/messages:frontend-base \
translations/paragon/src/i18n/messages:paragon \
translations/frontend-app-gradebook/src/i18n/messages:frontend-app-gradebook

$(intl_imports) frontend-base paragon frontend-app-gradebook

# This target is used by CI.
validate-no-uncommitted-package-lock-changes:
Expand Down
62 changes: 29 additions & 33 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ For existing documentation see:

### What does this offer over the legacy gradebook?

The micro-frontend offers a great deal more granularity when searching for problems, an easy interface for editing grades, an
The micro-frontend offers a great deal more granularity when searching for problems, an easy interface for editing grades, an
audit trail for seeing who edited what grade and what reason they gave (if any) for doing so.

UsageProblems can be filtered by student as in the traditional gradebook, but can also be filtered by scores to see who
Expand All @@ -39,7 +39,7 @@ quick links to the problems for the instructor to visit. It expects the instruct
are grading and which unit they refer to.

The gradebook is expected to be much more performant for larger numbers of students as well. The Instructor Dashboard
link for the legacy gradebook reports that "this feature is available only to courses with a small number of enrolled
link for the legacy gradebook reports that "this feature is available only to courses with a small number of enrolled
learners." However, this project comes with no such warning.

### Who should not change to this gradebook?
Expand All @@ -51,10 +51,10 @@ generated by the current gradebook might find the lack of autogenerated graphs t

## Getting Started


### Installation

To install gradebook into your project:

```
npm i --save @edx/frontend-app-gradebook
```
Expand Down Expand Up @@ -97,19 +97,10 @@ Cloning and Startup

To install the project please refer to the [`MFE Development on Tutor`](https://github.com/overhangio/tutor-mfe?tab=readme-ov-file#mfe-development) instructions.

When not mounted, gradebook will run in the shared MFE container at http://apps.local.openedx.io/gradebook/course-v1:edX+DemoX+Demo_Course.
When not mounted, gradebook will run in the shared MFE container at <http://apps.local.openedx.io/gradebook/course-v1:edX+DemoX+Demo_Course>.

When mounted in the tutor ``gradebook`` container, or when running a local (host) webpack dev server, the web application runs on port **1994**, so when you go to `http://apps.local.openedx.io:1994/gradebook/course-v1:edX+DemoX+Demo_Course` you should see the UI (assuming you have such a Demo Course in your devstack). Note that you always have to provide a course id to actually see a gradebook.

(Note: This may not work in Tutor; these instructions are for the deprecated Devstack) You can see the log messages for the docker container by executing `make gradebook-logs` in the `devstack` directory.

Note that starting the container executes the `npm run start` script which will hot-reload JavaScript and Sass files changes, so you should (:crossed_fingers:) not need to do anything (other than wait) when making changes.

## Plugins
This MFE can be customized using [Frontend Plugin Framework](https://github.com/openedx/frontend-plugin-framework).

The parts of this MFE that can be customized in that manner are documented [here](/src/plugin-slots).

## Running tests

Run:
Expand All @@ -122,21 +113,25 @@ Run:

## Directory Structure

* `config`
* Directory for [`webpack`](https://webpack.js.org/) configurations
* `public`
* Entry point for the single-page application - `gradebook` has a single `index.html` file
* `src`
* `components`
* Directory for presentational `React` components
* `containers`
* Directory for container `React` components
* `data`
* `actions`
* Directory for `Redux` action creators
* `constants`
* `reducers`
* Directory for `Redux` reducers
- `config`
- Directory for [`webpack`](https://webpack.js.org/) configurations
- `public`
- Entry point for the single-page application - `gradebook` has a single `index.html` file
- `src`
- `components`
- Directory for presentational `React` components
- `containers`
- Directory for container `React` components
- `data`
- `actions`
- Directory for `Redux` action creators
- `constants`
- `reducers`
- Directory for `Redux` reducers
- `i18n`
- Directory for i18n related data
- `slots`
- Directory for slots components

## Authentication with backend API services

Expand Down Expand Up @@ -164,18 +159,18 @@ Getting Help
===========

If you're having trouble, we have discussion forums at
https://discuss.openedx.org where you can connect with others in the community.
<https://discuss.openedx.org> where you can connect with others in the community.

Our real-time conversations are on Slack. You can request a [Slack
invitation](https://openedx.org/slack), then join our
invitation](https://openedx.org/slack), then join our
[community Slack workspace](https://openedx.slack.com/) Because this is a
frontend repository, the best place to discuss it would be in the
frontend repository, the best place to discuss it would be in the
[#wg-frontend channel](https://openedx.slack.com/archives/C04BM6YC7A6).

For anything non-trivial, the best path is to open an issue in this repository
with as many details about the issue you are facing as you can provide.

https://github.com/openedx/frontend-app-gradebook/issues
<https://github.com/openedx/frontend-app-gradebook/issues>

For more information about these options, see the [Getting Help](https://openedx.org/community/connect) page.

Expand All @@ -186,4 +181,5 @@ All community members are expected to follow the [Open edX Code of Conduct](http

Reporting Security Issues
=========================
Please do not report security issues in public. Please email [email protected].

Please do not report security issues in public. Please email <[email protected]>.
10 changes: 10 additions & 0 deletions app.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
/// <reference types="@openedx/frontend-base" />

declare module 'site.config' {
export default SiteConfig;
}

declare module '*.svg' {
const content: string;
export default content;
}
2 changes: 1 addition & 1 deletion babel.config.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
const { createConfig } = require('@openedx/frontend-build');
const { createConfig } = require('@openedx/frontend-base/config');

module.exports = createConfig('babel');
6 changes: 0 additions & 6 deletions documentation/CI.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,6 @@ This is important because `npm` uses the pinned dependencies in your `package-lo

However, when these changes surface within a CI build, this indicates differing dependency expectations between the committed `package.json` file and the `package-lock.json` file, which is a good reason to fail a build.

### What is this `npm run is-es5` check?

This project outputs production files to the `dist` folder. The `npm script`, `npm run is-es5`, checks the JavaScript files in the `dist` folder to make sure that they are `ES5`-compliant.

This check is important because `ES5` JavaScript has [greater browser compatibility](http://kangax.github.io/compat-table/es5/) than [`ES2015+`](http://kangax.github.io/compat-table/es6/) - particularly for `IE11`.

### `deploy` step

How your project deploys will probably differ between the cookie cutter and your own application.
Expand Down
Loading
Loading