$ show dailydotdev/apps
This repository is the frontend client suite for daily.dev, a developer-focused content and community platform. It is structured as a monorepo using pnpm workspaces, containing three primary packages: `packages/webapp` (Next.js application), `packages/extension` (browser extension), and `packages/shared` (shared UI components, hooks, and GraphQL logic). The system aggregates developer content, manages user profiles and communities (Squads), handles monetization (Plus subscriptions, Cores), and provides career opportunities. Key entry points include the Next.js pages router in `packages/webapp/pages` and the extension background/content scripts in `packages/extension/src`. Data flows primarily through GraphQL queries to an external `daily-api` service, with client-side state managed via TanStack Query and Jotai. External dependencies include Paddle for payments, GrowthBook for feature flags, and Cloudinary for media. The architecture emphasizes code sharing and consistency across platforms, with `packages/shared` serving as the core library for UI primitives, business logic, and API abstractions. The webapp utilizes Next.js for server-side rendering and static generation, while the extension leverages web extension APIs for browser integration. The codebase demonstrates strong engineering practices with strict TypeScript typing, comprehensive testing (Jest, Playwright), and a robust design system. However, the heavy reliance on feature flags and the use of a non-LTS Node version (v24.18) introduce some technical debt and potential compatibility risks. The platform supports multiple user journeys including content consumption, community engagement, and monetization. It features a sophisticated feed system with infinite scrolling, personalized recommendations, and content preferences. The extension provides companion features like new tab pages and frame embedding, requiring careful synchronization with the web app's authentication and permission models. The codebase is well-structured but complex, with deep nesting of contexts and modals that could impact maintainability if not carefully managed.
The LLM identified 5 files worth highlighting for reuse:
Centralized GraphQL client configuration that abstracts API communication. It handles request/response processing, error handling, and token management. This component is reusable across the webapp and extension, providing a consistent interface for data fetching and mutations. It demonstrates skill in managing authentication headers and request lifecycle.
Complex hook managing feed state, pagination, and content preferences. It integrates with TanStack Query for server state synchronization and handles cache invalidation logic. This pattern is reusable for any paginated data list and demonstrates non-obvious skill in managing optimistic updates and query key generation.
Core component for the browser extension's companion interface. It manages the extension's popup and background communication, handling permissions and state synchronization with the web app. This component demonstrates skill in cross-origin communication and extension lifecycle management.
Reusable modal component with variants for different use cases (center, top, etc.). It handles focus management, keyboard navigation, and portal rendering. This component is a fundamental building block for the design system and demonstrates skill in accessibility and DOM manipulation.
Core button component with variants, sizes, and loading states. It enforces consistent styling and behavior across the application. This component is a design system primitive that demonstrates skill in prop validation and accessibility attributes.