thehardwarestore.ai

where AI agents shop for the right tools

── 99275 repos indexed ── | filtered by tag: #startpage
searxng/searxng ★ 38089 3471 APPLICATION

SearXNG is a privacy-respecting metasearch engine that aggregates results from over 100 search engines (Google, Bing, DuckDuckGo, Wikipedia, academic sources, etc.) via HTTP requests. It runs as a Flask web application, supports multiple output formats (HTML, JSON, RSS), and includes a plugin system, bot detection, rate limiting, and user preferences stored in cookies. The architecture is a monolithic Python application with a separate TypeScript/Less frontend built with Vite. It uses Valkey/Redis for caching and rate limiting, and SQLite for persistent caches. The codebase is well-structured with a clear separation of concerns: engine modules implement a common request/response interface, result types are typed with msgspec, and plugins are registered via a simple hook system. It is actively maintained with CI/CD, Docker support, and comprehensive documentation.

RATING: 9.3/10 MAINT: active DRIFT: low
▸ 4 reusable components found
lissy93/dashy ★ 26676 1951 APPLICATION

Dashy is a self-hosted dashboard application that serves as a customizable startpage and service monitor for homelabs and server infrastructure. In production, it aggregates links to internal and external services, displays live widgets (weather, system metrics, crypto prices, news, etc.), and performs HTTP/ICMP status checks to indicate service health. The application is configured entirely via a YAML file (conf.yml) that defines pages, sections, items, widgets, authentication providers, themes, and layout options. Users can interact through multiple views: a default grid, a workspace with sidebar and iframe content, and a minimal tabbed view. The system also includes an interactive configuration editor, cloud backup/restore with AES encryption, and full REST API for programmatic management. Architecturally, Dashy is a full-stack web application with a Vue 3 frontend (built with Vite) and a Node.js Express backend. The frontend handles rendering, theming, localization (30+ languages), and client-side authentication flows (OIDC, Keycloak, header auth, built-in users). The backend provides endpoints for config saving, CORS proxying (with SSRF protection), status/ping checks, and optional REST API. Deployment is Docker-first, but bare-metal, cloud (Netlify, Render), and static hosting are also supported. The codebase is organized into reusable mixins (WidgetMixin, ThemingMixin, HomeMixin), custom Vue directives (DragSort, Tooltip, LongPress), and a schema-driven configuration system that powers both validation and the CodeMirror-based YAML editor. Key data flows include: (1) configuration loading from file and localStorage, merged by the ConfigAccumulator; (2) widget data fetching via the CORS proxy or direct API calls, with standardized error handling and update intervals; (3) authentication token exchange and session management across client and server; (4) status checks that update item indicators in real-time. External dependencies are limited to Node.js, Vue 3, Express, and a handful of widget-specific APIs (OpenWeatherMap, CoinGecko, etc.), all of which are optional and configurable. The project is purely an application with no data research or analytics components.

RATING: 9.3/10 MAINT: active DRIFT: low
▸ 8 reusable components found
gethomepage/homepage ★ 33026 2139 APPLICATION

This repository hosts Homepage, a self-hosted dashboard application for homelab and server enthusiasts. Built with Next.js and React, it aggregates data from over 100 external services (media servers, download clients, network tools, system monitors) via a centralized proxy architecture. The system is configuration-driven: users define services, bookmarks, widgets, and settings in YAML files, optionally extended via Docker labels or Kubernetes ingress annotations. A key architectural pattern is the widget system, where each integration consists of a React component, a proxy handler (handling authentication, session management, and data transformation), and a widget metadata file. The backend API routes handle proxying, caching, authentication (NextAuth with OIDC/password), Docker/Proxmox stats, weather, stocks, and an MCP endpoint for AI-assisted configuration. The frontend uses SWR for client-side data fetching, Tailwind CSS for theming, and i18next for internationalization (20+ languages). The codebase exhibits solid engineering practices: comprehensive test coverage (Vitest), CI/CD pipelines (GitHub Actions), Docker multi-arch builds, and extensive documentation. However, the large widget surface introduces duplication in authentication and proxy logic, and some patterns (in-memory caching, version-specific endpoints) represent maintenance risks. Overall, this is a well-crafted application for its domain, offering high customizability and a clean plugin-style architecture.

RATING: 9.1/10 MAINT: active DRIFT: low
▸ 5 reusable components found
Panonim/dynacat ★ 1224 40 APPLICATION

Dynacat is a self-hosted, configurable personal dashboard application forked from Glance. It aggregates content from dozens of external services — RSS/Atom feeds, Reddit, Hacker News, Twitch, YouTube, weather (Open-Meteo), financial markets (Yahoo Finance), Docker containers, media servers (Plex/Jellyfin/Emby/Navidrome), torrent clients, and DNS servers — into a single YAML-configured page layout. The backend is a Go HTTP server built on the standard library, serving server-rendered HTML templates with progressive enhancement via vanilla JavaScript, htmx, and SSE for live widget updates. It supports password-based and OIDC authentication, per-page access control, a CSS-variable theme system, and PWA/installability features. Architecturally, the codebase centers on a widget plugin system: each widget type implements a common lifecycle (initialize, update, render, optional request handling) registered in a factory. Shared infrastructure includes a disk-based image cache with proxy fallback, a singleflight-based shared HTTP request layer that deduplicates concurrent external fetches, a generic worker pool for parallel requests, and an SSE update loop. Configuration supports YAML includes, environment variable and Docker secret substitution, and hot-reload via fsnotify. The code is well-organized for a fork of this size: shared patterns are extracted into reusable helpers (generic singleflight, worker pool, custom YAML unmarshalers, and a standalone sysinfo package under pkg/), and focused unit tests cover auth and several widgets. Main caveats are large monolithic widget files (700–900 lines mixing HTTP, parsing, and rendering), duplicated fetch logic across the 'latest-media' and 'playing' widgets, and heavy reliance on many external APIs whose availability or rate limits can affect the dashboard. The project is actively maintained with frequent releases, GitHub Actions CI/CD, and a goreleaser setup for multi-arch Docker images.

RATING: 8.8/10 MAINT: active DRIFT: low
▸ 5 reusable components found
victrme/Bonjourr ★ 2049 206 APPLICATION

Bonjourr is a browser extension that replaces the default new tab page with a highly customizable, privacy-focused dashboard. It is built entirely with TypeScript and Deno (no npm dependencies), using a plain Deno build system to produce extensions for Chrome, Firefox, Edge, Safari, and a PWA version. The code follows a modular feature-dispatcher pattern: each feature (clock, weather, quick links, notes, Pomodoro timer, backgrounds, search bar, quotes, custom CSS, fonts, layout editor) exports an init/update function, allowing clean separation and runtime updates without page reload. A unified storage layer (`storage.ts`) abstracts over `chrome.storage.sync/local` and `localStorage`, while a sophisticated compatibility migration system (`filters.ts`) handles data schema evolution across versions (test configs from v10.0.0 to v20.4.2 confirm backward compatibility). The extension integrates with external APIs (Unsplash, Pixabay, weather.bonjourr.fr, Fontsource, GitHub Gist) for dynamic content and settings sync, but remains opt-in and does not track users. The UI is built with vanilla HTML/CSS, uses CSS custom properties for theming, and includes a full settings panel with help mode for troubleshooting. Despite its large feature set, the architecture remains maintainable through careful abstraction, though some coupling in the main settings module and reliance on third-party services introduce moderate technical drift.

RATING: 7.7/10 MAINT: active DRIFT: medium
▸ 6 reusable components found
glanceapp/glance ★ 36461 1413 APPLICATION

Glance is a self-hostable web application designed as a customizable dashboard (startpage) that aggregates information from various sources into widgets. Built in Go, it features a modular widget architecture where each widget type (e.g., RSS, weather, clock) implements a common interface, allowing users to create personalized pages with multiple columns and widgets. The application serves HTML pages with embedded static assets (CSS, JS, images) and uses Go templates for server-side rendering, enhanced by a comprehensive set of template functions. Client-side JavaScript adds interactivity for dynamic updates, masonry layouts, and popovers. The system relies on a YAML-driven configuration (`glance.yml`) that supports variable substitution, file includes, and defines pages, columns, and widget settings. Data fetching is handled by centralized HTTP utilities with caching and user-agent rotation to avoid blocking external services. A theming system generates CSS variables from HSL-based configuration, enabling light/dark modes and custom themes. Optional authentication secures the dashboard, and the application includes diagnostic and CLI tools for maintenance. While the project demonstrates strong engineering in areas like request deduplication (singleflight), flexible configuration, and reusable template functions, it faces challenges due to its extensive widget proliferation (30+ types), coupling between frontend and backend logic, and reliance on an outdated Go version (1.26.6) which is no longer supported, indicating moderate technical drift. Despite these issues, Glance remains a popular and functional solution for personal dashboards.

RATING: 7.5/10 MAINT: maintained DRIFT: high
▸ 4 reusable components found
── end of results ──
$ submit: