{"id":22300848,"url":"https://github.com/doncato/freemind-api","last_synced_at":"2025-03-25T23:29:43.888Z","repository":{"id":144186017,"uuid":"602085890","full_name":"doncato/freemind-api","owner":"doncato","description":"Freemind API server written in rust. Serving xml documents to structure todos, appointments and events","archived":false,"fork":false,"pushed_at":"2024-03-04T19:31:29.000Z","size":170,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-30T20:44:10.549Z","etag":null,"topics":["calendar","rust","todo","xml"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/doncato.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2023-02-15T13:19:51.000Z","updated_at":"2023-03-25T11:14:28.000Z","dependencies_parsed_at":"2024-03-04T16:51:25.448Z","dependency_job_id":"095aafbe-7fb3-4a29-a5b3-01f729997e03","html_url":"https://github.com/doncato/freemind-api","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doncato%2Ffreemind-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doncato%2Ffreemind-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doncato%2Ffreemind-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doncato%2Ffreemind-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/doncato","download_url":"https://codeload.github.com/doncato/freemind-api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245560393,"owners_count":20635556,"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":["calendar","rust","todo","xml"],"created_at":"2024-12-03T18:14:19.016Z","updated_at":"2025-03-25T23:29:43.869Z","avatar_url":"https://github.com/doncato.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Freemind - API\nThis is the Api server of the Freemind project.\n\n**Note: The main documentation is to be found on the wiki page of this repo**\n\n## TODOs\n- Add more endpoints\n- Make Session authentication better\n\n## LIMITATIONS\n### Elements\nEach Element (each entry and directory node) must have an unique ID which is\n(as of now) saved and handled as an unsigned 16 bit integer. Meaning you can\nhave 'only' about 65535 entries. The ID `0` **SHOULD NOT** be used Although\nthe more you approach this number the longer generation of new entries might\ntake. As of now I don't think that anyone needs more than 1000 entries\nregistred at once.\n\n## SETUP\n### 1. Installation\nPut the released binary or your custom compiled binary\nin a (created folder) where you want it. Launch the\nprogramm once to generate the config file in the local\ndirectory. Customize the configuration according to your\nneeds (e.g. fill in the SQL DB login data)\n\n### 2. Set up your SQL database\nAssuming you already MariaDB (or something comparable)\ninstalled, create a new Database (the name is not important\nbut use the name in your config file): \n\n```sql\nCREATE DATABASE freemind;\n```\n```sql\nUSE freemind;\n```\n\nAfterwards generate\nthe important tables with the following two SQL commands:\n\n```sql\nCREATE TABLE logins (username varchar(255) NOT NULL UNIQUE, password varchar(255) NOT NULL, token varchar(255) NOT NULL UNIQUE, id int, PRIMARY KEY (id));\n```\n\n(This one is really important when you want to have an integrated frontend for\ntracking and comparing valid sessions you may not need this command but the\nserver might fail if you don't have this table in place. Additionally it\nmay be used more in upcomming releases (currently it is only used by the webapp))\n```sql\nCREATE TABLE sessions (session varchar(255), expires varchar(255) NOT NULL, id int NOT NULL, PRIMARY KEY(session));\n```\n\nFurthermore a User is needed that has access to the newly created databases.\nThis can be donce like so (choose something different as username and password please):\n```sql\nCREATE USER 'freeadmin'@'localhost' IDENTIFIED BY 'admind';\n```\n```sql\nGRANT ALL PRIVILEGES ON freemind.* TO 'freeadmin'@'localhost';\n```\n\n### 3. Run\nStart the binary. You can now insert new users into your database (or do so via the web frontend when also installed).\nPlease note: passwords and tokens are expected to be saved as a\nbcrypt hash in the database\n\n## Endpoints\n### Existing\n- `/checksum/{algorithm}` To get the calculated checksum of the current document calculated using the provided algorithm (sha1, md5 currently supported)\n- `/session/auth` To start a new session and obtain a session id for further authentication\n- `/session/extend` To further extend an existing session\n- `/xml/priority/highest` To get only the nodes which have the highest priority among the document\n- `/xml/priority/{priority}` To get only nodes which priority is higher (lower numerical value) or equal to the provided priority.\n- `/xml/filter/{name}/{value}` To only get nodes which have subnodes called NAME whose value equals VALUE (not case sensitive)\n- `/xml/get_by_id/{id}` To fetch a partial XML document specifed by it's id\n- `/xml/fetch` To fetch the whole XML document.\n- `/xml/update` To update the whole XML document.\n- `/xml/validate` To validate a XML document but not actually perform any changes.\n- `/xml/due/over` To get only nodes wich were due in the past.\n- `/xml/due/today` To get only nodes wich are due or on today.\n- `/xml/due/tomorrow` To get only nodes which are due or on tomorrow.\n- `/xml/due/in/{start}/{end}` To get only nodes which due date is in between start and end\n\n### Planned\n- `/act/delete_past` To delete nodes which are expired\n- `/act/delete_past/TIMESTAMP` To delete nodes which are expired after TIMESTAMP\n- `/xml/get_next_due` To get the next due node\n- `/json/fetch` To fetch the whole XML document but returned as JSON.\n- `/json/sort_by/due` To get the nodes as json sorted by due\n- `/json/sort_by/priority` To get the nodes as json sorted by priority\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdoncato%2Ffreemind-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdoncato%2Ffreemind-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdoncato%2Ffreemind-api/lists"}