{"id":15016690,"url":"https://github.com/purifetchi/toki","last_synced_at":"2025-04-12T10:41:56.068Z","repository":{"id":223179989,"uuid":"758951216","full_name":"purifetchi/Toki","owner":"purifetchi","description":"A C# Fediverse server.","archived":false,"fork":false,"pushed_at":"2024-08-20T17:26:43.000Z","size":1873,"stargazers_count":53,"open_issues_count":8,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-11T12:49:05.363Z","etag":null,"topics":["activitypub","federation","fediverse","mastodon","social-network"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/purifetchi.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}},"created_at":"2024-02-17T14:58:47.000Z","updated_at":"2025-02-25T20:30:33.000Z","dependencies_parsed_at":"2024-03-29T01:27:04.237Z","dependency_job_id":"1ebc4be4-cb53-4421-8a5d-232e55120f08","html_url":"https://github.com/purifetchi/Toki","commit_stats":null,"previous_names":["purifetchi/toki"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/purifetchi%2FToki","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/purifetchi%2FToki/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/purifetchi%2FToki/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/purifetchi%2FToki/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/purifetchi","download_url":"https://codeload.github.com/purifetchi/Toki/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248556979,"owners_count":21124156,"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":["activitypub","federation","fediverse","mastodon","social-network"],"created_at":"2024-09-24T19:49:14.615Z","updated_at":"2025-04-12T10:41:56.009Z","avatar_url":"https://github.com/purifetchi.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\t\u003cb\u003eToki\u003c/b\u003e\u003cbr\u003e\n\t\u003cspan\u003en. (toki pona) - communication, speech\u003c/span\u003e\n\u003c/p\u003e\n\n\u003chr\u003e\n\n![An image of Toki being accessed via the bloat-fe frontend.](Meta/screenshot.png)\n\nA C# ActivityPub Fediverse-compatible server designed mostly for small-ish instances.\n\nI'm working on it as sort of a personal challenge, considering I've always wanted to implement the ActivityPub protocol.\n\nWhile Toki has its own frontend called [luka](https://github.com/purifetchi/luka), it supports the Mastodon API protocol, allowing it to be used with your favorite client.\n\nDo note that Toki isn't considered truly stable for the time being, and while it is very much usable for usage, it might still undergo changes.\n\n## Usage\n\nToki doesn't have an admin panel *yet*. There are plans to make one and the required steps are outlined in the [Administration Roadmap issue](https://github.com/purifetchi/Toki/issues/11). (If anyone would want to help out with it, I'd be insanely thankful...)\n\n### Running Toki for the first time\n\nFirstly, make sure that the .NET 8 runtime is installed, alongside Docker.\n\n1. Clone the repository to a directory of your choice.\n\n2. Inside of the repository, run `docker compose up -d` to initialize and run all of the docker containers required by Toki.\n\n3. After that, navigate to the `Toki.Admin` repository.\n\n4. Inside of there, execute `dotnet run \u003cpath to appsettings.json\u003e setup` to perform the first-time setup.\n\n\ta. NOTE: The `appsettings.json` file is located in the `Toki` folder, and the path to it must be absolute. (that is, if the folder of the `Toki` folder is `/opt/toki/Toki`, the path to `appsettings.json` would be `/opt/toki/Toki/appsettings.json`)\n\n\tb. NOTE 2: You **must** create the directory you've specified as the upload directory. Toki doesn't do it automatically.\n\n5. Navigate to the `Toki` directory. From there run `dotnet run --configuration Release --auto-migrate` to perform the neccessary migrations and run Toki for the first time.\n\nToki should now be up and running!\n\n### Updating Toki\n\nIn order to update an already existing version of Toki, you must:\n\n1. Stop the currently running Toki instance\n\n2. Navigate to the root of the git repository and `git pull` the latest changes.\n\n3. Navigate to the `Toki` directory and from there run `dotnet run --configuration Release --auto-migrate`. This will automatically perform the database migrations (if any happened).\n\n### Installing Luka\n\nBy default Toki doesn't launch with a frontend. Unlike Pleroma/Akkoma we don't support installing frontends from the admin panel yet, but manual installation is still possible.\n\nAs a prerequisite, the latest version of Node.JS is required.\n\n1. Clone [luka](https://github.com/purifetchi/luka) into a directory of your choice.\n\n2. Navigate to the luka folder.\n\n3. Inside of the luka git repository, navigate to `src/config` and inside of the `config.js` file, edit it to point to the domain of your Toki instance.\n\n4. Run `npm install` to install all of the required packages.\n\n5. Run `npm run build` to build the release version of Luka.\n\n6. Copy all of the files from the `dist` folder to `\u003ctoki git repo\u003e/Toki/wwwroot`.\n\n7. In the `appsettings.json` file, add (or modify if it already exists) the following section:\n\n```json\n\n\"Frontend\": {\n\t\"Enabled\": true,\n\t\"SpaFilename\": \"index.html\"\n}\n\n```\n\n7. Restart Toki, and luka should be already running!\n\n### Importing emojis from packs\n\nAs a prerequisite, the emojis should be packed in a zip file without any subdirectories with the names `\u003cthe emoji name you want\u003e.\u003cextension\u003e`.\n\nIf you already have the zip file ready:\n\n1. Navigate to the `Toki.Admin` folder.\n\n2. From there, execute `dotnet run \u003cpath to appsettings.json\u003e importemojipack --path \u003cpath to your zip file\u003e`. Toki should automatically extract the emojis and add them to the database.\n\n3. Restart Toki, and enjoy your emojis!\n\n\n## Modules\n\n**Toki** contains the server \u0026 Web backend. \n\n**Toki.ActivityPub** contains all of the ActivityPub related logic, like the models, and various resolvers. \n\n**Toki.ActivityStreams** contains the ActivityStreams implementation.\n\n**Toki.HTTPSignatures** contains our HTTP signatures implementation.\n\n## Contributing Guide\n\nIf you'd really want to contribute to this project (thank you!) please adhere to the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) commit format as much as you can.\n\n## Requirements\n\n* .NET 8\n* PostgreSQL (as the database)\n* Redis (for the job queue)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpurifetchi%2Ftoki","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpurifetchi%2Ftoki","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpurifetchi%2Ftoki/lists"}