a4afa057e3
Create version of timeSince that handles non-pointers
...
Useful for structs where we know we must have a value
2026-01-21 17:50:16 +00:00
2da6bba041
Render report results from the map
2026-01-21 15:59:16 +00:00
9d2253a4a2
Get search map overlay working again.
2026-01-21 15:15:52 +00:00
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