Akita is the web frontend for DataCite Commons, a discovery service that connects research outputs, people, and organizations. It provides a unified search interface to explore the research landscape using persistent identifiers (PIDs).
Key features include:
- Works Search: Discover research outputs (datasets, software, text, etc.) via DOIs.
- People Search: Find researchers and their contributions via ORCID IDs.
- Organization Search: Explore research institutions and their outputs via ROR IDs.
- Repository Search: Find data repositories via DataCite Client IDs and re3data IDs.
- Visualization: View connections and statistics related to research entities.
- Frontend: Next.js (React framework), Apollo Client (GraphQL), React Bootstrap (UI components).
- Backend: Flask (Python microframework) for specific API endpoints.
- Testing: Cypress (End-to-End testing).
api/: Python Flask application for backend services (e.g. related works graph).src/: Main source code for the Next.js frontend.app/: Next.js App Router pages/routes.components/: Reusable React components.data/: GraphQL queries, constants, and data fetching logic.
cypress/: End-to-End tests.public/: Static assets.
You will need the following things properly installed on your computer.
- Git
- Node.js (with NPM) - Suggestion is to use a version manager like N
- Yarn 1 Classic
- Python 3 (with pip3)
git clone <repository-url>this repositoryyarn installcp .env.example .env(and configure environment variables as needed)pip3 install -r api/requirements.txt(optional, handled byyarn dev-all)
The application uses several environment variables for configuration. You can set these in a .env file in the root directory. A .env.example file is provided as a template.
| Variable | Description | Default (if not set) |
|---|---|---|
NEXT_PUBLIC_API_URL |
DataCite API URL | https://api.stage.datacite.org |
NEXT_PUBLIC_PROFILES_URL |
DataCite Profiles URL | https://profiles.stage.datacite.org |
NEXT_PUBLIC_ORCID_API_URL |
ORCID API URL | https://pub.sandbox.orcid.org/v3.0 |
NEXT_PUBLIC_ID_BASE |
Base URL for DOI resolution | https://handle.stage.datacite.org/ |
NEXT_PUBLIC_GA_TRACKING_ID |
Google Analytics Tracking ID | - |
SENTRY_DSN |
Sentry DSN for error tracking | - |
NEXT_PUBLIC_JWT_PUBLIC_KEY |
Public key for verifying JWTs | - |
NEXT_PUBLIC_FEATURE_FLAGS |
Comma-separated list of feature flags | - |
yarn dev-all(runs both Next.js frontend and Python API)- Visit your app at http://localhost:3000.
Note: yarn dev only runs the frontend. If you need the API, use yarn dev-all or run yarn api in a separate terminal.
yarn buildyarn start- Visit your app at http://localhost:3000.
yarn cy:run: Runs Cypress tests in headless mode.yarn cy:open: Opens the Cypress Test Runner for interactive testing.
yarn lint: Runs ESLint to check for code quality issues.yarn prettier-format: Formats code using Prettier.yarn type-check: Runs TypeScript compiler to check for type errors.
The application is built and deployed using Vercel and GitHub Actions
- Fork the project.
- Create a feature branch (
git checkout -b feature/my-new-feature). - Commit your changes (
git commit -am 'Add some feature'). - Push to the branch (
git push origin feature/my-new-feature). - Create a new Pull Request.
Please ensure you:
- Write tests for new features or bug fixes.
- Follow the existing code style.
- Do not modify the
Rakefile, version, or history files directly (if applicable).
- DataCite Commons: The live service.
- DataCite API Documentation: Reference for the DataCite REST API.
- DataCite GraphQL API Guide: Guide for using the DataCite GraphQL API.
- DataCite Support: General support documentation.
akita is released under the MIT License.