{"id":24116071,"url":"https://github.com/zcallan/callander","last_synced_at":"2025-06-26T10:35:21.205Z","repository":{"id":186607952,"uuid":"606089603","full_name":"zcallan/callander","owner":"zcallan","description":null,"archived":false,"fork":false,"pushed_at":"2023-04-07T09:08:25.000Z","size":892,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-09T18:06:55.395Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zcallan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-02-24T15:18:45.000Z","updated_at":"2023-04-07T08:52:06.000Z","dependencies_parsed_at":null,"dependency_job_id":"eeb68a69-a69f-4a53-b84a-caf99da2ae11","html_url":"https://github.com/zcallan/callander","commit_stats":null,"previous_names":["zcallan/callander"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/zcallan/callander","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zcallan%2Fcallander","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zcallan%2Fcallander/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zcallan%2Fcallander/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zcallan%2Fcallander/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zcallan","download_url":"https://codeload.github.com/zcallan/callander/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zcallan%2Fcallander/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262049090,"owners_count":23250680,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-11T06:15:13.938Z","updated_at":"2025-06-26T10:35:21.182Z","avatar_url":"https://github.com/zcallan.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# callander\n\nAn experimental project for me to practice Rust (backend) and Svelte (front-end).\n\nIt also uses a PostgreSQL database and runs in Docker.\n\n`callander` (pun-intended) is a 'Friend Management System', or FMS.\n\nYou can add friends (or acquaintances!) to the system, where you can then do the following:\n- Add birthdays and 'met at' (with varying accuracy)\n- Add ideas for each friend (e.g. gifts, conversations, activities, etc)\n- Track events (e.g. meetups, life events, etc)\n- More soon\n\nThere is also limited functionality for creating posts, to act as a small personal blog or diary.\n\nI have been very cautious not to make this application 'creepy'; it's not meant to be a stalking app or to record intricate details or opinions about somebody.\n\nIt's meant to act as a secondary memory for maintaining good friendships with people.\n\nAn example could be to note a conversation that you would like to continue with somebody, that got caught off before you could finish it.\n\nAnother example could be if you read an article that you think would be an interesting talking point with someone, you could add it as a note for that person (with a link to the article or just add some bullet points).\n\n### Technical details\n\nI am currently using SvelteKit, however I don't want SSR so I might swap it out.\n\nAuthentication currently uses [Passkeys](https://fidoalliance.org/passkeys/). I leveraged [Hanko](https://www.hanko.io/) for the auth server, though I have to give it a kick after 7 days of inactivity. I also have two separate accounts for dev and prod which is annoying, since on the free tier you can only have 1 project per account (fair enough). Might change providers or roll my own auth server at some point.\n\nThe front-end is hosted using Cloudflare Workers. The API and database are hosted using Render. I was using Fly.io but they had serious server issues one day and moving across was super easy.\n\n## Running the project\n\n#### Web\n\nGo to the `/web` directory, and run the following commands.\n\n```bash\n$ yarn\n$ yarn dev\n```\n\nMore information can be found in the README inside `/web`.\n\n#### API\n\nGo to the `/api` directory. Make sure Docker is running on your machine.\n\n```bash\n$ docker-compose up -d\n```\n\nOnce your database is going, run the server.\n\n```bash\n$ cargo run\n```\n\nMore information can be found in the README inside `/api`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzcallan%2Fcallander","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzcallan%2Fcallander","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzcallan%2Fcallander/lists"}