{"id":48908714,"url":"https://github.com/aojdevstudio/dental-dashboard","last_synced_at":"2026-04-16T22:03:57.588Z","repository":{"id":298220081,"uuid":"983919715","full_name":"AojdevStudio/dental-dashboard","owner":"AojdevStudio","description":"A production-grade dental practice dashboard that provides comprehensive data visualization and KPI tracking for dental clinics. ","archived":false,"fork":false,"pushed_at":"2025-08-09T16:51:33.000Z","size":37687,"stargazers_count":0,"open_issues_count":27,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-09T18:30:29.747Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://unifiedental.com/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AojdevStudio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-15T05:52:52.000Z","updated_at":"2025-08-08T17:58:34.000Z","dependencies_parsed_at":"2025-08-09T18:24:30.309Z","dependency_job_id":null,"html_url":"https://github.com/AojdevStudio/dental-dashboard","commit_stats":null,"previous_names":["aojdevstudio/dental-dashboard"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/AojdevStudio/dental-dashboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AojdevStudio%2Fdental-dashboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AojdevStudio%2Fdental-dashboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AojdevStudio%2Fdental-dashboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AojdevStudio%2Fdental-dashboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AojdevStudio","download_url":"https://codeload.github.com/AojdevStudio/dental-dashboard/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AojdevStudio%2Fdental-dashboard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31905896,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T18:22:33.417Z","status":"ssl_error","status_checked_at":"2026-04-16T18:21:47.142Z","response_time":69,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-16T22:03:39.972Z","updated_at":"2026-04-16T22:03:57.533Z","avatar_url":"https://github.com/AojdevStudio.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dental Dashboard - Multi-Tenant Practice Insights Platform\n\n[![Next.js](https://img.shields.io/badge/Next.js-15.3.2-black?logo=next.js)](https://nextjs.org/)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.8.3-blue?logo=typescript)](https://www.typescriptlang.org/)\n[![Supabase](https://img.shields.io/badge/Supabase-PostgreSQL-green?logo=supabase)](https://supabase.com/)\n[![Playwright](https://img.shields.io/badge/Playwright-E2E%20Testing-orange?logo=playwright)](https://playwright.dev/)\n[![Prisma](https://img.shields.io/badge/Prisma-6.12.0-2D3748?logo=prisma)](https://www.prisma.io/)\n\n\u003e **A comprehensive multi-tenant dental practice insights dashboard providing real-time KPI tracking, data visualization, and Google Sheets integration for dental clinics.**\n\n## 🎯 Project Overview\n\nThe Dental Dashboard is a production-grade Next.js application designed to empower dental practices with actionable data insights. Built with a focus on multi-tenancy, security, and performance, it provides comprehensive analytics and KPI tracking for dental clinic owners, practice managers, and healthcare providers.\n\n### Key Features\n- 📊 **Real-time Analytics** - Live KPI tracking and performance metrics\n- 🏥 **Multi-Clinic Support** - Secure multi-tenant architecture with Row Level Security (RLS)\n- 📈 **Provider Performance** - Individual dentist and hygienist performance tracking\n- 🔗 **Google Sheets Integration** - Automated data synchronization from practice spreadsheets\n- 📱 **Responsive Design** - Mobile-first design with accessibility compliance\n- 🔐 **Enterprise Security** - Supabase authentication with comprehensive access controls\n- 🧪 **Comprehensive Testing** - Unit, integration, and E2E test coverage with Playwright\n\n## 🏗️ Technology Stack\n\n### Frontend\n- **Framework**: [Next.js 15.3.2](https://nextjs.org/) with App Router and Turbopack\n- **Language**: TypeScript 5.8.3 with strict mode\n- **UI Library**: [Shadcn/ui](https://ui.shadcn.com/) with Radix UI primitives\n- **Styling**: [Tailwind CSS 4.1.11](https://tailwindcss.com/) with PostCSS\n- **Icons**: Lucide React 0.510.0\n- **Charts**: Recharts 2.15.4 for data visualization\n- **Animation**: Framer Motion 12.23.6\n- **State Management**: TanStack Query 5.83.0, Zustand 5.0.6\n\n### Backend \u0026 Database\n- **Runtime**: Node.js with Next.js API Routes\n- **Database**: PostgreSQL via [Supabase](https://supabase.com/)\n- **ORM**: [Prisma 6.12.0](https://www.prisma.io/) with type-safe queries\n- **Authentication**: Supabase Auth with SSR support\n- **File Storage**: Supabase Storage\n- **Real-time**: Supabase Realtime subscriptions\n\n### Development \u0026 Testing\n- **Package Manager**: pnpm 10.12.4\n- **Code Quality**: [Biome 1.9.4](https://biomejs.dev/) for linting and formatting\n- **Testing**: \n  - Unit/Integration: Vitest 3.2.4 with jsdom\n  - E2E Testing: Playwright 1.54.1 with multi-browser support\n  - Cloud Testing: Branch database testing with .env.test\n- **Type Checking**: TypeScript compiler with strict null checks\n- **Pre-commit**: Husky 9.1.7 with automated quality checks\n\n### External Integrations\n- **Google APIs**: Google Sheets API, Google Drive API\n- **Authentication**: Google OAuth 2.0 integration\n- **AI Services**: Anthropic Claude, OpenAI (for development tooling)\n- **Monitoring**: Winston 3.17.0 for structured logging\n\n### Deployment \u0026 Infrastructure\n- **Hosting**: Vercel (Next.js optimized)\n- **Database**: Supabase managed PostgreSQL\n- **CDN**: Vercel Edge Network\n- **Environment**: Environment-specific configurations (.env files)\n\n## 🎯 Business Context\n\n### Vision \u0026 Mission\n- **Vision**: Empower dental practices with accessible, actionable data insights to optimize operations and improve patient care\n- **Mission**: Deliver a user-friendly, comprehensive dashboard that seamlessly integrates data sources and facilitates evidence-based decision making\n\n### Target Users\n- **Dental Clinic Owners**: High-level practice performance and financial oversight\n- **Practice Managers**: Daily operations management and staff performance tracking\n- **Office Administrators**: User management, data entry, and system configuration\n- **Dentists \u0026 Hygienists**: Individual performance tracking and goal management\n\n### Core Value Proposition\n- **Centralized Analytics**: Replace manual spreadsheet compilation with automated insights\n- **Real-time Visibility**: Live KPI tracking for immediate operational awareness\n- **Multi-location Support**: Secure, scalable architecture for practice groups\n- **Integration-first**: Seamless data flow from existing Google Sheets workflows\n\n## 🚀 Quick Start\n\n### Prerequisites\n- **Node.js** 18+ with pnpm 10+\n- **Database**: Supabase project (or local PostgreSQL)\n- **Google Cloud Project** (for Sheets API integration)\n\n### Installation\n\n1. **Clone the repository**\n   ```bash\n   git clone https://github.com/AojdevStudio/dental-dashboard.git\n   cd dental-dashboard\n   ```\n\n2. **Install dependencies**\n   ```bash\n   pnpm install\n   ```\n\n3. **Environment setup**\n   ```bash\n   cp .env.example .env\n   ```\n   \n   Configure your `.env` file:\n   ```env\n   # Supabase Configuration\n   NEXT_PUBLIC_SUPABASE_URL=REPLACE_WITH_YOUR_SUPABASE_URL\n   NEXT_PUBLIC_SUPABASE_ANON_KEY=REPLACE_WITH_YOUR_ANON_KEY\n   DATABASE_URL=REPLACE_WITH_YOUR_DATABASE_URL\n   DIRECT_URL=REPLACE_WITH_YOUR_DIRECT_URL\n   \n   # Google API Integration\n   GOOGLE_CLIENT_ID=REPLACE_WITH_YOUR_CLIENT_ID\n   GOOGLE_CLIENT_SECRET=REPLACE_WITH_YOUR_CLIENT_SECRET\n   GOOGLE_REDIRECT_URI=http://localhost:3000/api/auth/google/callback\n   \n   # Optional: AI Development Tools\n   ANTHROPIC_API_KEY=REPLACE_WITH_YOUR_API_KEY\n   ```\n\n4. **Database setup**\n   ```bash\n   pnpm prisma:push     # Push schema to database\n   pnpm prisma:generate # Generate Prisma client\n   pnpm prisma:seed     # Seed with sample data\n   ```\n\n5. **Start development server**\n   ```bash\n   pnpm dev\n   ```\n   \n   Visit [http://localhost:3000](http://localhost:3000) to see the application.\n\n### First-time Setup\n\n1. **Create a test admin user**\n   ```bash\n   pnpm dlx tsx scripts/create-test-admin.ts\n   ```\n\n2. **Verify authentication flow**\n   ```bash\n   pnpm dlx tsx scripts/test-complete-auth.ts\n   ```\n\n3. **Run the test suite**\n   ```bash\n   pnpm test              # Unit/integration tests\n   pnpm test:e2e          # End-to-end tests\n   ```\n\n## 🧪 Testing Infrastructure\n\n### Test Architecture\nThe project uses a comprehensive testing strategy with multiple test types:\n\n- **Unit Tests**: Component and utility function testing with Vitest\n- **Integration Tests**: API route and database interaction testing\n- **E2E Tests**: Full user workflow testing with Playwright\n- **Cloud Testing**: Tests run against branch databases for production parity\n\n### Running Tests\n\n```bash\n# Unit and Integration Tests\npnpm test                    # Run all tests\npnpm test:watch             # Watch mode\npnpm test:coverage          # Coverage report\npnpm test:cloud             # Tests with cloud database\n\n# End-to-End Tests\npnpm test:e2e               # Run E2E tests\npnpm test:e2e:ui            # Interactive mode\npnpm test:e2e:headed        # Headed browser mode\npnpm test:e2e:report        # View test report\n\n# Playwright Configuration\npnpm playwright install     # Install browsers\n```\n\n### Test Environment Setup\n\nThe project uses environment-specific testing:\n\n```bash\n# Test environment variables (.env.test)\nNODE_ENV=test\nDATABASE_URL=your-test-database-url\nNEXT_PUBLIC_SUPABASE_URL=your-test-supabase-url\n```\n\n### E2E Testing Features\n\n- **Multi-browser testing**: Chrome, Firefox, Safari, Mobile\n- **Authentication fixtures**: Automated login/signup flows\n- **Visual regression**: Screenshot comparisons\n- **Performance monitoring**: Core Web Vitals tracking\n- **Parallel execution**: Optimized test runtime\n\n## 🏗️ Architecture Overview\n\n### System Architecture\n\nThe Dental Dashboard follows a modern multi-tenant architecture with strict security boundaries:\n\n```mermaid\ngraph TB\n    subgraph \"Client Layer\"\n        UI[Next.js Frontend]\n        Auth[Authentication]\n    end\n    \n    subgraph \"API Layer\"\n        API[Next.js API Routes]\n        Middleware[Auth Middleware]\n        RLS[Row Level Security]\n    end\n    \n    subgraph \"Data Layer\"\n        DB[(Supabase PostgreSQL)]\n        Prisma[Prisma ORM]\n        Cache[Query Cache]\n    end\n    \n    subgraph \"External Services\"\n        Sheets[Google Sheets API]\n        GAS[Google Apps Script]\n        AI[AI Services]\n    end\n    \n    UI --\u003e API\n    Auth --\u003e Middleware\n    API --\u003e Prisma\n    Prisma --\u003e DB\n    RLS --\u003e DB\n    API --\u003e Sheets\n    Sheets --\u003e GAS\n    \n    classDef client fill:#e1f5fe\n    classDef api fill:#f3e5f5\n    classDef data fill:#e8f5e8\n    classDef external fill:#fff3e0\n    \n    class UI,Auth client\n    class API,Middleware,RLS api\n    class DB,Prisma,Cache data\n    class Sheets,GAS,AI external\n```\n\n### Multi-Tenant Security Model\n\n- **Row Level Security (RLS)**: Database-level access control ensuring data isolation\n- **Auth Context**: User clinic associations determine data access scope\n- **Role-Based Access**: Granular permissions (admin, clinic_admin, provider, user)\n- **API Middleware**: Comprehensive authentication and authorization checks\n\n### Key Architectural Decisions\n\n- **Server Components First**: Leveraging Next.js 15 App Router for optimal performance\n- **Type-Safe Database Access**: Prisma ORM with full TypeScript integration\n- **Edge-Ready**: Designed for Vercel Edge Functions and global deployment\n- **Real-time Capable**: Supabase subscriptions for live data updates\n\n## 💻 Development Workflow\n\n### Code Quality Pipeline\n\nEvery code change must pass our comprehensive quality gates:\n\n```bash\n# Pre-commit Quality Checks\npnpm format          # Biome code formatting\npnpm typecheck      # TypeScript type checking\npnpm biome:check    # Linting and code analysis\npnpm test           # Unit and integration tests\n\n# Full Quality Pipeline\npnpm code-quality   # All checks + build verification\n```\n\n### Branch Strategy\n\n```bash\n# Feature development\ngit checkout -b feature/your-feature-name\n# Make changes, commit frequently\ngit commit -m \"feat: implement provider filtering\"\n\n# Before pushing\npnpm pre-commit     # Run quality checks\ngit push origin feature/your-feature-name\n\n# Create PR when ready\ngh pr create --title \"feat: Add provider filtering\" --body \"Description...\"\n```\n\n### Database Workflow\n\n```bash\n# Schema changes\npnpm prisma:push            # Push to development DB\npnpm prisma:generate        # Generate new client\npnpm prisma:studio          # Inspect data\n\n# Data migrations\npnpm migrate:uuid           # Run UUID migration\npnpm migrate:validate       # Validate migration results\n\n# Testing with fresh data\npnpm test:seed              # Seed test database\n```\n\n### Google Apps Script Deployment\n\n```bash\n# Deploy sync scripts\npnpm gas:deploy             # Deploy all scripts\npnpm gas:deploy:dentist     # Deploy dentist sync only\npnpm gas:deploy:hygienist   # Deploy hygienist sync only\n\n# Health monitoring\npnpm gas:health             # Check script health\npnpm gas:status             # Deployment status\n```\n\n## 📡 API Documentation\n\n### Authentication Endpoints\n\n| Method | Endpoint | Description |\n|--------|----------|-------------|\n| `POST` | `/api/auth/register-comprehensive` | Complete user registration |\n| `GET` | `/api/auth/session` | Get current session |\n| `POST` | `/api/auth/complete-signup` | Complete signup process |\n| `GET` | `/api/auth/google/connect` | Initiate Google OAuth |\n| `GET` | `/api/auth/google/callback` | Handle OAuth callback |\n\n### Core API Routes\n\n#### Clinics\n- `GET /api/clinics` - List accessible clinics\n- `POST /api/clinics` - Create new clinic (admin only)\n- `GET /api/clinics/[clinicId]` - Get clinic details\n- `PATCH /api/clinics/[clinicId]` - Update clinic\n- `GET /api/clinics/[clinicId]/statistics` - Clinic analytics\n\n#### Providers\n- `GET /api/providers` - List providers\n- `POST /api/providers` - Create provider\n- `GET /api/providers/[providerId]` - Provider details\n- `GET /api/providers/[providerId]/metrics` - Provider metrics\n- `GET /api/providers/[providerId]/performance` - Performance data\n- `GET /api/providers/[providerId]/kpi` - KPI calculations\n\n#### Metrics \u0026 Analytics\n- `GET /api/metrics/financial` - Financial metrics\n- `GET /api/metrics/patients` - Patient analytics\n- `GET /api/metrics/appointments` - Appointment metrics\n- `GET /api/metrics/aggregated` - Pre-computed aggregations\n\n#### Goals \u0026 Tracking\n- `GET /api/goals` - List goals with filtering\n- `POST /api/goals` - Create goal or from template\n- `GET /api/goals/[goalId]` - Goal details\n- `PUT /api/goals/[goalId]` - Update goal\n- `DELETE /api/goals/[goalId]` - Soft delete goal\n\n### API Response Format\n\nAll API responses follow a consistent format:\n\n```typescript\n// Success Response\n{\n  success: true,\n  data: T,\n  message?: string\n}\n\n// Error Response\n{\n  success: false,\n  error: {\n    code: string,\n    message: string,\n    details?: any\n  }\n}\n\n// Paginated Response\n{\n  success: true,\n  data: T[],\n  pagination: {\n    page: number,\n    limit: number,\n    total: number,\n    hasMore: boolean\n  }\n}\n```\n\n### Authentication \u0026 Authorization\n\nAPI routes use middleware-based auth:\n\n```typescript\n// Route with authentication\nexport const GET = withAuth(async (request, { user }) =\u003e {\n  // Access authenticated user\n});\n\n// Route with role requirements\nexport const POST = withAuth(async (request, { user, authContext }) =\u003e {\n  // Access user's clinic associations and roles\n}, { requireClinicAdmin: true });\n```\n\n## 🗄️ Database Schema\n\n### Core Models\n\nThe database follows a multi-tenant design with the following key entities:\n\n#### Authentication \u0026 Users\n- **User**: Application users with clinic associations\n- **UserClinicRole**: Many-to-many relationship defining user roles per clinic\n\n#### Practice Management\n- **Clinic**: Top-level tenant with multiple locations\n- **Location**: Physical clinic locations (e.g., \"Baytown\", \"Humble\")\n- **Provider**: Healthcare providers (dentists, hygienists) with multi-location support\n\n#### Metrics \u0026 Analytics  \n- **MetricDefinition**: Configurable metric types (financial, patient, appointment)\n- **MetricValue**: Time-series data points for each metric\n- **MetricAggregation**: Pre-computed aggregations for performance\n\n#### Goals \u0026 Tracking\n- **Goal**: Practice and provider-specific targets\n- **GoalTemplate**: Reusable goal configurations\n\n#### Data Integration\n- **DataSource**: Google Sheets and other data source configurations\n- **ColumnMapping**: Maps external data columns to internal metrics\n\n### Row Level Security (RLS)\n\nEvery table implements RLS policies ensuring:\n- Users only access data from their associated clinics\n- Role-based permissions (admin, clinic_admin, provider, user)\n- Automatic data isolation at the database level\n\n```sql\n-- Example RLS Policy\nCREATE POLICY \"Users can only see their clinic's providers\"\n  ON providers FOR SELECT\n  USING (clinic_id IN (\n    SELECT clinic_id FROM user_clinic_roles \n    WHERE user_id = auth.uid()\n  ));\n```\n\n### Migration Strategy\n\nThe project uses a phased migration approach:\n- **Phase 1**: Core multi-tenant schema\n- **Phase 2**: UUID support for external system integration  \n- **Phase 3**: Enhanced RLS and performance optimization\n\n## 🚢 Deployment\n\n### Production Environment\n\n**Primary Stack**:\n- **Frontend**: Vercel with Next.js optimization\n- **Database**: Supabase managed PostgreSQL\n- **CDN**: Vercel Edge Network with global caching\n- **Monitoring**: Vercel Analytics + Custom Winston logging\n\n**Environment Variables**:\n```bash\n# Production .env\nNEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co\nNEXT_PUBLIC_SUPABASE_ANON_KEY=your-production-anon-key\nDATABASE_URL=postgresql://postgres:[PASSWORD]@db.your-project.supabase.co:5432/postgres\n```\n\n### Deployment Workflow\n\n```bash\n# Production deployment\ngit push origin main           # Automatic Vercel deployment\n\n# Database migrations\npnpm prisma:push              # Apply schema changes\npnpm prisma:generate          # Update client\n\n# Post-deployment validation\npnpm gas:health:all           # Verify Google Apps Script health\n```\n\n### Environment Management\n\n- **Development**: Local development with Supabase local or cloud dev branch\n- **Staging**: Branch preview deployments on Vercel\n- **Production**: Main branch auto-deployment with environment promotion\n\n### Monitoring \u0026 Observability\n\n- **Application Logging**: Winston with structured JSON logging\n- **Error Tracking**: Built-in error boundaries with detailed context\n- **Performance**: Core Web Vitals monitoring via Vercel Analytics\n- **Database**: Supabase built-in monitoring and query performance insights\n\n## 🤝 Contributing\n\n### Development Guidelines\n\n1. **Follow the CLAUDE.md protocol** for comprehensive development partnership\n2. **Run quality checks** before every commit (`pnpm pre-commit`)\n3. **Write tests** for new features (aim for \u003e80% coverage)\n4. **Update documentation** for API changes or new features\n5. **Use conventional commits** for clear changelog generation\n\n### Code Standards\n\n- **TypeScript**: Strict mode with explicit return types\n- **Components**: Prefer Server Components, use Client Components judiciously  \n- **API Routes**: Follow RESTful patterns with consistent error handling\n- **Database**: Always use auth context for multi-tenant queries\n- **Testing**: Unit tests for utilities, integration tests for APIs, E2E for workflows\n\n### Getting Help\n\n- **Issues**: Use GitHub Issues for bug reports and feature requests\n- **Discussions**: GitHub Discussions for questions and ideas\n- **Documentation**: Check `/docs` folder for detailed guides\n- **AI Assistant**: Use Claude Code integration for development support\n\n### Project Structure\n\n```\nsrc/\n├── app/                    # Next.js App Router\n│   ├── (dashboard)/       # Main application routes\n│   ├── (auth)/           # Authentication pages\n│   └── api/              # API routes\n├── components/           # React components\n│   ├── ui/              # Reusable UI components\n│   ├── dashboard/       # Dashboard-specific components\n│   └── providers/       # Provider management components\n├── lib/                 # Utilities and configurations\n│   ├── database/        # Prisma client and queries\n│   ├── auth/           # Authentication utilities\n│   └── utils/          # Helper functions\n├── hooks/              # Custom React hooks\n├── types/              # TypeScript type definitions\n└── styles/             # Global styles\n```\n\n---\n\n## 📄 License\n\nThis project is proprietary software developed for dental practice management. Unauthorized reproduction or distribution is prohibited.\n\n## 🔗 Links\n\n- **Live Demo**: [Production URL]\n- **Documentation**: `/docs` folder\n- **API Reference**: Built-in API documentation\n- **Supabase Project**: [Supabase Dashboard]\n- **Linear Project**: [Project Management Board]\n\n---\n\n*Built with ❤️ for dental practices by the AOJDevStudio team.*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faojdevstudio%2Fdental-dashboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faojdevstudio%2Fdental-dashboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faojdevstudio%2Fdental-dashboard/lists"}