{"id":29822914,"url":"https://github.com/cochaviz/dear-diary","last_synced_at":"2026-05-16T18:34:26.292Z","repository":{"id":252634159,"uuid":"840994790","full_name":"cochaviz/dear-diary","owner":"cochaviz","description":"A small diary web application!","archived":false,"fork":false,"pushed_at":"2024-08-20T06:43:08.000Z","size":121,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-08-20T08:39:04.803Z","etag":null,"topics":["diary","fastapi","native-js","small","webapplication"],"latest_commit_sha":null,"homepage":"","language":"Python","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/cochaviz.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-11T10:27:53.000Z","updated_at":"2024-08-20T06:43:11.000Z","dependencies_parsed_at":"2024-08-20T08:38:26.909Z","dependency_job_id":"3a82bfb7-e510-4642-83be-12357ce3fd3f","html_url":"https://github.com/cochaviz/dear-diary","commit_stats":null,"previous_names":["cochaviz/dear-diary"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/cochaviz/dear-diary","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cochaviz%2Fdear-diary","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cochaviz%2Fdear-diary/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cochaviz%2Fdear-diary/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cochaviz%2Fdear-diary/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cochaviz","download_url":"https://codeload.github.com/cochaviz/dear-diary/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cochaviz%2Fdear-diary/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267613872,"owners_count":24115704,"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","status":"online","status_checked_at":"2025-07-28T02:00:09.689Z","response_time":68,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["diary","fastapi","native-js","small","webapplication"],"created_at":"2025-07-29T01:12:13.486Z","updated_at":"2026-05-16T18:34:21.259Z","avatar_url":"https://github.com/cochaviz.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dear Diary\n\nA small web application to keep track of a diary! My idea was to have a place\nwhere I could write down how I felt, and make it easy to learn from my\nexperiences. Most importantly, I wanted to make sure that I don't forget about\ntrails and tribulations of the past, to not forget past learnt lessons!\n\nSo while this, right now, really just a place to write down my thoughts, I would\nlike to hook this to a locally-running LLM. The idea being that if the LLM had\naccess to this database that is my written experience of my life, I would be\nable to ask how I dealt with stuff in the past, how I've changed, etc. It sounds\ninteresting, like an actual 'second brain', but I'm not sure whether it's\nactually useful... Only one way to find out! 😄\n\n| Mobile UI | Desktop UI |\n| --- | --- |\n| ![image](https://github.com/user-attachments/assets/ad3e3d6b-b819-4a80-8841-222812b40cca) |![image](https://github.com/user-attachments/assets/1203949a-c4dd-4159-9753-e8d40efeebab) |\n| ![image](https://github.com/user-attachments/assets/ddcf1212-018a-4c42-94f9-6fc4f4548446) | ![image](https://github.com/user-attachments/assets/128c0a76-355f-47f6-a148-24b1103d66bc) |\n\n## Requirements and Scope\n\nThis is not something that is supposed to be run at a large scale. The\nrequirements are as follows:\n\n- Run locally (local network or local host), only to be used by a single user.\n- Be able to see if diary entries changed, and revert if necessary.\n- Use least amount of services/resources possible in front- and back-end.\n\nFor this reason, I've decided to make a FastAPI app, that uses native javascript\nin the front-end, and a git repostory as a database.\n\n## Prerequisites\n\nI can strongly recommend [`rye`](https://rye.astral.sh/) for managing python\nenvironments, but if you decide to do it the old-fashioned way, install the\nrequirements with the following command:\n\n```bash\nsed -i 's/-e file:\\.//g' requirements.lock \u0026\u0026 pip install -r requirements.lock\n```\n\nThe reason that `sed` is used in the beginning of the command is also explained\nin the Dockerfile:\n\n\u003e When using pip to install requirements.lock, it uses the line `-e file:.` to\n\u003e determine where to find the content when installing package. However, here we\n\u003e are only installing the dependencies, so this will give an error when we run\n\u003e it. Thus, we remove it from the file\n\n## Running\n\nTo run the project in development mode, execute the following command:\n\n```bash\npython -m dear_diary\n```\n\n## Deployment\n\n[![Docker](https://github.com/cochaviz/dear-diary/actions/workflows/docker-publish.yml/badge.svg)](https://github.com/cochaviz/dear-diary/actions/workflows/docker-publish.yml)\n\nFor deployment, it is easiest to run the Docker file which is automatically kept\nup to date (see the badge for status). Just run it using the `docker pull` and\n`docker run` commands, or set up a service (recommended) using `docker-compose`:\n\n```yaml\nversion: '3.6'\n\nservices:\n  dear-diary:\n    image: ghcr.io/cochaviz/dear-diary:main\n    ports:\n      - \"9000:80\"\n    volumes:\n      - ./dear_diary/entries:/app/dear_diary/entries\n    command: [\"fastapi\", \"run\", \"main.py\", \"--host\", \"0.0.0.0\", \"--port\", \"80\"]\n```\n\nMake sure that the folder `/app/dear_diary/entries` does not yet exist, or\nexists and is a valid git repository.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcochaviz%2Fdear-diary","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcochaviz%2Fdear-diary","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcochaviz%2Fdear-diary/lists"}