{"id":50914540,"url":"https://github.com/toaducz/my-devhub-dashboard","last_synced_at":"2026-06-16T13:31:10.021Z","repository":{"id":345696324,"uuid":"1186954310","full_name":"toaducz/my-devhub-dashboard","owner":"toaducz","description":"devhub","archived":false,"fork":false,"pushed_at":"2026-04-15T01:51:07.000Z","size":255,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-15T03:22:39.610Z","etag":null,"topics":["devhub"],"latest_commit_sha":null,"homepage":"https://my-devhub-dashboard.vercel.app","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/toaducz.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,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-03-20T07:08:00.000Z","updated_at":"2026-04-15T01:51:11.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/toaducz/my-devhub-dashboard","commit_stats":null,"previous_names":["toaducz/my-devhub-dashboard"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/toaducz/my-devhub-dashboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toaducz%2Fmy-devhub-dashboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toaducz%2Fmy-devhub-dashboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toaducz%2Fmy-devhub-dashboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toaducz%2Fmy-devhub-dashboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/toaducz","download_url":"https://codeload.github.com/toaducz/my-devhub-dashboard/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toaducz%2Fmy-devhub-dashboard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34408777,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-16T02:00:06.860Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["devhub"],"created_at":"2026-06-16T13:31:09.261Z","updated_at":"2026-06-16T13:31:10.006Z","avatar_url":"https://github.com/toaducz.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# My DevHub Dashboard - My Project Dashboard\n\nA centralized dashboard to manage all your deployed projects from Vercel, VPS, GitHub, and Docker.\n\n## Features\n\n- **Vercel Sync**: Automatically sync projects from your Vercel account\n- **Custom Cards**: Manually add projects outside the Vercel ecosystem\n- **Categorization**: Organize projects into Active, Learning, Research, and Archive\n- **Smart Tagging**: Auto-tagging with platform detection and custom tech stack tags\n- **Health Check**: Monitor project status with ping checks and response time tracking\n- **Admin Authentication**: Secure admin area with Supabase Auth\n- **Real-time Updates**: Prepared for Supabase Realtime subscriptions\n\n## Tech Stack\n\n- **Frontend**: Next.js 16 (App Router), Tailwind CSS v4, Lucide React\n- **Backend/Database**: Supabase (PostgreSQL, Auth, Realtime)\n- **Integrations**: Vercel API\n\n## Getting Started\n\n### Prerequisites\n\n- Node.js 18+\n- Supabase account (optional for development - mock mode available)\n- Vercel API token (optional for Vercel sync)\n\n### Installation\n\n1. Clone the repository\n2. Install dependencies:\n   ```bash\n   npm install\n   ```\n3. Copy `.env.example` to `.env` and fill in your credentials:\n   ```bash\n   cp .env.example .env\n   ```\n4. Run the development server:\n   ```bash\n   npm run dev\n   ```\n5. Open [http://localhost:3000](http://localhost:3000)\n\n### Environment Variables\n\nCreate a `.env` file in the root directory:\n\n```env\n# Supabase Configuration (optional - runs in mock mode if not set)\nNEXT_PUBLIC_SUPABASE_URL=your_supabase_project_url\nNEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key\n\n# Optional: Vercel API Token for auto-sync\nMY_VERCEL_TOKEN=your_MY_VERCEL_TOKEN\n```\n\n**Note**: The app works in mock mode without Supabase credentials. All data is stored in-memory and will reset on page refresh.\n\n## Project Structure\n\n```\nmy-project-dashboard/\n├── app/\n│   ├── components/\n│   │   ├── AddProjectModal.tsx    # Modal for adding custom projects\n│   │   ├── FilterTags.tsx         # Dynamic tag filter component\n│   │   ├── ProjectCard.tsx        # Project card with health status\n│   │   ├── Sidebar.tsx            # Navigation sidebar\n│   │   └── StatsRow.tsx           # Statistics overview row\n│   ├── contexts/\n│   │   └── AuthContext.tsx        # Authentication context\n│   ├── data/\n│   │   └── projects.ts            # Mock data and types\n│   ├── health/\n│   │   └── page.tsx               # Health check monitoring page\n│   ├── lib/\n│   │   ├── schema.sql             # Database schema for Supabase\n│   │   ├── supabase.ts            # Supabase client with mock mode\n│   │   └── vercel-api.ts          # Vercel API integration\n│   ├── login/\n│   │   └── page.tsx               # Admin login page\n│   ├── settings/\n│   │   └── page.tsx               # Settings page (admin only)\n│   ├── tags/\n│   │   └── page.tsx               # Tags management page\n│   ├── layout.tsx                 # Root layout with AuthProvider\n│   ├── page.tsx                   # Main dashboard page\n│   └── globals.css                # Global styles with Tailwind\n├── .env.example                   # Environment variables template\n├── .gitignore\n└── README.md\n```\n\n## Database Schema\n\nThe project uses Supabase with the following main tables:\n\n- `projects` - Project details with category, status, health info\n- `tags` - Custom user-defined tags\n- `project_tags` - Many-to-many relationship between projects and tags\n- `health_checks` - Historical health check records\n\nSee [`app/lib/schema.sql`](app/lib/schema.sql) for full schema with RLS policies.\n\n## Authentication\n\n- Admin authentication via Supabase Auth\n- Default admin email: `toaducz@gmail.com` (hardcoded check)\n- Settings page is protected - redirects to `/login` if not authenticated\n- Login page at `/login`\n\n## Mock Mode\n\nWhen Supabase credentials are not provided, the app runs in mock mode:\n\n- All database operations are no-ops\n- Authentication always fails (use Supabase for real auth)\n- Data is stored in-memory only (resets on refresh)\n- Perfect for development and UI testing\n\n## Key Components\n\n### ProjectCard\n\nDisplays project information with:\n\n- Status indicator (online/offline/learning/research/archive)\n- Platform tags (Vercel, VPS, GitHub, Docker)\n- Live badge for deployed projects\n- Health status with response time\n- Tech stack tags\n\n### FilterTags\n\nDynamic tag filtering that:\n\n- Extracts all unique tags from projects\n- Filters by both platforms and tech stack\n- Supports \"all\" to clear filter\n\n### Sidebar\n\nNavigation with:\n\n- Category filtering (Active, Learning, Research, Archive)\n- Active state highlighting\n- Click to filter projects\n\n### AddProjectModal\n\nForm to add custom projects with:\n\n- Name, description, URL\n- Category selection\n- Platform multi-select\n- Tech stack tags\n- Live/Private checkboxes\n\n## Development Notes\n\n- All components use Tailwind CSS v4 with custom theme\n- Dark theme with green accent (#22c55e)\n- Monospace font for code elements (JetBrains Mono)\n- Responsive grid layout for project cards\n- TypeScript with strict typing\n\n## Future Enhancements\n\n- Real Vercel API integration with OAuth\n- Real-time health checks with WebSocket pings\n- Project editing and deletion\n- Bulk operations\n- Export/import functionality\n- Advanced search with fuzzy matching\n- Project dependencies graph\n- Deployment history and rollbacks\n\n## License\n\nMIT\n\n## Author\n\nToàn Đức (toaducz) - 2025\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoaducz%2Fmy-devhub-dashboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftoaducz%2Fmy-devhub-dashboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoaducz%2Fmy-devhub-dashboard/lists"}