Overview
OneGlanse is an open-source monorepo that tracks how AI providers mention brands. This guide covers everything you need to start contributing.Repository Structure
The codebase is organized as a pnpm + Turborepo monorepo:Prerequisites
Before you begin, ensure you have:- Node.js 20+ (required)
- pnpm 10+ (package manager)
- Docker + Docker Compose (for infrastructure)
- Git for version control
Development Environment Setup
DATABASE_URL - PostgreSQL connection stringCLICKHOUSE_URL, CLICKHOUSE_DB, CLICKHOUSE_USER, CLICKHOUSE_PASSWORD - ClickHouse configREDIS_URL - Redis connection for BullMQBETTER_AUTH_SECRET - Auth secret keyAPP_URL, API_BASE_URL - Local URLs (typically http://localhost:3000)Code Style and Conventions
Formatting with Biome
We use Biome for code formatting and linting. Configuration is inbiome.json:
biome check . --fix across the entire monorepo.
TypeScript Standards
- Strict mode enabled - All workspaces use strict TypeScript
- Type safety first - Avoid
any, preferunknownwhen type is uncertain - Shared types - Domain types go in
packages/types/src/types/ - Import extensions - Use
.jsextensions for ESM imports (TypeScript convention)
File Organization
- Colocation - Keep related files together (component + styles + tests)
- Barrel exports - Use
index.tsfor clean public APIs - Naming conventions:
- Components:
PascalCase.tsx - Utilities:
camelCase.ts - Types:
camelCase.tsor descriptive names likeagent.ts - Constants:
UPPER_SNAKE_CASE
- Components:
Workspace Dependencies
- Cross-workspace imports - Use workspace protocol:
"@oneglanse/types": "workspace:*" - Shared code placement:
- Business logic →
packages/services - Type definitions →
packages/types - UI components →
packages/ui - Utilities →
packages/utils - Errors →
packages/errors
- Business logic →
Running Tests
Currently, the repository uses TypeScript’s type checking as the primary validation:.github/workflows/build.yml) runs pnpm typecheck on every push.
Common Development Tasks
Database Operations
Building Apps
Cleaning Build Artifacts
Pull Request Process
feature/ - New featuresfix/ - Bug fixesdocs/ - Documentation updatesrefactor/ - Code refactoringpackages/types if neededfeat: - New featurefix: - Bug fixdocs: - Documentationrefactor: - Code refactoringchore: - Maintenance tasksFinding Tasks to Work On
GitHub Issues
Check the Issues tab for:good first issue- Great for newcomershelp wanted- Contributions welcomebug- Bug fixes neededenhancement- Feature requests
Project Areas
Depending on your interests: Frontend/UI →apps/web, apps/landing, packages/ui
Backend/API → apps/web tRPC routes, packages/services
Browser Automation → apps/agent, provider implementations
Database → packages/db, migrations, schema
Documentation → apps/docs, README files
Starting Points
- Add a new AI provider - See Adding Providers guide
- Improve error handling - Enhance
packages/errors - Add UI components - Build reusable components in
packages/ui - Optimize queries - Improve database performance
- Write documentation - Help others understand the codebase
Community Guidelines
Code of Conduct
- Be respectful and inclusive
- Welcome newcomers and help them learn
- Provide constructive feedback
- Focus on what is best for the community
Getting Help
- GitHub Discussions - Ask questions, share ideas
- Issues - Report bugs, request features
- Pull Requests - Review others’ code, get feedback on yours
Review Process
All contributions go through code review:- Maintainers will review your PR
- Address feedback promptly
- Be open to suggestions
- Iterate until approval
Architecture Principles
Monorepo Best Practices
- Build dependencies - Apps depend on packages, packages can depend on each other
- Turbo caching - Turbo caches build outputs for speed
- Workspace isolation - Each package has its own
package.json
Data Flow
- User configures prompts in
apps/web - Jobs submitted via
packages/services→ BullMQ queues apps/agentworkers consume jobs- Playwright browsers execute prompts on AI providers
- Responses stored in Postgres/ClickHouse
- Analysis jobs process responses into metrics
apps/webdisplays results in dashboards
Service Layer Pattern
- Business logic lives in
packages/services - Apps call service functions, not DB directly
- Services handle validation, orchestration, side effects
- Types define contracts between layers
Debugging Tips
Agent Development
When working onapps/agent:
Browser Automation
For Playwright debugging:Database Queries
Use Drizzle Studio to inspect data:Additional Resources
- Main README -
/README.md- Repository overview - Workspace READMEs - Each
apps/*andpackages/*has its own README - Type Definitions -
packages/types/src/types/- Domain models - Provider Configs -
apps/agent/src/core/providers/- AI provider implementations
Questions?
If you have questions not covered here:- Check the documentation
- Search GitHub Issues
- Ask in GitHub Discussions
- Open a new issue with the
questionlabel