No description
Find a file
2025-04-01 13:19:02 +00:00
assets feat(editable cells): add support for multiple input types in EditableCell component 2025-01-10 20:56:25 +03:00
end2end feat(form): add form validation for name and description fields 2024-12-18 14:52:30 +03:00
src fix(properties): fetch prop values alongside prop ids and labels 2025-04-01 14:43:36 +03:00
style feat: update leptos to newest version 2024-12-06 14:45:14 +03:00
.dockerignore build(docker): dockerize compareware 2025-03-13 18:04:34 +03:00
.gitignore fix(labels): add set_is_fetching_labels signal to fetch_item_properties label to fix error 2025-03-31 18:07:36 +03:00
Cargo.lock build(cargo.toml): remove unused dependencies 2025-03-05 19:15:08 +03:00
Cargo.toml build(cargo.toml): remove unused dependencies 2025-03-05 19:15:08 +03:00
docker-compose.yml build(docker): dockerize compareware 2025-03-13 18:04:34 +03:00
dockerfile build(docker): update Dockerfile to use Debian Bullseye and Rust 1.83.0. 2025-03-14 17:35:12 +03:00
LICENSE feat: update leptos to newest version 2024-12-06 14:45:14 +03:00
README.md docs(readme): document properties data flow 2025-04-01 00:02:35 +03:00
ROADMAP.md docs(ROADMAP): add ROADMAP.md file to document the current state of the project and the next steps. 2025-01-13 15:51:24 +03:00
rust-toolchain.toml buid(toolchain): update rust-toolchain.toml to use Rust 1.82.0 instead of 1.83.0 2025-01-28 15:19:31 +03:00

CompareWare

CompareWare is an open-source platform for comparing tools (software, hardware, etc.) with structured, crowdsourced data. It combines Rust's Leptos for a modern, reactive frontend and Nostr for decentralized data storage (TBI).

Features

  • Item Management: Add, view, and manage items with metadata and key-value tags.
  • Nostr Integration:
    • Store and share data as Nostr events.
    • Authenticate users with Nostr keys.
  • Future Features: Reviews and a Web of Trust for collaborative insights.

Getting Started

Prerequisites

  • Rust (latest stable version)
  • Leptos framework

Installation

  1. Clone the repository:
    git clone https://forge.ftt.gmbh/ryanmwangi/Compware.git
    cd compareware
    
  2. Run the development server:
    cargo leptos serve
    
  3. Open your browser at localhost:3000

Database Schema

Key Concepts

  • PK (Primary Key): Unique identifier for table records (🔑)
  • FK (Foreign Key): Reference linking related tables (➡️)
  • Core (core properties): name and description.

Tables Overview

Table Columns (PK/FK) Description Example Data
urls id (PK), url, created_at Stores comparison URLs 1, "/laptops", 2024-03-01
items id (PK), url_id (FK), wikidata_id Comparison items "item1", 1, "Q214276"
properties id (PK), name All available properties (including core) 1.0, "name"
2.0, "description"
3.0, "screen_size"
item_properties item_id (PK/FK), property_id (PK/FK), value All property values including name/description "item1", 1.0, "MacBook Pro"
"item1", 2.0, "16-inch laptop"
"item1", 3.0, "16 inches"
selected_properties url_id (PK/FK), property_id (PK/FK) Active properties per URL (excludes core) 1, 3.0

Data Flow

flowchart LR
    User -->|Creates| urls
    User -->|Adds| items
    User -->|Defines| properties
    User -->|Selects| selected_properties
    User -->|Sets Values| item_properties
    
    urls -->|url_id| items
    urls -->|url_id| selected_properties
    properties -->|property_id| selected_properties
    items -->|item_id| item_properties
    properties -->|property_id| item_properties

Properties data flow

sequenceDiagram
    participant User
    participant App as Application
    participant Wikidata

    User->>App: Enters search
    App->>Wikidata: fetch_wikidata_suggestions()
    Wikidata-->>App: Return suggestions
    App->>User: Show suggestions
    
    User->>App: Selects item
    App->>Wikidata: fetch_item_properties()
    Wikidata-->>App: Return properties (IDs + values)
    
    App->>Wikidata: fetch_property_labels()
    Wikidata-->>App: Return labels
    App->>App: Combine labels + properties
    App->>User: Show labeled properties

Docker Deployment

Prerequisites

  • Docker installed on your system
  • Docker Compose (usually included with Docker Desktop)

Running with Docker

  1. Clone the repository:
    git clone https://forge.ftt.gmbh/ryanmwangi/Compware.git
    cd compareware
    
  2. Start the container:
    docker-compose up -d
    
  3. Access the application at: http://localhost:3000

Collaboration

We welcome contributions! Heres how you can help:

1. Contribute Code

  • Fork the repository and create a new branch for your feature or fix.
  • Ensure your changes are well-tested and include documentation if necessary.
  • Open a pull request describing the changes and why they are useful.

2. Report Issues

  • If you encounter bugs or have suggestions, please open an issue on the Issues page.
  • Provide as much detail as possible, including steps to reproduce the issue and relevant error messages.

3. Feature Suggestions

  • We are constantly looking to improve CompareWare. If you have ideas for new features, please share them in the Issues section.
  • You can also help us prioritize future work by commenting or upvoting on existing feature requests.

4. Documentation Contributions

  • If you spot areas in the documentation that need improvement or if you have suggestions for clearer explanations, please feel free to submit a pull request with the updates.
  • Helping others understand the project is just as valuable as contributing code!

5. Community and Discussion

  • Feel free to ask questions, provide feedback, or engage in discussions related to CompareWares development.

6. Test and Review

  • Help by reviewing pull requests to ensure the code meets our standards and is bug-free.
  • Test new features and provide feedback to improve their functionality and usability.

We appreciate any contributions that can help improve CompareWare and make it more useful for the community!