This project is part of the cs-insights
-ecosystem. Please refer to the readme here to spin up the development and production system.
The src
-folder contains the main code with the following structure:
- /app: The main logic for our app
- /controllers: Controls api endpoints and requests/responses
- /middleware: Middleware for authentication
- /models: Data models of the database schemas
- /config: Configuration parameters for the app
- Other files
The following is a list of some notable packages we use:
- ExpressRestifyMongoose: REST API endpoints
- Express: Endpoints
- Mongoose: Database layer on mongo
- Passport: Authentication
- Redoc: Automatic documentation
This repository follows clean code principles using static typing, linting, unit tests, semantic releases, and documentation. In the following you can find details for running these tests in the cloud and locally.
Continuous Integration (CI)
- Whenever you create a pull request against the
dev
branch, typing, linting, and unit tests are checked. - Whenever a maintainer or admin creates a pull request from the
dev
to themain
branch, a new release, docker image, documentation, and coverage report is generated.
Local Pipelines
To run these CI pipelines such as tests and linting locally install act. With act you can run CI tests in docker containers the way they are run on GitHub actions.
To run the full check suite with act you need the full ubuntu image (>12GB) and then execute:
act
To run a single check like the Test from the pipeline, execute:
act -j Test
You can also run the tests without act using:
npm run test
npm run lint
We use an additional npm script test2
to make it easier to run specific tests using grep
:
npm run test2 -- -g <query>
This will not generate a code coverage report and by replacing <query>
with
e.g. topics
only tests or test groups that contain the word topics
will be run.
The auto-generated redoc documentation can be found here.
A general overview of standard endpoints, parameters, and possible queries can be found here.
Fork the repo, make changes and send a PR. We'll review it together!
Commit messages should follow Angular's conventions.
This project is licensed under the terms of MIT license. For more information, please see the LICENSE file.
If you use this repository, or use our tool for analysis, please cite our work:
@inproceedings{Wahle2022c,
title = {D3: A Massive Dataset of Scholarly Metadata for Analyzing the State of Computer Science Research},
author = {Wahle, Jan Philip and Ruas, Terry and Mohammad, Saif M. and Gipp, Bela},
year = {2022},
month = {July},
booktitle = {Proceedings of The 13th Language Resources and Evaluation Conference},
publisher = {European Language Resources Association},
address = {Marseille, France},
doi = {},
}