About this proposal
Built accessible, not audited later
What this is, what we measured, and what it would replace.
What this is
A working proposal for the City of San Juan, not the city's website. It was built to be looked at rather than described: every page here is real HTML the city could serve tomorrow, in both languages, produced by the same build that makes the commission record, the fleet map and the two apps.
Start with one page: the city's own FAQ
The City of San Juan has a page headed “Frequently Asked Questions — Your Go-To Resource for Quick Answers.” It answers ten questions a resident actually asks, and eight of those answers end in a link. On 7 September 2026 we followed all eight.
| The question it answers | Where the link goes | Result |
|---|---|---|
| How do I sign up for emergency alerts? | http://34.197.241.167/… |
Does not respond |
| How do I follow government meetings and agendas? | http://34.197.241.167/agendas-minutes/ |
Does not respond |
| Where is the calendar of community events? | /events-calendar/ |
404 — the page does not exist |
| What do I need for a building permit? | https://www.sjtx.us/www.sjtx.us//forms/ |
Malformed — the domain is typed into the path |
| Recycling · voter registration · vital records · pet rules | Four different destinations | These four work |
Half of the answers on the city's answers page do not reach what they promise. Two of them point at 34.197.241.167 — a bare IP address, over plain http, which is what a website looks like before it has a name. It is almost certainly a server the city moved off years ago. One of those two is the answer to the question about emergency alerts.
This is not a criticism of anybody at the city. It is what happens when the answer and the thing it points at live in two different systems that cannot check each other. Nobody at San Juan can run a report that says “four of your answers are broken,” because no single system knows about all four. That is the whole argument on this page, and the rest of it is more evidence for the same point.
What the front page says to a screen reader
The city's front page carries ten news items. Every one of them is a poster — a JPEG or PNG with the date, the hour, the address and the telephone number set into the pixels — and every one of those posters is marked alt="", the instruction that tells a screen reader an image is decorative and should be skipped. Measured on the live page: 19 images, 15 of them alt="".
To a resident who cannot see the screen, the front page of the City of San Juan carries the city's logo and no news at all. Not badly-described news — no news. And the words do exist: each notice has its own page where somebody wrote the thing out properly in sentences. The city did the writing and then published the picture.
The Smokey Bear notice, published twice
The poster says JULY 9TH · 10:30AM. The text on the same notice's own page says “Thursday, July 9th at 9:30 AM”.
Two different times for one event, published by the city on the same day: one in a picture, one in words. The picture is the one the front page shows. Nothing can catch this — a JPEG cannot be searched for the hour it claims — and so nothing did.
Source: sjtx.us/smokey-bear-visits-san-juan-memorial-library/
What we measured with axe-core
Taken 7 September 2026 with axe-core in a real browser, against WCAG 2.0 and 2.1 at levels A and AA — the same engine most paid audits run underneath. Eight pages. These are real numbers from the live site, not a characterisation of it, and the raw run is in the repository behind this page.
| Page | Issue types | Elements failing | Downloaded | Requests | Worst rule |
|---|---|---|---|---|---|
| The home page | 0 | 0 | 5.9 MB | 145 | — |
| Agendas & Minutes | 1 | 1 | 3.2 MB | 148 | frame-title |
| City Commission | 1 | 5 | 2.0 MB | 81 | color-contrast |
| Sanitation Services | 1 | 1 | 4.0 MB | 89 | color-contrast |
| Police | 1 | 4 | 4.5 MB | 104 | link-name |
| Library | 2 | 7 | 3.6 MB | 108 | color-contrast |
| Public Works | 0 | 0 | 2.6 MB | 83 | — |
| Permits & Forms | 0 | 0 | 1.5 MB | 72 | — |
Being fair about it
By the scanner alone, the city's site is not a disaster, and this proposal does not pretend it is. The home page returns no axe violations at all. That is exactly why the scanner is not the argument: the things that are actually wrong with this site are things no scanner will ever name.
- An image marked decorative passes every automated check there is. That is why the home page scores zero violations while carrying no news a screen reader can find. alt="" is a valid, correct, deliberate-looking attribute. A scanner reads it as “the author thought about this image and decided it was decoration.” It cannot know the image was the announcement.
- The city publishes a link only its own office can open. The Human Resources page links to http://192.168.1.13/ — labelled “SJ Connect” and “Online Forms”. That is a private address on an office network. It is not reachable from the internet by anybody, anywhere, including from a city employee's phone. It has been sitting on a public page long enough to be indexed.
- The curbside rules are illustrated with the City of Dallas's photographs. Seven pictures on the Sanitation Services page — the garbage cart, the blue recycling cart, the television, the paint can, the piano — are loaded live from dallascityhall.com, five hundred miles away. San Juan's page telling residents what they may put at the curb depends on another city's web server staying up, and on that city never renaming a folder.
- The home page is 5.9 MB over 145 requests. Two Facebook page plug-ins, Google Maps, a Font Awesome subscription, Google Fonts and a YouTube thumbnail service, before the city's own words. Twenty-eight icon-font files are also requested over plain http on an https page, which a browser blocks outright — so they fail on every single page load, silently, and have done for as long as the fonts have been there.
- Automated testing catches about a third of real barriers. Which is the honest argument for building it in rather than testing it afterwards: everything above is in the two-thirds a scanner cannot see, and all of it was decided while a page was being written. None of it can be bolted on later by anybody.
The city does not have one website. It has a directory of other people's websites.
We crawled seventy pages of sjtx.us and wrote down every place it hands a resident to. Not counting social media, there are fifteen separate systems, from ten different vendors, each with its own address, its own look, and — where it wants one — its own password:
| To do this | You are sent to |
|---|---|
| Pay a water bill | municipalonlinepayments.com |
| Pay a citation | municipalonlinepayments.com |
| Pay a bill another way | doxo.com |
| Apply for a permit | portal.iworq.net |
| Read an agenda or minutes | civicclerk.com |
| Sign up for emergency alerts | portal.civicplus.com |
| Read the code of ordinances | ecode360.com |
| See the budget | opengov.com |
| Register for a parks programme | recdesk.com |
| Apply for a job | applicantstack.com |
| Look at the city map | experience.arcgis.com |
| Download a form | drive.google.com |
| Use the library | sanjuanlibrary.com |
| Contact the police department | sanjuanpolice.com |
| Talk to economic development | sanjuanedc.com |
The last three are not vendors. They are the City of San Juan — its own library, its own police department and its own economic development corporation — each on a separate website with a separate design, so that a resident cannot tell from looking whether they are still dealing with their city.
Eleven more systems sit behind the Employee Links page for staff. That makes twenty-six in total, and not one of them can tell any other that the person using it is the same person.
And one that was bought to fix it
Every page of sjtx.us loads Recite Me, a paid accessibility and language toolbar. It is a real product and it does real things: it will read a page aloud, enlarge it, recolour it and translate it. It cannot do any of those to a poster, because there is no text inside a JPEG to read, enlarge or translate. The city is paying for a tool to solve a problem that the way the notices are published puts permanently out of its reach.
The same notices, as text
Rather than describe the difference, this build makes it. Six of the city's own notices are published here in full, in both languages — the same six the front page shows as nothing but a poster. Every headline, date, hour, address, telephone number and name is the city's own, reproduced rather than invented.
What it replaces
Today
Ten notices on the front page, every one of them a poster
Instead
The same notices as words — searchable, translatable, and readable aloud.
Today
A Frequently Asked Questions page whose answers do not open
Instead
Every link checked on every build, so a dead one cannot be published at all.
Today
Agendas and minutes inside a frame with no name
Instead
Meetings published as text: every motion, every roll call by name.
Today
Fifteen separate systems a resident is handed to
Instead
One platform, one sign-in, one place that knows all of it is yours.
Today
A fleet system only Public Works can see
Instead
One map for staff and one screen for the resident, from the same record.
Today
Spanish as a paid overlay bolted on top
Instead
Spanish written, with its own URLs, shipping in the same build as English.
What is real here and what is not
Real: the city's seal and the motto and the year printed on it, the mayor, the city manager, the four commissioners with the places the city itself publishes, all 14 departments the city's own directory lists with the telephone number it gives each one, the population, the library's hours and collection, the geography of every facility on the map, the three photographs, the six notices, the Texas statutes cited on the meeting page, and every measurement on this page.
Invented: every agenda item, motion, vote, dollar amount, speaker, service request, vehicle position and maintenance record — and the day and hour of the meeting, because the city does not publish a standing meeting time anywhere on its own site. They are shaped like a city of this size, and every page that shows one says so.