Perplexica is an open-source, AI-powered search engine designed to provide a privacy-focused alternative to Perplexity AI. It utilizes advanced machine learning techniques for accurate search results and integrates with SearxNG for enhanced privacy. The project is actively maintained, with significant community engagement and a focus on feature enhancements and bug fixes.
ChatWindow.tsx
, SearchVideos.tsx
, implemented mobile settings features.ChatWindow.tsx
.metaSearchAgent.ts
.Timespan | Opened | Closed | Comments | Labeled | Milestones |
---|---|---|---|---|---|
7 Days | 3 | 6 | 3 | 0 | 1 |
30 Days | 21 | 14 | 45 | 3 | 1 |
90 Days | 100 | 74 | 242 | 18 | 1 |
All Time | 376 | 279 | - | - | - |
Like all software activity quantification, these numbers are imperfect but sometimes useful. Comments, Labels, and Milestones refer to those issues opened in the timespan in question.
Developer | Avatar | Branches | PRs | Commits | Files | Changes |
---|---|---|---|---|---|---|
realies | 1 | 2/1/1 | 1 | 1 | 102 | |
ItzCrazyKns | 1 | 0/0/0 | 6 | 2 | 57 | |
Sainadh Devireddy | 1 | 0/0/0 | 1 | 1 | 4 | |
Mitch Ross (mitchross) | 0 | 1/0/1 | 0 | 0 | 0 | |
Sainadh Devireddy (sainadh-d) | 0 | 1/2/0 | 0 | 0 | 0 | |
None (ProjectMoon) | 0 | 0/0/1 | 0 | 0 | 0 | |
Eli Grinfeld, MBA (eligrinfeld) | 0 | 1/0/0 | 0 | 0 | 0 | |
Eren Yeager (asifrahaman13) | 0 | 1/0/0 | 0 | 0 | 0 | |
Hyungjin Cha (hacking-racoon) | 0 | 0/1/0 | 0 | 0 | 0 | |
None (yassinesmartly) | 0 | 1/0/1 | 0 | 0 | 0 |
PRs: created by that dev and opened/merged/closed-unmerged during the period
Risk | Level (1-5) | Rationale |
---|---|---|
Delivery | 3 | The project shows active development with a focus on infrastructure improvements and bug fixes, such as the CI/CD workflow in PR #556 and Docker optimizations in PR #465. However, the backlog of unresolved issues and open PRs like #512, which has been open for 35 days, poses risks to delivery timelines. The ongoing installation and integration problems, particularly with Docker and external APIs (e.g., Ollama and OpenAI), further contribute to delivery risks. |
Velocity | 3 | The project exhibits moderate velocity with active issue management and regular commits from key contributors like ItzCrazyKns. However, the uneven distribution of workload among developers, with some having no recent commits, could slow progress. The slower closure rate of issues compared to their opening rate over longer periods suggests potential backlog accumulation, impacting velocity. |
Dependency | 4 | Dependency risks are significant due to reliance on external systems like Docker and APIs such as Ollama and OpenAI. Issues like #533 and #536 highlight configuration management challenges that could hinder deployment processes. Unresolved integration problems with these dependencies pose risks to project stability and functionality. |
Team | 3 | The team shows active participation in issue tracking and pull requests, but the concentration of contributions among a few developers suggests potential burnout or resource constraints. Limited comments on issues may indicate communication challenges that could affect team dynamics. |
Code Quality | 3 | Recent efforts to improve code quality are evident in PRs like #543, which enhances error handling by migrating from fetch API to axios. However, large changes by individual contributors without thorough reviews (e.g., Realies' 102 changes in one commit) raise concerns about maintainability and potential technical debt. |
Technical Debt | 4 | The project faces technical debt challenges due to frequent changes to critical files like ChatWindow.tsx without comprehensive planning. Ongoing installation issues and dependency management problems suggest underlying technical debt that needs addressing to prevent recurring issues. |
Test Coverage | 3 | While the introduction of a CI/CD workflow in PR #556 aims to automate testing, there is limited evidence of extensive test coverage across all features. Some PRs lack detailed testing information, which could lead to undetected bugs or regressions. |
Error Handling | 2 | Significant improvements in error handling are evident from PRs like #555, which introduces an exponential reconnect mechanism for WebSockets. These enhancements improve application robustness against errors, reducing the risk associated with error handling. |
Recent GitHub issue activity for the Perplexica project shows a mix of bug reports, feature requests, and user inquiries. There is a notable focus on installation issues, particularly with Docker, and challenges with setting up and configuring the software. Users have reported problems with accessing Perplexica across networks, encountering errors during Docker builds, and difficulties in integrating with specific models or APIs like Ollama and OpenAI.
Several issues highlight the need for better documentation or support for specific configurations, such as running behind a reverse proxy or using alternative LLM providers. There are also requests for enhancements like improved language support, additional API endpoints, and better handling of search results.
#560: [FR] Deep Research mode
#553: balanced requests do not load
#550: server-side settings mode
#558: Settings gear icon on mobile
#544: Perplexica can't connect to server - Ollama running in docker container
#540: Only the title of the web page is sent to the LLM.
These issues reflect ongoing efforts to address user-reported problems and enhance the functionality of Perplexica. The project's active maintenance is evident from the frequent updates and resolutions provided by contributors.
#556: Feature/ci cd
#465: 🔐 Reduce Docker size by half + improve security
#512: fix build error
pnpm
.#530: feat(webSearchPrompt): Add prompt for optimizing language types
#520: feat(ui): changed Markdown rendering library
react-markdown
for improved reliability.#555: fix(ws-error): add exponential reconnect mechanism
#548: Only Page Title is being sent to LLM
#538: [bug-fix] Delete msgs only belonging to the chat
#523 & #519 (Updates on Model Support)
The Perplexica project is actively evolving with significant contributions aimed at improving both infrastructure and user-facing features. However, some open PRs require attention to avoid stagnation. The closed PRs demonstrate effective issue resolution and feature enhancement, contributing positively to the project's robustness and functionality. Overall, maintaining clear communication in PR descriptions and ensuring timely reviews will further streamline development processes.
ui/components/ChatWindow.tsx
ChatWindow
component is well-structured, with clear separation of concerns. It uses hooks like useState
, useEffect
, and custom hooks (useSocket
) to manage state and side effects.useRef
for managing WebSocket instances and retry counts is appropriate.ui/components/SearchVideos.tsx
loading
, open
, and currentIndex
, providing a responsive UI experience.yet-another-react-lightbox
library is done cleanly, allowing users to view videos in a modal format.Video
type is well-defined, but further type annotations could enhance clarity, especially for API responses.src/websocket/messageHandler.ts
EventEmitter
.messagesSchema
), ensuring consistency in data operations.handleMessage
contains nested logic that could be refactored into smaller functions for better readability and maintainability.src/search/metaSearchAgent.ts
MetaSearchAgent
class encapsulates search functionality with methods like createSearchRetrieverChain
and createAnsweringChain
.Overall, the codebase demonstrates solid engineering practices with room for improvement in modularity, error handling, and documentation. Refactoring complex components into smaller units can enhance maintainability as the project evolves.
ChatWindow.tsx
and SearchVideos.tsx
.ChatWindow.tsx
.ChatWindow.tsx
.metaSearchAgent.ts
.The development team is actively working on enhancing user interface components and improving error handling within the Perplexica project. ItzCrazyKns leads these efforts with significant contributions and collaborations with other team members. The project shows signs of active maintenance with regular updates and improvements.