No description
Find a file
2025-10-14 08:26:55 -05:00
src Initial boilerplate 2025-10-14 08:26:55 -05:00
.gitignore Initial boilerplate 2025-10-14 08:26:55 -05:00
Cargo.lock Initial boilerplate 2025-10-14 08:26:55 -05:00
Cargo.toml Initial boilerplate 2025-10-14 08:26:55 -05:00
mise.toml Initial boilerplate 2025-10-14 08:26:55 -05:00
README.md Initial boilerplate 2025-10-14 08:26:55 -05:00

Mascarpone CRM

I always write "cream cheese" on my grocery list as "crm chs", so that's what I think of when I see "CRM".

Planned Features

  • Local contacts
  • Contacts stored on a remote CardDAV server
  • Act as CardDAV server for other clients
  • For each contact:
    • Name, address as single fields (plus code? lat/long? go crazy!)
    • Relationship mapping
    • Birthday reminders
    • Desired contact periodicity
    • Last-contact-time mapping
    • Additional arbitrary fields
  • Journal with Obsidian-like [[link]] syntax
  • Contact groups (e.g. "Met with [[Brunch Bunch]] at the diner")
  • "Named in journal but has no contact entry" detection
  • CalDAV server for birthday reminders
  • Email birthday reminders over SMTP

Tech

axum: fast and scalable, lots of middleware from tower
axum-htmx: helpers when dealing with htmx headers
axum-login: user auth, has oauth2 and user permissions
tower-sessions: save user sessions (Redis, sqlite, memory, etc.)
fred: Redis client for user sessions
tracing: trace and instrument async logs
reqwest: for API calls, oath2
anyhow: turn any error into an AppError returning: “Internal Server Error”
maud: templating html, can split fragments into functions in a single file (LoB)
sqlx: dealing with a database, migrations, reverts