Prerequisites
Before you begin, ensure you have the following installed on your system:Operating System
The project is optimized for macOS environments. If you’re using Linux or Windows, you may need to adapt some commands from the Taskfile.yaml.
Bun Package Manager
The project uses Bun Verify the installation:
1.2.16 as its package manager. Install it using:Task Runner
Install Task for running development tasks:
Automated Setup
The easiest way to set up your development environment is using the automated setup task:- Install Bun package manager
- Install pre-commit hooks
- Configure git hooks
- Run initial code quality checks
The
local-setup task is designed for macOS. Linux and Windows users should review the Taskfile.yaml for equivalent commands.Manual Setup
If you prefer to set up your environment manually, follow these steps:Technology Stack
Openlane UI is built with the following technologies:- TypeScript - Static type-checking
- Bun - Fast all-in-one JavaScript runtime and toolkit
- Turborepo - High-performance build system for monorepos
- Next.js - React framework for web applications
- React 19.2.4 - UI library
- Tailwind CSS - Utility-first CSS framework
- SWR - Data fetching and caching
- ESLint - Code linting
- Prettier - Code formatting
Repository Structure
The monorepo is organized into apps and packages:Applications
- console - Main Openlane Console application (console.theopenlane.io)
- storybook - Component library documentation (storybook.theopenlane.io)
Packages
- @repo/codegen - Generated GraphQL functions for API requests
- @repo/ui - Shared UI component library
- @repo/dally - DAL library for common patterns
- @repo/eslint-config - ESLint configurations
- @repo/config-typescript - Shared TypeScript configs
- @repo/tailwind-config - Shared Tailwind configuration
Environment Configuration
The project uses environment variables for configuration. Turborepo v2 requires the.env file to live in the app directory.
NEXT_PUBLIC_OPENLANE_URL- Backend API URL (default:http://localhost:17608)NEXT_PUBLIC_API_GQL_URL- GraphQL API endpointAUTH_GITHUB_ID/AUTH_GITHUB_SECRET- GitHub OAuth credentialsAUTH_GOOGLE_ID/AUTH_GOOGLE_SECRET- Google OAuth credentialsNEXT_PUBLIC_ALLOWED_LOGIN_DOMAINS- Allowed email domains for login (leave empty for all)
For local development, you can leave
NEXT_PUBLIC_ALLOWED_LOGIN_DOMAINS empty to allow all email domains.