The web frontend for OntoKit - a collaborative OWL ontology curation platform.
- Modern React-based UI with Next.js 15
- Real-time collaborative editing
- Class hierarchy visualization
- Multi-language support (i18n)
- Dark mode support
- Responsive design
- Framework: Next.js 15 (App Router)
- UI: React 19, Tailwind CSS, Radix UI
- State: Zustand, TanStack Query
- Auth: NextAuth.js with Zitadel
- i18n: next-intl
- Visualization: D3.js
- Node.js 22+
- npm or pnpm
# Clone the repository
git clone https://github.com/ontokit/ontokit-web.git
cd ontokit-web
# Install dependencies
npm install
# Copy environment configuration
cp .env.example .env.local
# Edit .env.local with your settings
# Run the development server
npm run devThe app will be available at http://localhost:3000
# Build the image
docker build \
--build-arg NEXT_PUBLIC_API_URL=http://api:8000 \
--build-arg NEXT_PUBLIC_WS_URL=ws://api:8000 \
-t ontokit-web .
# Run the container
docker run -p 3000:3000 ontokit-webontokit-web/
├── app/ # Next.js app router pages
│ ├── [locale]/ # Internationalized routes
│ ├── api/ # API routes (BFF)
│ └── globals.css # Global styles
├── components/
│ ├── ui/ # Reusable UI components
│ ├── editor/ # Ontology editor components
│ └── collab/ # Collaboration components
├── lib/
│ ├── api/ # API client
│ ├── collab/ # WebSocket collaboration
│ ├── ontology/ # OWL type definitions
│ └── i18n/ # Internationalization
├── messages/ # Translation files
├── public/ # Static assets
├── tailwind.config.ts
├── next.config.ts
└── README.md
# Development
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
# Quality
npm run lint # Run ESLint
npm run lint:fix # Fix ESLint issues
npm run type-check # TypeScript type checking
# Testing
npm run test # Run tests
npm run test:coverage # Run tests with coverage| Variable | Description |
|---|---|
NEXT_PUBLIC_API_URL |
Backend API URL |
NEXT_PUBLIC_WS_URL |
WebSocket URL for collaboration |
ZITADEL_ISSUER |
Zitadel OIDC issuer URL |
ZITADEL_CLIENT_ID |
Zitadel client ID |
ZITADEL_CLIENT_SECRET |
Zitadel client secret |
NEXTAUTH_URL |
NextAuth.js callback URL |
NEXTAUTH_SECRET |
NextAuth.js secret key |
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests and linting
- Submit a pull request
MIT License - see LICENSE file for details.