From b75eefa027125182fd6741edaa8d8cf583978431 Mon Sep 17 00:00:00 2001 From: Milim Date: Thu, 15 Aug 2024 10:51:48 +0200 Subject: [PATCH] remove useless github related files --- .github/CODE_OF_CONDUCT.md | 85 --- .github/ISSUE_TEMPLATE/bug.yml | 40 -- .github/ISSUE_TEMPLATE/config.yml | 5 - .github/ISSUE_TEMPLATE/docs.yml | 40 -- .github/ISSUE_TEMPLATE/engine.yml | 72 -- .github/ISSUE_TEMPLATE/feature.yml | 40 -- .github/ISSUE_TEMPLATE/other.yml | 36 - .github/label-actions.yml | 11 - .github/labeler.yml | 27 - .github/workflows/docker.yml | 79 --- .github/workflows/hello.yml | 19 - .github/workflows/issue-lock-unlock.yml | 16 - .github/workflows/labels.yml | 23 - .github/workflows/pr_labeler.yml | 15 - .github/workflows/release.yml | 72 -- .github/workflows/rust.yml | 47 -- .github/workflows/rust_format.yml | 40 -- .github/workflows/stale.yml | 28 - .stylelintrc.json | 16 - CONTRIBUTING.md | 54 -- README.md | 288 +------- dev.Dockerfile | 15 - dev.docker-compose.yml | 26 - docker-compose.yml | 18 - docs/README.md | 20 - docs/configuration.md | 93 --- docs/developing.md | 643 ----------------- docs/faq.md | 15 - docs/features.md | 42 -- docs/installation.md | 409 ----------- docs/instances.md | 15 - docs/introduction.md | 13 - docs/theming.md | 885 ------------------------ flake.lock | 94 --- flake.nix | 63 -- images/404_error_page.png | Bin 75092 -> 0 bytes images/intro.png | Bin 10012 -> 0 bytes images/main_page.png | Bin 45794 -> 0 bytes images/search_page.png | Bin 81725 -> 0 bytes images/websurfx_docs_image.png | Bin 5191 -> 0 bytes images/websurfx_logo.png | Bin 36734 -> 0 bytes 41 files changed, 2 insertions(+), 3402 deletions(-) delete mode 100644 .github/CODE_OF_CONDUCT.md delete mode 100644 .github/ISSUE_TEMPLATE/bug.yml delete mode 100644 .github/ISSUE_TEMPLATE/config.yml delete mode 100644 .github/ISSUE_TEMPLATE/docs.yml delete mode 100644 .github/ISSUE_TEMPLATE/engine.yml delete mode 100644 .github/ISSUE_TEMPLATE/feature.yml delete mode 100644 .github/ISSUE_TEMPLATE/other.yml delete mode 100644 .github/label-actions.yml delete mode 100644 .github/labeler.yml delete mode 100644 .github/workflows/docker.yml delete mode 100644 .github/workflows/hello.yml delete mode 100644 .github/workflows/issue-lock-unlock.yml delete mode 100644 .github/workflows/labels.yml delete mode 100644 .github/workflows/pr_labeler.yml delete mode 100644 .github/workflows/release.yml delete mode 100644 .github/workflows/rust.yml delete mode 100644 .github/workflows/rust_format.yml delete mode 100644 .github/workflows/stale.yml delete mode 100644 .stylelintrc.json delete mode 100644 CONTRIBUTING.md delete mode 100644 dev.Dockerfile delete mode 100644 dev.docker-compose.yml delete mode 100644 docker-compose.yml delete mode 100644 docs/README.md delete mode 100644 docs/configuration.md delete mode 100644 docs/developing.md delete mode 100644 docs/faq.md delete mode 100644 docs/features.md delete mode 100644 docs/installation.md delete mode 100644 docs/instances.md delete mode 100644 docs/introduction.md delete mode 100644 docs/theming.md delete mode 100644 flake.lock delete mode 100644 flake.nix delete mode 100644 images/404_error_page.png delete mode 100644 images/intro.png delete mode 100644 images/main_page.png delete mode 100644 images/search_page.png delete mode 100644 images/websurfx_docs_image.png delete mode 100644 images/websurfx_logo.png diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md deleted file mode 100644 index 1b0036b..0000000 --- a/.github/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,85 +0,0 @@ -# Code of Conduct - -## Our Pledge - -We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. - -We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community and as such we strongly believe in **give respect and take respect** policy. - -# What We Strive At - -* **Be patient.** -* **Be welcoming and be friendly**: We strive to be a community that welcomes, supports and remain friendly to people of all backgrounds and identities. This includes, but is not limited to members of any race, ethnicity, culture, national origin, colour, immigration status, social and economic class, educational level, sex, sexual orientation, gender identity and expression, age, size, family status, political belief, religion, and mental and physical ability. -* **Be considerate**: Your work will be used by other people, and you in turn will depend on the work of others. Any decision you take will affect users and colleagues, and you should take those consequences into account when making decisions. Remember that we're a world-wide community, so you might not be communicating in someone else's primary language. -* **Be respectful**: Not all of us will agree all the time, but disagreement is no excuse for poor behavior and poor manners. We might all experience some frustration now and then, but we cannot allow that frustration to turn into a personal attack. It’s important to remember that a community where people feel uncomfortable or threatened is not a productive one. -* **Be careful in the words that you choose**: we are a community of professionals, and we conduct ourselves professionally. Be kind to others. Do not insult or put down other participants. Harassment and other exclusionary behavior aren't acceptable. This includes, but is not limited to: - * Violent threats or language directed against another person. - * Discriminatory jokes and language. - * Using political talks and political orientated views. - * Posting sexually explicit or violent material. - * Posting (or threatening to post) other people's personally identifying information ("doxing"). - * Personal insults, especially those using racist or sexist terms. - * Unwelcome sexual attention. - * Advocating for, or encouraging, any of the above behavior. - * Humor is acceptable but should not be done to harass, demean or to insult others. - * Repeated harassment of others. In general, if someone asks you to stop, then stop. - * Using overtly sexual aliases or other nicknames that might detract from a friendly, safe and welcoming environment for all. - * Using bad words or cursing. -* **When we disagree, try to understand why**: Disagreements, both social and technical, happen all the time. It is important that we resolve disagreements and differing views constructively. Remember that we’re different. The strength of our community comes from its diversity, people from a wide range of backgrounds. Different people have different perspectives on issues. Being unable to understand why someone holds a viewpoint doesn’t mean that they’re wrong. Don’t forget that it is human to err and blaming each other doesn’t get us anywhere. Instead, focus on helping to resolve issues and learning from mistakes. -* **Treat everyone equally:** we are community of mature people and maturity in the way we act, behave and treat others and as such we treat others as our brothers and sisters. - -# Scope - -The scope of the conduct of code is not limited to one individual or few individuals. This code of conduct applies for all be it the maintainer, the developer or any role assigned to the project or involved in any other way to the project. This code of conduct is not to provide privelages of one over the other. Any failure to enforce, act, using the code of conduct for your benefit or to evade certain situations or findings way to evade this conduct or a failure to provide a safe environment for others under the umberalla of this code of conduct will be considered a clear act of violation. - -# Violation - -Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct: - -1. **Correction** - -**Community Impact:** Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community. - -**Consequence:** A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested. - -2. **Warning** - -**Community Impact:** A violation through a single incident or series of actions. - -**Consequence:** A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban. - -3. **Temporary Ban** - -**Community Impact:** A serious violation of community standards, including sustained inappropriate behavior. - -**Consequence:** A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban. - -4. **Permanent Ban** - -**Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals. - -**Consequence**: A permanent ban from any sort of public interaction within the community. - - -# Reporting Issues - -If you experience or witness unacceptable behavior—or have any other concerns—please report it by contacting the community leader via [mustafadhuleb53@gmail.com](mustafadhuleb53@gmail.com). All reports will be handled with discretion. In your report please include: - -- Your contact information. -- Names (real, nicknames, or pseudonyms) of any individuals involved. If there are additional witnesses, please -include them as well. Your account of what occurred, and if you believe the incident is ongoing. If there is a publicly available record (e.g. a mailing list archive or a public IRC logger), please include a link. -- Any additional information that may be helpful. - -Anyone asked to stop unacceptable behavior is expected to comply immediately. If an individual engages in unacceptable behavior, We will act according to the [violations rules](#violation) as stated above. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.0, available at https://www.contributor-covenant.org/version/2/0/code_of_conduct.html, [Rust Code of Conduct](https://www.rust-lang.org/policies/code-of-conduct) and [Twitter's Code of Conduct](https://github.com/twitter/.github/blob/main/code-of-conduct.md?plain=1) - -Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity). - -[homepage]: https://www.contributor-covenant.org - -For answers to common questions about this code of conduct, see the FAQ at -https://www.contributor-covenant.org/faq. Translations are available at -https://www.contributor-covenant.org/translations. diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml deleted file mode 100644 index e59bf93..0000000 --- a/.github/ISSUE_TEMPLATE/bug.yml +++ /dev/null @@ -1,40 +0,0 @@ -name: 🐛 Bug -description: Report an issue to help improve the project. -title: "🐛 " -labels: ["🛠️ goal: fix","🚦 status: awaiting triage"] -body: - - type: textarea - id: description - attributes: - label: Description - description: A brief description of the question or issue, also include what you tried and what didn't work - validations: - required: true - - type: textarea - id: screenshots - attributes: - label: Screenshots - description: Please add screenshots if applicable - validations: - required: false - - type: dropdown - id: assignee - attributes: - label: Do you want to work on this issue? - multiple: false - options: - - "Yes" - - "No" - validations: - required: false - - type: textarea - id: extrainfo - attributes: - label: Additional information - description: Is there anything else we should know about this bug? - validations: - required: false - - type: markdown - attributes: - value: | - You can also join our Discord community [here](https://discord.gg/SWnda7Mw5u) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index 97ba6bf..0000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,5 +0,0 @@ -blank_issues_enabled: false -contact_links: - - name: Question? - url: https://discord.gg/SWnda7Mw5u - about: Feel free to ask your question by joining our Discord server. diff --git a/.github/ISSUE_TEMPLATE/docs.yml b/.github/ISSUE_TEMPLATE/docs.yml deleted file mode 100644 index d8f1c83..0000000 --- a/.github/ISSUE_TEMPLATE/docs.yml +++ /dev/null @@ -1,40 +0,0 @@ -name: 📝 Documentation issue -description: Found an issue in the documentation? You can use this one! -title: "📝 " -labels: ["📄 aspect: text","🚦 status: awaiting triage"] -body: - - type: textarea - id: description - attributes: - label: Description - description: A brief description of the question or issue, also include what you tried and what didn't work - validations: - required: true - - type: textarea - id: screenshots - attributes: - label: Screenshots - description: Please add screenshots if applicable - validations: - required: false - - type: dropdown - id: assignee - attributes: - label: Do you want to work on this issue? - multiple: false - options: - - "Yes" - - "No" - validations: - required: false - - type: textarea - id: extrainfo - attributes: - label: Additional information - description: Is there anything else we should know about this issue? - validations: - required: false - - type: markdown - attributes: - value: | - You can also join our Discord community [here](https://discord.gg/SWnda7Mw5u) diff --git a/.github/ISSUE_TEMPLATE/engine.yml b/.github/ISSUE_TEMPLATE/engine.yml deleted file mode 100644 index ee55d5e..0000000 --- a/.github/ISSUE_TEMPLATE/engine.yml +++ /dev/null @@ -1,72 +0,0 @@ -name: ✨ Engine -description: Have a new engine to suggest for Websurfx? Please suggest! -title: '✨ ' -labels: ['⭐ goal: addition', '🚦 status: awaiting triage'] -body: - - type: textarea - id: workingUrl - attributes: - label: Working URL of the engine - description: Please check if the engine is responding correctly before submitting it. - validations: - required: true - - type: textarea - id: reason - attributes: - label: Why do you want to add this engine? - description: What's special about this engine? Is it open source or libre? - validations: - required: true - - type: textarea - id: features - attributes: - label: Features of this engine - description: Features of this engine: Doesn't track its users, fast, easy to integrate, or anything else that we can know about. - validations: - required: true - - type: textarea - id: screenshots - attributes: - label: Screenshots - description: Please add screenshots if applicable - validations: - required: false - - type: dropdown - id: assignee - attributes: - label: Do you want to work on this issue? - multiple: true - options: - - 'General' - - 'Files' - - 'Images' - - 'IT' - - 'Map' - - 'Music' - - 'News' - - 'Science' - - 'Social Media' - - 'Videos' - validations: - required: true - - type: dropdown - id: assignee - attributes: - label: Do you want to work on this issue? - multiple: false - options: - - 'Yes' - - 'No' - validations: - required: false - - type: textarea - id: extrainfo - attributes: - label: Additional information - description: Is there anything else we should know about this idea? - validations: - required: false - - type: markdown - attributes: - value: | - You can also join our Discord community [here](https://discord.gg/SWnda7Mw5u) diff --git a/.github/ISSUE_TEMPLATE/feature.yml b/.github/ISSUE_TEMPLATE/feature.yml deleted file mode 100644 index 8302bbf..0000000 --- a/.github/ISSUE_TEMPLATE/feature.yml +++ /dev/null @@ -1,40 +0,0 @@ -name: 💡 General Feature Request -description: Have a new idea/feature for Websurfx? Please suggest! -title: "✨ " -labels: ["⭐ goal: addition", "🚦 status: awaiting triage"] -body: - - type: textarea - id: description - attributes: - label: Description - description: A brief description of the enhancement you propose, also include what you tried and what worked. - validations: - required: true - - type: textarea - id: screenshots - attributes: - label: Screenshots - description: Please add screenshots if applicable - validations: - required: false - - type: dropdown - id: assignee - attributes: - label: Do you want to work on this issue? - multiple: false - options: - - "Yes" - - "No" - validations: - required: false - - type: textarea - id: extrainfo - attributes: - label: Additional information - description: Is there anything else we should know about this idea? - validations: - required: false - - type: markdown - attributes: - value: | - You can also join our Discord community [here](https://discord.gg/SWnda7Mw5u) diff --git a/.github/ISSUE_TEMPLATE/other.yml b/.github/ISSUE_TEMPLATE/other.yml deleted file mode 100644 index a3d626c..0000000 --- a/.github/ISSUE_TEMPLATE/other.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: 🧱 Other -description: Use this for any other issues. Please do NOT create blank issues -title: "🧱 " -labels: ["🚦 status: awaiting triage"] -body: - - type: markdown - attributes: - value: "# Other issue" - - type: textarea - id: issuedescription - attributes: - label: What would you like to share? - description: Provide a clear and concise explanation of your issue. - validations: - required: true - - type: dropdown - id: assignee - attributes: - label: Do you want to work on this issue? - multiple: false - options: - - "Yes" - - "No" - validations: - required: false - - type: textarea - id: extrainfo - attributes: - label: Additional information - description: Is there anything else we should know about this issue? - validations: - required: false - - type: markdown - attributes: - value: | - You can also join our Discord community [here](https://discord.gg/SWnda7Mw5u) diff --git a/.github/label-actions.yml b/.github/label-actions.yml deleted file mode 100644 index 4729315..0000000 --- a/.github/label-actions.yml +++ /dev/null @@ -1,11 +0,0 @@ -"🚦 status: awaiting triage": - issues: - comment: > - To reduce notifications, issues are locked until they are https://github.com/neon-mmd/websurfx/labels/%F0%9F%8F%81%20status%3A%20ready%20for%20dev and to be assigned. You can learn more in our contributing guide https://github.com/neon-mmd/websurfx/blob/rolling/CONTRIBUTING.md - lock: true - -"🏁 status: ready for dev": - issues: - comment: > - The issue has been unlocked and is now ready for dev. If you would like to work on this issue, you can comment to have it assigned to you. You can learn more in our contributing guide https://github.com/neon-mmd/websurfx/blob/rolling/CONTRIBUTING.md - unlock: true diff --git a/.github/labeler.yml b/.github/labeler.yml deleted file mode 100644 index cb9d0fb..0000000 --- a/.github/labeler.yml +++ /dev/null @@ -1,27 +0,0 @@ -'💻 aspect: code': -- src/* -- Cargo.toml -- Cargo.lock -- Dockerfile -- docker-compose.yml -- websurfx/* - -'🤖 aspect: dx': -- '**/*.json' -- .dockerignore -- .gitignore -- .gitpod.Dockerfile -- .gitpod.yml -- .rusty-hook.toml -- PULL_REQUEST_TEMPLATE.md -- SECURITY.md -- .github/* -- .mega-linter.yml -- tests/* - -'📄 aspect: text': -- any: ['**/*.md', '!PULL_REQUEST_TEMPLATE.md', '!SECURITY.md'] -- LICENSE - -'🕹️ aspect: interface': -- public/* diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml deleted file mode 100644 index 1220fd9..0000000 --- a/.github/workflows/docker.yml +++ /dev/null @@ -1,79 +0,0 @@ -name: Release stable image - -on: - push: - branches: - - "release/stable/**" - pull_request: - branches: - - "release/stable/**" - types: [opened, synchronize] - -env: - CARGO_TERM_COLOR: always - -jobs: - release_image: - strategy: - fail-fast: false - matrix: - cache: - - memory - - redis - - hybrid - - no-cache - - name: Release ${{ matrix.cache }} image - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - # Install buildx - - name: Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v3 - # Set buildx cache - - name: Cache register - uses: actions/cache@v4 - with: - path: /tmp/.buildx-cache - key: buildx-cache - # Login to ghcr.io - - name: Log in to Docker Hub - uses: docker/login-action@v3 - with: - username: neonmmd - password: ${{ secrets.DOCKERHUB_TOKEN }} - # Extract branch info - - name: Set info - run: | - echo "VERSION=$(echo ${GITHUB_REF} | awk -F/ '{print $6}')" >> $GITHUB_ENV - # Print info for debug - - name: Print Info - run: | - echo $VERSION - # Create buildx multiarch - - name: Create buildx multiarch - run: docker buildx create --use --name=buildx-multi-arch --driver=docker-container --driver-opt=network=host - # Modify cache variable in the dockerfile. - - name: Modify Cache variable - run: | - sed -i "s/ARG CACHE=[a-z]*/ARG CACHE=${{ matrix.cache }}/g" Dockerfile - # Publish image - - name: Publish image - run: docker buildx build --builder=buildx-multi-arch --platform=linux/amd64,linux/arm64 --build-arg CACHE=${{ matrix.cache }} --push -t neonmmd/websurfx:$VERSION-${{ matrix.cache }} -t neon-mmd/websurfx:${{matrix.cache}} -f Dockerfile . - - name: Publish latest - if: ${{ matrix.cache }} == 'hybrid' - run: docker buildx build --builder=buildx-multi-arch --platform=linux/amd64,linux/arm64 --build-arg CACHE=${{ matrix.cache }} --push -t neon-mmd/websurfx:latest -f Dockerfile . - # Upload it to release - - name: Test if release already exists - id: release-exists - continue-on-error: true - run: gh release view $BINARY_NAME-$VERSION - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Create new draft release - if: steps.release-exists.outcome == 'failure' && steps.release-exists.conclusion == 'success' - run: gh release create -t $VERSION -d $VERSION - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/hello.yml b/.github/workflows/hello.yml deleted file mode 100644 index c10105b..0000000 --- a/.github/workflows/hello.yml +++ /dev/null @@ -1,19 +0,0 @@ ---- -name: Welcome first time contributors - -on: - pull_request_target: - types: - - opened - -jobs: - welcome: - name: Welcome - runs-on: ubuntu-latest - steps: - - uses: actions/first-interaction@v1 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - pr-message: |- - Congrats on making your first Pull Request and thanks for taking the time to improve Websurfx! ❤️! - Say hello by joining the conversation in our [Discord](https://discord.gg/SWnda7Mw5u) diff --git a/.github/workflows/issue-lock-unlock.yml b/.github/workflows/issue-lock-unlock.yml deleted file mode 100644 index 180380c..0000000 --- a/.github/workflows/issue-lock-unlock.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: "lock/unlock issue" - -on: - issues: - types: labeled - -permissions: - issues: write - -jobs: - action: - runs-on: ubuntu-latest - steps: - - uses: dessant/label-actions@v4 - with: - process-only: issues diff --git a/.github/workflows/labels.yml b/.github/workflows/labels.yml deleted file mode 100644 index 5a617e5..0000000 --- a/.github/workflows/labels.yml +++ /dev/null @@ -1,23 +0,0 @@ ---- -name: Import open source standard labels - -on: - push: - branches: - - rolling - -jobs: - labels: - - runs-on: ubuntu-latest - - steps: - - uses: actions/setup-node@v4 - with: - node-version: '14' - - uses: EddieHubCommunity/gh-action-open-source-labels@main - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - owner-name: ${{ github.repository_owner }} - repository-name: ${{ github.event.repository.name }} - force: false diff --git a/.github/workflows/pr_labeler.yml b/.github/workflows/pr_labeler.yml deleted file mode 100644 index 473e4cc..0000000 --- a/.github/workflows/pr_labeler.yml +++ /dev/null @@ -1,15 +0,0 @@ -name: "Pull Request Auto Labeler" -on: -- pull_request_target - -jobs: - triage: - permissions: - contents: read - pull-requests: write - runs-on: ubuntu-latest - steps: - - uses: actions/labeler@v5 - with: - sync-labels: true - dot: true diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 086dfc6..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,72 +0,0 @@ -name: Bump release version -on: - pull_request: - branches: [rolling] - types: - - closed - -permissions: - contents: write - pull-requests: write - repository-projects: write - -concurrency: production - -jobs: - build: - name: bump tag version and release - if: github.event.pull_request.merged == true - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v4 - with: - ref: ${{ github.sha }} - fetch-depth: 0 - - name: Bump version and push tag - id: version-bump - uses: hennejg/github-tag-action@v4.4.0 - with: - github_token: ${{ secrets.ADMIN_RIGHTS_TOKEN }} - release_branches: rolling - - name: create branch - uses: peterjgrainger/action-create-branch@v3.0.0 - env: - GITHUB_TOKEN: ${{ secrets.ADMIN_RIGHTS_TOKEN }} - with: - branch: update-from-${{ github.sha }} - - name: update cargo.toml - run: | - appversion=$(echo "${{ steps.version-bump.outputs.new_tag }}" | grep -oE '[0-9]+\.[0-9]+\.[0-9]+') - sed -i -e "s/^version = .*/version = \"$appversion\"/" Cargo.toml - - run: rustup toolchain install stable --profile minimal - - run: rustup update stable && rustup default stable - - name: regenerate cargo.lock - run: cargo generate-lockfile - - name: auto commit - uses: stefanzweifel/git-auto-commit-action@v5 - with: - commit_message: "[skip ci] updating app version to ${{ steps.version-bump.outputs.new_tag }}" - branch: update-from-${{ github.sha }} - # create PR using GitHub CLI - - name: create PR with update info - id: create-pr - run: gh pr create --base rolling --head update-from-${{ github.sha }} --title 'Merge new update into rolling' --body 'Created by Github action' - env: - GH_TOKEN: ${{ secrets.ADMIN_RIGHTS_TOKEN }} - # merge PR using GitHub CLI - - name: merge PR with update info - id: merge-pr - run: gh pr merge --admin --merge --subject 'Merge update info' --delete-branch - env: - GH_TOKEN: ${{ secrets.ADMIN_RIGHTS_TOKEN }} - - name: Create Release - uses: softprops/action-gh-release@v2 - with: - token: ${{ secrets.ADMIN_RIGHTS_TOKEN }} - generate_release_notes: true - name: ${{ steps.version-bump.outputs.new_tag }} - tag_name: ${{ steps.version-bump.outputs.new_tag }} - prerelease: false - env: - GITHUB_REPOSITORY: ${{ github.repository }} \ No newline at end of file diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml deleted file mode 100644 index d82bde3..0000000 --- a/.github/workflows/rust.yml +++ /dev/null @@ -1,47 +0,0 @@ ---- -name: Rust - -on: - push: - branches: - - '**' - pull_request: - branches: - - 'rolling' - -env: - CARGO_TERM_COLOR: always - -jobs: - build: - runs-on: ubuntu-latest - strategy: - matrix: - toolchain: - - stable - - steps: - - name: Install LuaJIT and Lua - run: | - sudo apt-get update - sudo apt-get install -y --no-install-recommends liblua5.4-dev liblua5.3-dev liblua5.2-dev liblua5.1-0-dev libluajit-5.1-dev - - uses: actions/checkout@v4 - - run: rustup toolchain install stable --profile minimal - - uses: Swatinem/rust-cache@v2 - with: - prefix-key: '' - shared-key: '' - key: '' - env-vars: '' - workspaces: '' - cache-directories: '' - cache-targets: '' - cache-on-failure: '' - cache-all-crates: '' - save-if: '' - - uses: actions/checkout@v4 - - run: rustup update ${{ matrix.toolchain }} && rustup default ${{ matrix.toolchain }} - - name: Build - run: cargo build --verbose - - name: Run tests - run: cargo test --verbose diff --git a/.github/workflows/rust_format.yml b/.github/workflows/rust_format.yml deleted file mode 100644 index 14b38ce..0000000 --- a/.github/workflows/rust_format.yml +++ /dev/null @@ -1,40 +0,0 @@ ---- -name: Rust format and clippy checks -on: - push: - branches: - - "**" - pull_request: - branches: - - "rolling" - -jobs: - check: - name: Rust project - runs-on: ubuntu-latest - steps: - - name: Install LuaJIT and Lua - run: | - sudo apt-get update - sudo apt-get install -y --no-install-recommends liblua5.4-dev liblua5.3-dev liblua5.2-dev liblua5.1-0-dev libluajit-5.1-dev - - uses: actions/checkout@v4 - - name: Install minimal stable with clippy and rustfmt - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: stable - components: rustfmt, clippy - - name: Format - uses: actions-rs/cargo@v1 - with: - command: fmt - args: -- --check - - name: Clippy - uses: actions-rs/cargo@v1 - with: - command: clippy - args: --all-targets --all-features --all - - name: Run cargo check - uses: actions-rs/cargo@v1 - with: - command: check diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml deleted file mode 100644 index c444b5e..0000000 --- a/.github/workflows/stale.yml +++ /dev/null @@ -1,28 +0,0 @@ ---- -# This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time. -# -# You can adjust the behavior by modifying this file. -# For more information, see: -# https://github.com/actions/stale -name: Mark stale issues and pull requests - -on: - schedule: - - cron: '30 1 * * *' - -jobs: - stale: - - runs-on: ubuntu-latest - permissions: - issues: write - pull-requests: write - - steps: - - uses: actions/stale@v9 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - stale-issue-message: 'Stale issue message' - stale-pr-message: 'Stale pull request message' - stale-issue-label: 'no-issue-activity' - stale-pr-label: 'no-pr-activity' diff --git a/.stylelintrc.json b/.stylelintrc.json deleted file mode 100644 index cf4df56..0000000 --- a/.stylelintrc.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": "stylelint-config-standard", - "rules": { - "alpha-value-notation": "number", - "selector-class-pattern": null, - "no-descending-specificity": null - }, - "fix": true, - "cache": true, - "overrides": [ - { - "files": ["*.js"], - "customSyntax": "postcss-lit" - } - ] -} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index b1a4b71..0000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,54 +0,0 @@ -# What You Can Contribute To? - -## Documentation/Wiki - -Found a typo, or something that isn't as clear as it could be? Maybe I've missed something off altogether, or you hit a roadblock that took you a while to figure out. Edit the [docs](./docs/) to add to or improve the documentation. This will help future users get Websurfx up and running more easily. - -## Readme - -Did you find a typo, or the Readme is not as clear as it should be? Consider Submitting a Pull request to the [Readme](https://github.com/neon-mmd/websurfx/blob/master/README.md) to add to or improve the Readme. This will help future users to better understand the project more clearly. - -## Help Improve GitHub Actions - -Know how to fix or improve a GitHub action? Consider Submitting a Pull request to help make automation and testing better. - -## Source Code - -You should know at least one of the things below to start contributing: - -- Rust basics -- Actix-web crate basics -- Tokio crate and async/await -- Reqwest crate basics -- Serde and serde_json crate basics -- Scraper crate basics -- Frontend (handlebars, css and js). -- Fake useragent crate basics -- pyo3/hlua/rlua crates basics - -## Report a Bug/Issue - -If you've found a bug, then please consider raising it as an issue [here](https://github.com/neon-mmd/websurfx/issues). This will help me know if there's something that needs fixing. Try and include as much detail as possible, such as your environment, steps to reproduce, any console output and maybe an example screenshot or recording if necessary. - -## Spread the word - -Websurfx is still a relatively young project, and as such not many people know of it. It would be great to see more users, and so it would be awesome if you could consider sharing with your friends or on social platforms. - -## Guidelines - -- Please be patient. -- Treat everyone with respect -- \"give respect and take respect.\" -- Document your code properly with Rust coding conventions in mind. -- Provide a brief description of the changes you made in the pull request. -- Provide an appropriate header for the pull request. - -## Join the discussion - -We have a [Discord](https://discord.gg/SWnda7Mw5u) channel, feel free to join and share your ideas and ask questions about the project, we would be glad to hear you out. - -# Where To Contribute? - -The _rolling branch_ is where we intend all contributions should go. - - -We appreciate any contributions whether of any size or topic and suggestions to help improve the Websurfx project. Please keep in mind the above requirements and guidelines before submitting a pull request and also if you have any doubts/concerns/questions about the project, its source code or anything related to the project then feel free to ask by opening an [issue](https://github.com/neon-mmd/websurfx/issues) or by asking us on our [Discord](https://discord.gg/SWnda7Mw5u) channel. diff --git a/README.md b/README.md index 32eb2d3..f6353de 100644 --- a/README.md +++ b/README.md @@ -1,287 +1,3 @@ -

- websurfx logo -

-

- Readme | - Discord | - Instances | - User Showcase | - GitHub | - Documentation -

- - Awesome Self-Hosted - - - GitHub code size in bytes - - - GitHub Workflow Status - - Maintenance - - - CodeFactor - - - Gitpod - -
-
- - A modern-looking, lightning-fast, privacy-respecting, secure - meta search engine - (pronounced as websurface or web-surface /wɛbˈsɜːrfəs/.) written in Rust. It - provides a quick and secure search experience while completely respecting user - privacy. -

+# Oxisearch -
- Table of Contents -

- -- **Getting Started** - - [🔭 Preview](#preview-) - - [🚀 Features](#features-) - - [🔗 Instances](#instances-) - - [🛠️ Installation and Testing](#installation-and-testing-%EF%B8%8F) - - [🔧 Configuration](#configuration-) -- **Feature Overview** - - [🎨 Theming](#theming-) - - [🌍 Multi-Language Support](#multi-language-support-) -- **Community** - - [📊 System Requirements](#system-requirements-) - - [🗨️ FAQ (Frequently Asked Questions)](#faq-frequently-asked-questions-%EF%B8%8F) - - [📣 More Contributors Wanted](#more-contributors-wanted-) - - [💖 Supporting Websurfx](#supporting-websurfx-) - - [📘 Documentation](#documentation-) - - [🛣️ Roadmap](#roadmap-%EF%B8%8F) - - [🙋 Contributing](#contributing-) - - [📜 License](#license-) - - [🤝 Credits](#credits-) - -

-
- -# Preview 🔭 - -## Home Page - - - -## Search Page - - - -## 404 Error Page - - - -**[⬆️ Back to Top](#--)** - -# Instances 🔗 - -> For a full list of publicly available community driven `websurfx` instances to test or for daily use. see [**Instances**](docs/instances.md) - -**[⬆️ Back to Top](#--)** - -# Features 🚀 - -- 🎨 Make Websurfx uniquely yours with the twelve color schemes provided by default. It also supports the creation of custom themes and color schemes in a quick and easy way, so unleash your creativity! -- 🚀 Easy to setup with Docker or on bare metal with various installation and deployment options. -- ⛔ Search filtering to filter search results based on four different levels. -- 💾 Different caching levels focusing on reliability, speed and resiliancy. -- ⬆️ Organic Search results (with ranking algorithm builtin to rerank the search results according to user's search query.). -- 🔒 Different compression and encryption levels focusing on speed and privacy. -- 🧪 Experimental IO-uring feature for Linux operating systems focused on performance of the engine. -- 🔐 Fast, private, and secure -- 🆓 100% free and open source -- 💨 Ad-free and clean results -- 🌟 and lots more... - -**[⬆️ Back to Top](#--)** - -# Installation and Testing 🛠️ - -> For full setup instructions, see: [**Installation**](docs/installation.md) - -Before you can start building `websurfx`, you will need to have `Cargo` installed on your system. You can find the installation instructions [here](https://doc.rust-lang.org/cargo/getting-started/installation.html). - -To get started with Websurfx, clone the repository, edit the config file, which is located in the `websurfx/` directory, and install the Redis server by following the instructions located [here](https://redis.io/docs/getting-started/) and then run the websurfx server and redis server using the following commands: - -```shell -git clone https://github.com/neon-mmd/websurfx.git -cd websurfx -git checkout stable -cargo build -r -redis-server --port 8082 & -./target/release/websurfx -``` - -Once you have started the server, open your preferred web browser and navigate to to start using Websurfx. - -> [!Note] -> -> 1. The project is no longer in the testing phase and is now ready for production use. -> 2. There are many features still missing, like `support for image search`, `different categories`, `quick apps`, etc., but they will be added soon as part of future releases. - -**[⬆️ Back to Top](#--)** - -# Configuration 🔧 - -> For full configuration instructions, see: [**Configuration**](docs/configuration.md) - -Websurfx is configured through the config.lua file, located at `websurfx/config.lua`. - -**[⬆️ Back to Top](#--)** - -# Theming 🎨 - -> For full theming and customization instructions, see: [**Theming**](docs/theming.md) - -Websurfx comes loaded with several themes and color schemes, which you can apply and edit through the config file. It also supports custom themes and color schemes using CSS, allowing you to make it truly yours. - -**[⬆️ Back to Top](#--)** - -# Multi-Language Support 🌍 - -> [!Note] -> Currently, we do not support other languages, but we will start accepting contributions regarding language support in the future. We believe language should never be a barrier to entry. - -**[⬆️ Back to Top](#--)** - -# System Requirements 📊 - -At present, we only support x86_64 architecture systems, but we would love to have contributions that extend to other architectures as well. - -**[⬆️ Back to Top](#--)** - -# FAQ (Frequently Asked Questions) 🗨️ - -## Why Websurfx? - -The primary purpose of the Websurfx project is to create a fast, secure, and privacy-focused meta-search engine. There are numerous meta-search engines available, but not all guarantee the security of their search engines, which is critical for maintaining privacy. Memory flaws, for example, can expose private or sensitive information, which is understandably bad. There is also the added problem of spam, ads, and inorganic results, which most engines don't have a full-proof answer to. Until now. With Websurfx, I finally put a full stop to this problem. Websurfx is based on Rust, which ensures memory safety and removes such issues. Many meta-search engines also lack important features like advanced picture search, required by graphic designers, content providers, and others. Websurfx improves the user experience by providing these and other features, such as proper NSFW blocking and micro-apps or quick results (providing a calculator, currency exchanges, etc. in the search results). - -## Why AGPLv3? - -Websurfx is distributed under the **AGPLv3** license to keep the source code open and transparent. This helps keep malware, telemetry, and other dangers out of the project. **AGPLv3** is a strong copyleft license that ensures the software's source code, including any modifications or improvements made to the code, remains open and available to everyone. - -## Why Rust? - -Websurfx is based on Rust due to its memory safety features, which prevent vulnerabilities and make the codebase more secure. Rust is also faster than C++, contributing to Websurfx's speed and responsiveness. Finally, the Rust ownership and borrowing system enables secure concurrency and thread safety in the program. - -**[⬆️ Back to Top](#--)** - -# More Contributors Wanted 📣 - -We are looking for more willing contributors to help grow this project. For more information on how you can contribute, check out the [project board](https://github.com/neon-mmd/websurfx/projects?query=is%3Aopen) and the [CONTRIBUTING.md](CONTRIBUTING.md) file for guidelines and rules for making contributions. - -**[⬆️ Back to Top](#--)** - -# Supporting Websurfx 💖 - -> For full details and other ways you can help out, see: [**Contributing**](CONTRIBUTING.md) - -If you use Websurfx and would like to contribute to its development, we're glad to have you on board! Contributions of any size or type are always welcome, and we will always acknowledge your efforts. - -Several areas that we need a bit of help with at the moment are: - -- **Better and more color schemes**: Help fix color schemes and add other famous color schemes. -- **Improve evasion code for bot detection**: Help improve code related to evading IP blocking and emulating human behaviors located in everyone's engine file. -- **Logo**: Help create a logo for the project and website. -- **Docker Support**: Help write a Docker Compose file for the project. -- Submit a PR to add a new feature, fix a bug, update the docs, add a theme, widget, or anything else. -- Star Websurfx on GitHub. - -**[⬆️ Back to Top](#--)** - -# Documentation 📘 - -> [!Note] -> We welcome any contributions to the [documentation](docs) as this will benefit everyone who uses this project. - -**[⬆️ Back to Top](#--)** - -# Roadmap 🛣️ - -> Coming soon! 🙂. - -**[⬆️ Back to Top](#--)** - -# Contributing 🙋 - -Contributions are welcome from anyone. It doesn't matter who you are; you can still contribute to the project in your own way. - -## Not a developer but still want to contribute? - -Check out this [video](https://youtu.be/FccdqCucVSI) by Mr. Nick on how to contribute. - -## Developer - -If you are a developer, have a look at the [CONTRIBUTING.md](CONTRIBUTING.md) document for more information. - -**[⬆️ Back to Top](#--)** - -# License 📜 - -Websurfx is licensed under the [AGPLv3](LICENSE) license. - -**[⬆️ Back to Top](#--)** - -# Credits 🤝 - -We would like to thank the following people for their contributions and support: - -**Contributors** - -

-
- - - -
-

- -**Stargazers** - -

- - - -

- -**[⬆️ Back to Top](#--)** - ---- - -

- - - -

- Thank you for Visiting -

+A modern, fast, simple meta search engine written in rust. \ No newline at end of file diff --git a/dev.Dockerfile b/dev.Dockerfile deleted file mode 100644 index 0ebe916..0000000 --- a/dev.Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -# Create Builder image -FROM --platform=$BUILDPLATFORM rust:1.78.0-alpine3.18 - -# Install required dependencies -RUN apk add --no-cache alpine-sdk musl-dev g++ make libcrypto3 libressl-dev perl build-base - -RUN cargo install cargo-watch --locked - -# Create project directory -RUN mkdir -p /project -WORKDIR /project - -ENV RUSTFLAGS="-C target-feature=-crt-static" - -ENTRYPOINT ["cargo"] diff --git a/dev.docker-compose.yml b/dev.docker-compose.yml deleted file mode 100644 index f242849..0000000 --- a/dev.docker-compose.yml +++ /dev/null @@ -1,26 +0,0 @@ ---- -version: "3.9" -services: - redis: - container_name: redis - image: redis:6.2.5-alpine - tty: true - hostname: surfx-redis - websurx: - container_name: websurx-dev - image: websurfx:dev - working_dir: /project - tty: true - build: - context: . - dockerfile: dev.Dockerfile - ports: - - 8080:8080 - volumes: - - type: bind - source: . - target: /project - command: - - watch - - -x - - run diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 1bfa54e..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,18 +0,0 @@ ---- -version: "3.9" -services: - app: - image: websurfx:latest - build: . - ports: - - 8080:8080 - # Uncomment the following lines if you are using the `hybrid` or `redis` caching feature. - # depends_on: - # - redis - # links: - # - redis - volumes: - - ./websurfx/:/etc/xdg/websurfx/ - # Uncomment the following lines if you are using the `hybrid` or `redis` caching feature. - # redis: - # image: redis:latest \ No newline at end of file diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index c811f87..0000000 --- a/docs/README.md +++ /dev/null @@ -1,20 +0,0 @@ -

Websurfx Docs

- -# General - -- [Introduction](./introduction.md) -- [**FAQ**](./faq.md) - -# Users - -- [Instances](./instances.md) -- [Installation](./installation.md) -- [Features](./features.md) -- [Configuration](./configuration.md) -- [Theming](./theming.md) - -# Developers - -- [Developing](./developing.md) -- [**Contribute**](https://github.com/neon-mmd/websurfx/blob/master/CONTRIBUTING.md) -- [**Coding style**](https://rust-lang.github.io/api-guidelines/naming.html) diff --git a/docs/configuration.md b/docs/configuration.md deleted file mode 100644 index c237b5b..0000000 --- a/docs/configuration.md +++ /dev/null @@ -1,93 +0,0 @@ -# Configuration - -## Installed From Source - -If you have built `websurfx` from the source then the configuration file will be located under the project directory (codebase) at `websurfx/` - -> [!Note] -> If you have built websurfx with an unstable/rolling/edge branch then you can copy the configuration file from `websurfx/config.lua` located under the project directory (codebase) to `~/.config/websurfx/` and make the changes there and rerun the websurfx server. _This is only available from unstable/rolling/edge version_. - -## Installed From Package - -If you have installed `websurfx` using the package manager of your Linux distro then the default configuration file will be located at `/etc/xdg/websurfx/`. You can copy the default config to `~/.config/websurfx/` make the changes there and rerun the websurfx server. - -Some of the configuration options provided in the file are stated below. These are subdivided into the following categories: - -- General -- Server -- Search -- Website -- Cache -- Search Engines - -# General - -- **logging:** An option to enable or disable logs. -- **debug:** An option to enable or disable debug mode. -- **threads:** The amount of threads that the app will use to run (the value should be greater than 0). - -## Server - -- **port:** Port number on which server should be launched. -- **binding_ip_addr:** IP address on the which server should be launched. -- **production_use:** Whether to use production mode or not (in other words this option should be used if it is to be used to host it on the server to provide a service to a large number of users). If production_use is set to true. There will be a random delay before sending the request to the search engines, this is to prevent DDoSing the upstream search engines from a large number of simultaneous requests. -- **request_timeout:** Timeout for the search requests sent to the upstream search engines to be fetched (value in seconds). -- **rate_limiter:** The configuration option to configure rate limiting on the search engine website. - -## Search - -- **safe_search:** This option is used to configure the search filtering based on different safe search levels. (value a number between 0 to 4) - -> This option provides 4 levels of search filtering: -> -> - Level 0 - With this level no search filtering occurs. -> - Level 1 - With this level some search filtering occurs. -> - Level 2 - With this level the upstream search engines are restricted to sending sensitive content like NSFW search results, etc. -> - Level 3 - With this level the regex-based filter lists are used alongside level 2 to filter more search results that have slipped in or custom results that need to be filtered using the filter lists. -> - Level 4 - This level is similar to level 3 except in this level the regex-based filter lists are used to disallow users to search sensitive or disallowed content. This level could be useful if you are a parent or someone who wants to completely disallow their kids or yourself from watching sensitive content. - -## Website - -- **colorscheme:** The colorscheme name which should be used for the website theme (the name should be by the colorscheme file name present in the `public/static/colorschemes` folder). - -> By Default we provide 12 colorschemes to choose from these are: -> -> 1. catppuccin-mocha -> 2. dark-chocolate -> 3. dracula -> 4. gruvbox-dark -> 5. monokai -> 6. nord -> 7. oceanic-next -> 8. one-dark -> 9. solarized-dark -> 10. solarized-light -> 11. tokyo-night -> 12. tomorrow-night - -- **theme:** The theme name that should be used for the website (again, the name should be by the theme file name present in the `public/static/themes` folder). - -> By Default we provide 1 theme to choose from these are: -> -> 1. simple - -- **animation:** The animation name that should be used for the website (again, the name should be by the animation file name present in the `public/static/animations` folder). - -> By Default we provide 1 animation to choose from these are: -> -> 1. simple-frosted-glow - -## Cache - -- **redis_url:** Redis connection URL address on which the client should connect. - -> **Note** -> This option can be commented out if you have compiled the app without the `redis-cache` feature. For more information, See [**building**](./building.md). - -- **cache_expiry_time:** The maximum time the server will store the cache for, after which it flushs/removes/expires/invalidates the cached results. (value provided to this option should be in seconds and the value should be greater than or equal to 60 seconds). - -## Search Engines - -- **upstream_search_engines:** Select from the different upstream search engines from which the results should be fetched. - -[⬅️ Go back to Home](./README.md) diff --git a/docs/developing.md b/docs/developing.md deleted file mode 100644 index bf47b53..0000000 --- a/docs/developing.md +++ /dev/null @@ -1,643 +0,0 @@ -# Developing - -This page of the docs outlines how to get **Websurfx** up and running in a development environment, and outlines the common workflow, different ways to work on the project, a high-level overview of how the project works, project structure, and the best practices that should be followed when working on the project. - -
- Table of Contents -

- -- [Setting up the Development Environment](#setting-up-the-development-environment) - - [Local Development](#local-development-) - - [Gitpod](#gitpod-) - - [NixOS Dev Shell using Nix Flake](#nixos-dev-shell-using-nix-flake-) - - [Local Development with Docker Compose](#local-development-with-docker-compose-) - - [Project Commands](#project-commands) - - [Environment Variables](#environment-variables) -- [Git Strategy](#git-strategy) - - [Flow](#git-flow) - - [Branches](#git-branch-naming) - - [Commit emojis](#commit-emojis) - - [PR Guidelines](#pr-guidelines) -- [Resources for Beginners](#resources-for-beginners) -- [App Info](#app-info) -- [Code Style Guide](#style-guide) -- [Application Structure](#application-structure) -- [Development Tools](#development-tools) -- [Misc / Notes](#notes) - -

-
- -## Setting up the Development Environment - -By default, we provide four different ways to work on the project. These are as follows: - -- [Local Development](#local-development-) -- [Gitpod](#gitpod-) -- [NixOS Dev Shell using Nix Flake](#nixos-dev-shell-using-nix-flake-) -- [Local Development with Docker Compose](#local-development-with-docker-compose-) - -The different methods are explained in depth below. - -### Local Development - -This section covers how to set up the project for development on your local machine (bare metal). - -#### Prerequisites - -Before you start working on the project. You will need the following packages installed on your system: - -- The latest version of `cargo` installed on your system which is required to manage building and running the project. The installation instructions for this can be found [here](https://doc.rust-lang.org/cargo/getting-started/installation.html). -- The latest version of `npm` installed on your system which is required to allow the installation of other tools necessary for the project. The installation for this can be found [here](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm). -- The latest version of `redis` installed on your system which will be used to avoid introducing unexpected issues when working on the project. The installation for this can be found [here](https://redis.io/docs/getting-started/installation/). -- The latest version of `stylelint` should be installed on your system which will be used by the pre-commit checks to lint the code before a commit can be made to ensure better code quality. Before you install `stylelint` on your system, make sure you have `npm` installed on your system. To install `stylelint` and plugins run the following command: - -```shell -$ npm i -g stylelint -$ npm i -g stylelint stylelint-config-standard postcss-lit -``` - -> [!Note] -> In the above command the dollar sign(**$**) refers to running the command in privileged mode by using utilities `sudo`, `doas`, `pkgexec`, or any other privileged access methods. - -- `Cargo-watch` installed on your system which will allow you to auto-build the project when any checks occur in the source code files in the codebase (`websurfx` directory). Before you install `cargo-watch` on your system, make sure you have `cargo` installed on your system. To install `cargo-watch` run the following command: - -```shell -cargo install cargo-watch -``` - -- `Git` installed on your system. The installation instructions for this can be found [here](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). -- Finally, The latest version of `Docker` is installed on your system which will be used to avoid introducing unexpected issues when working on the project. The installation instructions for this can be found [here](https://docs.docker.com/engine/install/). - -> [!Note] -> For **rolling release Linux distributions (distros)**, the above-mentioned required packages except for `stylelint` and `cargo-watch` can also be installed via the distro-specific package manager. -> -> **For Example:** -> -> On `arch linux` the following packages can be installed by following the link to the installation instructions provided below: -> -> - `Cargo`: https://wiki.archlinux.org/title/rust -> - `Npm`: https://wiki.archlinux.org/title/Node.js -> - `Redis`: https://wiki.archlinux.org/title/redis -> - `Git`: https://wiki.archlinux.org/title/git -> - `Docker`: https://wiki.archlinux.org/title/docker -> -> But we do not recommend this method for **stable release Linux distros** as they tend to not provide very up-to-date versions of the required packages. - -#### Setting up Pre-commit Checks - -Before you set `pre-commit` checks, you will first need to clone **your fork of the project** and navigate into the cloned repository by running the following command: - -```shell -git clone https://github.com//websurfx.git -cd websurfx -``` - -Once you have finished running the above commands then run the following command to set the `pre-commit` checks: - -```shell -cargo test -``` - -By running the above-mentioned command, it will automatically set up all the pre-commit checks in the project. - -#### Running the Project - -If you have followed the above section then you should have a cloned repository folder present on your system. In the same directory run the following command to run the project: - -```shell -cargo watch -q -x "run" -w "." -``` - -This will compile the app by default with the **In-Memory caching** feature. To compile, run, and test the app with other features follow the build options listed below: - -##### Hybrid Cache - -To build and run the app with the `Hybrid caching` feature. Run the following command: - -```shell -cargo watch -q -x "run --features redis-cache" -w . -``` - -##### No Cache - -To build and run the search engine with the `No caching` feature. Run the following command: - -```shell -cargo watch -q -x "run --no-default-features" -w . -``` - -##### Redis Cache - -To build the search engine with the `Redis caching` feature. Run the following command: - -```shell -cargo watch -q -x "run --no-default-features --features redis-cache" -w . -``` - -> Optionally, If you have build and run the app with the `Redis cache`or `Hybrid cache` feature (as mentioned above) then you will need to start the redis server alongside the app which can be done so by running the following command: -> -> ```shell -> redis-server --port 8082 & -> ``` - -Once you have finished running the above command, Websurfx should now be served on the address http://127.0.0.1:8080. Hot reload is enabled, so making changes to any of the files will trigger the project to be rebuilt. - -> For more info on all the project commands. See: [**Project Commands**](#project-commands-) - -### Gitpod - -This section covers how to use and set up the Gitpod development environment for working on the project. - -> [!Note] -> By default the project only supports the Vscode **IDE/Editor** for Gitpod. - -#### Launching Gitpod - -> For a full guide on how to fork the project. See: [**Forking**](#) - -To launch gitpod and start working on the project from your fork of the Websurfx, Just navigate to the following link: - -```text -https://gitpod.io/#https://github.com//websurfx -``` - -> For a full guide on how to use it and how to use it in different ways. See [**Learn Gitpod**](https://piped.kavin.rocks/playlist?list=PL3TSF5whlprXVp-7Br2oKwQgU4bji1S7H) - -#### Default Plugins - -The project by default provides a set of pre-installed plugins for gitpod which is done to improve productivity and efficiency while working on the project. Also to make working on the project more fun and engaging which can be customized from within the `Gitpod` instance. - -The list of all the pre-installed plugins are listed below: - -**Productivity** - -- [CodeLLDB](https://open-vsx.org/extension/vadimcn/vscode-lldb): Provides a native debugger for rust programming langauge. -- [GitHub Actions](https://open-vsx.org/extension/cschleiden/vscode-github-actions): Provides an easy to work with github actions. -- [rust-analyzer](https://open-vsx.org/extension/rust-lang/rust-analyzer): Provides a language server for rust programming langauge. -- [better-toml](https://open-vsx.org/extension/bungcip/better-toml): Provides support for toml files. -- [crates](https://open-vsx.org/extension/serayuzgur/crates): Makes managing rust dependencies easier. -- [Error Lens](https://open-vsx.org/extension/usernamehw/errorlens): Provides better highlighting of errors. -- [markdownlint](https://open-vsx.org/extension/DavidAnson/vscode-markdownlint): Provides a linter for linting markdown documents. -- [Prettier](https://open-vsx.org/extension/esbenp/prettier-vscode): Provides a code formatter. -- [Stylelint](https://open-vsx.org/extension/stylelint/vscode-stylelint): Provides a linter for CSS files. -- [ESLint](https://open-vsx.org/extension/dbaeumer/vscode-eslint): Provides a linter for JS files. -- [Syntax Highlighter](https://open-vsx.org/extension/evgeniypeshkov/syntax-highlighter): A better syntax highlighting for code. -- [Docker](https://open-vsx.org/extension/ms-azuretools/vscode-docker): Makes handling docker files easier. -- [indent-rainbow](https://open-vsx.org/extension/oderwat/indent-rainbow): Highlightes code idents for better visualization. -- [Auto Rename Tag](https://open-vsx.org/extension/formulahendry/auto-rename-tag): Provides a way to easily and quickly rename html tags. -- [Rust Test Explorer](https://open-vsx.org/extension/Swellaby/vscode-rust-test-adapter): View and run cargo tests easily from a convenient sidebar. -- [Search crates-io](https://open-vsx.org/extension/belfz/search-crates-io): Provides crates suggestions in the `cargo.toml` file. -- [Test Adapter Converter](https://open-vsx.org/extension/hbenl/test-adapter-converter): A vscode native way to view and run tests. -- [Test Explorer UI](https://open-vsx.org/extension/hbenl/vscode-test-explorer): Provides a way to run any test from a convenient sidebar. -- [GitLens](https://open-vsx.org/extension/eamodio/gitlens): Provides a better and more efficient way to manage common git workflows. - -> Optionally, if you prefer a more keyboard-centric workflow then we would recommend using the following extension: -> -> - [VSCode Neovim](https://open-vsx.org/extension/asvetliakov/vscode-neovim): Provides complete vim emulation for vscode. - -**Theming** - -- [Catppuccin for VSCode](https://open-vsx.org/extension/Catppuccin/catppuccin-vsc): Provides the catpuccin theme for vscode. -- [Material Icon Theme](https://open-vsx.org/extension/PKief/material-icon-theme): Provides material design icons for files dependening on the file extension. - -> If you have more ideas and ways to improve Gitpod for development purposes then feel free to do so by contributing a PR to this project [**here**](https://github.com/neon-mmd/websurfx/pulls). - -### NixOS Dev Shell using Nix Flake - -This section covers how to setup the project for development using the `NixOS dev-shell`. - -#### Pre Setup Requirements - -Before you start working on the project. You will need the following packages installed on your system: - -- `Git` installed on your system. The installation instructions for this can be found [here](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). - -#### Setting up Pre-commit Checks - -Before you setup `pre-commit` checks, you will first need to clone **your fork of the project** and navigate into the cloned repository by running the following command: - -```shell -git clone https://github.com//websurfx.git -cd websurfx -``` - -Then run the following command to setup the `NixOS dev-shell`: - -```shell -nix develop -``` - -> You can use `nix-direnv` to simplify entering into the `nix-shell`. Its setup is beyond the scope of this guide. Read more about it here: [nix-direnv](https://github.com/nix-community/nix-direnv) - -This will add `docker`, `cargo-watch`, and other dev environment essentials to your `nix-shell` so you don't have to install everything imperatively. - -After finishing the commands above, run the following command to setup the `pre-commit` checks: - -```shell -cargo test -``` - -By running the above-mentioned command, it will automatically set up all the pre-commit checks in the project. - -#### Post Setup Requirements - -The final step is to run - -```shell -npm i -D stylelint-config-standard postcss-lit` -``` - -This will add `node_modules` in the current directory. - -Run `git commit` and if every thing is setup correctly, it should say that your branch is up to date. - -#### Running the Project - -If you have followed the above section then you should now be inside a `dev-shell` environment. In the same environment run the following command to run the project: - -```shell -cargo watch -q -x "run" -w "." -``` - -This will compile the app by default with the **In-Memory caching** feature. To compile, run, and test the app with other features follow the build options listed below: - -##### Hybrid Cache - -To build and run the app with the `Hybrid caching` feature. Run the following command: - -```shell -cargo watch -q -x "run --features redis-cache" -w . -``` - -##### No Cache - -To build and run the search engine with the `No caching` feature. Run the following command: - -```shell -cargo watch -q -x "run --no-default-features" -w . -``` - -##### Redis Cache - -To build the search engine with the `Redis caching` feature. Run the following command: - -```shell -cargo watch -q -x "run --no-default-features --features redis-cache" -w . -``` - -> Optionally, If you have build and run the app with the `Redis cache`or `Hybrid cache` feature (as mentioned above) then you will need to start the redis server alongside the app which can be done by running the following command: -> -> ```shell -> redis-server --port 8082 & -> ``` - -Once you have finished running the above command, Websurfx should now be served on the address http://127.0.0.1:8080. Hot reload is enabled, so making changes to any of the files will trigger the project to be rebuilt. - -### Local Development with Docker Compose - -This section covers how to set up the project for development on your local machine (bare metal) using `docker compose`. - -#### Prerequisites - -Before you start working on the project. You will need the following packages installed on your system: - -- The latest version of `cargo` installed on your system which is required to manage the building and running the project. The installation instructions for this can be found [here](https://doc.rust-lang.org/cargo/getting-started/installation.html). -- The latest version of `npm` installed on your system which is required to allow the installation of other tools necessary for the project. The installation for this can be found [here](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm). -- The latest version of `stylelint` should be installed on your system which will be used by the pre-commit checks to lint the code before a commit can be made to ensure better code quality. Before you install `stylelint` on your system, make sure you have `npm` installed on your system. To install `stylelint` run the following command: - -```shell -$ npm i -g stylelint -``` - -> [!Note] -> In the above command the dollar sign(**$**) refers to running the command in privileged mode by using utilities `sudo`, `doas`, `pkgexec`, or any other privileged access methods. - -- `Git` installed on your system. The installation instructions for this can be found [here](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). -- Finally, The latest version of `Docker` is installed on your system which will be used to avoid introducing unexpected issues when working on the project. The installation instructions for this can be found [here](https://docs.docker.com/engine/install/). - -> [!Note] -> For **rolling release Linux distributions (distros)**, the above-mentioned all required packages can also be installed via the distro-specific package manager. -> -> **For Example:** -> -> On `arch linux` the following packages can be installed by following the link to the installation instructions provided below: -> -> - `Cargo`: https://wiki.archlinux.org/title/rust -> - `Npm`: https://wiki.archlinux.org/title/Node.js -> - `Git`: https://wiki.archlinux.org/title/git -> - `Docker`: https://wiki.archlinux.org/title/docker -> -> But we do not recommend this method for **stable release Linux distros** as they tend to not provide very up-to-date versions of the required packages. - -#### Setting up Pre-commit Checks - -Before you setup `pre-commit` checks, you will first need to clone **your fork of the project** and navigate into the cloned repository by running the following command: - -```shell -git clone https://github.com//websurfx.git -cd websurfx -``` - -Once you have finished running the above commands then run the following command to setup the `pre-commit` checks: - -```shell -cargo test -``` - -By running the above-mentioned command, it will automatically set up all the pre-commit checks in the project. - -#### Running the Project - -If you have followed the above section then you should have a cloned repository folder present on your system. In the same directory, edit the `dev.docker-compose.yml` file as required before running the following command to run the project: - -```shell -$ docker compose -f dev.docker-compose.yml up -``` - -> [!Note] -> In the above command the dollar sign(**$**) refers to running the command in privileged mode by using utilities `sudo`, `doas`, `pkgexec`, or any other privileged access methods. - -Once you have finished running the above command, Websurfx should now be served on the address http://127.0.0.1:8080. Hot reload is enabled, so making changes to any of the files will trigger the project to be rebuilt. - -### Project Commands - -#### Basics - -- `cargo build`: Builds the project. - -> [!Note] -> When you build the project first time with the above command it will require the app to compile every dependency in the project which will then be cached on your system. So when you compile the app next time it will only compile for the new changes. - -- `cargo run`: Starts the app and serves the project on http://127.0.0.1:8080. - -> [!Important] -> You must run the build command first. - -#### Development - -- `cargo watch -q -x "run" -w .`: Starts the development server with hot reloading. -- `cargo fmt -- --check`: Checks the code for proper formatting. -- `cargo clippy`: Lints code to ensure it follows a consistent, neat style. -- `cargo test`: Runs unit tests, integrations tests and doc tests. - -### Environment Variables - -All environment variables are optional. Currently, there are not many environment variables used, as most of the user preferences are stored under the `websurfx` folder (located under the codebase (`websurfx` directory)) in the `config.lua` file. - -The list of all the available environment variables are listed below: - -- `PKG_ENV`: Sets the logging level for the app to **Trace** which can be useful for better debugging of the app. These environment variables accept two values `dev` or `prod` as strings. -- `RUST_BACKTRACE`: Rust-specific environment variable useful for getting more elaborate error messages with an error stack to better diagnose the issue. This environment variable accepts three values `0` (off), `1` (on), and `full` (for long error stack to being printed out). - -## Git Strategy - -### Git Flow - -Like most Git repos, we are following the [Github Flow](https://guides.github.com/introduction/flow) standard. - -1. Create a branch (or fork if you don't have write access) -2. Code some awesome stuff 🧑‍💻 -3. Add, commit, and push your changes to your branch/ fork -4. Head over to GitHub and create a Pull Request -5. Fill in the required sections in the template, and hit submit -6. Follow up with any reviews on your code -7. Merge 🎉 - -### Git Branch Naming - -The format of your branch name should be something similar to: `[TYPE]/[TICKET]_[TITLE]` -For example, `FEATURE/420_Awesome-feature` or `FIX/690_login-server-error` - -### Commit Emojis - -Using a single emoji at the start of each commit message, issue title, and pull request title, to indicate the type of task, makes the commit ledger, issue, and pull request easier to understand, it looks cool. - -- 🎨 `:art:` - Improve the structure/format of the code. -- ⚡️ `:zap:` - Improve performance. -- 🔥 `:fire:` - Remove code or files. -- 🐛 `:bug:` - Fix a bug. -- 🚑️ `:ambulance:` - Critical hotfix -- ✨ `:sparkles:` - Introduce new features. -- 📝 `:memo:` - Add or update documentation. -- 🚀 `:rocket:` - Deploy stuff. -- 💄 `:lipstick:` - Add or update the UI and style files. -- 🎉 `:tada:` - Begin a project. -- ✅ `:white_check_mark:` - Add, update, or pass tests. -- 🔒️ `:lock:` - Fix security issues. -- 🔖 `:bookmark:` - Make a Release or Version tag. -- 🚨 `:rotating_light:` - Fix compiler/linter warnings. -- 🚧 `:construction:` - Work in progress. -- ⬆️ `:arrow_up:` - Upgrade dependencies. -- 👷 `:construction_worker:` - Add or update the CI build system. -- ♻️ `:recycle:` - Refactor code. -- 🩹 `:adhesive_bandage:` - Simple fix for a non-critical issue. -- 🔧 `:wrench:` - Add or update configuration files. -- 🍱 `:bento:` - Add or update assets. -- 🗃️ `:card_file_box:` - Perform database schema-related changes. -- ✏️ `:pencil2:` - Fix typos. -- 🌐 `:globe_with_meridians:` - Internationalization and translations. - -For a full list of options, see [gitmoji.dev](https://gitmoji.dev/) - -### PR Guidelines - -Once you've made your changes, and pushed them to your fork or branch, you're ready to open a pull request! - -For a pull request to be merged, it must: - -- The build, lint, and tests (run by GH actions) must pass -- There must not be any merge conflicts - -When you submit your pull request, include the required info, by filling out the pull request template. Including: - -- A brief description of your changes. -- The issue or ticket number (if applicable). -- For UI-related updates include a screenshot. -- If any dependencies were added, explain why it was needed, and state the cost. associated, and confirm it does not introduce any security, privacy, or speed issues -- Optionally, provide a checklist of all the changes that were included in the pull request. - -> [!Important] -> Make sure to fill all the required/mandatory sections of the pull request as filling them helps us distinguish between spam pull requests and legitimate pull requests. - -> [!Note] -> The pull request template contains comments in the following form `` which are used to provide a guide on what should be provided under each heading of the template. These comments are never rendered when the pull request is either created or updated and hence anything provided in such comments is never displayed. - -## Resources for Beginners - -New to Web Development? Or New to GitHub? Glad to see you're here!! :slightly_smiling_face: Websurfx is a pretty simple app, so it should make a good candidate for your first PR. The following articles (which have been divided into parts for convenience) should point you in the right direction for getting up to speed with the technologies used in this project: - -**Development** - -- [Basics of Rust](https://piped.kavin.rocks/playlist?list=PLai5B987bZ9CoVR-QEIN9foz4QCJ0H2Y8) -- [Introduction and deep dive into async/await in rust](https://piped.kavin.rocks/watch?v=ThjvMReOXYM) -- [Getting Started to Actix Guide](https://actix.rs/docs/getting-started) -- [Basics of Lua](https://learn.coregames.com/courses/intro-to-lua/) -- [Complete course on CSS](https://piped.kavin.rocks/watch?v=1Rs2ND1ryYc) -- [Complete course on JS](https://piped.kavin.rocks/playlist?list=PL_c9BZzLwBRLVh9OdCBYFEql6esA6aRsi) -- [Responsive web design](https://piped.kavin.rocks/watch?v=srvUrASNj0s) -- [Complete beginners guide to Docker](https://docker-curriculum.com/) -- [Docker Classroom - Interactive Tutorials](https://training.play-with-docker.com/) -- [Docker Compose Tutorial](https://docs.docker.com/compose/gettingstarted/) -- [ES6 Tutorial](https://piped.kavin.rocks/watch?v=nZ1DMMsyVyI) -- [Cargo Guide Book](https://doc.rust-lang.org/cargo/index.html) - -**GitHub** - -- [Complete Guide to Open Source - How to Contribute](https://piped.kavin.rocks/watch?v=yzeVMecydCE) -- [Forking a Project](https://piped.kavin.rocks/watch?v=FnxFwyzm4Z4) -- [A Tutorial on Git](https://piped.kavin.rocks/playlist?list=PL4lTrYcDuAfxAgSefXftJXbhw0qvjfOFo) -- [Git cheat sheet](http://git-cheatsheet.com/) - -For Rust, CSS, JS, HTML, Git, and Docker- you'll need an IDE (e.g. [VSCode](https://code.visualstudio.com/) or [Neovim](https://neovim.io/) and a terminal (Windows users may find [WSL](https://docs.microsoft.com/en-us/windows/wsl/) more convenient). - -## App Info - -### Style Guides - -Linting is done using [Cargo Clippy](https://doc.rust-lang.org/clippy/) and [StyleLint](https://stylelint.io/) or [ESLint](https://eslint.org/). Also, linting is run as a git pre-commit hook. - -> [!Important] -> All lint checks must pass before any PR can be merged. - -Styleguides to follow: - -- [Rust API Guidelines](https://rust-lang.github.io/api-guidelines/naming.html) -- [Airbnb JS Guidelines](https://github.com/airbnb/javascript) -- [Google's Html and CSS Guidelines](https://google.github.io/styleguide/htmlcssguide.html) - -## Application Structure - -> [!Important] -> We follow the Unix style naming conventions for all the files and folders in the project (except for all files under the `themes` and `colorschemes` folder in the frontend's source code which requires that the names of the files and folders should be in lowercase and the words be separated with a hyphen.) which includes the name of the files and folders should be in lowercase and every word should be separated with an underscore. - -**Files in the root of the codebase:** `./` - -``` -./ -├── .dockerignore # Docker ignore file to ignore stuff being included in the file docker image. -├── .gitignore # Git ignore file to ignore stuff from being -├── Cargo.lock # Auto-generated list of current packages and version numbers. -├── Cargo.toml # Project meta-data and dependencies. -├── Dockerfile # The blueprint for building the Docker container. -├── LICENSE # License for use. -├── README.md # Readme, basic info for getting started. -├── dev.Dockerfile # The blueprint for building the Docker container for development purposes. -├── dev.docker-compose.yml # A Docker run command for development environments. -├── docker-compose.yml # A Docker run command. -├── flake.lock # NixOS auto-generated flake configuration. -├── flake.nix # Nix flake package configuration. -├── docs # Markdown documentation -├── public # Project front-end source code -├── src # Project back-end source code -├── tests # Project integration tests for the back-end source code. -└── websurfx # Project folder containing config files for the app. -``` - -**Frontend Source:** `./public/` - -``` -./public/ -├── robots.txt # Robots file for the Website. -├── images # Images for the Website. -└── static # The directory containing all the UI handlers. - ├── cookies.js # Handles the loading of saved cookies. - ├── error_box.js # Handles the toggling functionality of the error box on the search page. - ├── index.js # Functions to handle the search functionality of the search bar. - ├── pagination.js # Functions to handle the navigation between the previous and next page in the search page. - ├── search_area_options.js # Changes the search options under the search bar in the search page according to the safe search level set using the URL safesearch parameter. - ├── settings.js # Handles the settings and saving of all the settings page options as a cookie. - ├── colorschemes # A folder containing all the popular colorscheme files as CSS files. - └── themes # A folder containing all the popular theme files as CSS files. -``` - -**Fronted Maud HTML Framework Source:** `./src/templates/` - -``` -./src/templates/ -├── mod.rs # A module file for the rust project. -├── partials # A folder containing the code for partials for the views. -│ ├── bar.rs # Provides partial code for the search bar. -│ ├── footer.rs # Provides partial code for the footer section. -│ ├── header.rs # Provides partial code for the header section. -│ ├── mod.rs # A module file for the rust project. -│ ├── navbar.rs # Provides partial code for the navbar inside the header section. -│ ├── search_bar.rs # Provides partial code for the search bar present in the search page. -│ └── settings_tabs # A folder containing all the partials for the settings page tabs. -│ ├── cookies.rs # Provides partial code for the cookies tab. -│ ├── engines.rs # Provides partial code for the engines tab. -│ ├── general.rs # Provides partial code for the general tab. -│ ├── mod.rs # A module file for the rust project. -│ └── user_interface.rs # Provides partial code for the user interface tab. -└── views # A folder containing the code for the views. - ├── about.rs # Provides code for the about page view. - ├── index.rs # Provides code for the homepage view. - ├── mod.rs # A module file for the rust project. - ├── not_found.rs # Provides code for the 404 page view. - ├── search.rs # Provides code for the search page view. - └── settings.rs # Provides code for the settings page view. -``` - -**Backend Source:** `./src/` - -``` -./src/ -├── lib.rs # A library file for the rust project. -├── bin # A folder containing the source code that would produce the binary file when compiled. -│ └── websurfx.rs # A file that would be compiled into a binary file. -├── cache # A folder that contains code to handle the caching functionality of the search engine. -│ ├── cacher.rs # Handles the different caching features. -│ ├── error.rs # Provides custom error messages for different types of caches and their related errors. -│ ├── mod.rs # A module file for the rust project. -│ └── redis_cacher.rs # Provides custom asynchronous pool implementation with auto background reconnection functionality. -├── config # A folder that holds the code to help parse the lua config file that would be used in the app. -│ ├── mod.rs # A module file for the rust project. -│ └── parser.rs # Provides the code to parse the config file. -├── engines # A folder that holds code to handle fetching data from different upstream engines. -│ ├── brave.rs # Provides code to fetch and remove unnecessary or waste results from the fetched results from the brave search engine. -│ ├── duckduckgo.rs # Provides code to fetch and remove unnecessary or waste results from the fetched results from the duckduckgo search engine. -│ ├── mod.rs # A module file for the rust project. -│ ├── search_result_parser.rs # Provides helper function to help ease the process of defining different result selection selectors. -│ └── searx.rs # Provides code to fetch and remove unnecessary or waste results from the fetched results from the searx engine. -├── handler # A folder that provides helper code to provide a proper path to the public (theme) folder, config file, blocklist file, and allowlist file based on where they are located. -│ ├── mod.rs # A module file for the rust project. -│ └── paths.rs # Provides helper code to handle different paths. -├── models # A folder that provides different models for the different modules in the backend code. -│ ├── aggregation_models.rs # Provides different models (enums, structs) for handling and standardizing different parts in the "results" module code. -│ ├── engine_models.rs # Provides different models (enums, structs) for handling and standardizing different parts in the "engines" module code. -│ ├── mod.rs # A module file for the rust project. -│ ├── parser_models.rs # Provides different models (enums, structs) for handling and standardizing different parts in the "config" module code. -│ └── server_models.rs # Provides different models (enums, structs) for handling and standardizing different parts in the "server" module code. -├── results # A folder that provides code to handle the fetching and aggregating of results from the upstream search engines. -│ ├── aggregator.rs # Provides code aggregate and fetches results from the upstream engines. -│ ├── mod.rs # A module file for the rust project. -│ └── user_agent.rs # Provides a helper function to allow random user agents to pass in the server request code to improve user privacy and avoiding detected as a bot. -├── server # A folder that holds code to handle the routes for the search engine website. -│ ├── mod.rs # A module file for the rust project. -│ ├── router.rs # Provides functions to handle the different routes on the website. -│ └── routes # A folder that contains code to handle the bigger route for the website. -│ ├── mod.rs # A module file for the rust project. -│ └── search.rs # Provides the function to handle the search route. -└── templates # A module that provides and handles Maud HTML framework source code for the search engine website (subfolders and files are explained in the above frontend section.) -``` - -## Development Tools - -### Performance - Lighthouse - -The easiest method of checking performance is to use Chromium's built-in auditing tool, Lighthouse. To run the test, open Developer Tools (usually F12) --> Lighthouse and click on the 'Generate Report' button at the bottom. - -## Notes - -### Known warnings - -When running the build command, a warning appears. This is not an error and does not affect the security or performance of the application. They will be addressed soon in a future update. - -```shell -warning: the following packages contain code that will be rejected by a future version of Rust: html5ever v0.23.0 -note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 2` -``` - -This warning just means that any dependencies or code using the `html5ever` code would be deprecated and rejected in future versions of the Rust language. So right now these dependencies can be used as these have not happened yet. - -[⬅️ Go back to Home](./README.md) diff --git a/docs/faq.md b/docs/faq.md deleted file mode 100644 index cbd3582..0000000 --- a/docs/faq.md +++ /dev/null @@ -1,15 +0,0 @@ -# General Questions - -## Why Websurfx? - -The primary purpose of the Websurfx project is to create a fast, secure, and privacy-focused [meta-search engine](https://en.wikipedia.org/wiki/Metasearch_engine). While there are numerous meta-search engines available, not all of them guarantee the security of their search engine, which is critical for maintaining privacy. Memory flaws, for example, can expose private or sensitive information, which is never a good thing. Also, there is the added problem of Spam, ads, and unorganic results which most engines don't have the full-proof answer to it till now but with Websurfx I finally put a full stop to this problem, also, Rust is used to write Websurfx, which ensures memory safety and removes such issues. Many meta-search engines also lack important features like advanced picture search, which is required by many graphic designers, content providers, and others. Websurfx attempts to improve the user experience by providing these and other features, such as proper NSFW blocking and Micro-apps or Quick results (like providing a calculator, currency exchanges, etc in the search results). - -## Why AGPLv3? - -Websurfx is released under the AGPLv3 license to ensure that the source code remains open and transparent. This helps to prevent the inclusion of spyware, telemetry, or other malicious code in the project. AGPLv3 is a strong copyleft license that ensures the source code of the software remains open and available to everyone, including any modifications or improvements made to the code. - -## Why Rust? - -Rust was chosen as the programming language for Websurfx due to its memory safety features, which can help prevent vulnerabilities and make the codebase more secure. Rust is also faster than C++, which helps to make Websurfx fast and responsive. In addition, Rust's ownership and borrowing system allows for safe concurrency and thread safety in the codebase. - -[⬅️ Go back to Home](./README.md) diff --git a/docs/features.md b/docs/features.md deleted file mode 100644 index 8578e21..0000000 --- a/docs/features.md +++ /dev/null @@ -1,42 +0,0 @@ -# Features - -The project provides 4 caching options as conditionally compiled features. This helps reduce the size of the compiled app by only including the code that is necessary for a particular caching option. - -The different caching features provided are as follows: -- No cache -- Redis cache -- In memory cache -- Hybrid cache - -## Explanation - -### No Cache - -This feature can drastically reduce binary size but with the cost that subsequent search requests and previous & next page search results are not cached which can make navigating between pages slower. As well as Page refreshes of the same page also become slower as each refresh has to fetch the results from the upstream search engines. - -### Redis Cache - -This feature allows the search engine to cache the results on the redis server. This feature can be useful for having a dedicated cache server for multiple devices hosted with the `Websurfx` server which can use the one dedicated cache server for hosting their cache on it. But a disadvantage of this solution is that if the `Redis`server is located far away (for example provided by a vps as service) and if it is unavailable or down for some reason then the `Websurfx` server would not be able to function properly or will crash on startup. - -### In Memory Cache - -This feature is the default feature provided by the project. This feature allows the search engine to cache the results in the memory which can help increase the speed of the fetched cache results and it also has the advantage that it is extremely reliable as all the results are stored in memory within the search engine. Though the disadvantage of this solution is that caching of results is slightly slower than the `redis-cache` solution, it requires a good amount of memory on the system and as such is not ideal for very low memory devices and is highly unscalable. - -### Hybrid Cache - -This feature provides the advantages of both `In Memory` caching and `Redis` caching and it is an ideal solution if you need a very resilient and reliable solution for the `Websurfx` which can provide both speed and reliability. Like for example if the `Redis` server becomes unavailable then the search engine switches to `In Memory` caching until the server becomes available again. This solution can be useful for hosting a `Websurfx` instance which will be used by hundreds or thousands of users all over the world. - -## Tabular Summary - - -| **Attributes** | **Hybrid** | **In-Memory** | **No Cache** | **Redis** | -|-----------------------------------------|------------|------------------------------------------------------|-----------------|------------------------| -| **Speed** | Fast | Caching is slow, but retrieval of cache data is fast | Slow | Fastest | -| **Reliability** | ✅ | ✅ | ✅ | ❌ | -| **Scalability** | ✅ | ❌ | - | ✅ | -| **Resiliency** | ✅ | ✅ | ✅ | ❌ | -| **Production/Large Scale/Instance use** | ✅ | Not Recommended | Not Recommended | Not Recommended | -| **Low Memory Support** | ❌ | ❌ | ✅ | ❌ | -| **Binary Size** | Big | Bigger than `No Cache` | small | Bigger than `No Cache` | - -[⬅️ Go back to Home](./README.md) diff --git a/docs/installation.md b/docs/installation.md deleted file mode 100644 index 6e7bcbe..0000000 --- a/docs/installation.md +++ /dev/null @@ -1,409 +0,0 @@ -# Install From Package - -## Arch Linux - -### Rolling/Edge/Unstable - -You can install `Websurfx` through the [Aur](https://aur.archlinux.org/packages/websurfx-git), By running the following command (using [paru](https://github.com/Morganamilo/paru)): - -```shell -paru -S websurfx-edge-git -``` - -After installing it you can run the websurfx server by running the following commands: - -```shell -websurfx -``` - -Once you have started the server, open your preferred web browser and navigate to http://127.0.0.1:8080/ to start using Websurfx. - -If you want to change the port or the IP or any other configuration setting check out the [configuration docs](./configuration.md). - -### Stable - -For the stable version, follow the same steps as above (as mentioned for the `unstable/rolling/edge` version) with the only difference being that the package to be installed for the stable version is called `websurfx-git` instead of `websurfx-edge-git`. - -## NixOS - -A `flake.nix` has been provided to allow installing `websurfx` easily. It utilizes [nearsk](https://github.com/nix-community/naersk) to automatically generate a derivation based on `Cargo.toml` and `Cargo.lock`. - -The Websurfx project provides 2 versions/flavours for the flake `stable` and `rolling/unstable/edge`. The steps for each are covered below in different sections. - -### Rolling/Edge/Unstable - -To get started, First, clone the repository, edit the config file which is located in the `websurfx` directory, and then build and run the websurfx server by running the following commands: - -```shell -git clone https://github.com/neon-mmd/websurfx.git -cd websurfx -cp -rf ./websurfx/ ~/.config/ -$ mkdir /opt/websurfx/ -$ cp -rf ./public/ /opt/websurfx/ -nix build .#websurfx -nix run .#websurfx -``` - -> [!Note] -> In the above command the dollar sign(**$**) refers to running the command in Privileged mode by using utilities `sudo`, `doas`, `pkgexec`, or any other privileged access methods. - -Once you have run the above set of commands, open your preferred web browser and navigate to http://127.0.0.1:8080/ to start using Websurfx. - -If you want to change the port or the IP or any other configuration setting check out the [configuration docs](./configuration.md). - -> Optionally, you may include it in your own flake by adding this repo to its inputs and adding it to `environment.systemPackages` as follows: -> -> ```nix -> { -> description = "My awesome configuration"; -> -> inputs = { -> websurfx.url = "github:neon-mmd/websurfx"; -> }; -> -> outputs = { nixpkgs, ... }@inputs: { -> nixosConfigurations = { -> hostname = nixpkgs.lib.nixosSystem { -> system = "x86_64-linux"; -> modules = [{ -> environment.systemPackages = [inputs.websurfx.packages.x86_64-linux.websurfx]; -> }]; -> }; -> }; -> }; -> } -> ``` - -### Stable - -For the stable version, follow the same steps as above (as mentioned for the `unstable/rolling/edge version`) with an addition of one command which has to be performed after cloning and changing the directory into the repository which makes the building step as follows: - -```shell -git clone https://github.com/neon-mmd/websurfx.git -cd websurfx -git checkout stable -cp -rf ./websurfx/ ~/.config/ -$ mkdir /opt/websurfx/ -$ cp -rf ./public/ /opt/websurfx/ -nix build .#websurfx -nix run .#websurfx -``` - -> [!Note] -> In the above command the dollar sign(**$**) refers to running the command in privileged mode by using utilities `sudo`, `doas`, `pkgexec`, or any other privileged access methods. - -## Other Distros - -The package is currently not available on other Linux distros. With contribution and support it can be made available on other distros as well 🙂. - -# Install From Source - -Before you can start building `websurfx`, you will need to have `Cargo` installed on your system. You can find the installation instructions [here](https://doc.rust-lang.org/cargo/getting-started/installation.html). - -## Stable - -To get started with Websurfx, clone the repository, edit the config file which is located in the `websurfx` directory, and install redis server by following the instructions located [here](https://redis.io/docs/getting-started/) and then build and run the websurfx server by running the following commands: - -```shell -git clone https://github.com/neon-mmd/websurfx.git -cd websurfx -git checkout stable -cargo build -r -redis-server --port 8082 & -./target/release/websurfx -``` - -Once you have started the server, open your preferred web browser and navigate to http://127.0.0.1:8080/ to start using Websurfx. - -If you want to change the port or the IP or any other configuration setting check out the [configuration docs](./configuration.md). - -## Rolling/Edge/Unstable - -If you want to use the rolling/edge branch, run the following commands instead: - -```shell -git clone https://github.com/neon-mmd/websurfx.git -cd websurfx -``` - -Once you have changed the directory to the `websurfx` directory then follow the build options listed below: - -> [!Note] -> Before you start building the search engine using one of the below listed command. We would strongly recommend setting the `PKG_ENV` enviroment variable as this applies some special optimization to code to reduce the file and improve the page load speed of the website. -> To set the `PKG_ENV` enviroment variable in the `bash` shell run the following command: -> -> ```bash -> export PKG_ENV="prod" -> ``` -> -> For how to set the environment variables in other shells. You can follow the instructions on how to do so by visiting the documentation of the specific shell you are using. - -### Hybrid Cache - -> For more information on the features and their pros and cons. see: [**Features**](./features.md) - -To build the search engine with the `Hybrid caching` feature. Run the following build command: - -```shell -cargo build -r --features redis-cache -``` - -### Memory Cache (Default Features) - -> For more information on the features and their pros and cons. see: [**Features**](./features.md) - -To build the search engine with the `In-Memory caching` feature. Run the following build command: - -```shell -cargo build -r -``` - -### No Cache - -> For more information on the features and their pros and cons. see: [**Features**](./features.md) - -To build the search engine with the `No caching` feature. Run the following build command: - -```shell -cargo build -r --no-default-features -``` - -### Redis Cache - -> For more information on the features and their pros and cons. see: [**Features**](./features.md) - -To build the search engine with the `hybrid caching` feature. Run the following build command: - -```shell -cargo build -r --no-default-features --features redis-cache -``` - -> Optionally, If you have built the app with the `Redis cache`or `Hybrid cache` feature (as mentioned above) then before launching the search engine run the following command: -> -> ```shell -> redis-server --port 8082 & -> ``` - -Once you have finished building the `search engine`. then run the following command to start the search engine: - -```shell -./target/release/websurfx -``` - -Once you have started the server, launch your preferred web browser and navigate to http://127.0.0.1:8080/ to start using Websurfx. - -If you want to change the port or the IP or any other configuration setting check out the [configuration docs](./configuration.md). - -# Docker Deployment - -Before you start, you will need [Docker](https://docs.docker.com/get-docker/) installed on your system first. - -## Prebuild - -The Websurfx project provides several prebuilt images based on the different features provided by the search engine. To get started using the prebuild image, you will first need to create a `docker-compose.yml` file with the following content: - -```yaml ---- -version: '3.9' -services: - app: - # Comment the line below if you don't want to use the `hybrid/latest` image. - image: neonmmd/websurfx:latest - # Uncomment the line below if you want to use the `no cache` image. - # image: neonmmd/websurfx:nocache - # Uncomment the line below if you want to use the `memory` image. - # image: neonmmd/websurfx:memory - # Uncomment the line below if you want to use the `redis` image. - # image: neonmmd/websurfx:redis - ports: - - 8080:8080 - # Uncomment the following lines if you are using the `hybrid/latest` or `redis` image. - # depends_on: - # - redis - # links: - # - redis - volumes: - - ./websurfx/:/etc/xdg/websurfx/ - # Uncomment the following lines if you are using the `hybrid/latest` or `redis` image. - # redis: - # image: redis:latest -``` - -Then make sure to edit the `docker-compose.yml` file as required. After that create a directory `websurfx` in the directory you have placed the `docker-compose.yml` file, and then in the new directory create two new empty files named `allowlist.txt` and `blocklist.txt`. Finally, create a new config file `config.lua` with the default configuration, which looks something like this: - -```lua --- ### General ### -logging = true -- an option to enable or disable logs. -debug = false -- an option to enable or disable debug mode. -threads = 8 -- the amount of threads that the app will use to run (the value should be greater than 0). - --- ### Server ### -port = "8080" -- port on which server should be launched -binding_ip = "0.0.0.0" --ip address on the which server should be launched. -production_use = false -- whether to use production mode or not (in other words this option should be used if it is to be used to host it on the server to provide a service to a large number of users (more than one)) --- if production_use is set to true --- There will be a random delay before sending the request to the search engines, this is to prevent DDoSing the upstream search engines from a large number of simultaneous requests. -request_timeout = 30 -- timeout for the search requests sent to the upstream search engines to be fetched (value in seconds). -rate_limiter = { - number_of_requests = 20, -- The number of requests that are allowed within a provided time limit. - time_limit = 3, -- The time limit in which the number of requests that should be accepted. -} - --- ### Search ### --- Filter results based on different levels. The levels provided are: --- {{ --- 0 - None --- 1 - Low --- 2 - Moderate --- 3 - High --- 4 - Aggressive --- }} -safe_search = 2 - --- ### Website ### --- The different colorschemes provided are: --- {{ --- catppuccin-mocha --- dark-chocolate --- dracula --- gruvbox-dark --- monokai --- nord --- oceanic-next --- one-dark --- solarized-dark --- solarized-light --- tokyo-night --- tomorrow-night --- }} -colorscheme = "catppuccin-mocha" -- the colorscheme name that should be used for the website theme -theme = "simple" -- the theme name that should be used for the website - --- ### Caching ### -redis_url = "redis://redis:6379" -- redis connection url address on which the client should connect on. - --- ### Search Engines ### -upstream_search_engines = { - DuckDuckGo = true, - Searx = false, -} -- select the upstream search engines from which the results should be fetched. -``` - -Then run the following command to deploy the search engine: - -```shell -$ docker compose up -d -``` - -> [!Note] -> In the above command the dollar sign(**$**) refers to running the command in privileged mode by using utilities `sudo`, `doas`, `pkgexec` or any other privileged access methods. - -Then launch the browser of your choice and navigate to http://:. - -> [!Note] -> The official prebuild images only support `stable` versions of the app and will not support `rolling/edge/unstable` versions. But with support and contribution, it could be made available for these versions as well 🙂. - -## Manual Deployment - -This section covers how to deploy the app with docker manually by manually building the image and deploying it. - -> [!Note] -> This section is provided for those who want to further customize the docker image or for those who are extra cautious about security. - -> [!Warning] -> A note of caution the project currently only supports **x86-64** architecture and as such we do not recommend deploying the project on devices with other architectures. Though if you still want to do it then **do it at your own risk**. - -### Unstable/Edge/Rolling - -First, clone the repository by running the following command: - -```bash -git clone https://github.com/neon-mmd/websurfx.git -cd websurfx -``` - -After that edit the config.lua file located under `websurfx` directory. In the config file, you will specifically need to change to values which are `binding_ip_addr` and `redis_connection_url` which should make the config look something like this: - -```lua --- ### General ### -logging = true -- an option to enable or disable logs. -debug = false -- an option to enable or disable debug mode. -threads = 10 -- the amount of threads that the app will use to run (the value should be greater than 0). - --- ### Server ### -port = "8080" -- port on which server should be launched -binding_ip = "127.0.0.1" --ip address on the which server should be launched. -production_use = false -- whether to use production mode or not (in other words this option should be used if it is to be used to host it on the server to provide a service to a large number of users (more than one)) --- if production_use is set to true --- There will be a random delay before sending the request to the search engines, this is to prevent DDoSing the upstream search engines from a large number of simultaneous requests. -request_timeout = 30 -- timeout for the search requests sent to the upstream search engines to be fetched (value in seconds). -rate_limiter = { - number_of_requests = 20, -- The number of request that are allowed within a provided time limit. - time_limit = 3, -- The time limit in which the quantity of requests that should be accepted. -} - --- ### Search ### --- Filter results based on different levels. The levels provided are: --- {{ --- 0 - None --- 1 - Low --- 2 - Moderate --- 3 - High --- 4 - Aggressive --- }} -safe_search = 2 - --- ### Website ### --- The different colorschemes provided are: --- {{ --- catppuccin-mocha --- dark-chocolate --- dracula --- gruvbox-dark --- monokai --- nord --- oceanic-next --- one-dark --- solarized-dark --- solarized-light --- tokyo-night --- tomorrow-night --- }} -colorscheme = "catppuccin-mocha" -- the colorscheme name which should be used for the website theme -theme = "simple" -- the theme name which should be used for the website - --- ### Caching ### -redis_url = "redis://127.0.0.1:8082" -- redis connection url address on which the client should connect on. -cache_expiry_time = 600 -- This option takes the expiry time of the search results (value in seconds and the value should be greater than or equal to 60 seconds). --- ### Search Engines ### -upstream_search_engines = { - DuckDuckGo = true, - Searx = false, - Brave = false, - Startpage = false, - LibreX = false, -} -- select the upstream search engines from which the results should be fetched. -``` - -After this make sure to edit the `docker-compose.yml` and `Dockerfile` files as required and run the following command to deploy the app: - -```bash -$ docker compose up -d --build -``` - -> [!Note] -> In the above command the dollar sign(**$**) refers to running the command in privileged mode by using utilities `sudo`, `doas`, `pkgexec`, or any other privileged access methods. - -This will take around 5-10 mins for the first deployment, afterwards, the docker build stages will be cached so it will be faster to build from next time onwards. After the above step finishes launch your preferred browser and then navigate to `http://:`. - -### Stable - -For the stable version, follow the same steps as above (as mentioned for the unstable/rolling/edge version) with an addition of one command which has to be performed after cloning and changing the directory into the repository which makes the cloning step as follows: - -```bash -git clone https://github.com/neon-mmd/websurfx.git -cd websurfx -git checkout stable -``` - -[⬅️ Go back to Home](./README.md) diff --git a/docs/instances.md b/docs/instances.md deleted file mode 100644 index 0e86128..0000000 --- a/docs/instances.md +++ /dev/null @@ -1,15 +0,0 @@ -# Instances - -> To contribute your server instance, check out the contributing guide [here](https://github.com/neon-mmd/websurfx/blob/HEAD/CONTRIBUTING.md). - -This page provides a list of `Websurfx` instances provided by us and our community. - -|URL|Network|Version|Location|Status|Maintained By|TLS|IPv6|Comment| -|-|-|-|-|-|-|-|-|-| -|https://websurfx.pp.ua|www|rolling|🇺🇸 US||[Websurfx Project](https://github.com/neon-mmd/websurfx)|✅|✅|| -|https://alamin655-spacex.hf.space|www|rolling|🇺🇸 US||[Websurfx Project](https://github.com/neon-mmd/websurfx)|✅|❌|| -|https://websurfx.instance.pp.ua|www|rolling|🇺🇸 US||[Websurfx Project](https://github.com/neon-mmd/websurfx)|✅|✅|| -|https://alamin655-surfx.hf.space|www|stable|🇺🇸 US||[Websurfx Project](https://github.com/neon-mmd/websurfx)|✅|❌|| - - -[⬅️ Go back to Home](./README.md) diff --git a/docs/introduction.md b/docs/introduction.md deleted file mode 100644 index 690413c..0000000 --- a/docs/introduction.md +++ /dev/null @@ -1,13 +0,0 @@ -# Introduction - -A modern-looking, lightning-fast, privacy-respecting, secure [meta search engine](https://en.wikipedia.org/wiki/Metasearch_engine) (pronounced as websurface or web-surface /wɛbˈsɜːrfəs/.) written in Rust. It provides a fast and secure search experience while respecting user privacy. - -# Motivation - -Most meta search engines tend to be slow, lack a high level of customization, and miss many features, and all of them lack security as they are written in unsafe languages like Python, JavaScript, etc., which tend to open a wide variety of vulnerabilities, which can also sometimes pose a threat to privacy as sometimes this can be exploited and can be used to leak out sensitive information, which is never good. - -# Solution - -Websurfx is a project that seeks to provide privacy, security, speed, and all the features that the user wants. - -[⬅️ Go back to Home](./README.md) diff --git a/docs/theming.md b/docs/theming.md deleted file mode 100644 index 9a248a9..0000000 --- a/docs/theming.md +++ /dev/null @@ -1,885 +0,0 @@ -# Theming - -## Colorschemes - -### Built-in - -By default `websurfx` comes with 12 colorschemes to choose from which can be easily chosen using the config file or via the settings page on the website. - -> To how to change colorschemes using the config file. See: [**Configuration**](https://github.com/neon-mmd/websurfx/wiki/configuration) - -### Custom - -To write a custom theme for the website, you will first need to create a new file under the `public/static/themes` folder with name of the theme containing each word seperated with a hyphen (**-**). Then after that edit the newly created file as required with new css code. - -Creating coloschemes is as easy as it gets it requires the user to have a colorscheme file name with the name of the colorscheme that is to be provided in which every space should be replaced with a `-` (dash) and it should end with a `.css` file extension. After creating the file you need to add the following code with the `colors` you want to include: - -```css -:root { - --background-color: ; - --foreground-color: ; - --logo-color: ; - --color-one: ; - --color-two: ; - --color-three: ; - --color-four: ; - --color-five: ; - --color-six: ; - --color-seven: ; -} -``` - -> [!Note] -> Please infer the theme file located under `public/static/themes` to better understand where each color is being used. - -**Example of `catppuccin-mocha` colorscheme:** - -```css -:root { - --background-color: #1e1e2e; - --foreground-color: #cdd6f4; - --logo-color: #f5c2e7; - --color-one: #45475a; - --color-two: #f38ba8; - --color-three: #a6e3a1; - --color-four: #f9e2af; - --color-five: #89b4fa; - --color-six: #f5c2e7; - --color-seven: #ffffff; -} -``` - -## Themes - -### Built-in - -By default `websurfx` comes with 1 theme to choose from which can be easily chosen using the config file or via the settings page on the website. - -> To how to change themes using the config file. See: [**Configuration**](https://github.com/neon-mmd/websurfx/wiki/configuration) - -### Custom - -> This section expects the user to have some knowledge of `css`. - -To write a custom theme for the website, you will first need to create a new file under the `public/static/themes` folder with name of the theme containing each word seperated with a hyphen (**-**). Then after that edit the newly created file as required with new css code. - -Here is an example of `simple theme` (which we provide by default with the app) which will give you a better idea on how you can create your own custom theme for the website: - -#### General - -```css -@font-face { - font-family: Rubik; - src: url('https://fonts.googleapis.com/css2?family=Rubik:wght@400;500;600;700;800&display=swap'); - fallback: sans-serif; -} - -* { - padding: 0; - margin: 0; - box-sizing: border-box; -} - -html { - font-size: 62.5%; -} - -body { - display: flex; - flex-direction: column; - justify-content: space-between; - align-items: center; - height: 100vh; - font-family: Rubik, sans-serif; - background-color: var(--background-color); -} - -/* enforce font for buttons */ -button { - font-family: Rubik, sans-serif; -} -``` - -#### Styles for the index page - -```css -.search-container { - display: flex; - flex-direction: column; - gap: 5rem; - justify-content: center; - align-items: center; -} - -.search-container svg { - color: var(--logo-color); -} - -.search-container div { - display: flex; -} -``` - -#### Styles for the search box and search button - -```css -.search_bar { - display: flex; - gap: 10px; - align-items: center; -} - -.search_bar input { - border-radius: 6px; - padding: 2.6rem 2.2rem; - width: 50rem; - height: 3rem; - outline: none; - border: none; - box-shadow: rgb(0 0 0 / 1); - background-color: var(--color-one); - color: var(--foreground-color); - outline-offset: 3px; - font-size: 1.6rem; -} - -.search_bar input:focus { - outline: 2px solid var(--foreground-color); -} - -.search_bar input::placeholder { - color: var(--foreground-color); - opacity: 1; -} - -.search_bar button { - padding: 2.6rem 3.2rem; - border-radius: 6px; - height: 3rem; - display: flex; - justify-content: center; - align-items: center; - outline-offset: 3px; - outline: 2px solid transparent; - border: none; - transition: 0.1s; - gap: 0; - background-color: var(--color-six); - color: var(--background-color); - font-weight: 600; - letter-spacing: 0.1rem; -} - -.search_bar button:active { - outline: 2px solid var(--color-three); -} - -.search_bar button:active, -.search_bar button:hover { - filter: brightness(1.2); -} - -.search_area .search_options { - display: flex; - justify-content: space-between; - align-items: center; -} - -.search_area .search_options select { - margin: 0.7rem 0; - width: 20rem; - background-color: var(--color-one); - color: var(--foreground-color); - padding: 1.2rem 2rem; - border-radius: 0.5rem; - outline-offset: 3px; - outline: 2px solid transparent; - border: none; - text-transform: capitalize; -} - -.search_area .search_options select:active, -.search_area .search_options select:hover { - outline: 2px solid var(--color-three); -} - -.search_area .search_options option:hover { - background-color: var(--color-one); -} - -.result_not_found { - display: flex; - flex-direction: column; - font-size: 1.5rem; - color: var(--foreground-color); -} - -.result_not_found p { - margin: 1rem 0; -} - -.result_not_found ul { - margin: 1rem 0; -} - -.result_not_found img { - width: 40rem; -} - -/* styles for the error box */ -.error_box .error_box_toggle_button { - background: var(--foreground-color); -} - -.error_box .dropdown_error_box { - position: absolute; - display: none; - flex-direction: column; - background: var(--background-color); - border-radius: 0; - margin-left: 2rem; - min-height: 20rem; - min-width: 22rem; -} - -.error_box .dropdown_error_box.show { - display: flex; -} - -.error_box .dropdown_error_box .error_item, -.error_box .dropdown_error_box .no_errors { - display: flex; - align-items: center; - color: var(--foreground-color); - letter-spacing: 0.1rem; - padding: 1rem; - font-size: 1.2rem; -} - -.error_box .dropdown_error_box .error_item { - justify-content: space-between; -} - -.error_box .dropdown_error_box .no_errors { - min-height: 18rem; - justify-content: center; -} - -.error_box .dropdown_error_box .error_item:hover { - box-shadow: inset 0 0 100px 100px rgb(255 255 255 / 0.1); -} - -.error_box .error_item .severity_color { - width: 1.2rem; - height: 1.2rem; -} - -.results .result_disallowed, -.results .result_filtered, -.results .result_engine_not_selected { - display: flex; - justify-content: center; - align-items: center; - gap: 10rem; - font-size: 2rem; - color: var(--foreground-color); - margin: 0 7rem; -} - -.results .result_disallowed .user_query, -.results .result_filtered .user_query, -.results .result_engine_not_selected .user_query { - color: var(--background-color); - font-weight: 300; -} - -.results .result_disallowed img, -.results .result_filtered img, -.results .result_engine_not_selected img { - width: 30rem; -} - -.results .result_disallowed div, -.results .result_filtered div, -.results .result_engine_not_selected div { - display: flex; - flex-direction: column; - gap: 1rem; - line-break: strict; -} -``` - -#### Styles for the footer and header - -```css -header { - width: 100%; - background: var(--background-color); - display: flex; - align-items: center; - justify-content: space-between; - padding: 2rem 3rem; -} - -footer { - width: 100%; - background: var(--background-color); - display: flex; - align-items: center; - padding: 1.7rem 1.7rem 4rem; - gap: 1.8rem; - flex-direction: column; - justify-content: center; -} - -header h1 a { - text-transform: capitalize; - text-decoration: none; - color: var(--foreground-color); - letter-spacing: 0.1rem; -} - -header ul, -footer ul { - list-style: none; - display: flex; - justify-content: space-around; - align-items: center; - font-size: 1.5rem; - gap: 2rem; -} - -header ul li a, -footer ul li a, -header ul li a:visited, -footer ul li a:visited { - text-decoration: none; - color: var(--color-two); - text-transform: capitalize; - letter-spacing: 0.1rem; -} - -header ul li a { - font-weight: 600; -} - -header ul li a:hover, -footer ul li a:hover { - color: var(--color-five); -} - -footer div span { - font-size: 1.5rem; - color: var(--color-four); -} - -footer div { - display: flex; - gap: 1rem; -} -``` - -#### Styles for the search page - -```css -.results { - width: 90%; - display: flex; - flex-direction: column; - justify-content: space-around; - gap: 1rem; -} - -.result { - gap: 1rem; -} - -.results .search_bar { - margin: 1rem 0; -} - -.results_aggregated { - display: flex; - flex-direction: column; - justify-content: space-between; - margin: 2rem 0; - content-visibility: auto; -} - -.results_aggregated .result { - display: flex; - flex-direction: column; - margin-top: 1rem; -} - -.results_aggregated .result h1 a { - font-size: 1.7rem; - font-weight: normal; - color: var(--color-two); - text-decoration: none; -} - -.results_aggregated .result h1 a:hover { - color: var(--color-five); -} - -.results_aggregated .result h1 a:visited { - color: var(--background-color); -} - -.results_aggregated .result small { - color: var(--color-three); - font-size: 1.3rem; - word-wrap: break-word; - line-break: anywhere; -} - -.results_aggregated .result p { - color: var(--foreground-color); - font-size: 1.4rem; - line-height: 2.4rem; - margin-top: 0.3rem; - word-wrap: break-word; - line-break: anywhere; -} - -.results_aggregated .result .upstream_engines { - text-align: right; - font-size: 1.2rem; - padding: 1rem; - color: var(--color-five); - display: flex; - gap: 1rem; - justify-content: right; -} -``` - -#### Styles for the 404 page - -```css -.error_container { - display: flex; - justify-content: center; - align-items: center; - width: 100%; - gap: 5rem; -} - -.error_container img { - width: 30%; -} - -.error_content { - display: flex; - flex-direction: column; - justify-content: center; - gap: 1rem; -} - -.error_content h1, -.error_content h2 { - letter-spacing: 0.1rem; -} - -.error_content h1 { - font-size: 3rem; -} - -.error_content h2 { - font-size: 2rem; -} - -.error_content p { - font-size: 1.2rem; -} - -.error_content p a, -.error_content p a:visited { - color: var(--color-two); - text-decoration: none; -} - -.error_content p a:hover { - color: var(--color-five); -} -``` - -#### Styles for the previous and next button on the search page - -```css -.page_navigation { - padding: 0 0 2rem; - display: flex; - justify-content: space-between; - align-items: center; -} - -.page_navigation button { - background: var(--background-color); - color: var(--foreground-color); - padding: 1rem; - border-radius: 0.5rem; - outline: none; - border: none; -} - -.page_navigation button:active { - filter: brightness(1.2); -} -``` - -#### Styles for the about page - -This part is only available right now in the **rolling/edge/unstable** version - -```css -.about-container article { - font-size: 1.5rem; - color: var(--foreground-color); - padding-bottom: 10px; -} - -.about-container article h1 { - color: var(--color-two); - font-size: 2.8rem; -} - -.about-container article div { - padding-bottom: 15px; -} - -.about-container a { - color: var(--color-three); -} - -.about-container article h2 { - color: var(--color-three); - font-size: 1.8rem; - padding-bottom: 10px; -} - -.about-container p { - color: var(--foreground-color); - font-size: 1.6rem; - padding-bottom: 10px; -} - -.about-container h3 { - font-size: 1.5rem; -} - -.about-container { - width: 80%; -} -``` - -#### Styles for the Settings Page - -This part is only available right now in the **rolling/edge/unstable** version - -```css -.settings_container { - display: flex; - justify-content: space-around; - width: 80dvw; - margin: 5rem 0; -} - -.settings h1 { - color: var(--color-two); - font-size: 2.5rem; -} - -.settings > h1 { - margin-bottom: 4rem; - margin-left: 2rem; -} - -.settings hr { - border-color: var(--color-three); - margin: 0.3rem 0 1rem; -} - -.settings > hr { - margin-left: 2rem; -} - -.settings_container .sidebar { - width: 30%; - cursor: pointer; - font-size: 2rem; - display: flex; - flex-direction: column; - margin-right: 0.5rem; - margin-left: -0.7rem; - padding: 0.7rem; - border-radius: 5px; - margin-bottom: 0.5rem; - color: var(--foreground-color); - text-transform: capitalize; - gap: 1.5rem; -} - -.settings_container .sidebar .btn { - padding: 2rem; - border-radius: 0.5rem; - outline-offset: 3px; - outline: 2px solid transparent; -} - -.settings_container .sidebar .btn:active { - outline: 2px solid var(--color-two); -} - -.settings_container .sidebar .btn:not(.active):hover { - color: var(--color-two); -} - -.settings_container .sidebar .btn.active { - background-color: var(--color-two); - color: var(--background-color); -} - -.settings_container .main_container { - width: 70%; - border-left: 1.5px solid var(--color-three); - padding-left: 3rem; - border: none; -} - -.settings_container .tab { - display: none; -} - -.settings_container .tab.active { - display: flex; - gap: 1.2rem; - flex-direction: column; - justify-content: space-around; -} - -.settings_container button { - margin-top: 1rem; - padding: 1rem 2rem; - font-size: 1.5rem; - background: var(--color-three); - color: var(--background-color); - border-radius: 0.5rem; - border: 2px solid transparent; - font-weight: bold; - transition: all 0.1s ease-out; - cursor: pointer; - box-shadow: 5px 5px; - outline: none; -} - -.settings_container button:active { - box-shadow: none; - translate: 5px 5px; -} - -.settings_container .main_container .message { - font-size: 1.5rem; - color: var(--foreground-color); -} - -.settings_container .tab h3 { - font-size: 2rem; - font-weight: bold; - color: var(--color-four); - margin-top: 1.5rem; - text-transform: capitalize; -} - -.settings_container .tab .description { - font-size: 1.5rem; - margin-bottom: 0.5rem; - color: var(--foreground-color); -} - -.settings_container .user_interface select, -.settings_container .general select { - margin: 0.7rem 0; - width: 20rem; - background-color: var(--color-one); - color: var(--foreground-color); - padding: 1rem 2rem; - border-radius: 0.5rem; - outline: none; - border: none; - text-transform: capitalize; -} - -.settings_container .user_interface option:hover, -.settings_container .general option:hover { - background-color: var(--color-one); -} - -.settings_container .engines .engine_selection { - display: flex; - flex-direction: column; - justify-content: center; - padding: 1rem 0; - margin-bottom: 2rem; - gap: 2rem; -} - -.settings_container .engines .toggle_btn { - color: var(--foreground-color); - font-size: 1.5rem; - display: flex; - align-items: center; - border-radius: 100px; - gap: 1.5rem; - letter-spacing: 1px; -} - -.settings_container .engines hr { - margin: 0; -} - -.settings_container .cookies input { - margin: 1rem 0; -} -``` - -#### Styles for the Toggle Button - -This part is only available right now in the **rolling/edge/unstable** version - -```css -/* The switch - the box around the slider */ -.switch { - position: relative; - display: inline-block; - width: 6rem; - height: 3.4rem; -} - -/* Hide default HTML checkbox */ -.switch input { - opacity: 0; - width: 0; - height: 0; -} - -/* The slider */ -.slider { - position: absolute; - cursor: pointer; - inset: 0; - background-color: var(--foreground-color); - transition: 0.2s; - outline-offset: 3px; - outline: 2px solid transparent; -} - -.slider:active { - outline: 2px solid var(--foreground-color); -} - -.slider::before { - position: absolute; - content: ''; - height: 2.6rem; - width: 2.6rem; - left: 0.4rem; - bottom: 0.4rem; - background-color: var(--background-color); - transition: 0.2s; -} - -input:checked + .slider { - background-color: var(--color-three); -} - -input:focus + .slider { - box-shadow: 0 0 1px var(--color-three); -} - -input:checked + .slider::before { - transform: translateX(2.6rem); -} - -/* Rounded sliders */ -.slider.round { - border-radius: 3.4rem; -} - -.slider.round::before { - border-radius: 50%; -} -``` - -## Animations - -### Built-in - -By default `websurfx` comes with 1 animation to choose from which can be easily chosen using the config file or via the settings page on the website. - -> To how to change animations using the config file. See: [**Configuration**](https://github.com/neon-mmd/websurfx/wiki/configuration) - -### Custom - -To write custom animation, it requires the user to have some knowledge of `themes` and the `HTML of the page for which the animation is being provided for`. - -The animations can be of 2 categories: - -- Theme specific animations -- Universal animations - -#### Theme Specific Animations - -These animations can only be used with a specific theme and should not be used with other themes otherwise it either won't look good or won't work at all or would work partially. - -Here is an example of `simple-frosted-glow` animation for the `simple theme` (which we provide by default with the app) which will give you a better idea on how to create a custom animation for a specific theme: - -```css -.results_aggregated .result { - margin: 1rem; - padding: 1rem; - border-radius: 1rem; -} - -.results_aggregated .result:hover { - box-shadow: - inset 0 0 3rem var(--color-two), - inset 0 0 6rem var(--color-five), - inset 0 0 9rem var(--color-three), - 0 0 0.25rem var(--color-two), - 0 0 0.5rem var(--color-five), - 0 0 0.75rem var(--color-three); -} -``` - -#### Universal Animations - -These animations are independent of the theme being used and can be used with all the themes. - -Here is an example of `text-tilt` animation which will give you an idea on how to create universal animations for the search engine website. - -```css -.results_aggregated .result:hover { - transform: skewX(10deg); -} -``` - -> [!Note] -> 1. The above-mentioned examples of animations was covered for the search page of the search engine website. While the same way of creating custom animations can also be done for other pages also. -> 2. While the naming the file for the new theme file. Follow the following naming conventions: -> 1. If the animation is theme specfic then name of the animation file should look like this: -> `` -> **For example:** -> If the animation to make search results frosty glow on hover was to be created for the `simple` theme then the name of the file would look something like this: -> `simple-frosted-glow` -> Where `simple` is the name of the theme the animation targets and `frosted-glow` is the name of the animation where each word has been seperated by a hyphen. -> 2. If the animation is not theme specfic (univeral theme) then name of the animation file should look like this: -> `` -> **For example:** -> If the animation to make search results text tilt on hover was to be created then the name of the file would look something like this: -> `text-tilt` -> Where `text-tilt` is the name of the animation where each word has been seperated by a hyphen. (While naming the files for these types of themes, You do not need to add a theme name in frontend of the file name.). - - -[⬅️ Go back to Home](./README.md) diff --git a/flake.lock b/flake.lock deleted file mode 100644 index 2d1b886..0000000 --- a/flake.lock +++ /dev/null @@ -1,94 +0,0 @@ -{ - "nodes": { - "naersk": { - "inputs": { - "nixpkgs": "nixpkgs" - }, - "locked": { - "lastModified": 1694081375, - "narHash": "sha256-vzJXOUnmkMCm3xw8yfPP5m8kypQ3BhAIRe4RRCWpzy8=", - "owner": "nix-community", - "repo": "naersk", - "rev": "3f976d822b7b37fc6fb8e6f157c2dd05e7e94e89", - "type": "github" - }, - "original": { - "owner": "nix-community", - "ref": "master", - "repo": "naersk", - "type": "github" - } - }, - "nixpkgs": { - "locked": { - "lastModified": 1695318763, - "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", - "path": "/nix/store/p7iz0r8gs6ppkhj83zjmwyd21k8b7v3y-source", - "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", - "type": "path" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_2": { - "locked": { - "lastModified": 1695318763, - "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "root": { - "inputs": { - "naersk": "naersk", - "nixpkgs": "nixpkgs_2", - "utils": "utils" - } - }, - "systems": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "utils": { - "inputs": { - "systems": "systems" - }, - "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/flake.nix b/flake.nix deleted file mode 100644 index 6c41514..0000000 --- a/flake.nix +++ /dev/null @@ -1,63 +0,0 @@ -{ - # Websurfx NixOS flake - inputs = { - naersk.url = "github:nix-community/naersk/master"; - nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; - utils.url = "github:numtide/flake-utils"; - }; - - outputs = { - naersk, - nixpkgs, - self, - utils, - }: - # We do this for all systems - namely x86_64-linux, aarch64-linux, - # x86_64-darwin and aarch64-darwin - utils.lib.eachDefaultSystem (system: let - pkgs = import nixpkgs {inherit system;}; - naersk-lib = pkgs.callPackage naersk {}; - in rec { - # Build via "nix build .#default" - packages.default = naersk-lib.buildPackage { - # The build dependencies - buildInputs = with pkgs; [pkg-config openssl]; - src = ./.; - }; - - # Enter devshell with all the tools via "nix develop" - # or "nix-shell" - devShells.default = with pkgs; - mkShell { - buildInputs = [ - actionlint - cargo - docker - haskellPackages.hadolint - nodejs - nodePackages_latest.cspell - nodePackages_latest.eslint - nodePackages_latest.markdownlint-cli2 - nodePackages_latest.stylelint - redis - rustPackages.clippy - rust-analyzer - cargo-watch - rustc - rustfmt - yamllint - openssl - pkg-config - ]; - RUST_SRC_PATH = rustPlatform.rustLibSrc; - shellHook = '' - export PATH="$PATH:$HOME/.cargo/bin" - export NODE_PATH="$NODE_PATH:./node_modules" - ''; - }; - - # Build via "nix build .#websurfx", which is basically just - # calls the build function - packages.websurfx = packages.default; - }); -} diff --git a/images/404_error_page.png b/images/404_error_page.png deleted file mode 100644 index 47cc5762f006d28b6ea6ee2e08e0645f984bb397..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 75092 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

g+({l>>>eAQjU>v+twvu1rK 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 diff --git a/images/websurfx_logo.png b/images/websurfx_logo.png deleted file mode 100644 index 5430dd698259ad72eeaf06dd0cc1fde208c5e835..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36734 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 F{{

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