-
/server- REST API written in Rust
- Handles JWT-based authentication/authorization
- Client to retrieve GeoJSON data from Google Maps API
- Postgres && Redis
-
/frontend- SPA written with Sveltekit that renders a filterable map of venues
- Flowbite/Tailwind-based CSS
- Leaflet map library
-
/addr_to_geo- DEPRECATED: Node script that pulls contacts from the database and adds a latitude/longitude so they can be rendered on a map.
- Can be used to bulk-update
Contactswith lat/lng
- Postgres Dockerfile provided as a convenience but not necessary. Example
.envfiles use variables from image. Start the Docker service:docker compose up - Run database migrations under
/server/migrationswithsqlx migrate run - Start the server (port 8000 default):
cargo run- Uncomment lines to create
TestUserinserver/src/startup.rsfirst time running app - OR signup and change
statuscolumn inuserstoconfirmed - Comment out
send_confirmation_emailinserver/src/routes/auth/signup.rsif email client not configured locally.
- Uncomment lines to create
- Start the SPA:
npm run dev - For frontend/UI development without setting up a Rust backend, checkout FRONTEND.md
cargo test||cargo test -- --nocapturemain.rstests the different features. You may need to run one group of tests at a time.- OR run serial
RUST_TEST_THREADS=1 - OR or increase
ulimit - Temporary databases are created with hashes for names. If you need to clean them up run
psql -Atqc "SELECT 'DROP DATABASE ' || quote_ident(datname) || ';' FROM pg_database WHERE datname like '%7%';" | psqlreplacing7with any number that's not in the name of one of your existing databases
- grouping map points
- postgis
- need to implement: jmoiron/sqlx#129
- UI theme, usability
- response messages for: signing up, logging in, logging out, adding contacts, errors
- validate
contactFormis link when submitted - state management
- a lot in UI needs updated when user signs in/out
- endpoints should return newly added/edited data and update UI
- make API CRUD (currently only GET/POST)
- GraphQL?
- filter by contact type: promoter, venue, DIY/house, band
- create tour
- select date range
- add multiple contacts to each date, set to: contacted, pending, confirmed, n/a
- adjust date of events
- export to CSV formatted for Songkick import
- calculate drive times for routes
- mass-import contacts from CSV
- login w/ google
- ability to share private contacts w/ specific users