Commit graph

273 commits

Author SHA1 Message Date
f4a88623af
Overhaul system for handling text messaging
Move away from "SMS" as the operative word - we're going RCS.
Move all comms processing to a separate goroutine
Rename the DB tables
2026-01-21 03:30:03 +00:00
842e6cff43
Move comms work to background goroutine
This is a sort of random checkpoint of work
 * add schema for tracking messages sent to DB
 * add terms of service and privacy policy for RCS compliance
 * standardize some things about background workers
 * update some missing stuff from generated DB code
2026-01-20 17:10:22 +00:00
8f44e57c72
Add basic robots.txt
So we get indexed.
2026-01-19 21:33:54 +00:00
98372d924d
Use proper config values in email templates 2026-01-19 21:24:34 +00:00
42caa77b3e
Use the same code paths to render the browser version of emails 2026-01-19 21:21:02 +00:00
1232a7c0ec
Show pretty report ID in email subject 2026-01-19 18:19:02 +00:00
4ab3c355c5
Parse email send response, log the email ID. 2026-01-19 18:10:17 +00:00
2c880568dd
Initial work on email templates
At this point I got a nice-looking formatted message in my mail client.
2026-01-19 17:58:30 +00:00
087f29d491
Add support for simple MMS
Tested and works, though it is a bit ugly.
2026-01-19 14:58:28 +00:00
4e294699d3
Initial test email works. 2026-01-18 03:00:48 +00:00
7abaebe496
Add support for sending SMS 2026-01-17 01:13:27 +00:00
8ab0b78e6e
Make sure they consent to get notifications in the UI. 2026-01-16 21:16:59 +00:00
079d20c086
Extract EXIF data from images
This required a schema change and actually dumps all existing photo data
from the public reports page. That's probably fine since it's not
deployed to any customers so all data is currently test data.
2026-01-16 20:16:58 +00:00
b95a3275ff
Set address to empty in quick report upload
Fixes a null value error
2026-01-16 14:51:50 +00:00
684c424131
Move imported districts to its own schema, add ref from organization
This will make it possible to assign reports to an organization
2026-01-16 14:43:26 +00:00
9b5140f0c2
Show full district details on location search 2026-01-15 23:19:31 +00:00
f6b5a1e580
Add API to query district by GPS location 2026-01-15 22:56:32 +00:00
0bb055b391
Allow clicks on cells without sources 2026-01-15 22:15:29 +00:00
e2549f0317
Make trap page that shows collection information 2026-01-15 22:12:52 +00:00
885b58a0ab
Add traps to cell details page 2026-01-15 21:00:42 +00:00
0bd1a10753
Fix click interface on aggregate map going to cell detail 2026-01-15 20:39:20 +00:00
948f967a16
Add aggregation map for traps
This also makes the first time I've done a Mapbox map within a web
component. It's not officially supported according to:

https://github.com/mapbox/mapbox-gl-js/issues/12796

but I found a codepen that had a working example:

https://codepen.io/keichan34/pen/ZEKqeEj?editors=1111
2026-01-15 20:25:00 +00:00
08c6a7f884
Make layer colors match card colors on dash 2026-01-15 19:35:13 +00:00
beb98813d9
Show icons on dashboard cards, swap colors
The color swap is so I can make the colors match in the map overlay.
2026-01-15 19:33:02 +00:00
f50f3892f2
Switch to trap counts instead of inspections on the dash
Because we can show those on a map.
2026-01-15 19:32:42 +00:00
06140a9062
Remove bob submodule, add arcgis.user
I had to remove the submodule because of the go bug at
https://github.com/golang/go/issues/77196
I found the bug because of a bug in bob itself
https://github.com/stephenafamo/bob/issues/610
This was because I'm trying to save data about the Arcgis user for use
in determining if I can set up hooks to avoid the polling for data
changes.
2026-01-15 19:20:39 +00:00
f94b89381f
Actually delete the organization in delete-org.sql 2026-01-15 04:11:19 +00:00
d46d988b4d
Make aggregate layers clean up, add service request aggregate 2026-01-15 04:10:54 +00:00
248cffd323
Rework arcgis oauth flow logic
This is several changes after the demo with Ben
 * When a user adds their oauth and they get an arcgis ID for an
   organization that exits they are added to that organization. The
   previous org isn't removed
 * All layer processing is done in a single large pool. This makes it
   much faster in aggregate
 * Some queries are done more directly instead of through custom sql
2026-01-15 01:05:21 +00:00
92294e5b16
Creat signout logic, make links use it. 2026-01-15 00:20:19 +00:00
35721e7fa6
Add some handy tools 2026-01-14 22:18:11 +00:00
c44fe26cdf
Remove debugging bonn layers 2026-01-14 21:52:59 +00:00
cd22818240
Actually exit early on empty aggregate
Previous attempt was subtly wrong.
2026-01-14 21:52:36 +00:00
a4c0e367a8
Make organization.name not-nullable, consolidate org in dash context 2026-01-14 21:50:47 +00:00
4f0b73c769
Add URL for Tegola to configuration
Avoid cross-environment pollution.
2026-01-14 21:39:58 +00:00
21a8f9622a
Avoid empty insert statement when there are no aggregations 2026-01-14 21:36:58 +00:00
e1684ce8f1
Remove "since last week" placeholders from dashboard
Also add the cute "...?" when syncing.
2026-01-14 20:53:46 +00:00
9667f34388
Fix various logo placeholders and header and favicon 2026-01-14 20:52:57 +00:00
8623773edc
Make oauth prompt use its own context type
And use the common utility to populate the user information
2026-01-14 20:15:48 +00:00
749f8aaec7
Initial work on creating custom map component
This isn't done, I'm just shifting gears.
2026-01-14 20:14:58 +00:00
ea48364d95
Set status when creating reports
Because we added this as a non-null required field a migration or two
ago.
2026-01-14 18:59:25 +00:00
6fd0ed8711
Move to using web components for custom components
They're modular, which is really nice.
2026-01-14 18:59:19 +00:00
b91718cd7c
Color districts by regionid
The colors jump as you zoom, but they still technically work, so I'm
committing it.
2026-01-14 15:52:14 +00:00
53f8857795
Show the district overlay map on the district page
I can event get the district name in the properties.
2026-01-14 00:40:01 +00:00
d60db93bf2
Make public report and sync share static assets
It just seems useful
2026-01-14 00:39:46 +00:00
81dabdf097
Update readme with how I created the working district table 2026-01-13 23:36:09 +00:00
cf06bb9f49
Break apart sync into parts more like public-reports
I like this layout makes it easier to track what functions do what and
keeps templates near their render functions.
2026-01-13 20:30:57 +00:00
96c144ca74
Clean up commented-out code from search page. 2026-01-13 19:53:00 +00:00
52a0031d16
Handle shifting location column for nuisance table
I shifted it so the three report tables have a common schema when
creating the report_location view.
2026-01-13 19:52:25 +00:00
00fd676adc
Add district table for california districts. 2026-01-13 19:47:19 +00:00