A11Y platform - built by a community who believes in an open internet.

Overview

Equalify the web!

96.8% of homepages are inaccessible, according to WebAIM.

That statistic is unacceptable.

Everyone should have access to online information.

How will Equalify increase accessibility?

Equalify creates deep integrations with services that run your website.

Imagine: You solve A11Y issues at their source - be that source the server or a CMS.

Equalify will become your WebOps hub, designed to solve any accessibility issue.

Screen Shot 2022-04-13 at 1 20 11 PM

What does Equalify currently do?

The app currently scans pages for WCAG errors.

Equalify supports Little Forrest, a free WCAG 2.1 scan, and the popular WAVE scan.

After selecting an integration, import any site.

The app imports pages from XML sitemaps, the WordPress API, and single URLs.

After all your pages are added, click "Scan" and Equalify reports WCAG errors as they are found.

The goal: Equalify every website.

Screen Shot 2022-04-14 at 2 00 57 PM

To Start

  1. Download or clone the latest release.
  2. Update config.php info.
  3. Upload/run on your server.
  4. Report issues, questions, and patches.

Special Thanks

A chaos wizard 🧙 and many brilliant brains help Equalify. Special shoutout to Pantheon and Little Forrest for providing funding for Drupalcon tickets and other great resources that help this project grow. Yi, Kate, Bill, Dash, Sylvia, Anne, Doug, Matt, Nathan, and John- You are the braintrust behind any great idea. Brad- You push me to code better. & Grace- You are the 🔥 behind everything I do.

This project is Open Source to inspire new collaborations.

Together, we can equalify the internet.

-@bbertucc

PS: For more information on the notions behind Equalify, see my Ethical Business Notion page.

Comments
  • Unable to run

    Unable to run "Scan all pages"

    On this screen : https://equalify.lndo.site/index.php?view=scans (I'm using Lando to host it locally)

    Warning: Undefined variable $records in /app/models/db.php on line 397 Fatal error: Uncaught Exception: 
    Cannot insert scan with status "running" and records "" in /app/models/db.php:397 Stack trace: #0 
    /app/actions/scan_all_pages.php(28): DataAccess::add_scan('running', 'a:2504:{i:0;a:1...') #1 {main} thrown 
    in /app/models/db.php on line 397
    

    This suggests that it can't connect to SQL?

    But I was able to add a site, that generates a list of pages to scan.

    screenshot_2022-05-19_at_14_17_39

    Unsure how to fix. Thanks

    bug 
    opened by alphex 11
  • Increase the 1,111 Page Limit

    Increase the 1,111 Page Limit

    In MVP 1.2 we limit users to 1,111 pages.

    We do that so we can guarantee Equalify works on our supported system.

    Perhaps we need to increase that limit?

    Very few early testers needed over 1,111 pages.

    If you want more pages, add a 👍 to this thread or comment with your use case.

    enhancement 
    opened by bbertucc 7
  • Scan not completing

    Scan not completing

    I've tried scanning a new site www.cinuk.org

    While the scan is running, the following line appears multiple times: >>> Unknown column 'tags' in 'field list'

    It ends with this:

    > Processing alerts...
    
    |=========================================|
    |               SCAN STOPPED              |
    |=========================================|
    
    Unknown column 'queued_alerts.tags' in 'field list'
    

    And when I visit the Sites tab, the new site is showing as unscanned.

    bug 
    opened by NicolaSaunders 6
  • Invalid URL invalidation

    Invalid URL invalidation

    Using just a second-level and top-level domain (e.g. graceblake.com) throws an exception. PHP's FILTER_VALIDATE_URL filter doesn't consider it a URL.

    This isn't a great user experience, but may not be a bug if you want to force the protocol to be specified.

    image

    bug 
    opened by ebertucc 6
  • per_page and $GLOBALS['page_limit'] have to match

    per_page and $GLOBALS['page_limit'] have to match

    When pointing to a WP site the per_page param is set to 100 you have to set $GLOBALS['page_limit'] to 100 or you get an error. Say for instance you wanted to limit the scan to 10 pages you get the following...

    Begin scan on 21/09/2022 at 01:57:07.
    
    
    > Processing sites...
    - https://www.butler.edu
    > Found 100 scannable pages.
    
    |=========================================|
    |               SCAN STOPPED              |
    |=========================================|
    
    You have too many pages.
    
    Equalify allows up to 10 pages.
    
    Archive sites or delete pages from WordPress/XML.
    

    It seems like one should be an upper limit and the other the actual count. So it's more like, give me x number of pages but don't exceed y number.

    bug enhancement 
    opened by kgrimley-bu 5
  • db: use prepared statements

    db: use prepared statements

    Hi @bbertucc,

    I accidentally based this off of the mvp-2 branch. If that's not the right thing to do, I can probably remove some of the extra code and reapply it to main.

    If this qualifies for the bounty, please send it to Instant Messaging Freedom, the 501(c)(3) non-profit that helps support open communication tools.

    Resolves #25

    opened by jrchamp 5
  • Use Prepared statements instead of concatenating user-supplied values

    Use Prepared statements instead of concatenating user-supplied values

    According to w3..

    • Prepared statements reduce parsing time as the preparation on the query is done only once (although the statement is executed multiple times)
    • Bound parameters minimize bandwidth to the server as you need send only the parameters each time, and not the whole query
    • Prepared statements are very useful against SQL injections, because parameter values, which are transmitted later using a different protocol, need not be correctly escaped. If the original statement template is not derived from external input, SQL injection cannot occur.

    Thanks @jrchamp!

    bug good first issue bountied 
    opened by bbertucc 5
  • Code Grammar and Spelling Errors

    Code Grammar and Spelling Errors

    Proper grammar and spelling make the Equalify code more readable. Unfortunately, I am plagued with dyslexia and many grammar/spelling errors slip into the main branch.

    For Hacktoberfest, I invite anyone to read through main branch grammar and spelling. Create Pull Requests for any batch of errors you find.

    bug help wanted hacktoberfest 
    opened by bbertucc 4
  • Move logo to svg file linked from config.php

    Move logo to svg file linked from config.php

    With https://github.com/bbertucc/equalify/blob/main/index.php#L68, the only way to customize Equalify is to fork that file.

    Just like Drupal installs start with a Drupal logo which is almost immediately replaced by an organization's logo, large organizations are going to want to customize this.

    I was thinking that something along the lines of CiviCRM's footer might work well in the sidebar to link users back to the project instead of just the homepage of the instance.

    Screen Shot 2022-09-22 at 1 13 28 PM
    opened by kreynen 4
  • Unable to add a site

    Unable to add a site

    When trying to add a new WordPress site for scanning, I am directed to an error page with the following message:

    This page isn’t working service.equalify.app is currently unable to handle this request. HTTP ERROR 500

    I am on MacOS Monterey using Chrome Version 107.0.5304.87 (Official Build) (arm64)

    bug 
    opened by NicolaSaunders 3
  • Tagging System

    Tagging System

    The Problem

    Alerts are not filterable. For instance, if I want to only very alt related errors, I have to click on each page's alert block and sort related to the page. I can't just select an alt filter that would show me all of the alerts.

    The Solution

    A tagging system allows individual alerts to be sorted by pre-defined options. Each can be registered by a user or an integration with code like register_tags([['slug'=>$value, 'name'=>$value, 'description'=>$value, 'category'=>$value]]).

    All tags related to an alert will be viewed in a new alert column: Screenshot of page with a tags alert column added to Equalify tags

    Each tag links to a detail page with the tag's description and related, unignored, alerts: Screen Shot of a page with the title 1.1.1 Alerts and body text Alternative text is required for non-text content.

    Since we have lots of tags, tags will be navigatable as checkboxes in category-specific dropdowns: bootstrap-checkbox-dropdown

    Categorized dropdowns with tag checkboxes give new users a quick way to know tag options. They also make navigation more accessible than a dynamic multiselect, like Select2.

    We should also only display categories with the most used tags. Other categories and tags are accessible under a "More Filters" button. That would focus the UX on the most used features.

    Future Development

    Tags allow us to create reports on the number of errors related to specific guidelines and compliance levels (#76). I also imagine this will lead to #96.

    Work Plan

    I'll develop a version of this. Happy to collaborate with anyone!

    enhancement 
    opened by bbertucc 3
  • Compress Duplicate Issues

    Compress Duplicate Issues

    A user reported:

    About half of the issues are for the same error "aria-hidden-focus" (least from a quick scan). Would be great if the tool said, "20 identical issues on 10 pages" or something like that.

    This is going to become a bigger issue as we scan more sites and pages.

    enhancement 
    opened by bbertucc 0
  • Reduce Page Load by Generating JSON on Scan Completion and Integration/Site Status Toggle

    Reduce Page Load by Generating JSON on Scan Completion and Integration/Site Status Toggle

    Problem

    Load time of pages is too long because lots of DB requests via PHP happen every time the page loads. The DB requests are in essay since core data only changes when the scan runs or integrations/sites are activated/deactivated.

    Solution

    Generate JSON that page info is loaded from on scan completion and integration/site toggle. We can then load the JSON via PHP or rewrite the front end using a JavaScript framework like Vue.

    enhancement 
    opened by bbertucc 1
  • How can Equalify fairly charge money?

    How can Equalify fairly charge money?

    Money arouses complex emotions, so I've avoided bringing it up in Equalify conversations. But there comes a time in every open source project's life when the "$" needs to come out, so let's talk money..

    To start, I want to say that getting rich is not my goal for Equalify. I aim to make the web more accessible through better automated accessibility testing. This project is designed to inspire better tools that I and others build. That's not to say we're only building Equalify tools. WAVE and axe-core are great tools that I hope we push to be better. I will only actually code something when a solution doesn't exist (ie- crawling and testing thousands of pages, the main function of Equalify).

    To establish a budget for 2023, maybe we can look at data in 2022..

    Digital Ocean charges me $55-105/mo for managed hosting of a database and two servers. I'll probably need to pay them a bit more when the axe-core web service is up. I also paid WAVE $335 for users to use their API, but I think that cost will end when axe-core is integrated. Additionally, I would love to scale up the Equalify bug bounties. I gave away $699.55 in 2022, and think it's a fun way to push work forward.

    As far as my time is concerned, I have no idea how to value my time. I can say that my personal 2023 budget is around $55k/yr for living expenses and savings. My best work comes when I devote myself full-time to a project, so I hope most of my cash comes from Equalify in 2023.

    Considering all that, I guess I would like to raise >$56k in 2023? Does that sound right?

    Now.. to the question of how to raise the money..

    To fund the Equalify work (my own and others'), I'm either thinking about going a donation or paywalled route.

    If we went a paywall route, equalify.app would cost $x/x alerts per month to use. We have 33 users using the service now. Based on current activity, I could see around 11 of the 33 users paying for Equalify.

    What should we charge paying users?

    I like multiples of 11, so perhaps we charge $11/mo to start. That's $121/mo for 11 users. I imagine those initial 11 users would scale up every month I did the work. We get about 6 new users a month, and I bet 2 of those users will pay. So that's $121 this month, $143 next month, .. yielding $2904 in 2023. Way shy of the $56k goal!

    How about a donation route?

    If went a donation route, I would go after sponsors to sustain the brunt of the cost then ask anyone who uses equalify.app for a suggested donation based on the number of alerts they have.

    Pantheon generously gave me $20k in 2023. Various transactions led to a current balance of $4,727.40. I hope to put that money toward 2023's budget.

    The folks at Pantheon suggested they would sponsor another year, but I really don't know if they will? Let's just say they do... $20k in the bank! Perhaps I'll go after a few more sponsors - I have some connection with Platform.sh, Github, GitLab, and Automattic. Could we get $40k in sponsorship???

    If we got $40k in sponsorship, that would leave only $16k to reach my goal. That $16k could come in asking equalify.app users for donations. We need to suggest around $77/mo based on the math above to reach $16k.

    Would people donate $77/mo to use Equalify? Sounds like too much to me. What should we do?

    I want to go the donation route when comparing the paywall and donation route. Relying on donations means the folks who didn't have enough cash to pay for Equalify could get the service for free. That also builds a culture of open source, community-supported, creation.

    What do you think?


    EDIT: Adding the Beta 1 Milestone to this. Since Beta 1 represents a solution that we can grow our userbase on, I would love to have this question figured out by the time we reach Beta 1 (currently scheduled for 1/11/23).

    question 
    opened by bbertucc 5
Releases(vMVP-5.1)
  • vMVP-5.1(Jan 3, 2023)

    MVP 5.1 Updates

    Fixes issues related to tags for WAVE and axe-core.

    MVP 5 - Release Notes

    axe-core is now Equalify's default WCAG scanner. Users of the managed version can immediately use the axe-core integration. If you are hosting your version, you must install your axe-core webservice before using the axe-core integration.

    Installation Instructions

    Remove existing Equalify DB tables, except the "sites" table. Follow the install instructions. Report any issues.

    If you rather just try Equalify, you can signup for our managed solution at equalify.app.

    Special Thanks

    Shoutout to @john-Graham and @mgifford for contributing issues and inspiration that led to the MVP 5 release.

    Source code(tar.gz)
    Source code(zip)
  • vMVP-5(Dec 13, 2022)

    MVP 5 - Release Notes

    axe-core is now Equalify's default WCAG scanner. Users of the managed version can immediately use the axe-core integration. If you are hosting your version, you must install your axe-core webservice before using the axe-core integration.

    Installation Instructions

    1. Remove existing Equalify DB tables, except the "sites" table.
    2. Follow the install instructions.
    3. Report any issues.

    If you rather just try Equalify, you can signup for our managed solution at equalify.app.

    Special Thanks

    Shoutout to @john-Graham and @mgifford for contributing issues and inspiration that led to this release.

    Source code(tar.gz)
    Source code(zip)
  • vMVP-4(Nov 17, 2022)

    MVP 4 - Release Notes

    Equalify now displays WAVE's alerts as individual WCAG errors, instead of grouped by site.

    Also, you can now filter alerts by specific errors by creating a new report.

    Installation Instructions

    1. Remove existing Equalify DB tables, except the "sites" table.
    2. Follow the install instructions.
    3. Report any issues.

    If you rather just try Equalify, you can signup for our managed solution at equalify.app.

    Special Thanks

    Shoutout to @dgradcliffe, @ellieya, @huyszn, @alphex, and @kreynen for code and support that made this release possible!

    Source code(tar.gz)
    Source code(zip)
  • MVP-3-1(Sep 22, 2022)

    New Features!

    MVP 3.1 allows you to run the scan as a background task. Screen Shot 2022-09-22 at 12 52 43 PM

    The release also includes 3.0 features:

    • Simpler navigation.
    • Easy scan terminal.
    • Automatic scanning.
    • Re-architected scanner. And much much more!

    New ways to help!

    🌸 Try our managed service, equalify.app.

    🎩 Donate to Equalify.

    Did I mention the fancy new scan terminal?

    A screenshot of the Scan page of Equalify that displays the status of an Equalify accesibility scan.

    More to come!

    Add any issues!

    -Bb.

    Source code(tar.gz)
    Source code(zip)
  • MVP-3(Sep 14, 2022)

    New features!

    • Simpler navigation.
    • Easy scan terminal.
    • Automatic scanning.
    • Re-architected scanner. And much much more!

    New ways to help!

    🌸 Try our managed service, equalify.app.

    🎩 Donate to Equalify.

    Did I mention the fancy new scan terminal?

    A screenshot of the Scan page of Equalify that displays the status of an Equalify accesibility scan.

    More to come!

    Add any issues!

    -Bb.

    Source code(tar.gz)
    Source code(zip)
  • MVP-2(Jun 15, 2022)

    Report on the accessibility of thousands of sites in one click.

    Equalify's MVP version 2 includes customizable alerts tabs and a revamped scanner.

    MVP 2 Introduction Video Screenshot

    To use Equalify, check out README.md#download-and-use.

    Special shoutout to contributors @ebertucc and @jrchamp - you all rock!

    Source code(tar.gz)
    Source code(zip)
  • MVP-1(Apr 26, 2022)

    Intro Demo

    Screen Shot 2022-05-11 at 5 10 05 PM

    To Use Equalify

    • Download the release's assets.
    • Update config.php with your DB info.
    • Once Equalify is live on your server, add a site (WP/XML/Single).
    • Activate an integration or integrations under "integrations".
    • Start a scan.

    Please report any errors or feedback to the repo's issues.

    Shoutout to @ebertucc and @jrchamp for providing feedback that went into this release - THANKS!

    Together, we can equalify the internet.

    Source code(tar.gz)
    Source code(zip)
  • mvp-1-alpha-2(Apr 18, 2022)

    Freshly laid egg. Ready for testing.

    Hoping to hatch a stable build by Drupalcon (4/25/22).

    Test Equalify...

    1. Download the assets below.
    2. Update config.php with your DB info.
    3. Once you have it live, add a site (WP/XML/Single).
    4. Activate an integration or integrations under "integrations".
    5. Start a scan.

    Please report any errors or feedback to the repo's issues.

    Thanks!

    – @bbertucc

    Source code(tar.gz)
    Source code(zip)
Owner
Blake Bertuccelli
Edupack CEU + Decubing Founder
Blake Bertuccelli
DomainMOD is an open source application written in PHP & MySQL used to manage your domains and other internet assets in a central location

DomainMOD is an open source application written in PHP & MySQL used to manage your domains and other internet assets in a central location. DomainMOD also includes a Data Warehouse framework that allows you to import your web server data so that you can view, export, and report on your live data.

DomainMOD 349 Jan 8, 2023
A Blogging Platform with a built-in Feed Aggregator. Built with AngularJS and Laravel.

ReMark ReMark is an open source publishing platform built with the informed content creator in mind. It works as: A blogging platform A feed aggregato

Ren 4 Nov 1, 2019
Discussion (forum) and Q&A platform. Community based on PHP Micro-Framework HLEB.

Agouti Discussion (forum) and Q&A platform. Community based on PHP Micro-Framework HLEB. Ideas We like the classification system based on labels (tags

AgoutiDev 59 Dec 22, 2022
This is a plugin written in PHP programming language and running on the PocketMine platform that works stably on the API 4.0.0 platform. It allows you to query some other server information

QueryServer This is a plugin written in PHP programming language and running on the PocketMine platform that works stably on the API 4.0.0 platform. I

Thành Nhân 1 Jul 6, 2022
The platform allows you to manage articles, comments, tags, categories, and users for a blogging platform.

Laravel Blogging Platform The platform allows you to manage articles, comments, tags, categories, and users for a blogging platform. The project was w

Khaled Farhat 6 Oct 2, 2022
A platform to create documentation/wiki content built with PHP & Laravel

BookStack A platform for storing and organising information and documentation. Details for BookStack can be found on the official website at https://w

BookStackApp 10.6k Jan 3, 2023
mTube is a simple video sharing platform built with Laravel.

mTube is a simple video sharing platform built with Laravel. Create personal channel share videos online with friends and family.

Nyi Nyi Lwin 115 Dec 28, 2022
This is a clone of Angry birds's homepage built using Wordpress, it is configured to run on the Pantheon platform.

Angry-Birds-UI-Clone Description This is a clone of Angry birds's homepage built using Wordpress, it is configured to run on the Pantheon platform. Li

Abir Bouhriz Daidj 3 Oct 20, 2021
A platform to create documentation/wiki content built with PHP & Laravel

BookStack A platform for storing and organising information and documentation. Details for BookStack can be found on the official website at https://w

BookStackApp 10.6k Dec 29, 2022
Create Your Own Broadcast Network With AVideo Platform Open-Source. OAVP OVP

Audio Video Platform AVideo is a term that means absolutely nothing, or anything video. Since it doesn't mean anything the brand simply is identifiabl

World Wide Broadcast Network 1.7k Jan 8, 2023
The API & platform builder, build your apps 10x faster even more, it's open source & 100% free !

The API & platform builder, build your apps 10x faster, even more. It's open source & 100% free ! Try live demo Why badaso ? 100% FREE - No need for e

Uasoft 1k Jan 2, 2023
Matomo is the leading Free/Libre open analytics platform.

Matomo (formerly Piwik) - matomo.org Code Status Description Matomo is the leading Free/Libre open analytics platform. Matomo is a full-featured PHP M

Matomo Analytics 17.2k Jan 3, 2023
Free, open-source, online appointments platform based on Laravel PHP Framework.

timegrid (Archived) Timegrid helps contractors and customers to find the perfect meeting time through online appointments. Features Built with Laravel

timegrid.io 880 Dec 19, 2022
An easy-to-use, free and open source laravel e-Exam platform to build your online course right away.

➡️ Website | Documentation | Community ⬅️ Laerx Get detailed information about your clients, exams and courses to create an effective report and track

Codenteq 93 Jan 5, 2023
Akeneo PIM Community Standard Edition

Akeneo PIM Community Standard Edition Welcome to Akeneo PIM. This repository is used to create a new PIM project based on Akeneo PIM. If you want to c

Akeneo 362 Dec 5, 2022
Laravel web app for signing up for community service opportunities

Community Service A Laravel web app for registering for service opportunities. Installation Make sure the following are installed on your system: Node

North Point Ministries 0 Mar 6, 2019
The phponline.dev project - an online community for PHP developers.

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Steve McDougall 2 Dec 1, 2021
Health Management App for WTM Buea community to work on during the period of Hacktoberfest

Laravel web application developed by WTM Buea community members Health Care Management App An app that enables users and or patients to get consultati

Women Techmakers Buea 2 Oct 28, 2021